Menjalankan workload yang telah dibuat sebelumnya

Jika Anda tertarik dengan Pelatihan Terkelola Platform Agen Gemini Enterprise, hubungi perwakilan penjualan Anda untuk mendapatkan akses.

Panduan ini menunjukkan cara menggunakan ekosistem NVIDIA NeMo di cluster Pelatihan Terkelola untuk pengembangan model AI generatif end-to-end. Panduan ini memberikan petunjuk langkah demi langkah untuk alur kerja berikut yang berbeda tetapi terkait, yang masing-masing dibahas di bagian khusus:

  • NVIDIA NeMo: Untuk pengembangan model dasar, ikuti petunjuk ini untuk melakukan pra-pelatihan skala besar, pra-pelatihan berkelanjutan (CPT), dan penyetelan lanjutan yang diawasi (SFT).
  • NVIDIA NeMo-RL: Untuk penyelarasan model dan penyetelan preferensi, gunakan bagian ini untuk menerapkan teknik lanjutan seperti Reinforcement Learning (RL) guna menyelaraskan model Anda dengan petunjuk dan preferensi manusia.

Baik Anda membuat model dari awal atau menyempurnakan model yang ada, dokumen ini akan memandu Anda menyiapkan lingkungan, mengelola tugas dalam container, dan meluncurkan skrip pelatihan di cluster.

NVIDIA NeMo

Framework NVIDIA NeMo adalah platform end-to-end untuk membangun, menyesuaikan, dan men-deploy model AI generatif. Bagian panduan ini secara khusus ditujukan untuk developer dan peneliti yang berfokus pada tahap dasar pengembangan model. Panduan ini memberikan petunjuk langkah demi langkah untuk menggunakan NeMo dalam melakukan pra-pelatihan skala besar, pra-pelatihan berkelanjutan (CPT), dan penyetelan lanjutan yang diawasi (SFT) di cluster Pelatihan Terkelola.

Panduan cluster pelatihan ini memberikan alur kerja lengkap untuk menjalankan tugas pelatihan dengan framework NeMo. Proses ini dibagi menjadi dua bagian utama: penyiapan awal lingkungan Anda yang dilakukan satu kali dan langkah-langkah berulang untuk meluncurkan tugas.

Menyiapkan lingkungan Anda

Sebelum meluncurkan tugas, Anda harus menyiapkan lingkungan dengan memastikan Anda memiliki image container dan skrip pelatihan yang diperlukan.

Menginstal NeMo-Run

pip install git+https://github.com/NVIDIA/NeMo-Run.git

Menyiapkan image container

Anda memiliki dua opsi untuk image container: menggunakan image bawaan (direkomendasikan) atau membuat image kustom.

Menggunakan image bawaan (direkomendasikan)

Image container bawaan disediakan dalam format .squashfs. Salin image yang sesuai untuk region Anda ke direktori kerja Anda.

# Example for the US region
gcloud storage cp gs://vmds-containers-us/vmds_nemo_squashfs/nemo-20250721.sqsh .
Membuat container yang disesuaikan (lanjutan)

Ikuti langkah-langkah ini hanya jika container bawaan tidak memenuhi kebutuhan Anda. Prosedur ini memandu Anda mengonversi image container kustom ke format .squashfs menggunakan enroot.

Langkah 1: Lakukan autentikasi dengan Google Cloud.

Gunakan perintah berikut untuk memastikan bahwa akun your Google Cloud user dan registry Docker tempat image Anda dihosting diautentikasi:

gcloud auth login
gcloud auth configure-docker us-docker.pkg.dev

Langkah 2: Buat skrip konversi.

Buat file bernama enroot-convert.sh dan tambahkan konten skrip berikut. Sebelum menjalankan skrip ini, Anda harus memperbarui variabel REMOTE_IMG dan LOCAL_IMG agar mengarah ke image container dan jalur output yang Anda pilih.

#!/bin/bash

#SBATCH --gpus-per-node=8
#SBATCH --exclusive
#SBATCH --mem=0
#SBATCH --ntasks-per-node=1

# Run this script on the slurm login node:
# sbatch -N 1 enroot-convert.sh

set -x
set -e

# The remote docker image URI.
REMOTE_IMG="docker://us-docker.pkg.dev/{YOUR_CONTAINER_IMG_URI}:{YOUR_CONTAINER_IMAGE_TAG}"

# The local path to the to be imported enroot squash file.
LOCAL_IMG="${HOME}/my_nemo.sqsh"

# The path to the enroot config file.
TMP_ENROOT_CONFIG_PATH="/tmp/\$(id -u --name)/config/enroot"

# Download the docker image to each node.
srun -l -N "${SLURM_NNODES}" \
bash -c "
mkdir -p ${TMP_ENROOT_CONFIG_PATH};
echo 'machine us-docker.pkg.dev login oauth2accesstoken password $(gcloud auth print-access-token)' > ${TMP_ENROOT_CONFIG_PATH}/.credentials;
rm -f ${LOCAL_IMG};
ENROOT_CONFIG_PATH=${TMP_ENROOT_CONFIG_PATH} ENROOT_MAX_PROCESSORS=$(( $(nproc) / 2 )) enroot import -o ${LOCAL_IMG} ${REMOTE_IMG};
"

Langkah 3: Jalankan skrip dan verifikasi output.

Jalankan skrip di node login Slurm.

sbatch -N 1 enroot-convert.sh

Setelah tugas selesai, temukan log konversi dalam file bernama slurm-<JOB_ID>.out dan image container akhir di jalur yang Anda tentukan untuk LOCAL_IMG.

Mendownload resep pelatihan

Resep pelatihan disimpan di repositori googlesource.com pribadi. Untuk mengaksesnya dengan command line Git, Anda harus membuat kredensial autentikasi terlebih dahulu.

  1. Buat kredensial autentikasi.

    Buka URL berikut dan ikuti petunjuk di layar. Tindakan ini akan mengonfigurasi lingkungan lokal Anda untuk melakukan autentikasi dengan repositori. https://www.googlesource.com/new-password

  2. Buat clone repositori.

    Setelah kredensial diautentikasi, jalankan perintah berikut untuk mendownload resep.

    git clone -b release-allowlist-ga https://vertex-model-garden.googlesource.com/vertex-oss-training
    

Meluncurkan tugas pelatihan

Setelah lingkungan Anda disiapkan, Anda dapat meluncurkan tugas pelatihan.

Langkah 1: Tetapkan variabel lingkungan

Variabel lingkungan berikut mungkin diperlukan untuk tugas Anda:

  • HF_TOKEN diperlukan untuk mendownload model dan set data dari Hugging Face.
  • WANDB_API_KEY diperlukan untuk menggunakan Weights & Biases untuk analisis eksperimen.
export HF_TOKEN=YOUR_HF_TOKEN
export WANDB_API_KEY=YOUR_WANDB_API_KEY

Langkah 2: Jalankan skrip peluncuran

Buka direktori kerja Anda dan jalankan skrip run.py untuk memulai tugas. Contoh ini memulai tugas pelatihan demo dengan Llama 3.1-2b.

# Set the working directory
export WORK_DIR=$HOME/vertex-oss-training/nemo
cd $WORK_DIR

gcloud storage cp
gs://vmds-containers-<region>/vmds_nemo_squashfs/nemo-20250721.sqsh nemo-demo.sqsh

# Launch the training job
export NEMORUN_HOME=$WORK_DIR && \
python3 run.py -e slurm --slurm-type hcc-a3m --partition a3m \
  -d $WORK_DIR -i $WORK_DIR/nemo-demo.sqsh \
  -s pretrain/llama3p1_2b_pt.py -n 2 \
  --experiment-name nemo-demo-run

Parameter peluncuran

  • --slurm-type ditetapkan berdasarkan jenis cluster (misalnya, hcc-a3m, hcc-a3u, hcc-a4).
  • --partition harus ditetapkan ke partisi yang tersedia. Anda dapat memeriksa nama partisi dengan perintah sinfo.
  • Skrip run.py secara otomatis memasang beberapa direktori ke container Docker, termasuk --log-dir, --cache-dir, dan --data-dir, jika ditetapkan.

Memantau status dan log tugas

Setelah Anda meluncurkan tugas, blok status akan ditampilkan:

Experiment Status for nemo-demo-run_1753123402

Task 0: nemo-demo-run
- Status: RUNNING
- Executor: SlurmExecutor on @localhost
- Job id: 75
- Local Directory: $NEMORUN_HOME/experiments/nemo-demo-run/nemo-demo-run_1753123402/nemo-demo-run

Log eksekusi ditulis ke jalur yang ditampilkan di kolom Local Directory dari output status. Misalnya, Anda dapat menemukan file log di jalur yang mirip dengan ini:

$NEMORUN_HOME/experiments/nemo-demo-run/nemo-demo-run_1753123402/nemo-demo-run/<JOB_ID>.log

Error dan solusi umum

Bagian ini menjelaskan masalah umum yang mungkin muncul selama eksekusi tugas dan memberikan langkah-langkah yang direkomendasikan untuk mengatasinya.

Error partisi tidak valid

Secara default, tugas akan mencoba diluncurkan di partisi umum. Jika partisi umum tidak ada atau tidak tersedia, tugas akan gagal dengan error berikut:

sbatch: error: invalid partition specified: general
sbatch: error: Batch job submission failed: Invalid partition name specified

Solusi:

Tentukan partisi yang tersedia menggunakan argumen --partition atau -p dalam perintah peluncuran Anda. Untuk melihat daftar partisi yang tersedia, jalankan perintah sinfo di node login Slurm.

sinfo

Output menampilkan nama partisi yang tersedia, seperti a3u dalam contoh ini:

PARTITION AVAIL TIMELIMIT NODES STATE NODELIST
a3u* panah atas tak terbatas 2 tidak ada aktivitas~ alice-a3u-[2-3]
a3u* panah atas tak terbatas 2 tidak ada aktivitas alice-a3u-[0-1]

Error download tokenizer

Anda mungkin mengalami OSError terkait link lintas perangkat saat skrip mencoba mendownload tokenizer GPT2:

OSError: [Errno 18] Invalid cross-device link: 'gpt2-vocab.json' -> '/root/.cache/torch/megatron/megatron-gpt-345m_vocab'

Solusi:

Anda memiliki dua opsi untuk mengatasi masalah ini:

  • Opsi #1: Jalankan ulang tugas. Error ini sering kali bersifat sementara. Menjalankan ulang tugas menggunakan --cache-dir yang sama dapat mengatasi masalah ini.
  • Opsi #2: Download file tokenizer secara manual. Jika menjalankan ulang tugas gagal, ikuti langkah-langkah berikut:
    • Download dua file berikut:
      • gpt2-vocab.json
      • gpt2-merges.txt
    • Pindahkan file yang didownload ke subdirektori torch/megatron/ dalam direktori cache Anda (misalnya, <var>YOUR_CACHE_DIR</var>/torch/megatron/).
    • Ganti nama file sebagai berikut:
      • Ganti nama gpt2-vocab.json menjadi megatron-gpt-345m_vocab.
      • Ganti nama gpt2-merges.txt menjadi megatron-gpt-345m_merges.

NVIDIA NeMo-RL

Framework NVIDIA NeMo-RL dirancang untuk menyelaraskan model bahasa besar dengan preferensi dan petunjuk manusia. Bagian ini memandu Anda menggunakan NeMo-RL di cluster untuk melakukan tugas penyelarasan lanjutan, termasuk penyetelan lanjutan yang diawasi (SFT), penyetelan preferensi (seperti Direct Preference Optimization, atau DPO), dan Reinforcement Learning (RL).

Panduan ini mencakup dua alur kerja utama: menjalankan tugas pelatihan batch standar dan menggunakan lingkungan pengembangan interaktif untuk proses debug.

Prasyarat

Sebelum memulai, buat cluster dengan mengikuti petunjuk di halaman Membuat cluster, atau gunakan cluster Pelatihan Terkelola yang ada, jika Anda memilikinya.

Menghubungkan ke node login cluster

Untuk terhubung ke node login cluster, temukan perintah Google Cloud CLI yang benar dengan membuka halaman Virtual Machine Google Compute Engine di Google Google Cloud console dan mengklik SSH > Lihat perintah Google Cloud CLI. Perintah tersebut akan terlihat seperti ini:

ssh $USER_NAME@machine-addr

Contoh:

ssh $USER_NAME@nic0.sliua3m1-login-001.europe-north1-c.c.infinipod-shared-dev.internal.gcpnode.com

Menggunakan image Docker bawaan

File .sqsh yang dikonversi disediakan untuk image container bawaan. Anda dapat memilih container untuk region Anda dan menetapkannya langsung sebagai parameter image container atau mendownloadnya ke sistem file cluster.

Untuk menetapkannya langsung sebagai parameter image container, gunakan salah satu jalur berikut. Perhatikan bahwa Anda harus mengganti <region> dengan region tertentu (misalnya, europe, asia, us):

/gcs/vmds-containers-<region>/vmds_nemo_rl_squashfs/nemo_rl-h20260302.sqsh

Untuk mendownload image ke penyimpanan lustre cluster, gunakan perintah berikut:

gs://vmds-containers-<region>/vmds_nemo_rl_squashfs/nemo_rl-h20260302.sqsh DESTINATION

Mendownload kode

Untuk mendapatkan akses ke resep pelatihan dengan git CLI, buka https://www.googlesource.com/new-password. Resep dapat didownload dengan perintah berikut:

cd $HOME
git clone -b release-allowlist-ga https://vertex-model-garden.googlesource.com/vertex-oss-training

Meluncurkan tugas

Langkah 1: Tetapkan variabel lingkungan.

Untuk mengambil model dan data dari Hugging Face, HF_TOKEN mungkin perlu ditetapkan. Untuk menggunakan Weights &Biases untuk analisis eksperimen, WANDB_API_KEY perlu ditetapkan. Perbarui variabel ini dalam file berikut:

File yang akan diperbarui: $HOME/vertex-oss-training/nemo_rl/configs/auth.sh

Jika Anda tidak ingin menggunakan Weights & Biases, tetapkan logger.wandb_enabled ke False dalam skrip peluncuran Anda.

Langkah 2: Download atau salin file container ke folder peluncuran Anda.

Berikut ini beberapa contohnya.

gcloud storage cp \
  gs://vmds-containers-<region>/vmds_nemo_rl_squashfs/nemo_rl-h20260302.sqsh \
  $HOME/vertex-oss-training/nemo_rl/nemo_rl-h20260302.sqsh


# OR

/gcs/vmds-containers-<region>/vmds_nemo_rl_squashfs/nemo_rl-h20260302.sqsh \
  $HOME/vertex-oss-training/nemo_rl/nemo_rl-h20260302.sqsh

cd $HOME/vertex-oss-training/nemo_rl/

# Where region is either `us`, `asia`, or `europe`

Langkah 3: Siapkan atau Clone repositori NeMo-RL.

Buat clone kode NeMo-RL jika belum ada. Perhatikan bahwa Anda mungkin perlu menggunakan git submodule update --init --recursive jika telah meng-clone repositori tanpa flag --recursive.

git clone https://github.com/NVIDIA-NeMo/RL --recursive

Langkah 4: Luncurkan tugas pelatihan.

sbatch -N <num_nodes> launch.sh --cluster_type hcc-a3m --job_script algorithms/dpo.sh

Dengan:

  • --cluster-type ditetapkan berdasarkan jenis cluster:
    • A3-Mega: hcc-a3m
    • A3-Ultra: hcc-a3u
    • A4: hcc-a4
    • A3H: hcc-a3h
  • --partition harus ditetapkan dengan tepat, dengan sinfo dapat digunakan untuk memeriksa partisi slurm.

Setelah tugas Anda dimulai, direktori baru yang diberi nama sesuai dengan ID pekerjaan SLURM akan dibuat di lokasi Anda saat ini. Di dalamnya, Anda akan menemukan semua log dan checkpoint yang termasuk dalam tugas ini. Lebih tepatnya, di dalamnya Anda akan menemukan direktori dan file berikut:

  • checkpoints/ → Direktori ini dipasang di dalam container NeMo-RL dan berisi semua checkpoint dari pelatihan.
  • ray-logs/ → Direktori ini berisi log dari ray head dan ray worker.
  • nemo_rl_output.log → File ini berisi log Slurm dari tugas yang Anda kirimkan.
  • attach.sh (Hanya tugas interaktif) → Ini adalah skrip bash yang memungkinkan Anda melampirkan ke tugas interaktif. Jika tugas Anda berhasil diluncurkan, mungkin perlu waktu beberapa menit agar file ini dibuat.

Pengembangan dengan NeMo-RL

Penyiapan Interaktif

Dua opsi tersedia untuk pengembangan interaktif cepat dengan NeMo-RL.

nemorlinteraktif

Ini adalah perintah helper sederhana yang memungkinkan Anda memilih node GPU dari cluster (misalnya, node nomor 5), lalu perintah ini akan membawa Anda ke container yang berjalan untuk NeMo-RL di dalam node yang Anda pilih. Perintah ini berguna untuk alur kerja node tunggal Anda.

Untuk menggunakan nemorlinteractive, Anda harus mengikuti langkah-langkah prasyarat berikut:

  1. Berikan semua token autentikasi yang Anda inginkan (misalnya, HF dan WandB) yang dimuat ke tugas dalam file configs/auth.sh.
  2. Tetapkan variabel lingkungan CLUSTER_TYPE sesuai dengan panduan berikut:

    export CLUSTER_TYPE="hcc-a3m" # --> if you have A3-Mega cluster
    export CLUSTER_TYPE="hcc-a3u" # --> if you have A3-Ultra cluster
    export CLUSTER_TYPE="hcc-a4"  # --> If you have A4 cluster
    export CLUSTER_TYPE="hcc-a3h" # --> If you have A3H cluster
    
  3. Impor nemorlinteractive di terminal bash Anda dengan membuat sumber bash_utils.sh:

    source bash_utils.sh
    
  4. Jalankan perintah nemorlinteractive. Contoh:

    # Assuming you want to take the compute node number 5.
    nemorlinteractive 5
    

Peluncuran interaktif

Opsi ini memungkinkan Anda menjalankan workload secara interaktif di beberapa node komputasi. Tugas interaktif paling cocok untuk kasus penggunaan proses debug dan verifikasi. Workload ini mencadangkan node tanpa batas waktu hingga developer memutuskan bahwa proses debug telah selesai dan mereka ingin merilis resource.

Berikut adalah langkah-langkah yang perlu diikuti untuk opsi ini:

Berikan semua token autentikasi yang Anda inginkan (misalnya HF dan WandB) yang dimuat ke tugas dalam file configs/auth.sh.

sbatch -N <num_nodes> launch.sh --cluster_type hcc-a3m --interactive
  • Tunggu 2-5 menit dan Anda akan melihat <job_id>/attach.sh dibuat.

  • Untuk memantau progres peluncuran, periksa <job_id>/nemo_rl_output.log untuk melihat progres skrip peluncuran dan periksa <job_id>/ray_logs/ untuk melihat progres peluncuran ray head dan worker.

  • Hubungkan ke tugas interaktif. Skrip ini memungkinkan Anda terhubung lagi meskipun koneksi terputus:

bash <job_id>/attach.sh

Langkah berikutnya

Menjalankan workload bawaan akan memverifikasi status operasional cluster. Langkah berikutnya adalah menjalankan aplikasi pelatihan kustom Anda sendiri.