View a markdown version of this page

Panduan Per SageMaker HyperPod intah Esensial Amazon - Amazon Nova

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Panduan Per SageMaker HyperPod intah Esensial Amazon

Amazon SageMaker HyperPod menyediakan fungsionalitas baris perintah yang luas untuk mengelola alur kerja pelatihan. Panduan ini mencakup perintah penting untuk operasi umum, mulai dari menghubungkan ke cluster Anda hingga memantau kemajuan pekerjaan.

Prasyarat

Sebelum menggunakan perintah ini, pastikan Anda telah menyelesaikan pengaturan berikut:

  • SageMaker HyperPod cluster dengan RIG dibuat (biasanya di us-east-1)

  • Buket keluaran Amazon S3 dibuat untuk artefak pelatihan

  • Peran IAM dikonfigurasi dengan izin yang sesuai

  • Data pelatihan diunggah dalam format JSONL yang benar

  • FSx untuk sinkronisasi Lustre selesai (verifikasi dalam log cluster pada pekerjaan pertama)

Menginstal Recipe CLI

Arahkan ke root repositori resep Anda sebelum menjalankan perintah instalasi.

Gunakan repositori Hyperpodrecipes jika menggunakan teknik penyesuaian Non Forge, untuk kustomisasi berbasis Forge lihat repositori resep khusus forge.

Jalankan perintah berikut untuk menginstal SageMaker HyperPod CLI:

catatan

Pastikan Anda tidak berada di lingkungan conda/anaconda/miniconda aktif atau lingkungan virtual lainnya

Jika ya, silakan keluar dari lingkungan menggunakan:

  • conda deactivateuntuk lingkungan conda/anaconda/miniconda

  • deactivateuntuk lingkungan virtual python

Jika Anda menggunakan teknik kustomisasi Non Forge, unduh sagemaker-hyperpod-recipes-seperti yang ditunjukkan di bawah ini:

git clone -b release_v2 https://github.com/aws/sagemaker-hyperpod-cli.git cd sagemaker-hyperpod-cli pip install -e . cd .. root_dir=$(pwd) export PYTHONPATH=${root_dir}/sagemaker-hyperpod-cli/src/hyperpod_cli/sagemaker_hyperpod_recipes/launcher/nemo/nemo_framework_launcher/launcher_scripts:$PYTHONPATH curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 chmod 700 get_helm.sh ./get_helm.sh rm -f ./get_helm.sh

Jika Anda adalah Pelang gan Forge, Anda harus mengunduh resep menggunakan proses yang disebutkan di bawah ini.

mkdir NovaForgeHyperpodCLI cd NovaForgeHyperpodCLI aws s3 cp s3://nova-forge-c7363-206080352451-us-east-1/v1/ ./ --recursive pip install -e . curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 chmod 700 get_helm.sh ./get_helm.sh rm -f ./get_helm.sh
Tip

Untuk menggunakan lingkungan virtual baru sebelum menjalankanpip install -e ., jalankan:

  • python -m venv nova_forge

  • source nova_forge/bin/activate

  • Baris perintah Anda sekarang akan ditampilkan (nova_forge) di awal prompt Anda

  • Ini memastikan tidak ada dependensi yang bersaing saat menggunakan CLI

Tujuan: Mengapa kita melakukannyapip install -e .?

Perintah ini menginstal SageMaker HyperPod CLI dalam mode yang dapat diedit, memungkinkan Anda untuk menggunakan resep yang diperbarui tanpa menginstal ulang setiap kali. Ini juga memungkinkan Anda untuk menambahkan resep baru yang dapat diambil CLI secara otomatis.

Menghubungkan ke cluster Anda

Hubungkan SageMaker HyperPod CLI ke cluster Anda sebelum menjalankan pekerjaan apa pun:

export AWS_REGION=us-east-1 && SageMaker HyperPod connect-cluster --cluster-name <your-cluster-name> --region us-east-1
penting

Perintah ini membuat file konteks (/tmp/hyperpod_context.json) yang diperlukan perintah berikutnya. Jika Anda melihat kesalahan tentang file ini tidak ditemukan, jalankan kembali perintah connect.

Kiat pro: Anda dapat lebih lanjut mengkonfigurasi cluster Anda untuk selalu menggunakan kubeflow namespace dengan menambahkan --namespace kubeflow argumen ke perintah Anda sebagai berikut:

export AWS_REGION=us-east-1 && \ hyperpod connect-cluster \ --cluster-name <your-cluster-name> \ --region us-east-1 \ --namespace kubeflow

Ini menghemat upaya menambahkan perintah -n kubeflow di setiap saat berinteraksi dengan pekerjaan Anda.

Memulai pekerjaan pelatihan

catatan

Jika menjalankan PPO/RFT pekerjaan, pastikan Anda menambahkan pengaturan pemilih label src/hyperpod_cli/sagemaker_hyperpod_recipes/recipes_collection/cluster/k8s.yaml agar semua pod dijadwalkan pada node yang sama.

label_selector: required: sagemaker.amazonaws.com/instance-group-name: - <rig_group>

Luncurkan pekerjaan pelatihan menggunakan resep dengan penggantian parameter opsional:

hyperpod start-job -n kubeflow \ --recipe fine-tuning/nova/nova_1_0/nova_micro/SFT/nova_micro_1_0_p5_p4d_gpu_lora_sft \ --override-parameters '{ "instance_type": "ml.p5.48xlarge", "container": "708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-HP-SFT-latest" }'

Output yang diharapkan:

Final command: python3 <path_to_your_installation>/NovaForgeHyperpodCLI/src/hyperpod_cli/sagemaker_hyperpod_recipes/main.py recipes=fine-tuning/nova/nova_micro_p5_gpu_sft cluster_type=k8s cluster=k8s base_results_dir=/local/home/<username>/results cluster.pullPolicy="IfNotPresent" cluster.restartPolicy="OnFailure" cluster.namespace="kubeflow" container="708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:HP-SFT-DATAMIX-latest" Prepared output directory at /local/home/<username>/results/<job-name>/k8s_templates Found credentials in shared credentials file: ~/.aws/credentials Helm script created at /local/home/<username>/results/<job-name>/<job-name>_launch.sh Running Helm script: /local/home/<username>/results/<job-name>/<job-name>_launch.sh NAME: <job-name> LAST DEPLOYED: Mon Sep 15 20:56:50 2025 NAMESPACE: kubeflow STATUS: deployed REVISION: 1 TEST SUITE: None Launcher successfully generated: <path_to_your_installation>/NovaForgeHyperpodCLI/src/hyperpod_cli/sagemaker_hyperpod_recipes/launcher/nova/k8s_templates/SFT { "Console URL": "https://us-east-1.console.aws.amazon.com/sagemaker/home?region=us-east-1#/cluster-management/<your-cluster-name>" }

Memeriksa status pekerjaan

Pantau pekerjaan berjalan Anda menggunakan kubectl:

kubectl get pods -o wide -w -n kubeflow | (head -n1 ; grep <your-job-name>)
Memahami status pod

Tabel berikut menjelaskan status pod umum:

Status

Deskripsi

Pending

Pod diterima tetapi belum dijadwalkan ke node, atau menunggu gambar kontainer ditarik

Running

Pod terikat ke node dengan setidaknya satu kontainer berjalan atau dimulai

Succeeded

Semua kontainer berhasil diselesaikan dan tidak akan restart

Failed

Semua kontainer dihentikan dengan setidaknya satu berakhir dengan kegagalan

Unknown

Status pod tidak dapat ditentukan (biasanya karena masalah komunikasi node)

CrashLoopBackOff

Kontainer berulang kali gagal; Kubernetes mundur dari upaya restart

ImagePullBackOff / ErrImagePull

Tidak dapat menarik gambar kontainer dari registri

OOMKilled

Wadah dihentikan karena melebihi batas memori

Completed

Pekerjaan atau Pod berhasil diselesaikan (penyelesaian tugas batch)

Tip

Gunakan ben -w dera untuk menonton pembaruan status pod secara real-time. Tek Ctrl+C an untuk berhenti menonton.

Memantau log pekerjaan

Anda dapat melihat log Anda salah satu dari tiga cara:

Menggunakan CloudWatch

Log Anda tersedia di AWS akun Anda yang berisi Hyperpodcluster di bawah. CloudWatch Untuk melihatnya di browser Anda, navigasikan ke CloudWatch beranda di akun Anda dan cari nama cluster Anda. Misalnya, jika cluster Anda di my-hyperpod-rig panggil grup log akan memiliki awalan:

  • Grup log: /aws/sagemaker/Clusters/my-hyperpod-rig/{UUID}

  • Setelah Anda berada di grup log, Anda dapat menemukan log spesifik Anda menggunakan ID instance node seperti -hyperpod-i-00b3d8a1bf25714e4.

    • i-00b3d8a1bf25714e4di sini mewakili nama mesin Hyperpodfriendly tempat pekerjaan pelatihan Anda berjalan. Ingat bagaimana pada kubectl get pods -o wide -w -n kubeflow | (head -n1 ; grep my-cpt-run) output perintah sebelumnya kita menangkap kolom yang disebut NODE.

    • Node “master” yang dijalankan dalam hal ini berjalan pada hyperpod- i-00b3d8a1bf25714e4 dan dengan demikian kita akan menggunakan string itu untuk memilih grup log untuk dilihat. Pilih salah satu yang mengatakan SagemakerHyperPodTrainingJob/rig-group/[NODE]

Menggunakan CloudWatch Wawasan

Jika Anda memiliki nama pekerjaan Anda dan tidak ingin melalui semua langkah di atas, Anda cukup menanyakan semua log di bawah /aws/sagemaker/Clusters/my-hyperpod-rig/{UUID} untuk menemukan log individu.

CPT:

fields @timestamp, @message, @logStream, @log | filter @message like /(?i)Starting CPT Job/ | sort @timestamp desc | limit 100

Untuk penyelesaian pekerjaan ganti Starting CPT Job dengan CPT Job completed

Kemudian Anda dapat mengklik hasil dan memilih salah satu yang mengatakan “Epoch 0" karena itu akan menjadi node master Anda.

Menggunakan AWS CLI

Anda dapat memilih untuk mengekor log Anda menggunakan AWS CLI. Sebelum melakukannya, silakan periksa AWS CLI versi Anda menggunakanaws --version. Disarankan juga untuk menggunakan skrip utilitas ini yang membantu dalam pelacakan log langsung di terminal Anda

untuk V1:

aws logs get-log-events \ --log-group-name /aws/sagemaker/YourLogGroupName \ --log-stream-name YourLogStream \ --start-from-head | jq -r '.events[].message'

untuk V2:

aws logs tail /aws/sagemaker/YourLogGroupName \ --log-stream-name YourLogStream \ --since 10m \ --follow

Mendaftarkan pekerjaan aktif

Lihat semua pekerjaan yang berjalan di cluster Anda:

hyperpod list-jobs -n kubeflow

Contoh keluaran:

{ "jobs": [ { "Name": "test-run-nhgza", "Namespace": "kubeflow", "CreationTime": "2025-10-29T16:50:57Z", "State": "Running" } ] }

Membatalkan pekerjaan

Hentikan pekerjaan yang sedang berjalan kapan saja:

hyperpod cancel-job --job-name <job-name> -n kubeflow
Menemukan nama pekerjaan Anda

Opsi 1: Dari resep Anda

Nama pekerjaan ditentukan di run blok resep Anda:

run: name: "my-test-run" # This is your job name model_type: "amazon.nova-micro-v1:0:128k" ...

Opsi 2: Dari perintah list-jobs

Gunakan hyperpod list-jobs -n kubeflow dan salin Name bidang dari output.

Menjalankan pekerjaan evaluasi

Evaluasi model terlatih atau model dasar menggunakan resep evaluasi.

Prasyarat

Sebelum menjalankan pekerjaan evaluasi, pastikan Anda memiliki:

  • Pos pemeriksaan Amazon S3 URI dari manifest.json file pekerjaan pelatihan Anda (untuk model terlatih)

  • Dataset evaluasi diunggah ke Amazon S3 dalam format yang benar

  • Jalur keluaran Amazon S3 untuk hasil evaluasi

Perintah

Jalankan perintah berikut untuk memulai pekerjaan evaluasi:

hyperpod start-job -n kubeflow \ --recipe evaluation/nova/nova_2_0/nova_lite/nova_lite_2_0_p5_48xl_gpu_bring_your_own_dataset_eval \ --override-parameters '{ "instance_type": "p5.48xlarge", "container": "708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-evaluation-repo:SM-HP-Eval-latest", "recipes.run.name": "<your-eval-job-name>", "recipes.run.model_name_or_path": "<checkpoint-s3-uri>", "recipes.run.output_s3_path": "s3://<your-bucket>/eval-results/", "recipes.run.data_s3_path": "s3://<your-bucket>/eval-data.jsonl" }'

Deskripsi parameter:

  • recipes.run.name: Nama unik untuk pekerjaan evaluasi Anda

  • recipes.run.model_name_or_path: URI Amazon S3 dari manifest.json atau jalur model dasar (mis.,nova-micro/prod)

  • recipes.run.output_s3_path: Lokasi Amazon S3 untuk hasil evaluasi

  • recipes.run.data_s3_path: Lokasi Amazon S3 dari kumpulan data evaluasi Anda

Tips:

  • Model-specific resep: Setiap ukuran model (mikro, lite, pro) memiliki resep evaluasi sendiri

  • Evaluasi model dasar: Gunakan jalur model dasar (misalnya,nova-micro/prod) alih-alih URI pos pemeriksaan untuk mengevaluasi model dasar

Format data evaluasi

Format masukan (JSONL):

{ "metadata": "{key:4, category:'apple'}", "system": "arithmetic-patterns, please answer the following with no other words: ", "query": "What is the next number in this series? 1, 2, 4, 8, 16, ?", "response": "32" }

Format keluaran:

{ "prompt": "[{'role': 'system', 'content': 'arithmetic-patterns, please answer the following with no other words: '}, {'role': 'user', 'content': 'What is the next number in this series? 1, 2, 4, 8, 16, ?'}]", "inference": "['32']", "gold": "32", "metadata": "{key:4, category:'apple'}" }

Deskripsi bidang:

  • prompt: Input yang diformat dikirim ke model

  • inference: Respon yang dihasilkan model

  • gold: Diharapkan jawaban benar dari kumpulan data input

  • metadata: Metadata opsional dilewatkan dari input

Masalah umum

  • ModuleNotFoundError: No module named 'nemo_launcher', Anda mungkin harus menambahkan nemo_launcher ke jalur python Anda berdasarkan di hyperpod_cli mana diinstal. Perintah sampel:

    export PYTHONPATH=<path_to_hyperpod_cli>/sagemaker-hyperpod-cli/src/hyperpod_cli/sagemaker_hyperpod_recipes/launcher/nemo/nemo_framework_launcher/launcher_scripts:$PYTHONPATH
  • FileNotFoundError: [Errno 2] No such file or directory: '/tmp/hyperpod_current_context.json'menunjukkan Anda melewatkan menjalankan perintah cluster hyperpod connect.

  • Jika Anda tidak melihat pekerjaan Anda dijadwalkan, periksa kembali apakah output SageMaker HyperPod CLI Anda memiliki bagian ini dengan nama pekerjaan dan metadata lainnya. Jika tidak, instal ulang bagan helm dengan menjalankan:

    curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 chmod 700 get_helm.sh ./get_helm.sh rm -f ./get_helm.sh