View a markdown version of this page

Pré-treinamento contínuo (CPT) no Nova 2.0 no SageMaker HyperPod - Amazon Nova

Pré-treinamento contínuo (CPT) no Nova 2.0 no SageMaker HyperPod

O Amazon Nova Lite 2.0 é um modelo de raciocínio treinado em um conjunto de dados maior e mais diversificado do que o Nova Lite 1.0. Apesar de ser um modelo maior, o Nova Lite 2.0 oferece inferência mais rápida do que o Nova Lite 1.0, ao mesmo tempo em que oferece recursos aprimorados de raciocínio, janelas de contexto mais longas e melhor desempenho multilíngue.

Com o CPT no Nova 2.0 Lite, é possível estender esses recursos avançados com seus dados específicos de domínio e desenvolver experiência profunda em áreas especializadas enquanto as habilidades superiores de raciocínio e análise do modelo são mantidas.

Confira a seguir um exemplo de fórmula de CPT. Essa e outras fórmulas podem ser encontradas no repositório de fórmulas do SageMaker HyperPod no GitHub.

# Note: # This recipe can run on p5.48xlarge # Run config run: name: "my-cpt-run" # A descriptive name for your training job model_type: "amazon.nova-2-lite-v1:0:256k" # Model variant specification, do not change model_name_or_path: "nova-lite-2/prod" # Base model path, do not change replicas: 8 # Number of compute instances for training, allowed values are 4, 8, 16, 32 data_s3_path: "" # Customer data paths validation_data_s3_path: "" # Customer validation data paths output_s3_path: "" # Output artifact path, SageMaker HyperPod job-specific configuration - not compatible with standard SageMaker Training Jobs mlflow_tracking_uri: "" # Required for MLFlow mlflow_experiment_name: "my-cpt-experiment" # Optional for MLFlow. Note: leave this field non-empty mlflow_run_name: "my-cpt-run" # Optional for MLFlow. Note: leave this field non-empty ## Training specific configs training_config: task_type: cpt max_length: 8192 # Maximum context window size (tokens) global_batch_size: 256 # Global batch size, allowed values are 32, 64, 128, 256. trainer: max_steps: 10 # The number of training steps to run total val_check_interval: 10 # The number of steps between running validation. Integer count or float percentage limit_val_batches: 2 # Batches of the validation set to use each trigger model: hidden_dropout: 0.0 # Dropout for hidden states, must be between 0.0 and 1.0 attention_dropout: 0.0 # Dropout for attention weights, must be between 0.0 and 1.0 optim: optimizer: adam lr: 1e-5 # Learning rate name: distributed_fused_adam # Optimizer algorithm, do not change adam_w_mode: true # Enable AdamW mode eps: 1e-06 # Epsilon for numerical stability weight_decay: 0.0 # L2 regularization strength, must be between 0.0 and 1.0 adam_beta1: 0.9 # Beta1 for Adam optimizer adam_beta2: 0.95 # Beta2 for Adam optimizer sched: warmup_steps: 10 # Learning rate warmup steps constant_steps: 0 # Steps at constant learning rate min_lr: 1e-6 # Minimum learning rate, must be lower than lr

Iniciar uma tarefa de pré-treinamento contínuo no SageMaker HyperPod

Preparar seus dados

Para obter informações sobre formato dos dados, recursos compatíveis, restrições e melhores práticas para preparar os dados de treinamento do CPT, consulte Preparando dados para CPT no Amazon Nova 2.

Carregar seus dados

Faça upload de conjuntos de dados de treinamento e validação para um bucket do S3. Especifique esses locais no bloco run da fórmula:

## Run config run: ... data_s3_path: "s3://<bucket-name>/<training-directory>/<training-file>.jsonl" validation_data_s3_path: "s3://<bucket-name>/<validation-directory>/<validation-file>.jsonl"
nota

Substitua <bucket-name>, <training-directory>, <validation-directory>, <training-file> e <validation-file> por caminhos reais do S3.

Definir a configuração

Defina o modelo base usando os campos model_type e model_name_or_path no bloco run:

## Run config run: ... model_type: amazon.nova-2-lite-v1:0:256k model_name_or_path: nova-lite-2/prod ...

Parâmetros de ajuste do CTP

Os parâmetros que estão disponíveis para ajuste com o CPT incluem:

Configuração da execução

  • name: um nome descritivo para a tarefa de treinamento. Isso ajuda a identificar sua tarefa no Console de Gerenciamento da AWS.

  • model_type: a variante do modelo do Amazon Nova a ser usada. As opções disponíveis são amazon.nova-2-lite-v1:0:256k.

  • model_name_or_path: o caminho para o modelo de base a ser usado em seu treinamento. As opções disponíveis são nova-lite-2/prod ou o caminho do S3 para o ponto de verificação pós-treinamento (s3://customer-escrow-bucket-unique_id/training_run_name).

  • replicas: o número de instâncias de computação a serem usadas no treinamento distribuído. Os valores disponíveis variam de acordo com o modelo escolhido. O Amazon Nova Lite 2.0 é compatível com 4, 8, 16 ou 32 réplicas.

  • data_s3_path: o local no S3 do conjunto de dados de treinamento, que é um arquivo JSONL. Esse arquivo deve residir na mesma conta e região da AWS que o cluster. Todos os locais do S3 fornecidos devem estar na mesma conta e região.

  • validation_data_s3_path: (opcional) o local no S3 do conjunto de dados de validação, que é um arquivo JSONL. Esse arquivo deve estar na mesma conta e região que o cluster. Todos os locais do S3 fornecidos devem estar na mesma conta e região.

  • output_s3_path: o local do S3 onde o manifesto e os logs do TensorBoard são armazenados. Todos os locais do S3 fornecidos devem estar na mesma conta da AWS e região da AWS.

  • mlflow_tracking_uri: o ARN da aplicação MLFlow a ser usada para registro em log do MLFlow

  • mlflow_experiment_name: nome do experimento do MLFlow

  • mlflow_run_name: nome de execução do MLFlow

Configuração do treinamento

  • max_length: o tamanho máximo da sequência em tokens. Isso determina o tamanho da janela de contexto para treinamento. O valor máximo permitido é 8.192 tokens para CPT.

    Sequências mais longas melhorarão a eficiência do treinamento à custa de maiores requisitos de memória. Recomendamos que você faça a correspondência do parâmetro max_length com sua distribuição de dados.

  • global_batch_size: o número total de exemplos de treinamento processados juntos em uma única etapa de propagação (forward ou backward) em todos os dispositivos e operadores.

    Esse valor multiplica o tamanho do lote por dispositivo e o número de dispositivos. Isso afeta a estabilidade do treinamento e o throughput. Recomendamos que você comece com um tamanho de lote que caiba confortavelmente na memória e possa ter a escala aumentada verticalmente a partir daí. Para dados específicos do domínio, lotes maiores podem suavizar demais os gradientes.

Configurações do treinador

  • max_steps: o número de etapas de treinamento a serem executadas. Cada etapa treinará o modelo com o número de elementos global_batch_size

Configurações do modelo

  • hidden_dropout: a probabilidade de descartar saídas de estados ocultos. Aumente esse valor em aproximadamente 0,0-0,2 para reduzir o sobreajuste em conjuntos de dados menores. Os valores válidos estão entre 0 e 1, inclusive.

  • attention_dropout: a probabilidade de descartar pesos de atenção. Esse parâmetro pode ajudar na generalização. Os valores válidos estão entre 0 e 1, inclusive.

Configuração do otimizador

  • lr: a taxa de aprendizado, que controla o tamanho da etapa durante a otimização. Recomendamos valores entre 1e-6 e 1e-4 para um obter bom desempenho. Os valores válidos estão entre 0 e 1, inclusive.

  • name: o algoritmo otimizador. No momento, só há compatibilidade com distributed_fused_adam.

  • weight_decay: a força de regularização de L2. Valores mais altos (entre 0,01 e 0,1) aumentam a regularização.

  • warmup_steps: o número de etapas para aumentar gradualmente a taxa de aprendizado. Isso melhora a estabilidade do treinamento. Os valores válidos estão entre 1 e 20, inclusive.

  • min_lr: a taxa mínima de aprendizado ao término do decaimento. Os valores válidos estão entre 0-1, inclusive, mas devem ser menores que a taxa de aprendizado.