All Products
Search
Document Center

Container Service for Kubernetes:Pelatihan terdistribusi DeepSpeed

Last Updated:Mar 27, 2026

Jalankan pekerjaan pelatihan terdistribusi DeepSpeed dengan Arena dan visualisasikan hasilnya menggunakan TensorBoard.

Prasyarat

Sebelum memulai, pastikan Anda telah memiliki:

Cara kerja

Pekerjaan DeepSpeed di ACK berjalan dalam topologi launcher-worker:

  • Node Launcher mengoordinasikan proses pelatihan terdistribusi dan tidak menggunakan GPU.

  • Node pekerja menjalankan pelatihan sesungguhnya. Setiap pekerja menerima satu atau lebih GPU dan mengeksekusi skrip pelatihan DeepSpeed.

Karena komunikasi antar-node menggunakan SSH, semua image harus memiliki OpenSSH yang terinstal.

Penting

Pekerjaan pelatihan hanya dapat diakses melalui SSH tanpa kata sandi. Lindungi Kubernetes Secrets di lingkungan produksi.

Pengaturan contoh

Panduan ini menggunakan contoh yang melatih model bahasa tertutup. Kode contoh dan set data dari microsoft/DeepSpeedExamples telah dipaketkan sebelumnya dalam image registry.cn-beijing.aliyuncs.com/acs/deepspeed:hello-deepspeed. Contoh ini menggunakan PVC bernama training-data (didukung oleh volume NAS bersama) untuk menyimpan hasil pelatihan.

Gunakan custom image

Untuk menggunakan kode pelatihan Anda sendiri, pilih salah satu pendekatan berikut:

  • Bangun dari image dasar ACK DeepSpeed:

    registry.cn-beijing.aliyuncs.com/acs/deepspeed:v072_base
  • Bangun dari image dasar Anda sendiri: Ikuti Dockerfile dan instal OpenSSH di dalam image.

Sinkronkan kode dari repositori Git privat

Gunakan parameter --sync-mode=git dan --sync-source untuk menarik kode pelatihan saat waktu proses. Arena menggunakan git-sync untuk menyinkronkan repositori. Atur kredensial menggunakan variabel lingkungan GIT_SYNC_USERNAME dan GIT_SYNC_PASSWORD.

Kirim dan pantau pekerjaan DeepSpeed

Langkah 1: Periksa sumber daya GPU yang tersedia

arena top node

Output yang diharapkan:

NAME                       IPADDRESS      ROLE    STATUS  GPU(Total)  GPU(Allocated)
cn-beijing.192.1xx.x.xx   192.1xx.x.xx   <none>  Ready   0           0
cn-beijing.192.1xx.x.xx   192.1xx.x.xx   <none>  Ready   0           0
cn-beijing.192.1xx.x.xx   192.1xx.x.xx   <none>  Ready   1           0
cn-beijing.192.1xx.x.xx   192.1xx.x.xx   <none>  Ready   1           0
cn-beijing.192.1xx.x.xx   192.1xx.x.xx   <none>  Ready   1           0
---------------------------------------------------------------------------------------------------
Allocated/Total GPUs In Cluster:
0/3 (0.0%)

Terdapat tiga node yang dipercepat GPU yang tersedia.

Langkah 2: Kirim pekerjaan DeepSpeed

Perintah berikut mengirim pekerjaan bernama deepspeed-helloworld dengan satu node Launcher dan tiga node pekerja, masing-masing menggunakan satu GPU:

arena submit deepspeedjob \
    --name=deepspeed-helloworld \
    --gpus=1 \
    --workers=3 \
    --image=registry.cn-beijing.aliyuncs.com/acs/deepspeed:hello-deepspeed \
    --data=training-data:/data \
    --tensorboard \
    --logdir=/data/deepspeed_data \
    "deepspeed /workspace/DeepSpeedExamples/HelloDeepSpeed/train_bert_ds.py --checkpoint_dir /data/deepspeed_data"

Parameter

Parameter Wajib Deskripsi Bawaan
--name Ya Nama pekerjaan yang unik secara global
--image Ya Image container untuk waktu proses
--gpus Tidak GPU yang dialokasikan ke setiap node pekerja 0
--workers Tidak Jumlah node pekerja 1
--data Tidak Memasang PVC ke dalam waktu proses. Format: <pvc-name>:<mount-path>. Jalankan arena data list untuk melihat PVC yang tersedia.
--tensorboard Tidak Mengaktifkan layanan TensorBoard. Harus digunakan bersama dengan --logdir.
--logdir Tidak Path tempat TensorBoard membaca file event. Harus digunakan bersama dengan --tensorboard. /training_logs

Untuk menyinkronkan kode dari repositori Git privat alih-alih memasukkannya ke dalam image, tambahkan flag berikut:

arena submit deepspeedjob \
    ...
    --sync-mode=git \
    --sync-source=<private-git-repo-url> \
    --env=GIT_SYNC_USERNAME=<username> \
    --env=GIT_SYNC_PASSWORD=<password> \
    "deepspeed /workspace/DeepSpeedExamples/HelloDeepSpeed/train_bert_ds.py --checkpoint_dir /data/deepspeed_data"

Output yang diharapkan setelah pengiriman:

trainingjob.kai.alibabacloud.com/deepspeed-helloworld created
INFO[0007] The Job deepspeed-helloworld has been submitted successfully
INFO[0007] You can run `arena get deepspeed-helloworld --type deepspeedjob` to check the job status

Langkah 3: Verifikasi pekerjaan sedang berjalan

Daftar semua pekerjaan pelatihan Arena:

arena list

Output yang diharapkan:

NAME                  STATUS   TRAINER         DURATION  GPU(Requested)  GPU(Allocated)  NODE
deepspeed-helloworld  RUNNING  DEEPSPEEDJOB    3m        3               3               192.168.9.69

Periksa penggunaan GPU berdasarkan pekerjaan:

arena top job

Output yang diharapkan:

NAME                  STATUS   TRAINER         AGE  GPU(Requested)  GPU(Allocated)  NODE
deepspeed-helloworld  RUNNING  DEEPSPEEDJOB    4m   3               3               192.168.9.69

Total Allocated/Requested GPUs of Training Jobs: 3/3

Periksa penggunaan GPU di seluruh kluster:

arena top node

Output yang diharapkan:

NAME                       IPADDRESS      ROLE    STATUS  GPU(Total)  GPU(Allocated)
cn-beijing.192.1xx.x.xx   192.1xx.x.xx   <none>  Ready   0           0
cn-beijing.192.1xx.x.xx   192.1xx.x.xx   <none>  Ready   0           0
cn-beijing.192.1xx.x.xx   192.1xx.x.xx   <none>  Ready   1           1
cn-beijing.192.1xx.x.xx   192.1xx.x.xx   <none>  Ready   1           1
cn-beijing.192.1xx.x.xx   192.1xx.x.xx   <none>  Ready   1           1
---------------------------------------------------------------------------------------------------
Allocated/Total GPUs In Cluster:
3/3 (100%)

Langkah 4: Dapatkan detail pekerjaan dan URL TensorBoard

arena get deepspeed-helloworld

Output yang diharapkan:

Name:      deepspeed-helloworld
Status:    RUNNING
Namespace: default
Priority:  N/A
Trainer:   DEEPSPEEDJOB
Duration:  6m

Instances:
  NAME                           STATUS   AGE  IS_CHIEF  GPU(Requested)  NODE
  ----                           ------   ---  --------  --------------  ----
  deepspeed-helloworld-launcher  Running  6m   true      0               cn-beijing.192.1xx.x.x
  deepspeed-helloworld-worker-0  Running  6m   false     1               cn-beijing.192.1xx.x.x
  deepspeed-helloworld-worker-1  Running  6m   false     1               cn-beijing.192.1xx.x.x
  deepspeed-helloworld-worker-2  Running  6m   false     1               cn-beijing.192.1xx.x.x

Your tensorboard will be available on:
http://192.1xx.x.xx:31870

Dua baris terakhir hanya muncul jika TensorBoard diaktifkan.

Langkah 5: Lihat hasil pelatihan di TensorBoard

  1. Teruskan layanan TensorBoard ke port lokal:

    kubectl port-forward svc/deepspeed-helloworld-tensorboard 9090:6006
  2. Buka localhost:9090 di browser.

    TensorBoard training results

Langkah 6: Lihat log pelatihan

Cetak semua log dari pekerjaan:

arena logs deepspeed-helloworld

Output yang diharapkan:

deepspeed-helloworld-worker-0: [2023-03-31 08:38:11,201] [INFO] [logging.py:68:log_dist] [Rank 0] step=7050, skipped=24, lr=[0.0001], mom=[(0.9, 0.999)]
deepspeed-helloworld-worker-0: [2023-03-31 08:38:11,254] [INFO] [timer.py:198:stop] 0/7050, RunningAvgSamplesPerSec=142.69733028759384, CurrSamplesPerSec=136.08094834473613, MemAllocated=0.06GB, MaxMemAllocated=1.68GB
deepspeed-helloworld-worker-0: 2023-03-31 08:38:11.255 | INFO     | __main__:log_dist:53 - [Rank 0] Loss: 6.7574
deepspeed-helloworld-worker-0: [2023-03-31 08:38:13,103] [INFO] [logging.py:68:log_dist] [Rank 0] step=7060, skipped=24, lr=[0.0001], mom=[(0.9, 0.999)]
deepspeed-helloworld-worker-0: [2023-03-31 08:38:13,134] [INFO] [timer.py:198:stop] 0/7060, RunningAvgSamplesPerSec=142.69095076844823, CurrSamplesPerSec=151.8552037291255, MemAllocated=0.06GB, MaxMemAllocated=1.68GB
deepspeed-helloworld-worker-0: 2023-03-31 08:38:13.136 | INFO     | __main__:log_dist:53 - [Rank 0] Loss: 6.7570
deepspeed-helloworld-worker-0: [2023-03-31 08:38:14,924] [INFO] [logging.py:68:log_dist] [Rank 0] step=7070, skipped=24, lr=[0.0001], mom=[(0.9, 0.999)]
deepspeed-helloworld-worker-0: [2023-03-31 08:38:14,962] [INFO] [timer.py:198:stop] 0/7070, RunningAvgSamplesPerSec=142.69048436022115, CurrSamplesPerSec=152.91029839772997, MemAllocated=0.06GB, MaxMemAllocated=1.68GB
deepspeed-helloworld-worker-0: 2023-03-31 08:38:14.963 | INFO     | __main__:log_dist:53 - [Rank 0] Loss: 6.7565

Untuk mengalirkan log secara real time, gunakan -f. Untuk mencetak hanya N baris terakhir, gunakan -t N:

# Mengalirkan log secara real time
arena logs deepspeed-helloworld -f

# Cetak 5 baris terakhir
arena logs deepspeed-helloworld -t 5

Output yang diharapkan untuk -t 5:

deepspeed-helloworld-worker-0: [2023-03-31 08:47:08,694] [INFO] [launch.py:318:main] Process 80 exits successfully.
deepspeed-helloworld-worker-2: [2023-03-31 08:47:08,731] [INFO] [launch.py:318:main] Process 44 exits successfully.
deepspeed-helloworld-worker-1: [2023-03-31 08:47:08,946] [INFO] [launch.py:318:main] Process 44 exits successfully.
/opt/conda/lib/python3.8/site-packages/apex/pyprof/__init__.py:5: FutureWarning: pyprof will be removed by the end of June, 2022
  warnings.warn("pyprof will be removed by the end of June, 2022", FutureWarning)

Jalankan arena logs --help untuk melihat semua opsi log yang tersedia.