全部产品
Search
文档中心

Auto Scaling:Kurangi biaya penyesuaian model besar menggunakan spot instances

更新时间:Jul 06, 2025

Anda dapat mengurangi biaya penyesuaian model besar dengan mengaktifkan grup skala untuk secara otomatis menjadwalkan spot instances. Jika spot instances terganggu atau direklamasi, yang baru akan diluncurkan dalam grup skala, dan pelatihan dilanjutkan dari checkpoint terbaru, memastikan kemajuan berkelanjutan.

Ikhtisar Solusi

Solusi ini memungkinkan penyesuaian model besar dengan biaya rendah menggunakan grup skala. Solusi ini memprioritaskan spot instances dan memanfaatkan Object Storage Service (OSS) untuk penyimpanan checkpoint persisten. Fitur utama meliputi:

  1. Prioritas Spot Instance: Spot instances diprioritaskan untuk tugas pelatihan dalam grup skala, dengan checkpoint disimpan secara otomatis ke OSS buckets untuk ketahanan.

  2. Skalabilitas Otomatis dengan Kontinuitas Failover: Ketika spot instances terganggu atau direklamasi, Auto Scaling pertama-tama mencoba menyediakan penggantian spot instances di zona lain. Jika jenis spot instance tidak tersedia, sistem beralih ke pay-as-you-go instances. Dalam kedua kasus tersebut, pelatihan dilanjutkan tanpa hambatan dari checkpoint terbaru.

  3. Otomatis Kembali ke Spot Instances: Setelah jenis spot instance tersedia kembali, Auto Scaling secara otomatis beralih kembali dari pay-as-you-go ke spot instances, dan pelatihan dilanjutkan dari checkpoint terbaru.

image

Catatan

Untuk memaksimalkan penghematan biaya, konfigurasikan grup skala Anda untuk menggunakan spot instances selama proses pelatihan penuh, meskipun ini mungkin menunda waktu penyelesaian pelatihan. Jika jenis spot instance menjadi tidak tersedia, jeda pelatihan dan lanjutkan nanti ketika inventaris spot dikembalikan. Untuk informasi lebih lanjut tentang cara mengoptimalkan biaya dengan menggabungkan grup skala dengan spot instances, lihat Gunakan Spot Instances untuk Mengurangi Biaya.

Perbandingan Biaya

Penting

Perbandingan biaya dalam tabel di bawah ini hanya untuk referensi, karena penghematan aktual tergantung pada penggunaan dunia nyata.

Dengan asumsi periode pelatihan 12 jam, harga satuan untuk spot instance adalah 3,5 CNY per jam, sedangkan instance pay-as-you-go berharga 10 CNY per jam. Tabel berikut memberikan perbandingan biaya antara kedua opsi tersebut.

Mode

Semua Spot

Hibrida (Spot + Pay-as-you-go)

Semua Pay-as-you-go

Deskripsi

Ketika spot instance terganggu dan direklamasi, pelatihan dijeda. Setelah inventaris jenis spot instance dipulihkan, spot instance baru secara otomatis dibuat untuk melanjutkan pelatihan.

Sebuah spot instance berjalan selama 1 jam sebelum terganggu dan direklamasi. Setelah gangguan, instance pay-as-you-go digunakan selama 0,5 jam sambil menunggu kapasitas spot. Pelatihan kemudian beralih kembali ke spot instance baru setelah inventaris jenis spot instance tersedia.

Pelatihan dilakukan secara eksklusif pada instance pay-as-you-go.

Biaya

12h x 3,5 CNY/h = 42

8h x 3,5 CNY/h + 4h x 10 CNY/h = 68

12h x 10 CNY/h = 120

Penghematan biaya dibandingkan menggunakan hanya instance pay-as-you-go

65%

43,33%

0%

Prosedur

  1. Buat Gambar Dasar dengan Lingkungan Pelatihan Esensial

    Gambar ini berfungsi sebagai template startup untuk instance dalam grup skala. Skrip auto-start bawaan memastikan instance baru dapat dengan cepat melanjutkan pelatihan dan berjalan secara otomatis.

  2. Buat dan Konfigurasikan Grup Skala

    Grup skala memastikan tugas pelatihan berlanjut dengan secara otomatis meluncurkan spot atau pay-as-you-go instances baru ketika yang ada terganggu atau direklamasi.

  3. Mulai Pelatihan

    Setelah grup skala dikonfigurasi, acara scale-out secara otomatis dipicu. Ini menciptakan instance baru, yang segera mulai menjalankan tugas pelatihan berdasarkan aturan otomatisasi yang telah ditentukan.

  4. Uji: Simulasikan Gangguan dan Reklamasi

    Secara manual picu gangguan dan reklamasi instance untuk memastikan bahwa sistem secara otomatis meluncurkan instance baru dan melanjutkan tugas pelatihan yang terganggu dengan benar. Validasi ini penting untuk memastikan stabilitas dan keandalan selama skenario reklamasi sumber daya.

1. Buat gambar dasar yang berisi lingkungan pelatihan esensial

Topik ini menunjukkan langkah-langkah untuk penyesuaian diri model DeepSeek-R1-Distill-Qwen-7B menggunakan kerangka pelatihan Swift dalam setup satu mesin, satu GPU.

Untuk meningkatkan efisiensi startup instance tugas, pertama-tama buat instance dengan lingkungan pelatihan dan dependensi yang diperlukan, lalu hasilkan gambar kustom darinya untuk berfungsi sebagai template peluncuran grup skala. Gambar ini harus mencakup skrip pelatihan otomatis yang sudah diinstal sebelumnya dan layanan startup untuk memastikan seluruh proses berjalan tanpa intervensi manual. Arsitektur instance Elastic Compute Service (ECS) yang digunakan untuk membuat gambar ditunjukkan pada gambar berikut.

image

Poin-poin penting dirangkum di sini:

  • Dependensi Lingkungan Pelatihan Dasar: Dependensi yang diperlukan termasuk driver GPU, CUDA, dan paket Python. Dependensi spesifik bergantung pada kerangka pelatihan yang dipilih.

  • Skrip Pelatihan Otomatis: Skrip ini harus secara otomatis mendeteksi apakah akan melanjutkan pelatihan dari checkpoint terbaru dan menentukan apakah pelatihan sudah selesai.

  • Otomatis Mount Bucket saat Startup: Saat skrip pelatihan dimulai, ia membaca file bobot model, dataset, dan checkpoint yang dihasilkan langsung dari OSS bucket.

  • Otomatis Mulai Pelatihan saat Instance Diluncurkan: Setelah instance dimulai, skrip pelatihan berjalan secara otomatis, membaca file dari OSS bucket untuk memulai atau melanjutkan pelatihan.

Setelah Anda memahami poin-poin penting, ikuti langkah-langkah ini untuk membangun gambar:

1.1 Buat instance dan bangun lingkungan dasar

Instance ini berfungsi sebagai template untuk membuat gambar. Nanti, Auto Scaling akan secara otomatis meluncurkan instance baru dari gambar ini dalam grup skala.

  1. Pergi ke ECS Console untuk membuat instance yang dioptimalkan dengan akselerasi GPU.

    Pertama, Anda perlu membuat instance GPU-accelerated pay-as-you-go untuk menyiapkan lingkungan dasar. Contoh ini menggunakan tipe instance ecs.gn7i-c8g1.2xlarge, diterapkan di Zona J wilayah China (Hangzhou). Langkah-langkah konfigurasi diilustrasikan pada gambar berikut.

    ① Metode Penagihan: Atur nilai menjadi Pay-as-you-go.

    ② Wilayah: Pilih China (Hangzhou).

    ③④ Jaringan dan Zona: Pilih VPC dan vSwitches. Jika tidak ada VPC atau vSwitches yang ada, ikuti petunjuk di layar untuk membuatnya.

    image

    ⑤⑥ Instance > Semua Jenis Instance: Pilih ecs.gn7i-c8g1.2xlarge.

    image

    ⑦⑧⑨ Image > Public Images: Pilih Ubuntu 22.04 64 bit.

    ⑩ Instalasi Otomatis Driver GPU: Tentukan Versi CUDA 12.4.1,Versi Driver 550.127.08, dan Versi CUDNN 9.2.0.82.

    image

    System Disk > Size: Masukkan 60 GiB.

    image

    ⑫ Alamat IP Publik: Pilih Assign Public IPv4 Address untuk mengaktifkan akses Internet dan unduhan file.

    ⑬ Bandwidth Billing Method: Pilih Pay-by-traffic.

    ⑭ Maximum Bandwidth: Pilih 100 Mbps.

    ⑮ Grup Keamanan: Klik tab New Security Group.

    ⑯ Jenis Grup Keamanan: Atur nilainya menjadi Grup Keamanan Dasar.

    ⑰ Buka Port/Protokol IPv4: Pilih SSH (TCP:22) dan ICMP (IPv4) untuk memfasilitasi koneksi jarak jauh berikutnya.

    image

    ⑱⑲⑳ Log Kredensial: Pilih Key Pair. Pasangan kunci ini diperlukan untuk masuk ke instance ECS. Anda juga dapat mengatur nilainya menjadi Kata Sandi Kustom. Lengkapi pengaturan sesuai petunjuk.

    ㉑ Nama Instance: Masukkan nama untuk instance ECS. Gunakan nama instance yang jelas dan mudah diingat untuk mempermudah pencarian. Dalam contoh ini, ess-lora-deepseek7b-template digunakan.

    image

    Klik Confirm Order. Tunggu hingga instance ECS dibuat.

  2. Setelah instance ECS siap, hubungkan ke instance tersebut dan tunggu hingga instalasi driver GPU selesai.

    1. Pergi ke ECS Console - Instance.

    2. Temukan instance ECS yang Anda buat pada langkah sebelumnya, dan klik Connect di kolom Actions. Gunakan Workbench untuk membangun koneksi, dan masuk ke instance ECS sesuai petunjuk.

      Jika instance ECS tidak ditemukan, periksa apakah wilayah saat ini sesuai dengan wilayah instance. Anda dapat beralih wilayah menggunakan daftar tarik-turun di sudut kiri atas.
      Jika instance ECS dihentikan, segarkan halaman dan tunggu hingga dimulai.

      image

    3. Setelah Anda terhubung ke instance ECS, tunggu hingga instalasi driver GPU selesai. Setelah instalasi selesai, sistem akan meminta Anda untuk menyambungkan kembali ke instance ECS.

      Jika antarmuka menjadi tidak responsif, coba segarkan halaman dan sambungkan kembali ke instance ECS.

      image

      Bagaimana saya bisa memverifikasi apakah instalasi selesai ketika saya tidak bisa melihat konten halaman?

      Halaman ini tidak muncul setelah Anda terhubung ke instance ECS, kemungkinan besar karena driver sudah terinstal. Untuk memeriksa apakah driver sudah terinstal, jalankan perintah berikut:

      nvidia-smi

      Jika halaman berikut muncul, driver telah diinstal.

      image

      Jika halaman ini tidak muncul, driver startup belum diinstal atau memiliki masalah. Kami merekomendasikan untuk membuat instance baru dan memilih Auto-Install GPU Driver selama pengaturan.

      Jika Anda ingin menginstal driver secara manual, lihat Instal Driver Tesla secara Manual pada Instance Linux yang Dioptimalkan Komputasi dengan Akselerasi GPU.
  3. Instal dependensi Python.

    Untuk menginstal dependensi Python yang diperlukan untuk pelatihan, jalankan perintah berikut:

    Contoh ini menggunakan Ubuntu 22.04 64-bit image, yang mencakup Python 3.10. Akibatnya, Anda tidak perlu menginstal dependensi Python secara terpisah.
    # The Ubuntu 22.04 64-bit image includes Python 3.10 by default, so no extra installation is needed.
    python3 -m pip install --upgrade pip
    # Switch to Alibaba Cloud internal image repository.
    pip config set global.index-url http://mirrors.cloud.aliyuncs.com/pypi/simple/
    
    pip install modelscope==1.22.3
    pip install openai==1.61.0
    pip install tqdm==4.67.1
    pip install "vllm>=0.5.1" -U
    pip install "lmdeploy>=0.5,<0.6.5" -U --no-deps
    pip install autoawq -U --no-deps
    pip install auto_gptq optimum bitsandbytes -U
    pip install ms-swift[all]
    pip install timm -U
    pip install deepspeed==0.14.* -U
    pip install qwen_vl_utils decord librosa pyav icecream -U
Saat menunggu dependensi diinstal, Anda dapat mengklik ikon image untuk mengaktifkan fitur multi-terminal dan melanjutkan langkah-langkah di Langkah 1.2.

1.2 Buat dan lampirkan OSS bucket

Untuk menyimpan file bobot model, dataset, dan checkpoint yang dihasilkan selama pelatihan, Anda harus terlebih dahulu membuat OSS bucket. Setelah bucket dibuat, lampirkan ke instance ECS Anda sebagai disk data tambahan.

  1. Pergi ke Konsol OSS untuk membuat bucket.

    Gambar-gambar berikut menunjukkan pengaturan parameter utama untuk contoh ini. Pertahankan nilai default untuk parameter apa pun yang tidak terdaftar.

    ② Nama Bucket: Masukkan nama untuk bucket. Nama bucket diperlukan saat memasang bucket.

    ③ Wilayah: Pilih wilayah. Wilayah yang dipilih harus sesuai dengan wilayah instance ECS. Dalam contoh ini, wilayah harus China (Hangzhou).

    Anda dapat menggunakan instance ECS untuk mengakses OSS buckets dalam wilayah yang sama melalui jaringan internal, dan tidak ada biaya untuk lalu lintas di jaringan ini. Untuk informasi lebih lanjut, lihat Akses ke Sumber Daya OSS dari Instance ECS Menggunakan Titik Akhir Internal OSS.

    image

  2. Buat dan Ikat RAM Role.

    Resource Access Management (RAM) role digunakan untuk memberikan izin kepada instance ECS untuk mengakses OSS buckets. Untuk membuat dan mengikat RAM role, lakukan langkah-langkah berikut:

    1. Dalam Konsol RAM, buat RAM role. Gambar-gambar berikut menunjukkan pengaturan parameter utama untuk contoh ini.

      image

      ② Jenis Principal: Pilih Cloud Service.

      ③ Nama Principal: Pilih Elastic Compute Service, yang menentukan bahwa RAM role akan diberikan ke instance ECS.

      Klik OK dan tentukan nama untuk RAM role sesuai petunjuk.

      image

    2. Dalam Konsol RAM, buat kebijakan kustom seperti yang ditunjukkan pada gambar berikut.

      image

      image

      Kebijakan ini memberikan semua izin yang diperlukan untuk mengakses OSS bucket. Skrip kebijakan adalah sebagai berikut:

      Penting

      Saat mengonfigurasi kebijakan kustom, ganti <bucket_name> dengan nama bucket yang sebenarnya Anda buat.

      {
          "Version": "1",
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": "oss:*",
                  "Resource": [
                      "acs:oss:*:*:<bucket_name>",
                      "acs:oss:*:*:<bucket_name>/*"
                  ]
              }
          ]
      }

      Klik OK, lalu konfigurasikan nama kebijakan sesuai permintaan.

    3. Dalam Konsol RAM, berikan izin ke RAM role.

      ⑥ Principal: Pilih RAM role yang Anda buat.

      ⑦ Policy: Pilih kebijakan kustom yang Anda buat.

      image

      Klik Grant permissions.

    4. Masuk ke Konsol ECS dan tetapkan RAM role ke instance ECS.

      Jika instance ECS tidak ditemukan, periksa apakah wilayah saat ini sesuai dengan wilayah instance. Anda dapat beralih wilayah menggunakan daftar tarik-turun di sudut kiri atas.

      image

  3. Mount OSS bucket ke instance ECS.

    1. Hubungkan ke instance ECS yang dibuat di Langkah 1.1, dan jalankan perintah berikut untuk menginstal ossfs:

      wget https://gosspublic.alicdn.com/ossfs/ossfs_1.91.5_ubuntu22.04_amd64.deb
      apt-get update
      DEBIAN_FRONTEND=noninteractive apt-get install gdebi-core
      DEBIAN_FRONTEND=noninteractive gdebi -n ossfs_1.91.5_ubuntu22.04_amd64.deb
    2. Jalankan perintah berikut untuk memasang OSS bucket: Perbarui pengaturan parameter dalam perintah dengan nilai-nilai berikut:

      • <bucket_name>: Ganti ini dengan nama bucket yang Anda buat.

        Lihat Nama Bucket

        Pergi ke Konsol OSS untuk menemukan bucket yang Anda buat.

      • <ecs_ram_role>: Ganti ini dengan nama RAM role yang Anda buat.

        Lihat Nama RAM Role

        Pergi ke Konsol ECS, temukan instance yang RAM role-nya ditetapkan, dan kemudian ikuti langkah-langkah yang ditunjukkan pada gambar berikut untuk pergi ke halaman Attach/Detach RAM Role.

        Halaman ini menunjukkan RAM role yang telah ditetapkan ke instance.

        Jika instance ECS tidak ditemukan, periksa apakah wilayah saat ini sesuai dengan wilayah instance. Anda dapat beralih wilayah menggunakan daftar tarik-turun di sudut kiri atas.

        image

      • <internal_endpoint>: Ganti ini dengan oss-cn-hangzhou-internal.aliyuncs.com.

        Penting

        Dalam contoh ini, bucket berada di wilayah China (Hangzhou). Akibatnya, endpoint VPC yang digunakan adalah oss-cn-hangzhou-internal.aliyuncs.com.

        Bagaimana cara mendapatkan endpoint jika OSS bucket saya tidak berada di China (Hangzhou)?

        Jika Anda membuat OSS bucket di wilayah selain China (Hangzhou), ambil endpoint VPC dan ganti <internal_endpoint> dengan endpoint VPC yang Anda dapatkan.

        image

      # Ganti nama bucket, endpoint VPC, dan RAM role dengan nilai-nilai sebenarnya.
      BUCKET_NAME="<bucket_name>"
      ECS_RAM_ROLE="<ecs_ram_role>"
      INTERNAL_ENDPOINT="<internal_endpoint>"
      
      # Direktori mount bucket.
      BUCKET_MOUNT_PATH="/mnt/oss-data"
      
      #1. Cadangkan file fstab sebelum mounting.
      cp /etc/fstab /etc/fstab.bak
      
      #2. Buat direktori mount.
      mkdir $BUCKET_MOUNT_PATH
      #3. Mount bucket ke instance.
      ossfs $BUCKET_NAME $BUCKET_MOUNT_PATH -ourl=$INTERNAL_ENDPOINT -oram_role=http://100.100.100.200/latest/meta-data/ram/security-credentials/$ECS_RAM_ROLE
      #4. Aktifkan pemasangan otomatis saat startup instance.
      echo "ossfs#$BUCKET_NAME $BUCKET_MOUNT_PATH fuse _netdev,url=http://$INTERNAL_ENDPOINT,ram_role=http://100.100.100.200/latest/meta-data/ram/security-credentials/$ECS_RAM_ROLE,allow_other 0 0" | sudo tee -a /etc/fstab
  4. Periksa apakah ruang penyimpanan tersedia.

    1. Unggah file apa pun ke OSS bucket.

      image

    2. Jalankan perintah berikut di instance untuk memeriksa apakah file tersebut terlihat di direktori mount:

      ls /mnt/oss-data/

      Jika muncul, ini berarti pemasangan berhasil.

      image

    Mengapa saya tidak bisa menemukan file ini di OSS bucket?

    Masalah ini mungkin disebabkan oleh kegagalan pemasangan. Ikuti langkah-langkah ini untuk memecahkan masalah.

    1. Verifikasi apakah instance ECS dan OSS bucket berada di wilayah yang sama. Selain itu, pastikan bahwa <internal_endpoint> dalam perintah mount diganti dengan benar dengan endpoint VPC bucket Anda.

    2. Verifikasi apakah <bucket_name> dalam perintah mount diganti dengan benar dengan nama bucket Anda.

    3. Tetapkan ulang RAM role ke instance ECS dan verifikasi apakah <ecs_ram_role> dalam perintah mount sesuai dengan nama RAM role.

    4. Ganti <bucket_name>, <internal_endpoint>, dan <ecs_ram_role> dalam perintah berikut dengan nilai-nilai yang sesuai, lalu pasang ulang bucket.

      # Ganti nama bucket, endpoint VPC, dan RAM role dengan nilai-nilai sebenarnya.
      BUCKET_NAME="<bucket_name>"
      ECS_RAM_ROLE="<ecs_ram_role>"
      INTERNAL_ENDPOINT="<internal_endpoint>"
      
      # Direktori mount bucket.
      BUCKET_MOUNT_PATH="/mnt/oss-data"
      
      #1. Coba lepaskan bucket.
      umount $BUCKET_MOUNT_PATH
      
      #2. Pulihkan file /etc/fstab dari cadangan.
      cp /etc/fstab.bak /etc/fstab
      
      #3. Pasang ulang bucket ke instance.
      ossfs $BUCKET_NAME $BUCKET_MOUNT_PATH -ourl=$INTERNAL_ENDPOINT -oram_role=http://100.100.100.200/latest/meta-data/ram/security-credentials/$ECS_RAM_ROLE
      #4. Aktifkan kembali pemasangan otomatis saat startup instance.
      echo "ossfs#$BUCKET_NAME $BUCKET_MOUNT_PATH fuse _netdev,url=http://$INTERNAL_ENDPOINT,ram_role=http://100.100.100.200/latest/meta-data/ram/security-credentials/$ECS_RAM_ROLE,allow_other 0 0" | sudo tee -a /etc/fstab
    1. Verifikasi apakah file dari OSS bucket terlihat di direktori mount (/mnt/oss-data).

      ls /mnt/oss-data/

1.3 Siapkan model dan dataset

File bobot model dan dataset yang dirujuk dalam topik ini dapat diunduh dari komunitas ModelScope. Setelah terhubung ke instance ECS, unduh model dan dataset ke direktori mount OSS bucket dan tunggu hingga semua file selesai diunduh.

  1. Unduh Dataset

    # Direktori mount bucket.
    BUCKET_MOUNT_PATH="/mnt/oss-data"
    
    # Unduh dataset penyesuaian dari komunitas ModelScope.
    # Gunakan alat modelscope yang diinstal di Langkah 1.1.
    modelscope download --dataset swift/self-cognition --local_dir $BUCKET_MOUNT_PATH/self-cognition
    modelscope download --dataset AI-ModelScope/alpaca-gpt4-data-zh --local_dir $BUCKET_MOUNT_PATH/alpaca-gpt4-data-zh
    modelscope download --dataset AI-ModelScope/alpaca-gpt4-data-en --local_dir $BUCKET_MOUNT_PATH/alpaca-gpt4-data-en
    Jika kemajuan macet, coba tekan Enter beberapa kali.
  2. Unduh File Bobot Model

    Penting

    Jika file bobot model terlalu besar dan unduhan gagal atau muncul pesan silakan coba lagi, cukup ulangi perintah untuk melanjutkan unduhan.

    # Direktori mount bucket.
    BUCKET_MOUNT_PATH="/mnt/oss-data"
    
    # Unduh model DeepSeek-R1-Distill-Qwen-7B dari komunitas ModelScope.
    modelscope download --model deepseek-ai/DeepSeek-R1-Distill-Qwen-7B --local_dir $BUCKET_MOUNT_PATH/DeepSeek-R1-Distill-Qwen-7B
    Jika kemajuan macet, coba tekan Enter beberapa kali.
  3. Verifikasi apakah file bobot model valid

    Setelah unduhan selesai, jalankan perintah berikut di terminal untuk menguji fungsionalitas model dan memverifikasi apakah file bobot model lengkap.

    # Direktori mount bucket.
    BUCKET_MOUNT_PATH="/mnt/oss-data"
    
    CUDA_VISIBLE_DEVICES=0 swift infer \
        --model $BUCKET_MOUNT_PATH/DeepSeek-R1-Distill-Qwen-7B \
        --stream true \
        --infer_backend pt \
        --max_new_tokens 2048

    Setelah file bobot model dimuat, seperti yang ditunjukkan pada gambar berikut, Anda dapat mulai berinteraksi dengan model besar. Jika file bobot model gagal dimuat, coba unduh lagi.

    2025-03-26_13-36-48 (1)

    Masukkan exit setelah pengujian selesai.

1.4 Tulis skrip pelatihan otomatis

  1. Tulis skrip pelatihan otomatis.

    Jalankan perintah berikut untuk membuat skrip pelatihan otomatis dan berikan izin eksekusi. Skrip ini akan secara otomatis melanjutkan pelatihan dari checkpoint terbaru dan memantau kemajuan pelatihan hingga selesai.

    # Buat skrip pelatihan otomatis.
    cat <<EOF > /root/train.sh
    #!/bin/bash
    
    # Direktori mount bucket.
    BUCKET_MONTH_PATH="/mnt/oss-data"
    
    # Direktori penyimpanan file bobot model dan dataset.
    MODEL_PATH="\$BUCKET_MONTH_PATH/DeepSeek-R1-Distill-Qwen-7B"
    DATASET_PATH="\$BUCKET_MONTH_PATH/alpaca-gpt4-data-zh#500 \$BUCKET_MONTH_PATH/alpaca-gpt4-data-en#500 \$BUCKET_MONTH_PATH/self-cognition#500"
    
    # Tetapkan direktori keluaran.
    OUTPUT_DIR="\$BUCKET_MONTH_PATH/output"
    mkdir -p "\$OUTPUT_DIR"
    
    # Konfirmasi bahwa pelatihan telah selesai tanpa memerlukan operasi apa pun.
    if [ -f "\$OUTPUT_DIR/logging.jsonl" ]; then
        last_line=\$(tail -n 1 "\$OUTPUT_DIR/logging.jsonl")
        if echo "\$last_line" | grep -q "last_model_checkpoint" && echo "\$last_line" | grep -q "best_model_checkpoint"; then
            echo "Pelatihan sudah selesai. Keluar."
            exit 0
        fi
    fi
    
    # Inisialisasi parameter pemulihan.
    RESUME_ARG=""
    
    # Temukan checkpoint terbaru
    LATEST_CHECKPOINT=\$(ls -dt \$OUTPUT_DIR/checkpoint-* 2>/dev/null | head -1)
    
    if [ -n "\$LATEST_CHECKPOINT" ]; then
        RESUME_ARG="--resume_from_checkpoint \$LATEST_CHECKPOINT"
        echo "Melanjutkan pelatihan dari: \$LATEST_CHECKPOINT"
    else
        echo "Tidak ada checkpoint ditemukan. Memulai pelatihan baru."
    fi
    
    # Mulai perintah pelatihan.
    CUDA_VISIBLE_DEVICES=0 swift sft \\
        --model \$MODEL_PATH \\
        --train_type lora \\
        --dataset \$DATASET_PATH \\
        --torch_dtype bfloat16 \\
        --num_train_epochs 1 \\
        --per_device_train_batch_size 1 \\
        --per_device_eval_batch_size 1 \\
        --learning_rate 1e-4 \\
        --lora_rank 8 \\
        --lora_alpha 32 \\
        --target_modules all-linear \\
        --gradient_accumulation_steps 16 \\
        --eval_steps 50 \\
        --save_steps 10 \\
        --save_total_limit 5 \\
        --logging_steps 5 \\
        --max_length 2048 \\
        --output_dir "\$OUTPUT_DIR" \\
        --add_version False \\
        --overwrite_output_dir True \\
        --system 'Anda adalah asisten yang membantu.' \\
        --warmup_ratio 0.05 \\
        --dataloader_num_workers 4 \\
        --model_author swift \\
        --model_name swift-robot \\
        \$RESUME_ARG
    EOF
    
    # Berikan izin eksekusi.
    chmod +x /root/train.sh

    Verifikasi apakah skrip berjalan dengan benar

    Jalankan perintah berikut untuk memverifikasi apakah skrip berjalan dengan benar:

    ./train.sh

    Seperti yang ditunjukkan pada gambar berikut, jika model dimuat dengan benar setelah Anda menjalankan perintah dan pelatihan dimulai tanpa masalah, ini menegaskan bahwa file model valid, dan dependensi lengkap. Untuk keluar dari pelatihan, tekan CTRL + C.

    image

    Jika tidak, instal ulang dependensi Python seperti yang diuraikan di Langkah 1.1, dan unduh file bobot model dan dataset sesuai petunjuk di Langkah 1.3.

  2. Siapkan layanan Linux dan aktifkan auto-start saat boot sistem.

    Jalankan perintah berikut untuk membuat layanan Linux dan aktifkan skrip pelatihan untuk mulai secara otomatis saat startup sistem:

    # Buat direktori penyimpanan log.
    mkdir -p /root/train-service-log
    
    # Tulis file konfigurasi layanan.
    cat <<EOF > /etc/systemd/system/train.service
    [Unit]
    Description=Train AI Model Script
    After=network.target local-fs.target remote-fs.target
    Requires=local-fs.target remote-fs.target
    
    [Service]
    ExecStart=/root/train.sh
    WorkingDirectory=/root/
    User=root
    Environment="PATH=/usr/bin:/usr/local/bin"
    Environment="CUDA_VISIBLE_DEVICES=0"
    StandardOutput=append:/root/train-service-log/train.log
    StandardError=append:/root/train-service-log/train_error.log
    
    [Install]
    WantedBy=multi-user.target
    EOF
    
    # Muat ulang konfigurasi systemd.
    systemctl daemon-reload
    # Aktifkan train.service untuk mulai secara otomatis saat startup sistem.
    systemctl enable train.service

    Menjalankan perintah menghasilkan hasil berikut:

    image

1.5 Bangun gambar

Setelah Anda menyelesaikan semua langkah sebelumnya, bangun gambar kustom dari instance yang dikonfigurasi. Gambar ini akan berfungsi sebagai template startup untuk instance yang diskalakan, menghilangkan kebutuhan untuk menginstal ulang dependensi setiap kali.

  1. Pergi ke Konsol ECS.

  2. Buat gambar mengikuti langkah-langkah yang ditunjukkan pada gambar di bawah ini.

    image

  3. Tunggu hingga gambar dibuat, yang biasanya memakan waktu sekitar 5 menit. Anda dapat memantau kemajuan di Konsol ECS.

    image

Catatan

Setelah gambar siap, Anda dapat lepaskan instance yang dibuat di Langkah 1.1.

2. Buat grup skala

Anda dapat mengonfigurasi grup skala untuk mengotomatiskan manajemen instance. Grup skala memastikan bahwa spot atau pay-as-you-go instances baru secara otomatis dibuat untuk melanjutkan pelatihan jika instance yang ada ditangguhkan atau direklamasi. Ketika tersedia, spot instances akan secara otomatis menggantikan pay-as-you-go instances untuk mengurangi biaya.

2.1 Buat grup skala

Untuk membuat grup skala, lakukan langkah-langkah berikut:

  1. Pergi ke Konsol Auto Scaling.

    Penting

    Grup skala harus berada di wilayah yang sama dengan instance ECS yang dibuat di Langkah 1.1.

    image

  1. Konfigurasikan grup skala mengikuti langkah-langkah yang ditunjukkan pada gambar di bawah ini. Untuk informasi lebih lanjut tentang cara mengonfigurasi grup skala, lihat Parameter.

    image

    Penting

    Saat mengonfigurasi VPC (⑤) dan vSwitch (⑥), kami sarankan memilih vSwitches di beberapa zona. Ini memungkinkan Auto Scaling mendistribusikan instance secara efisien dan meningkatkan peluang menggunakan spot instances.

    image

    image

    Penting

    Untuk mengurangi biaya dengan hanya menggunakan spot instances, nonaktifkan opsi berikut: Gunakan Pay-as-you-go Instances untuk Melengkapi Kapasitas Spot (⑮) dan Ganti Pay-as-you-go Instances dengan Spot Instances (⑯).

  1. Klik Create, lalu ikuti petunjuk di layar untuk membuat konfigurasi skala.

    image

2.2 Buat konfigurasi skala

Konfigurasi skala mendefinisikan spesifikasi dan gambar instance dalam grup skala. Setelah konfigurasi skala dibuat, Auto Scaling menggunakannya untuk meluncurkan instance baru secara otomatis dalam grup skala sesuai dengan pengaturan instance yang telah ditentukan. Untuk membuat konfigurasi skala, ikuti langkah-langkah berikut:

Apa yang harus dilakukan jika tidak dapat menemukan halaman Create Scaling Configuration?

Untuk mengakses halaman Create Scaling Configuration, ikuti langkah-langkah berikut:

  1. Buka Konsol Auto Scaling.

    Penting

    Konfigurasi skala harus berada di wilayah yang sama dengan instance yang dibuat di Langkah 1.1.

    image

  2. Di halaman Grup Skala, temukan grup skala yang dibuat di Langkah 2.1 dan klik ID-nya untuk membuka halaman detail. Ikuti langkah-langkah pada gambar berikut untuk masuk ke halaman Buat Konfigurasi Skala.

    image

① Nama Konfigurasi Skala: Masukkan ess-config.

② Metode Penagihan: Pilih Spot Instance.

image

③④ Pilih Image > Gambar Kustom: Klik tab Custom Image dan pilih gambar kustom yang dibuat di Langkah 1.5.

⑤ Mode Konfigurasi Instance: Pilih Specify Instance Type.

⑥ Durasi Penggunaan Instance: Pilih 1-Hour Usage Duration. Dengan opsi ini, setelah spot instances berjalan selama 1 jam, Auto Scaling akan mengevaluasi apakah akan menangguhkan dan mereklamasi mereka.

Jika memilih Tidak Ada Durasi Penggunaan Tertentu, instance pay-as-you-go mungkin digunakan dengan biaya lebih rendah. Namun, karena kemungkinan terminasi dan reklamasi yang lebih tinggi, checkpoint yang valid mungkin tidak dibuat sebelum instance direklamasi, yang dapat mengakibatkan kemajuan pelatihan yang lebih lambat. Untuk informasi lebih lanjut tentang perbedaan antara kedua opsi, lihat Gunakan spot instances untuk mengurangi biaya.

⑦ Harga Tertinggi per Instance: Pilih Use Automatic Bid. Dengan opsi ini, Auto Scaling akan secara otomatis menyesuaikan harga penawaran sesuai dengan harga pasar saat ini.

⑧ Pilih Jenis Instance: Pilih jenis instance yang dipilih di Langkah 1.1, yaitu ecs.gn7i-c8g1.2xlarge.

image

⑨ Grup Keamanan: Pilih grup keamanan yang dipilih di Langkah 1.1.

Contoh ini mengilustrasikan solusi pelatihan offline, sehingga penugasan alamat IP publik tidak diperlukan.

image

⑩ Kredensial Login: Pilih Image Preset Password.

image

⑪⑫⑬ Advanced Settings > RAM Role: Pilih RAM role yang dibuat di Langkah 1.2. Saat instance secara otomatis dibuat dalam grup skala, RAM role secara otomatis ditetapkan ke instance baru.

image

Catatan

Klik Buat. Jika muncul pesan bahwa kekuatan skala tidak mencukupi, cukup klik Continue.

Aktifkan grup skala dan konfigurasi skala sesuai petunjuk.

image

image

image

3. Mulai pelatihan

Setelah grup skala dikonfigurasi, sesuaikan jumlah instance yang diharapkan menjadi 1. Proses ini diilustrasikan pada gambar di bawah ini.

image

image

Selanjutnya, Auto Scaling secara otomatis menyediakan instance baru dalam grup skala untuk memulai pelatihan.

Auto Scaling secara berkala memeriksa apakah jumlah instance dalam grup skala sesuai dengan jumlah yang diharapkan. Jika tidak ada instance dalam grup skala (yaitu, jumlahnya 0), operasi scale-out secara otomatis dipicu untuk membuat instance baru.
Catatan
  • Setelah menyesuaikan jumlah instance yang diharapkan, pembuatan instance mungkin tertunda. Anda dapat memantau kemajuan aktivitas skala pada tab Scaling Activities grup skala.

  • Setelah instance dibuat dan dimulai, direktori output akan tersedia di OSS bucket, yang menyimpan checkpoint yang dihasilkan selama pelatihan.

4. Uji: Simulasikan gangguan dan reklamasi

Setelah instance mulai menjalankan tugas pelatihan, periksa direktori output bucket OSS untuk memastikan folder seperti checkpoint-10 telah dibuat. Setelah checkpoint dihasilkan, Anda dapat melepaskan instance secara manual untuk mensimulasikan gangguan dan reklamasi. Ikuti langkah-langkah berikut:

  1. Lepaskan instance secara manual.

    1. Pergi ke tab Instances grup skala. Klik ID instance untuk pergi ke halaman detail instance.

      image

    2. Di tab Detail Instance, pilih All Actions > Release di pojok kanan atas, lalu lepaskan instance sesuai petunjuk.

      image

  2. Verifikasi apakah pelatihan dapat dilanjutkan dari checkpoint terbaru.

    Tunggu hingga instance baru dibuat dalam grup skala. Setelah instance siap, sambungkan ke instance tersebut dan periksa log pelatihan.

    1. Pergi ke tab Instances grup skala. Klik ID instance untuk pergi ke halaman detail instance.

    2. Klik Connect di pojok kanan atas dan sambungkan ke instance sesuai petunjuk.

    3. Untuk melihat log pelatihan model, jalankan perintah berikut. Jalur log adalah yang Anda tentukan di Langkah 1.4.

      cat /root/train-service-log/train.log

      Output perintah menunjukkan bahwa tugas pelatihan dilanjutkan dari checkpoint terbaru.

      image

Apa yang harus dilakukan selanjutnya

Gunakan model yang telah disesuaikan untuk inferensi

Setelah menyelesaikan tugas pelatihan penyesuaian, folder bernama checkpoint-93 akan dihasilkan di direktori output bucket OSS. Anda dapat menyambungkan ke instance dan menjalankan perintah berikut untuk berinteraksi dengan model yang telah disesuaikan:

# Direktori mount bucket.
BUCKET_MOUNT_PATH="/mnt/oss-data"

# Tetapkan direktori keluaran.
OUTPUT_DIR="$BUCKET_MOUNT_PATH/output"

# Temukan checkpoint terbaru
LATEST_CHECKPOINT=$(ls -dt $OUTPUT_DIR/checkpoint-* 2>/dev/null | head -1)


CUDA_VISIBLE_DEVICES=0 \
swift infer \
    --adapters $LATEST_CHECKPOINT \
    --stream true \
    --temperature 0 \
    --max_new_tokens 2048

2025-03-26_15-16-36 (1)

Lepaskan sumber daya yang digunakan dalam topik ini

Untuk menghindari penagihan berkelanjutan, ikuti langkah-langkah berikut untuk melepaskan sumber daya yang digunakan dalam topik ini:

  1. Hapus grup skala. (Jika Anda menghapus grup skala yang dibuat di Langkah 2, instance yang dibuat secara otomatis juga akan dihapus.)

  2. Hapus gambar kustom. (Hapus gambar kustom yang dibuat di Langkah 1.5.)

  3. Hapus bucket OSS. (Hapus bucket OSS yang dibuat di Langkah 1.2.)

  4. Hapus RAM role. (Hapus RAM role yang dibuat di Langkah 1.2.)

  5. Lepaskan instance. (Lepaskan instance yang dibuat di Langkah 1.1.)

Saran untuk menerapkan solusi ini ke lingkungan produksi

Sebelum menerapkan solusi ini ke lingkungan produksi, tinjau saran berikut dan sesuaikan solusi agar memenuhi kebutuhan bisnis spesifik Anda.

  • Integrasikan CloudMonitor untuk mendeteksi gangguan dan reklamasi

    Untuk lingkungan produksi, disarankan mengintegrasikan CloudMonitor ke dalam kode pelatihan Anda guna mendeteksi dan menangani gangguan serta reklamasi spot instance. Dengan menyimpan checkpoint 5 menit sebelum gangguan atau reklamasi, Anda dapat meminimalkan kehilangan kemajuan saat melanjutkan pelatihan. Arsitektur solusi yang diperbarui adalah sebagai berikut:

    image

  • Buat mekanisme pemulihan tugas komprehensif

    Dalam contoh pada topik ini, pelatihan akan secara otomatis dilanjutkan dari checkpoint terbaru. Namun, validitas checkpoint tidak diverifikasi secara otomatis. Dalam aplikasi praktis, disarankan menerapkan mekanisme deteksi anomali untuk menyaring checkpoint yang tidak valid dan memastikan pelatihan dilanjutkan dari checkpoint terbaru yang valid.

  • Tingkatkan kesimpulan tugas pelatihan

    Anda dapat mengintegrasikan logika untuk menentukan akhir pelatihan ke dalam kode pelatihan. Setelah pelatihan selesai, gunakan CLI atau SDK untuk memanggil Operasi API dan atur jumlah instance yang diharapkan menjadi 0. Auto Scaling kemudian akan secara otomatis melepaskan instance berlebih dalam grup skala, mencegah biaya tidak perlu akibat pemborosan sumber daya.

    Anda juga dapat melaporkan acara kustom ke CloudMonitor setelah pelatihan selesai. CloudMonitor kemudian akan memberi tahu Anda tentang hasil pelatihan melalui email, pesan teks, atau chatbot DingTalk.

  • Beralih ke model penyimpanan yang lebih efisien

    Saat melatih model dengan banyak parameter, OSS dapat menyebabkan hambatan sistem. Untuk meningkatkan efisiensi sistem secara keseluruhan, disarankan menggunakan file system berkapasitas tinggi dan latensi rendah, seperti CPFS, untuk mounting.

  • Konfigurasikan vSwitch multi-zona

    Jika Anda mengonfigurasi vSwitch hanya di satu zona, Auto Scaling hanya akan dapat membuat instance di zona tersebut untuk grup skala. Hal ini dapat menyebabkan kegagalan scale-out jika tidak ada cukup sumber daya yang tersedia di zona tersebut. Disarankan mengonfigurasi vSwitches di beberapa zona. Ketika spot instance direklamasi, Auto Scaling secara otomatis meluncurkan spot instance baru di zona lain, meningkatkan kemungkinan penggunaan spot instances.

Referensi