Bir ölçeklendirme grubu, büyük model ince ayarı için otomatik olarak spot örnekler sağlar ve bir spot örneği kesintiye uğradığında ve geri alındığında yeni bir örnek oluşturarak en son kontrol noktasından eğitime devam eder; böylece eğitim sürekliliğini garanti eder.
Çözüm özeti
Bu çözüm, bir ölçeklendirme grubu aracılığıyla spot öncelikli bir strateji benimser ve kontrol noktalarını kalıcı hale getirmek için Object Storage Service (OSS) kullanır. Eğitim süreci boyunca:
Spot önceliği: Ölçeklendirme grubu, eğitim görevleri için spot örnekleri önceliklendirir ve kontrol noktası dosyalarını depolamak üzere OSS kullanır.
Bir spot örneği kesintiye uğradığında ve geri alındığında: Ölçeklendirme grubu önce diğer kullanılabilirlik alanlarında bulunan envanterden bir spot örnek sağlamayı dener. Spot envanter yetersizse otomatik olarak kullandıkça öde bir örnek sağlar ve eğitime en son kontrol noktasından devam eder.
Spot envanter tekrar mevcut olduğunda: Ölçeklendirme grubu, kullandıkça öde örneği otomatik olarak bir spot örnekle değiştirir ve eğitime en son kontrol noktasından devam eder.

Maliyetlere duyarlıysanız ve daha uzun eğitim sürelerine toleransınız varsa ölçeklendirme grubunu yalnızca spot örnekler kullanacak şekilde yapılandırabilirsiniz. Bu yapılandırmada spot örnekler kullanılamadığında eğitim duraklatılır ve envanter tekrar mevcut olduğunda otomatik olarak devam eder; bu sayede maliyet tasarrufunuz en üst düzeye çıkar. Ölçeklendirme grupları ile spot örneklerin birlikte kullanımına ilişkin ayrıntılı bilgi edinin.
Maliyet karşılaştırması
Aşağıdaki maliyet karşılaştırması yalnızca referans amaçlıdır. Gerçek tasarruflar çalışma zamanı koşullarına bağlı olarak değişebilir.
Toplam eğitim süresinin 12 saat, bir spot örnek fiyatının saat başına 3,5 ve bir kullandıkça öde örnek fiyatının saat başına 10 olduğunu varsayalım. Maliyet karşılaştırması aşağıdaki gibidir.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Prosedür
-
Temel eğitim ortamıyla özel bir görüntü oluşturun.
Bu görüntü, ölçeklendirme grubundaki örnekler için başlatma görüntüsü olarak işlev görür. Otomatik olarak eğitime devam eden bir başlangıç betiği içerir; böylece yeni örnekler göreve hızla başlayabilir ve manuel müdahale olmadan çalışabilir.
-
Bir ölçeklendirme grubu oluşturun ve yapılandırın.
Ölçeklendirme grubu, bir kesintiden sonra otomatik olarak yeni spot veya kullandıkça öde örnekler oluşturur ve böylece eğitim görevinin devam etmesini sağlar.
-
Eğitim görevini başlatın.
Ölçeklendirme grubunun etkinleştirilmesi bir ölçek genişletme olayını tetikler ve bu da eğitim görevine otomatik olarak başlayan bir örnek oluşturur.
-
Bir kesintiyi simüle edin (doğrulama).
Bir kesinti veya geri alma senaryosunu simüle etmek için bir örneği manuel olarak serbest bırakın. Kararlılığı ve güvenilirliği sağlamak amacıyla yeni bir örneğin başlatıldığını ve eğitim görevinin otomatik olarak devam ettiğini doğrulayın.
1. Özel bir eğitim görüntüsü oluşturma
Bu konuda tek makineli, tek GPU kurulumunda Swift eğitim çerçevesi kullanılarak DeepSeek-R1-Distill-Qwen-7B modeli üzerinde kendi kendine farkındalık ince ayarının nasıl yapılacağı gösterilmektedir.
İlk olarak gerekli eğitim ortamı ve bağımlılıklarına sahip bir örnek oluşturun, ardından bunu ölçeklendirme grubunun başlatma görüntüsü olarak kullanmak üzere özel bir görüntü haline getirin. Görüntü, iş akışını otomatikleştiren bir otomatik eğitim betiği ve önyükleme hizmeti içerir. Aşağıdaki şemada mimari gösterilmiştir.

Ana bileşenler şunlardır:
Temel eğitim ortamı bağımlılıkları: GPU sürücüsü, CUDA ve eğitim çerçevesine göre değişen ilgili Python bağımlılıklarını içerir.
Otomatik eğitim betiği: Bu betiğin en son kontrol noktasından devam edilip edilmeyeceğini ve eğitimin tamamlanıp tamamlanmadığını otomatik olarak denetlemesi gerekir.
Başlangıçta otomatik paket bağlama: Eğitim betiği başladığında model ağırlıklarını, veri kümelerini ve oluşturulan kontrol noktası dosyalarını OSS paketinden okur.
Önyükleme hizmeti: Bu hizmet, örnek başladıktan sonra eğitim betiğinin otomatik olarak çalışmasını sağlar; betik, eğitime başlamak veya devam etmek için gerekli dosyaları paketten okur.
Görüntüyü oluşturmak için şu adımları izleyin.
1.1 Bir örnek oluşturun ve ortamı hazırlayın
Bu örnek, özel bir görüntü oluşturmak için şablon olarak işlev görür. Daha sonra ölçeklendirme grubu, yeni örnekleri otomatik olarak oluşturmak için bu görüntüyü kullanacaktır.
-
GPU örneği oluşturmak için ECS konsolu adresine gidin.
İlk olarak temel ortamı kurmak için bir kullandıkça öde GPU örneği oluşturun. Bu eğitimde Çin (Hangzhou) bölgesindeki J Kullanılabilirlik Alanında bir
ecs.gn7i-c8g1.2xlargeörneği kullanılmaktadır. Örneği aşağıdaki gibi yapılandırın:1. Billing Method: Kullandıkça Öde.
②:Region. Çin (Hangzhou).
③④: Network and Zone. Bir VPC ve bir vSwitch seçin. Bunlar yoksa ekrandaki talimatları izleyerek oluşturabilirsiniz.
⑤⑥: Örnek türünü seçin.
ecs.gn7i-c8g1.2xlargeseçin.⑦⑧⑨: Images: Ubuntu 22.04 64 bit.
⑩: GPU sürücüsünü otomatik yükle. Sürümleri seçin: CUDA sürümü 12.4.1, Sürücü sürümü 550.127.08 ve CUDNN sürümü 9.2.0.82.
⑪: . 60 GiB.
⑫⑬⑭: Genel IPv4 adresi atayın; bu, örneğin internete erişmesini ve model dosyalarını indirmesini sağlar. Bandwidth Billing Method için Pay-by-trafficyi seçin. Maximum Bandwidth için 100 Mbps seçin.
⑮⑯⑰: Yeni bir temel güvenlik grubu oluşturun. Uzaktan bağlantılara izin vermek için en az SSH (TCP: 22) ve ICMP (IPv4) bağlantı noktalarını açın.
⑱⑲⑳: Logon Credential. Bu kimlik bilgisi örnekte oturum açmak için kullanılır. Bir anahtar çifti veya parola seçebilirsiniz. Yapılandırmayı tamamlamak için ekrandaki istemleri izleyin.
21:Instance Name. Örneği kolay hatırlamak ve bulmak için bir ad belirtin. Bu konuda örnek olarak
ess-lora-deepseek7b-templatekullanılmıştır.Yapılandırmayı tamamladıktan sonra Confirm Order öğesine tıklayın ve örneğin oluşturulmasını bekleyin.
-
Örnek oluşturulduktan sonra buna bağlanın ve GPU sürücüsünün yüklenmesini bekleyin.
ECS konsolu - Örnekler adresine gidin.
-
Önceki adımda oluşturduğunuz örneği bulun ve Actions sütunundaki Connect öğesine tıklayın. Workbench kullanarak örneğe bağlanın ve istendiğinde oturum açın.
Örneği bulamıyorsanız mevcut bölgeniz örneğin bölgesiyle eşleşmiyor olabilir. Sol üst köşeden bölgeleri değiştirebilirsiniz.
Örnek durdurulmuşsa sayfayı yenileyin ve başlamasını bekleyin.
-
Örneğe bağlandıktan sonra GPU sürücüsünün yüklenmesinin tamamlanmasını bekleyin. Yüklemeden sonra yeniden bağlanmanız istenir.
Arayüz donarsa sayfayı yenilemeyi ve örneğe yeniden bağlanmayı deneyin.
Welcome to Alibaba Cloud Elastic Compute Service ! Last login: Tue Mar 18 21:12:39 2025 from xxx % Total % Received % Xferd Average Speed Time Time Current Dload Upload Total Spent Left Speed 100 21 100 21 0 0 875 0 --:--:-- --:--:-- --:--:-- 913 Driver-xxx installing, it takes 0 minutes. Remaining installation time 11 to 15 minutes! [cuda-12.4.1. Installing, it tasks 2 to 5 minutes. Remaining installation time 9 to 12 minutes!
-
Python bağımlılıklarını yükleyin.
Eğitim için gereken bağımlılıkları yüklemek üzere aşağıdaki komutları çalıştırın.
Bu eğitimde kullanılan Ubuntu 22.04 64-bit görüntüsü zaten Python 3.10 içerdiğinden ayrıca Python yüklemenize gerek yoktur.
# The Ubuntu 22.04 image includes Python 3.10, so no extra installation is needed. python3 -m pip install --upgrade pip # Switch to the Alibaba Cloud internal PyPI mirror. 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
Bağımlılıkların yüklenmesini beklerken sağ üst köşedekisimgesine tıklayarak çoklu terminal açabilir ve aynı anda 1.2 Adımı gerçekleştirebilirsiniz.
1.2 Bir OSS paketi oluşturun ve bağlayın
OSS'de bir paket oluşturun ve bunu ECS örneğine bağlayın. Bu paket, model ağırlık dosyalarını, veri kümelerini ve eğitim sırasında oluşturulan kontrol noktalarını depolar.
-
Paket oluşturmak için OSS konsolu adresine gidin.
Aşağıda temel yapılandırma parametreleri verilmiştir. Bahsedilmeyen parametreler için varsayılan değerleri koruyun.
2. Bucket. Paketi daha sonra bağlarken bu paket adını kullanacaksınız.
3. Region. Bölgeye özgü seçin. Bölge, ECS örneğinin bulunduğu bölgeyle aynı olmalıdır. Bu örnekte bölge China (Hangzhou) şeklindedir.
ECS örnekleri aynı bölgedeki OSS paketlerine dahili ağ üzerinden ücretsiz olarak erişebilir. Daha fazla bilgi için bkz. Dahili ağ üzerinden bir ECS örneğinden OSS kaynaklarına erişme.
-
RAM rolü oluşturun ve ekleyin.
RAM rolü, ECS örneğine OSS paketinize erişim yetkisi verir. RAM rolü oluşturmak ve eklemek için şu adımları izleyin:
-
**RAM** konsolunda bir RAM rolü oluşturun. Temel yapılandırma parametreleri aşağıda açıklanmıştır.
Kaynak Erişimi Yönetimi (RAM) konsolunun Roller sayfasına gidin ve Rol Oluştur öğesine tıklayın.
②: Sorumlu türü. Cloud Service seçin.
③: Sorumlu adı. ECS seçin. Bu, rolün bir ECS örneğine verileceğini belirtir.
④: OK öğesine tıklayın ve istendiğinde RAM rolü için bir ad belirleyin.
-
**RAM** konsolunda aşağıdaki özel ilkeyi oluşturun.
Kaynak Erişimi Yönetimi (RAM) konsolunun İlkeler sayfasına gidin ve İlke Oluştur öğesine tıklayın.
Komut Dosyası Düzenleyicisi sekmesini seçin ve aşağıdaki ilke komut dosyasını girin.
③: İlke belirli bir pakete tam erişim izni verir. İlke komut dosyası aşağıdaki gibidir.
Önemliİlkeyi ayarlarken
<paket_adı>ifadesini kendi Bucket adınızla değiştirin.{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "oss:*", "Resource": [ "acs:oss:*:*:<bucket_name>", "acs:oss:*:*:<bucket_name>/*" ] } ] }Yapılandırmadan sonra OK öğesine tıklayın ve istendiğinde ilke için bir ad belirleyin.
-
**RAM** konsolunda RAM rolüne izinler verin.
⑥: Principal. Daha önce oluşturduğunuz RAM rolünü seçin.
⑦: Permission Policy. Daha önce oluşturduğunuz özel ilkeyi seçin.
Yapılandırmadan sonra OK öğesine tıklayın.
-
ECS konsolu adresine gidin ve RAM rolünü örneğe ekleyin.
Örneği bulamıyorsanız mevcut bölgeniz örneğin bölgesiyle eşleşmiyor olabilir. Sol üst köşeden bölgeleri değiştirebilirsiniz.
ECS konsolundaki örnek listesinde hedef örneği bulun ve İşlemler sütunundan 1.2 Adımında oluşturduğunuz RAM rolünü ekleyin.
-
-
Paketi ECS örneğine bağlayın.
-
1.1 Adımında oluşturulan örneğe bağlanın ve ossfs aracını yüklemek için aşağıdaki komutu çalıştırın.
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 -
Bağlama işlemini tamamlamak için aşağıdaki komutu çalıştırın. Komuttaki aşağıdaki yer tutucuları değiştirdiğinizden emin olun:
-
<paket_adı>: Oluşturduğunuz paketin Bucket adıyla değiştirin.
-
<ecs_ram_role>: Oluşturduğunuz RAM rolünün adıyla değiştirin.
-
<iç_uç_nokta>: oss-cn-hangzhou-internal.aliyuncs.com ile değiştirin.
ÖnemliBu eğitimde China (Hangzhou) bölgesinde bulunan bir paket kullanıldığından VPC dahili uç noktası oss-cn-hangzhou-internal.aliyuncs.com şeklindedir.
# Replace with your bucket name, internal endpoint, and RAM role. BUCKET_NAME="<bucket_name>" ECS_RAM_ROLE="<ecs_ram_role>" INTERNAL_ENDPOINT="<internal_endpoint>" # Bucket mount path BUCKET_MOUNT_PATH="/mnt/oss-data" # 1. Back up the fstab file before mounting. cp /etc/fstab /etc/fstab.bak # 2. Create the mount directory. mkdir $BUCKET_MOUNT_PATH # 3. Mount the bucket to the 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. Set auto-mount on startup. 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 -
-
-
(Doğrulama) Depolama alanının kullanılabilir olup olmadığını test edin.
-
OSS paketine herhangi bir dosya yükleyin.
OSS konsolunda paketinizin Dosyalar sayfasına gidin. Bağlamayı doğrulamak için bir test dosyası yüklemek üzere Dosya Yükle öğesine tıklayın.
-
Örnekte dizinde OSS paketinden gelen dosyayı görüp görmediğinizi kontrol etmek için aşağıdaki komutu çalıştırın.
ls /mnt/oss-data/Dosya görünüyorsa bağlama başarılı olmuştur.
root@ixxx:~# ls /mnt/oss-data/ test.txt
-
1.3 Modeli ve veri kümesini hazırlayın
Model ağırlıklarını ve veri kümesini ModelScope topluluğundan OSS paketinin bağlama dizinine indirin.
-
Veri kümesini indirin
# Bucket mount path BUCKET_MOUNT_PATH="/mnt/oss-data" # Download the fine-tuning dataset from the ModelScope community # Use the modelscope tool installed in Step 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İndirme ilerlemesi takılırsa birkaç kez Enter tuşuna basın.
-
Model ağırlıklarını indirin
ÖnemliModel ağırlık dosyası büyüktür. İndirme başarısız olursa veya
please try againiletisini görürseniz indirmeyi sürdürmek için komutu yeniden deneyin.# Bucket mount path BUCKET_MOUNT_PATH="/mnt/oss-data" # Download the DeepSeek-R1-Distill-Qwen-7B model from the ModelScope community modelscope download --model deepseek-ai/DeepSeek-R1-Distill-Qwen-7B --local_dir $BUCKET_MOUNT_PATH/DeepSeek-R1-Distill-Qwen-7Bİndirme ilerlemesi takılırsa birkaç kez Enter tuşuna basın.
-
Model ağırlıklarını test edin
İndirme tamamlandıktan sonra modeli kullanarak bir çıkarım testi yapmak ve model ağırlık dosyasının eksiksiz olduğunu doğrulamak için aşağıdaki komutu çalıştırabilirsiniz.
# Bucket mount path 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 2048Model yüklendikten sonra büyük dil modeliyle konuşmaya başlayabilirsiniz. Model ağırlıkları yüklenemezse bunları yeniden indirin.
[INFO:swift] Start time of running main: 2025-03-26 13:35:50.564493 [INFO:swift] request_config: RequestConfig(max_tokens=2048, temperature=None, top_k=None, top_p=None, repetition_penalty=None, num_beams=1, stop=[], seed=None, stream=True, logprobs=False, top_logprobs=None, n=1, best_of=None, presence_penalty=0.0, frequency_penalty=0.0, length_penalty=1.0) [INFO:swift] Input 'exit' or 'quit' to exit the conversation. [INFO:swift] Input 'multi-line' to switch to multi-line input mode. [INFO:swift] Input 'reset-system' to reset the system and clear the history. [INFO:swift] Input 'clear' to clear the history. <<< Who are you?Test tamamlandıktan sonra konuşmayı sonlandırmak için
exitgirebilirsiniz.
1.4 Otomatik bir eğitim betiği yazın
-
Otomatik bir eğitim betiği yazın.
Otomatik bir eğitim betiği oluşturmak ve buna yürütme izni vermek için aşağıdaki komutu çalıştırın. Bu betik otomatik olarak en son kontrol noktasından eğitime devam eder ve eğitimin ne zaman tamamlandığını belirler.
# Create an automatic training script. cat <<EOF > /root/train.sh #!/bin/bash # Bucket mount path BUCKET_MOUNT_PATH="/mnt/oss-data" # Storage directory for model weights and datasets MODEL_PATH="\$BUCKET_MOUNT_PATH/DeepSeek-R1-Distill-Qwen-7B" DATASET_PATH="\$BUCKET_MOUNT_PATH/alpaca-gpt4-data-zh#500 \$BUCKET_MOUNT_PATH/alpaca-gpt4-data-en#500 \$BUCKET_MOUNT_PATH/self-cognition#500" # Set the output directory OUTPUT_DIR="\$BUCKET_MOUNT_PATH/output" mkdir -p "\$OUTPUT_DIR" # Logic to check if training is already complete 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 "Training already completed. Exiting." exit 0 fi fi # Initialize resume argument RESUME_ARG="" # Find the latest checkpoint 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 "Resume training from: \$LATEST_CHECKPOINT" else echo "No checkpoint found. Starting new training." fi # Start the training command 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 'You are a helpful assistant.' \\ --warmup_ratio 0.05 \\ --dataloader_num_workers 4 \\ --model_author swift \\ --model_name swift-robot \\ \$RESUME_ARG EOF # Grant executable permissions chmod +x /root/train.sh -
Bir Linux hizmeti oluşturun ve bunu önyüklemede başlayacak şekilde ayarlayın.
Bir hizmet oluşturmak ve eğitim betiğini önyüklemede otomatik olarak başlayacak şekilde yapılandırmak için aşağıdaki komutu çalıştırın.
# Create log storage directory mkdir -p /root/train-service-log # Write the Service configuration file 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 # Reload systemd configuration systemctl daemon-reload # Configure the train.service to start on boot systemctl enable train.serviceKomut tamamlandığında aşağıdaki çıktıyı döndürür:
Created symlink /etc/systemd/system/multi-user.target.wants/train.service → /etc/systemd/system/train.service.
1.5 Özel görüntüyü oluşturun
Önceki tüm adımları tamamladıktan sonra yapılandırılmış örnekten özel bir görüntü oluşturun. Bu görüntü, ölçek genişletme sırasında yeni örnekler için başlatma görüntüsü olarak işlev görür ve böylece bağımlılıkların yeniden yüklenmesine gerek kalmaz.
ECS konsolunun Örnekler sayfasına gidin.
-
Aşağıda açıklandığı gibi görüntüyü oluşturun.
ECS konsolundaki örnek listesinde hedef örneği bulun. İşlemler sütununda Diğer > Diskler ve Görüntüler > Özel Görüntü Oluştur öğesine tıklayın. İstendiğinde görüntü oluşturmayı tamamlayın.
Görüntünün oluşturulmasını bekleyin. Bu işlem yaklaşık 5 dakika sürer. ECS konsolunun Görüntüler sayfasından oluşturma ilerlemesini kontrol edebilirsiniz.
Görüntü oluşturulduktan sonra 1.1 Adımında oluşturulan örneği serbest bırakabilirsiniz.
2. Bir ölçeklendirme grubu oluşturma
Örnek yönetimini otomatikleştirmek için bir ölçeklendirme grubu yapılandırın. Bir örnek kesintiye uğradığında ölçeklendirme grubu eğitime devam etmek için otomatik olarak yeni bir spot veya kullandıkça öde örnek oluşturur. Spot kapasitesi tekrar mevcut olduğunda maliyetleri azaltmak için kullandıkça öde örnekleri spot örneklerle değiştirir.
2.1 Bir ölçeklendirme grubu oluşturun
İlk olarak bir ölçeklendirme grubu oluşturmanız gerekir. Şu adımları izleyin.
-
Bir ölçeklendirme grubu oluşturmak için Auto Scaling konsolu adresine gidin.
ÖnemliÖlçeklendirme grubunun 1.1 Adımında oluşturulan örnek ile aynı bölgede olduğundan emin olun.
-
Ölçeklendirme grubunu aşağıdaki gibi yapılandırın. Ayrıntılı parametre açıklamaları için bkz. Parametreler.
Aşağıdaki parametreleri yapılandırın: Ölçeklendirme Grubu Adı değerini ess-lora-deepseek-7b, Tür değerini ECS ve Örnek Yapılandırması İçin Kaynak değerini Mevcut örnek olarak ayarlayın. Min. Örnek Sayısı değerini 0, Maks. Örnek Sayısı değerini 1 olarak ayarlayın ve Varsayılan Bekleme Süresi değerini 300 saniyede bırakın.
Önemli⑤⑥ konumunda bir VPC ve vSwitch seçerken birden fazla kullanılabilirlik alanındaki vSwitch'leri seçmenizi öneririz. Bu, ölçeklendirme grubunun alanlar arasında kaynak sağlamasına olanak tanıyarak spot örneklerin başarıyla oluşturulma olasılığını artırır.
ÖnemliYalnızca spot örnekler kullanarak eğitim yapmanın maliyet tasarrufunu en üst düzeye çıkarmak istiyorsanız hem Spot Kapasitesini Tamamlamak İçin Kullandıkça Öde Örnekleri Kullan hem de Kullandıkça Öde Örnekleri Spot Örneklerle Değiştir seçeneklerini devre dışı bırakmanız gerekir.
Yapılandırmadan sonra Create öğesine tıklayın. Ardından istendiğinde bir ölçeklendirme yapılandırması oluşturmaya devam edebilirsiniz.
2.2 Bir ölçeklendirme yapılandırması oluşturun
Bir ölçeklendirme yapılandırması, örnek teknik özellikleri, görüntü ve diğer ayarları tanımlar. Ölçeklendirme grubu, yeni örnekleri otomatik olarak oluşturmak için bu yapılandırmayı kullanır. Ölçeklendirme Yapılandırması Oluştur sayfasında aşağıdaki yapılandırmaları tamamlayın:
|
1. Scaling Configuration Name: ②: Billing Method: Spot Örnek. |
|
③ ve ④: Image. Custom Images seçeneğini belirleyin ve ardından 1.5 Adımında oluşturduğunuz özel görüntüyü seçin. ⑤: Instance Configuration Mode. Specify Instance Type seçeneğini belirleyin. 6. Instance Usage Duration. 1 Hour seçin. Örnek bir saat çalıştıktan sonra sistem örneği kesintiye uğratıp uğratmayacağını ve geri alıp almayacağını kontrol etmeye başlar. Belirtilen Kullanım Süresi Yok seçeneğini belirlerseniz spot örnekleri daha düşük maliyetle kullanabilirsiniz ancak kesintiye uğrama olasılıkları daha yüksektir. Bu durum, geçerli bir kontrol noktası oluşturulmadan önce örneğin geri alınmasına neden olarak eğitim ilerlemesini yavaşlatabilir. Bu iki seçenek arasındaki farklar hakkında daha fazla bilgi için bkz. Maliyetleri azaltmak için ölçeklendirme gruplarında spot örnekleri kullanma. ⑦: Örnek başına en yüksek fiyat. Piyasa fiyatına göre otomatik teklif vermek için Use Automatic Bid seçeneğini belirleyin. 8. Select an instance type. 1.1 Adımında örneği oluştururken ayarladığınız ve |
|
9. Security Group. 1.1 Adımında örneği oluştururken yapılandırdığınız güvenlik grubunu seçin. Bu eğitim çevrimdışı bir eğitim çözümüdür, bu nedenle genel IP adresi atanmasına gerek yoktur. |
|
⑩: Logon Credential. Use Predefined Password seçeneğini belirleyin. |
|
⑪⑫⑬: . 1.2 Adımında oluşturulan RAM rolünü seçin. Ölçeklendirme grubu otomatik olarak örnekler oluşturduğunda bu RAM rolü yeni örneklere otomatik olarak eklenir. |
Oluştur'a tıkladıktan sonra yetersiz ölçeklendirme yapılandırması gücü ile ilgili bir istem görebilirsiniz. Continue öğesine tıklayın.
Ölçeklendirme yapılandırmasını oluşturduktan sonra istendiğinde ölçeklendirme yapılandırmasını etkinleştirin ve ölçeklendirme grubunu etkinleştirin.
|
|
|
|
3. Eğitim görevini başlatma
Ölçeklendirme grubu yapılandırıldıktan sonra beklenen örnek sayısını 1'e ayarlayın.
|
|
|
Ardından ölçeklendirme grubu otomatik olarak yeni bir örnek oluşturur ve eğitim görevini başlatır.
Ölçeklendirme grubu, gruptaki örnek sayısının beklenen örnek sayısına eşit olup olmadığını düzenli olarak kontrol eder. Geçerli sayı 0 olduğundan yeni bir örnek oluşturmak için otomatik olarak bir ölçek genişletme işlemi tetiklenir.
Beklenen örnek sayısını ayarladıktan sonra örnek oluşturma işlemi gecikebilir. Devam eden etkinlikleri Scaling Activities sekmesinde görüntüleyebilirsiniz.
Örnek oluşturulup başlatıldıktan sonra OSS paketinizde bir
outputklasörü bulabilirsiniz. Bu klasör, eğitim sırasında oluşturulan kontrol noktası dosyalarını depolar.
4. Bir kesintiyi simüle etme (doğrulama)
Örnek eğitime başladıktan sonra OSS paketinizdeki output dizininde checkpoint-10 gibi bir klasör olup olmadığını kontrol edin. Bir kontrol noktası mevcut olduğunda bir kesintiyi simüle etmek için eğitim örneğini manuel olarak serbest bırakın:
-
Örneği manuel olarak serbest bırakın.
İlk olarak ölçeklendirme grubunun Instances sekmesine gidin ve ilgili Örnek Ayrıntıları sayfasına gitmek için Örnek Kimliğine tıklayın.
Örnek ayrıntıları sayfasında sağ üst köşede öğesine tıklayın ve örneği serbest bırakmak için istemleri izleyin.
-
Eğitimin en son kontrol noktasından devam edip etmediğini kontrol edin.
Ölçeklendirme grubunun yeni bir örnek oluşturmasını bekleyin. Örnek oluşturulduktan sonra buna bağlanın ve görev günlüğünü görüntüleyin.
Ölçeklendirme grubunun Instances sekmesine gidin ve ilgili Örnek Ayrıntıları sayfasına gitmek için Örnek Kimliğine tıklayın.
Sağ üst köşede Connect öğesine tıklayın ve istendiğinde örneğe bağlanın.
-
Model eğitim günlüğünü görüntülemek için aşağıdaki komutu çalıştırın. Bu günlük çıkış yolu 1.4 Adımında önyükleme hizmeti için ayarlanmıştır.
cat /root/train-service-log/train.logGördüğünüz gibi eğitim görevi en son kontrol noktasından devam ediyor.
root@ixxx:~# cat train-service-log/train.log Resume training from: /mnt/oss-data/output/checkpoint-10 run sh: /usr/bin/python3 /usr/local/lib/python3.10/dist-packages/xxx s-data/self-cognition#500 --torch_dtype bfloat16 --num_train_epochs xxx --eval_steps 50 --save_steps 10 --save_total_limit 5 --logging_steps xxx --num_workers 4 --model_author swift --model_name swift-robot --resume xxx
Sonraki adımlar
İnce ayar yapılan modeli çıkarım için kullanma
Kaynakları serbest bırakma
Üretim ortamları için öneriler
İş ihtiyaçlarınıza ve aşağıdaki önerilere göre bu çözümü üretime uyarlayın.
-
Kesinti işlemeyi entegre etmek için CloudMonitor'u kullanın
Eğitim kodunuza CloudMonitor'u entegre ederek spot örnek kesinti olaylarını algılayabilir ve bunlara yanıt verebilirsiniz. Kesintiden beş dakika önce bir kontrol noktası kaydetmek, eğitime devam edildiğinde ilerleme kaybını azaltır. Geliştirilmiş mimari aşağıdaki gibidir:

-
Bir görev kurtarma mekanizması oluşturun
Bu eğitimde geçerliliği doğrulanmadan en son kontrol noktasından eğitime devam edilir. Üretimde geçersiz kontrol noktalarını belirlemek ve otomatik olarak en son geçerli olandan devam etmek için anormallik algılama uygulayın.
-
Görev tamamlama sürecini iyileştirin
Eğitim kodunuza görevin tamamlandığını algılayan mantık ekleyin. Tamamlandığında gereksiz maliyetlerden kaçınmak için ölçeklendirme grubunun beklenen örnek sayısını 0'a ayarlamak üzere CLI veya SDK aracılığıyla ölçeklendirme grubunun API'sini çağırın. Böylece ölçeklendirme grubu fazladan örnekleri otomatik olarak serbest bırakır.
Ek olarak görev tamamlandığında CloudMonitor'a özel olaylar bildirebilirsiniz. Bu sayede eğitim sonuçları hakkında e-posta, SMS veya DingTalk sohbet botu aracılığıyla bildirimler alabilirsiniz.
-
Yüksek performanslı bir dosya sistemi kullanın
Çok sayıda parametreye sahip modeller için OSS darboğaza neden olabilir. Bunun yerine I/G performansını artırmak için CPFS gibi yüksek aktarım hızına ve düşük gecikme süresine sahip bir dosya sistemi kullanın.
-
Daha yüksek kullanılabilirlik için çok alanlı vSwitch'ler yapılandırın
Tek alanlı bir vSwitch örnek oluşturmayı tek bir alanda sınırlar; bu da yetersiz kapasite nedeniyle ölçek genişletme hatalarının riskini artırır. Bir spot örnek geri alındığında sistemin alanlar arasında örnek oluşturabilmesi için birden fazla kullanılabilirlik alanında vSwitch'ler yapılandırın.