As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Configuração geral
O arquivo config.yaml especifica a fórmula de treinamento e o cluster. Também inclui configurações de runtime, como variáveis de ambiente para a tarefa de treinamento.
defaults: - _self_ - cluster: slurm - recipes: training/llama/hf_llama3_8b_seq8192_gpu instance_type: p5.48xlarge git: repo_url_or_path: null branch: null commit: null entry_script: null token: null env_vars: NCCL_DEBUG: WARN
Você pode modificar os seguintes parâmetros de um config.yaml:
-
defaults: especifique suas configurações padrão, como o cluster ou as fórmulas padrão. -
instance_type: modifique o tipo de instância do Amazon EC2 para que corresponda ao tipo de instância que você está usando. -
git: especifique a localização do repositório do adaptador de SageMaker HyperPod receita para o trabalho de treinamento. -
env_vars: você pode especificar as variáveis de ambiente a serem transmitidas à sua tarefa de treinamento de runtime. Por exemplo, você pode ajustar o nível de registro em log da NCCL especificando a variável de ambiente NCCL_DEBUG.
A fórmula é a principal configuração que define a arquitetura da tarefa de treinamento. Esse arquivo inclui muitas informações importantes para a tarefa de treinamento, como as seguintes:
-
Se é necessário usar paralelismo do modelo.
-
A fonte de seus conjuntos de dados.
-
Treinamento de precisão mista.
-
Configurações relacionadas ao ponto de verificação.
Você pode usar as fórmulas como estão. Também é possível usar as informações a seguir para modificá-las.
run
A seguir são apresentadas informações básicas para executar sua tarefa de treinamento.
run: name: llama-8b results_dir: ${base_results_dir}/${.name} time_limit: "6-00:00:00" model_type: hf
-
name: especifique o nome da tarefa de treinamento no arquivo de configuração. -
results_dir: você pode especificar o diretório em que os resultados da tarefa de treinamento são armazenados. -
time_limit: é possível definir um tempo máximo para a tarefa de treinamento para evitar que ela ocupe os recursos de hardware por muito tempo. -
model_type: você pode especificar o tipo de modelo que está usando. Por exemplo, você pode especificarhfse seu modelo é de HuggingFace.
exp_manager
O exp_manager configura o experimento. Com o exp_manager, você pode especificar determinados campos, como o diretório de saída, ou configurações do ponto de verificação. Veja a seguir um exemplo de como você pode configurar o exp_manager.
exp_manager: exp_dir: null name: experiment create_tensorboard_logger: True
-
exp_dir: o diretório de experimentos inclui a saída padrão e os arquivos de erro padrão da tarefa de treinamento. Seu diretório atual é usado por padrão. -
name: o nome do experimento usado para identificar seu experimento em exp_dir. -
create_tensorboard_logger: especifiqueTrueouFalseative ou desative o TensorBoard registrador.
Pontos de verificação
Veja abaixo os três tipos de ponto de verificação que podem ser utilizados:
-
Ponto de verificação automático
-
Ponto de verificação manual
-
Pontos de verificação totais
Ponto de verificação automático
Se você estiver salvando ou carregando pontos de verificação que são gerenciados automaticamente pelo adaptador de SageMaker HyperPod receita, você pode habilitarauto_checkpoint. Para habilitar o auto_checkpoint, defina enabled como True. Você pode usar o ponto de verificação automático para treinamento e ajuste fino. Você pode usar o ponto de verificação automático para sistemas de arquivos compartilhados e para o Amazon S3.
exp_manager checkpoint_dir: ${recipes.exp_manager.exp_dir}/checkpoints/ auto_checkpoint: enabled: True
O ponto de verificação automático está salvando o local_state_dict de forma assíncrona com um intervalo de salvamento ideal calculado automaticamente.
nota
Nesse modo de ponto de verificação, o ponto de verificação salvo automaticamente não permite a refragmentação entre as execuções de treinamento. Para continuar a partir do último ponto de verificação salvo automaticamente, você deve preservar os mesmos graus de fragmentação. Não é necessário especificar informações adicionais para retomar automaticamente.
Ponto de verificação manual
Você pode modificar checkpoint_callback_params para salvar um ponto de verificação intermediário de forma assíncrona no shared_state_dict. Por exemplo, você pode especificar a configuração a seguir para habilitar o ponto de verificação fragmentado a cada dez etapas e manter os três pontos de verificação mais recentes.
O ponto de verificação fragmentado permite que você altere os graus de fragmentação entre as execuções de treinamento e carregue o ponto de verificação configurando resume_from_checkpoint.
nota
-
Se for ajuste fino de PEFT, não será possível usar o ponto de verificação fragmentado com o Amazon S3.
-
Os pontos de verificação automáticos e manuais são mutuamente excludentes.
-
Somente são permitidas alterações nos graus de fragmentação de FSDP e nos graus de replicação.
exp_manager: checkpoint_callback_params: # Set save_top_k = 0 to disable sharded checkpointing save_top_k: 3 every_n_train_steps: 10 monitor: "step" mode: "max" save_last: False resume_from_checkpoint: ${recipes.exp_manager.exp_dir}/checkpoints/
Para saber mais sobre pontos de verificação, consulte Ponto de verificação com uso do SMP.
Pontos de verificação totais
O ponto de verificação full_state_dict exportado pode ser usado para inferência ou ajuste fino. É possível carregar um ponto de verificação completo por meio de hf_model_name_or_path. Nesse modo, somente os pesos do modelo são salvos.
Para exportar o modelo full_state_dict, você pode definir os parâmetros a seguir.
nota
No momento, não e possível usar o ponto de verificação completo com o ponto de verificação do Amazon S3. Você pode definir o caminho do S3 para exp_manager.checkpoint_dir se estiver habilitando o ponto de verificação completo. No entanto, é possível definir exp_manager.export_full_model.final_export_dir como um diretório específico em seu sistema de arquivos local e definir exp_manager.checkpoint_dir como um caminho do Amazon S3.
exp_manager: export_full_model: # Set every_n_train_steps = 0 to disable full checkpointing every_n_train_steps: 0 save_last: True final_export_dir : null
model
Defina vários aspectos da arquitetura do modelo e do processo de treinamento. Isso inclui configurações de paralelismo do modelo, precisão e tratamento de dados. Abaixo são apresentados os principais componentes que você pode configurar na seção “Modelo”:
paralelismo do modelo
Depois de especificar a fórmula, defina o modelo que você está treinando. Você também pode definir o paralelismo do modelo. Por exemplo, você pode definir tensor_model_parallel_degree. Você pode ativar outros recursos, como treinar com FP8 precisão. Por exemplo, você pode treinar um modelo com paralelismo de tensores e paralelismo de contexto:
model: model_type: llama_v3 # Base configs train_batch_size: 4 val_batch_size: 1 seed: 12345 grad_clip: 1.0 # Model parallelism tensor_model_parallel_degree: 4 expert_model_parallel_degree: 1 context_parallel_degree: 2
Para compreender melhor os diferentes tipos de técnicas de paralelismo de modelos, você pode consultar as seguintes abordagens:
FP8
Para habilitar FP8 (precisão de ponto flutuante de 8 bits), você pode especificar a configuração FP8 relacionada no exemplo a seguir:
model: # FP8 config fp8: True fp8_amax_history_len: 1024 fp8_amax_compute_algo: max
É importante observar que o formato de FP8 dados atualmente é compatível somente com o tipo de instância P5. Se você estiver usando um tipo de instância mais antigo, como P4, desative o FP8 recurso do seu processo de treinamento de modelos. Para obter mais informações sobre FP8, consulteTreinamento de precisão mista.
dados
Você pode especificar conjuntos de dados personalizados para a tarefa de treinamento adicionando os caminhos de dados em “Dados”. O módulo de dados em nosso sistema é compatível com os seguintes formatos de dados:
-
JSON
-
JSONGZ (JSON compactado)
-
ARROW
No entanto, você é responsável por preparar seu próprio conjunto de dados pré-tokenizado. Para usuários avançados com requisitos específicos, também há a opção de implementar e integrar um módulo de dados personalizado. Para obter mais informações sobre HuggingFace conjuntos de dados, consulte Conjuntos de dados
model: data: train_dir: /path/to/your/train/data val_dir: /path/to/your/val/data dataset_type: hf use_synthetic_data: False
Você pode especificar como você está treinando o modelo. Por padrão, a fórmula usa pré-treinamento em vez de ajuste fino. O exemplo a seguir configura a fórmula para executar uma tarefa de ajuste fino com a adaptação de baixa classificação (LoRa).
model: # Fine tuning config do_finetune: True # The path to resume from, needs to be HF compatible hf_model_name_or_path: null hf_access_token: null # PEFT config peft: peft_type: lora rank: 32 alpha: 16 dropout: 0.1
Para obter informações sobre as receitas, consulte SageMaker HyperPodreceitas