Um grupo de dimensionamento provisiona automaticamente instâncias spot para o ajuste fino de modelos grandes e garante a continuidade do treinamento. Para isso, cria uma nova instância e retoma o processo a partir do checkpoint mais recente sempre que uma instância spot estiver sujeita a interrupção e recuperação.
Visão geral da solução
Esta solução adota uma estratégia prioritária para instâncias spot por meio de um grupo de dimensionamento e utiliza o Object Storage Service (OSS) para persistir checkpoints. Durante o treinamento:
Priorização de instâncias spot: O grupo de dimensionamento prioriza instâncias spot para tarefas de treinamento e usa o OSS para armazenar arquivos de checkpoint.
Interrupção e recuperação de instância spot: Quando uma instância spot é interrompida e recuperada, o grupo de dimensionamento tenta primeiro provisionar uma nova instância spot no inventário disponível de outras zonas de disponibilidade. Se o inventário spot for insuficiente, ele provisiona automaticamente uma instância de pagamento conforme o uso e retoma o treinamento a partir do checkpoint mais recente.
Restauração do inventário spot: Após a restauração do inventário spot, o grupo de dimensionamento substitui automaticamente a instância de pagamento conforme o uso por uma instância spot e retoma o treinamento a partir do checkpoint mais recente.

Se o custo for sua principal preocupação e você puder tolerar tempos de treinamento mais longos, configure o grupo de dimensionamento para usar apenas instâncias spot. Nessa configuração, o treinamento pausa quando as instâncias spot ficam indisponíveis e retoma automaticamente quando o inventário é restaurado, maximizando sua economia. Saiba mais sobre como combinar grupos de dimensionamento e instâncias spot.
Comparação de custos
A comparação de custos a seguir serve apenas como referência. A economia real pode variar dependendo das condições de execução.
Considere um tempo total de treinamento de 12 horas, preço de instância spot de 3,5/hora e preço de instância de pagamento conforme o uso de 10/hora. A comparação de custos é a seguinte:
|
Modo |
Apenas instâncias spot |
Híbrido (spot e pagamento conforme o uso) |
Apenas pagamento conforme o uso |
|
Descrição |
Quando uma instância spot é interrompida e recuperada, o treinamento pausa. Uma nova instância spot inicia automaticamente para continuar o treinamento após a restauração da capacidade. |
Considere que, das 12 horas totais de treinamento, 8 horas ocorrem em instâncias spot e 4 horas em instâncias de pagamento conforme o uso devido a interrupções. |
Todo o treinamento ocorre em instâncias de pagamento conforme o uso. |
|
Custo |
12h * 3,5/h = 42 |
8h 3,5/h + 4h 10/h = 68 |
12h * 10/h = 120 |
|
Economia em relação a apenas pagamento conforme o uso |
65% |
43,33% |
0% |
Procedimento
-
Crie uma imagem personalizada com o ambiente base de treinamento.
Essa imagem serve como imagem de inicialização para as instâncias no grupo de dimensionamento. Ela inclui um script de inicialização que retoma o treinamento automaticamente, garantindo que novas instâncias iniciem a tarefa e executem sem intervenção manual.
-
Crie e configure um grupo de dimensionamento.
O grupo de dimensionamento cria automaticamente novas instâncias spot ou de pagamento conforme o uso após uma interrupção, assegurando a continuidade da tarefa de treinamento.
-
Inicie a tarefa de treinamento.
Ativar o grupo de dimensionamento aciona um evento de scale-out, criando uma instância que inicia automaticamente a tarefa de treinamento.
-
Simule uma interrupção (verificação).
Libere manualmente uma instância para simular um cenário de interrupção ou recuperação. Verifique se uma nova instância inicia e se a tarefa de treinamento retoma automaticamente para garantir estabilidade e confiabilidade.
1. Crie uma imagem de treinamento personalizada
Este tópico demonstra como realizar o ajuste fino de autoconhecimento no modelo DeepSeek-R1-Distill-Qwen-7B usando o framework de treinamento Swift em uma configuração de máquina única com GPU única.
Primeiro, crie uma instância com o ambiente de treinamento e as dependências necessários e, em seguida, gere uma imagem personalizada a partir dela para servir como imagem de inicialização do grupo de dimensionamento. A imagem inclui um script de treinamento automático e um service de inicialização para automatizar o fluxo de trabalho. A figura a seguir mostra a arquitetura.

Os principais componentes incluem:
Dependências do ambiente base de treinamento: Inclui o driver da GPU, CUDA e dependências Python relevantes, que variam conforme o framework de treinamento.
Script de treinamento automático: Este script deve verificar automaticamente se é necessário retomar a partir do checkpoint mais recente e se o treinamento foi concluído.
Montagem automática do bucket na inicialização: Ao iniciar, o script de treinamento lê os pesos do modelo, conjuntos de dados e arquivos de checkpoint gerados diretamente do bucket do OSS.
Service de inicialização: Garante que o script de treinamento seja executado automaticamente após a instância ser iniciada, lendo os arquivos necessários do bucket para começar ou continuar o treinamento.
Siga estas etapas para criar a imagem.
1,1 Crie uma instância e prepare o ambiente
Esta instância servirá como modelo para a criação da imagem personalizada. Posteriormente, o grupo de dimensionamento usará essa imagem para criar novas instâncias automaticamente.
-
Acesse o ECS console para criar uma instância GPU.
Primeiro, crie uma instância GPU de pagamento conforme o uso para configurar o ambiente base. Este tutorial utiliza uma instância
ecs.gn7i-c8g1.2xlargena Zona de Disponibilidade J da região China (Hangzhou). Configure a instância da seguinte forma:1. Billing Method: Pay-As-You-Go.
②:Region. China (Hangzhou).
③④: Network and Zone. Selecione uma VPC e um vSwitch. Se não existirem, crie-os seguindo as instruções na tela.
⑤⑥: Select instance type. Selecione
ecs.gn7i-c8g1.2xlarge.⑦⑧⑨: Images: Ubuntu 22.04 64-bit.
⑩: Auto-install GPU driver. Selecione as versões: CUDA version 12.4.1, Driver version 550.127.08 e CUDNN version 9.2.0.82.
⑪: . 60 GiB.
⑫⑬⑭: Assign public IPv4 address para permitir que a instância acesse a internet e baixe arquivos de modelo. Para Bandwidth Billing Method, selecione Pay-by-traffic. Para Maximum Bandwidth, selecione 100 Mbps.
⑮⑯⑰: Crie um novo grupo de segurança básico. Abra pelo menos as portas SSH (TCP: 22) e ICMP (IPv4) para permitir conexões remotas.
⑱⑲⑳: Logon Credential. Esta credencial é usada para fazer login na instância. Você pode selecionar um par de chaves ou uma senha. Siga as instruções na tela para concluir a configuração.
21:Instance Name. Especifique um nome para a instância para facilitar a identificação e localização. Este tópico usa
ess-lora-deepseek7b-templatecomo exemplo.Após concluir a configuração, clique em Confirm Order e aguarde a criação da instância.
-
Após a criação da instância, conecte-se a ela e aguarde a instalação do driver da GPU.
Acesse ECS console - Instances.
-
Localize a instância criada na etapa anterior e clique em Connect na coluna Actions. Conecte-se à instância usando o Workbench e faça login conforme solicitado.
Se não conseguir encontrar a instância, verifique se a região atual corresponde à região da instância. É possível alternar regiões no canto superior esquerdo.
Se a instância estiver parada, atualize a página e aguarde a inicialização.
-
Após conectar-se à instância, aguarde a conclusão da instalação do driver da GPU. Depois da instalação, você será solicitado a reconectar.
Se a interface travar, tente atualizar a página e reconectar à instância.
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!
-
Instale as dependências Python.
Execute os comandos a seguir para instalar as dependências necessárias para o treinamento.
A imagem Ubuntu 22.04 64-bit usada neste tutorial já inclui o Python 3.10, portanto, não é necessária uma instalação separada do Python.
# 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
Enquanto aguarda a instalação das dependências, clique no íconeno canto superior direito para abrir um multi-terminal e prosseguir simultaneamente com a Etapa 1,2.
1,2 Crie e monte um bucket do OSS
Crie um bucket no OSS e monte-o na instância ECS. Esse bucket armazena os arquivos de pesos do modelo, conjuntos de dados e checkpoints gerados durante o treinamento.
-
Acesse o OSS console para criar um bucket.
A seguir estão os principais parâmetros de configuração. Mantenha os valores padrão para quaisquer parâmetros não mencionados.
2. Bucket. Você usará este nome de bucket ao montá-lo posteriormente.
3. Region. Selecione Region-specific. A região deve ser a mesma da instância ECS. Neste exemplo, a região é China (Hangzhou).
Instâncias ECS podem acessar buckets do OSS na mesma região pela rede interna sem custo de tráfego. Para mais informações, consulte Acessar recursos do OSS a partir de uma instância ECS pela rede interna.
-
Crie e anexe uma função RAM.
Uma função RAM autoriza a instância ECS a acessar seu bucket do OSS. Para criar e anexar uma função RAM, siga estas etapas:
-
No console RAM, crie uma função RAM. Os principais parâmetros de configuração estão descritos abaixo.
Navegue até a página Roles do console Resource Access Management (RAM) e clique em Create Role.
②: Principal type. Selecione Cloud Service.
③: Principal name. Selecione ECS. Isso especifica que a função será concedida a uma instância ECS.
④: Clique em OK e defina um nome para a função RAM conforme solicitado.
-
No console RAM, crie a seguinte política personalizada.
Vá para a página Policies do console Resource Access Management (RAM) e clique em Create Policy.
Selecione a aba Script Editor e insira o seguinte script de política.
③: Esta política concede acesso total a um bucket específico. O script da política é o seguinte.
ImportanteAo definir a política, substitua
<bucket_name>pelo seu Bucket.{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "oss:*", "Resource": [ "acs:oss:*:*:<bucket_name>", "acs:oss:*:*:<bucket_name>/*" ] } ] }Após a configuração, clique em OK e defina um nome para a política conforme solicitado.
-
No console RAM, conceda permissões à função RAM.
⑥: Principal. Selecione a função RAM criada anteriormente.
⑦: Permission Policy. Selecione a política personalizada criada anteriormente.
Após a configuração, clique em OK.
-
Acesse o ECS console e anexe a função RAM à instância.
Se não conseguir encontrar a instância, verifique se a região atual corresponde à região da instância. É possível alternar regiões no canto superior esquerdo.
Na lista de instâncias do ECS console, localize a instância de destino e anexe a função RAM criada na Etapa 1,2 através da coluna Actions.
-
-
Monte o bucket na instância ECS.
-
Conecte-se à instância criada na Etapa 1,1 e execute o comando a seguir para instalar a ferramenta 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 -
Execute o comando a seguir para concluir a operação de montagem. Certifique-se de substituir os seguintes espaços reservados no comando:
-
<bucket_name>: Substitua pelo Bucket do bucket criado.
-
<ecs_ram_role>: Substitua pelo nome da função RAM criada.
-
<internal_endpoint>: Substitua por oss-cn-hangzhou-internal.aliyuncs.com.
ImportanteEste tutorial utiliza um bucket na região China (Hangzhou), portanto, o endpoint interno da VPC é oss-cn-hangzhou-internal.aliyuncs.com.
# 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 -
-
-
(Verificação) Teste se o espaço de armazenamento está disponível.
-
Faça upload de qualquer arquivo para o bucket do OSS.
No OSS console, vá para a página Files do seu bucket. Clique em Upload File e envie um arquivo de teste para verificar a montagem.
-
Na instância, execute o comando a seguir para verificar se é possível visualizar o arquivo do bucket do OSS no diretório.
ls /mnt/oss-data/Se o arquivo estiver visível, a montagem foi bem-sucedida.
root@ixxx:~# ls /mnt/oss-data/ test.txt
-
1,3 Prepare o modelo e o conjunto de dados
Baixe os pesos do modelo e o conjunto de dados da comunidade ModelScope para o diretório de montagem do bucket do OSS.
-
Baixe o conjunto de dados
# 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-enSe o progresso do download estagnar, pressione Enter várias vezes.
-
Baixe os pesos do modelo
ImportanteO arquivo de pesos do modelo é grande. Se o download falhar ou se você vir uma mensagem
please try again, tente executar o comando novamente para retomar o download.# 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-7BSe o progresso do download estagnar, pressione Enter várias vezes.
-
Teste os pesos do modelo
Após a conclusão do download, execute o comando a seguir para realizar um teste de inferência com o modelo e verificar se o arquivo de pesos está completo.
# 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 2048Após o carregamento do modelo, inicie uma conversa com o modelo de linguagem grande. Se os pesos do modelo falharem ao carregar, baixe-os novamente.
[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?Após concluir o teste, insira
exitpara encerrar a conversa.
1,4 Escreva um script de treinamento automático
-
Escreva um script de treinamento automático.
Execute o comando a seguir para criar um script de treinamento automático e conceder permissões de execução. Este script retoma automaticamente o treinamento a partir do checkpoint mais recente e determina quando o treinamento é concluído.
# 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 -
Crie um service Linux e configure-o para iniciar na inicialização.
Execute o comando a seguir para criar um service e configurar o script de treinamento para iniciar automaticamente na inicialização.
# 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.serviceO comando retorna a seguinte saída após a conclusão:
Created symlink /etc/systemd/system/multi-user.target.wants/train.service → /etc/systemd/system/train.service.
1,5 Crie a imagem personalizada
Após concluir todas as etapas anteriores, crie uma imagem personalizada a partir da instância configurada. Essa imagem servirá como imagem de inicialização para novas instâncias durante o scale-out, eliminando a necessidade de reinstalar dependências.
Acesse a página Instances do ECS console.
-
Crie a imagem conforme descrito abaixo.
Na lista de instâncias do ECS console, localize a instância de destino. Na coluna Actions, clique em More > Disks and Images > Create Custom Image. Conclua a criação da imagem conforme solicitado.
Aguarde a criação da imagem. Esse processo leva cerca de 5 minutos. É possível verificar o progresso de criação na página Images do ECS console.
Após a criação da imagem, você pode liberar a instância criada na Etapa 1,1.
2. Crie um grupo de dimensionamento
Configure um grupo de dimensionamento para automatizar o gerenciamento de instâncias. Quando uma instância é interrompida, o grupo de dimensionamento cria automaticamente uma nova instância spot ou de pagamento conforme o uso para continuar o treinamento. Quando a capacidade spot é restaurada, ele substitui as instâncias de pagamento conforme o uso por instâncias spot para reduzir custos.
2,1 Crie um grupo de dimensionamento
Primeiro, é necessário criar um grupo de dimensionamento. Siga estas etapas.
-
Acesse o Auto Scaling console para criar um grupo de dimensionamento.
ImportanteCertifique-se de que o grupo de dimensionamento esteja na mesma região da instância criada na Etapa 1,1.
-
Configure o grupo de dimensionamento da seguinte forma. Para descrições detalhadas dos parâmetros, consulte Parâmetros.
Configure os seguintes parâmetros: Defina Scaling Group Name como ess-lora-deepseek-7b, Type como ECS e Source for Instance Configuration como Existing instance. Defina Min. Instances como 0, Max. Instances como 1 e mantenha o Default Cooldown Time em 300 segundos.
ImportanteAo selecionar uma VPC e um vSwitch em ⑤⑥, recomendamos selecionar vSwitches em múltiplas zonas de disponibilidade. Isso permite que o grupo de dimensionamento provisione recursos entre zonas, aumentando a probabilidade de criar instâncias spot com sucesso.
ImportanteSe desejar maximizar a economia usando apenas instâncias spot para treinamento, desative tanto Use Pay-as-you-go Instances to Supplement Spot Capacity quanto Replace Pay-as-you-go Instances with Spot Instances.
Após a configuração, clique em Create. Em seguida, prossiga para criar uma configuração de dimensionamento conforme solicitado.
2,2 Crie uma configuração de dimensionamento
Uma configuração de dimensionamento define as especificações da instância, imagem e outras configurações. O grupo de dimensionamento usa essa configuração para criar novas instâncias automaticamente. Na página Create Scaling Configuration, conclua as seguintes configurações:
|
1. Scaling Configuration Name: ②: Billing Method: Spot Instance. |
|
③ e ④: Image. Selecione Custom Images e, em seguida, selecione a imagem personalizada criada na Etapa 1,5. ⑤: Instance Configuration Mode. Selecione Specify Instance Type. 6. Instance Usage Duration. Selecione 1 Hour. Após a instância executar por uma hora, o sistema começa a verificar se deve interromper e recuperar a instância. Se selecionar No Specified Usage Duration, é possível usar instâncias spot a um custo menor, mas elas têm maior probabilidade de interrupção. Isso pode levar à recuperação da instância antes que um checkpoint válido seja criado, retardando o progresso do treinamento. Para mais informações sobre as diferenças entre essas duas opções, consulte Usar instâncias spot em grupos de dimensionamento para reduzir custos. ⑦: Highest price per instance. Selecione Use Automatic Bid para dar lance automaticamente com base no preço de mercado. 8. Select an instance type. Selecione o tipo de instância definido ao criar a instância na Etapa 1,1, que é |
|
9. Security Group. Selecione o grupo de segurança configurado ao criar a instância na Etapa 1,1. Este tutorial é uma solução de treinamento offline, portanto, não é necessário atribuir um endereço IP público. |
|
⑩: Logon Credential. Selecione Use Predefined Password. |
|
⑪⑫⑬: . Selecione a função RAM criada na Etapa 1,2. Quando o grupo de dimensionamento cria instâncias automaticamente, essa função RAM será anexada automaticamente às novas instâncias. |
Após clicar em Create, pode aparecer um aviso sobre insufficient scaling configuration strength. Clique em Continue.
Após criar a configuração de dimensionamento, ative a configuração de dimensionamento e ative o grupo de dimensionamento conforme solicitado.
|
Após a criação bem-sucedida da configuração de dimensionamento, clique em Enable Configuration na caixa de diálogo exibida. |
Na caixa de diálogo de confirmação Select Scaling Configuration, clique em OK. |
Na caixa de diálogo de confirmação Enable Scaling Group, clique em OK para ativar o grupo de dimensionamento. |
3. Inicie a tarefa de treinamento
Após configurar o grupo de dimensionamento, ajuste o número esperado de instâncias para 1.
|
Acesse a página de detalhes do grupo de dimensionamento e visualize o Instance Scaling Overview. As contagens atuais de instâncias são todas 0. |
Clique em Modify na seção Instance Scaling Overview. Ative a opção Expected Number of Instances, defina o valor como 1 e clique em OK. O grupo de dimensionamento criará automaticamente uma instância spot. |
Em seguida, o grupo de dimensionamento cria automaticamente uma nova instância e inicia a tarefa de treinamento.
O grupo de dimensionamento verifica periodicamente se o número de instâncias no grupo corresponde ao número esperado. Como a contagem atual é 0, um scale-out é acionado automaticamente para criar uma nova instância.
Após ajustar o número esperado de instâncias, pode haver um atraso na criação. Visualize as atividades em andamento na aba Scaling Activities.
Depois que a instância for criada e iniciada, localize uma pasta
outputno seu bucket do OSS. Essa pasta armazena os arquivos de checkpoint gerados durante o treinamento.
4. Simule uma interrupção (verificação)
Após a instância iniciar o treinamento, verifique o diretório output no seu bucket do OSS em busca de uma pasta como checkpoint-10. Assim que existir um checkpoint, libere manualmente a instância de treinamento para simular uma interrupção:
-
Libere a instância manualmente.
Primeiro, acesse a aba Instances do grupo de dimensionamento e clique no Instance ID para ir à página Instance Details correspondente.
Na página de detalhes da instância, clique em no canto superior direito e siga as instruções para liberar a instância.
-
Verifique se o treinamento retoma a partir do checkpoint mais recente.
Aguarde o grupo de dimensionamento criar uma nova instância. Após a criação da instância, conecte-se a ela e visualize o log da tarefa.
Acesse a aba Instances do grupo de dimensionamento e clique no Instance ID para ir à página Instance Details correspondente.
Clique em Connect no canto superior direito e conecte-se à instância conforme solicitado.
-
Execute o comando a seguir para visualizar o log de treinamento do modelo. Este caminho de saída de log foi definido para o service de inicialização na Etapa 1,4.
cat /root/train-service-log/train.logComo é possível observar, a tarefa de treinamento retoma a partir do checkpoint mais recente.
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
Próximas etapas
Usar o modelo ajustado para inferência
Liberar recursos
Recomendações para ambientes de produção
Adapte esta solução para produção com base nas necessidades do seu negócio e nas recomendações a seguir.
-
Integre o CloudMonitor para tratamento de interrupções
Integre o CloudMonitor ao seu código de treinamento para detectar e responder a eventos de interrupção de instância spot. Salvar um checkpoint cinco minutos antes de uma interrupção reduz a perda de progresso ao retomar o treinamento. A arquitetura aprimorada é a seguinte:

-
Estabeleça um mecanismo de recuperação de tarefas
Este tutorial retoma o treinamento a partir do checkpoint mais recente sem validá-lo. Em produção, implemente detecção de anomalias para identificar checkpoints inválidos e retomar automaticamente a partir do último checkpoint válido.
-
Aprimore o processo de conclusão de tarefas
Adicione lógica ao seu código de treinamento para detectar a conclusão da tarefa. Após a conclusão, chame a API do grupo de dimensionamento através da CLI ou SDK para definir o número esperado de instâncias como 0. O grupo de dimensionamento então libera as instâncias excedentes automaticamente, evitando custos desnecessários.
Além disso, quando a tarefa for concluída, você pode relatar eventos personalizados ao CloudMonitor. Isso permite receber notificações sobre os resultados do treinamento por e-mail, SMS ou chatbot do DingTalk.
-
Use um sistema de arquivos de alto desempenho
Para modelos com um grande número de parâmetros, o OSS pode se tornar um gargalo. Utilize um sistema de arquivos de alto throughput e baixa latência, como CPFS, para melhorar o desempenho de I/O.
-
Configure vSwitches multi-AZ para maior disponibilidade
Um vSwitch de zona única limita a criação de instâncias a uma zona, o que aumenta o risco de falhas de scale-out devido à capacidade insuficiente. Configure vSwitches em múltiplas zonas de disponibilidade para que o sistema possa criar instâncias entre zonas quando uma instância spot for recuperada.