Pré-treinamento contínuo (CPT) - SageMaker Inteligência Artificial da Amazon

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á.

Pré-treinamento contínuo (CPT)

O pré-treinamento contínuo (CPT) é o processo de treinamento adicional de um modelo básico pré-treinado em novos dados usando os mesmos objetivos não supervisionados (como modelagem de linguagem mascarada ou modelagem de linguagem causal). Ele preserva os recursos gerais de linguagem aprendidos anteriormente enquanto se adapta a novos domínios ou mudanças de distribuição.

O CPT não envolve mudanças arquitetônicas ou ajustes finos para tarefas posteriores específicas. Em vez disso, ele amplia a capacidade de compreensão da linguagem do modelo de maneira consciente do domínio.

Você deve usar o CPT nos seguintes cenários:

  • Você tem dados em grande escala, sem rótulos, específicos de um domínio (por exemplo, medicina ou finanças).

  • Você quer que o modelo mantenha os recursos gerais de linguagem e, ao mesmo tempo, melhore o conteúdo específico do domínio.

  • Você quer melhorar o desempenho de zero e poucos disparos em áreas especializadas sem realizar um ajuste fino extenso e específico para cada tarefa.

Requisitos de formato de dados

Recomendamos seguir as seguintes características do conjunto de dados ao realizar o CPT:

  • Diversidade: seus dados devem abranger uma ampla variedade de expressões dentro do domínio de destino para evitar ajustes excessivos.

  • Representação: seus dados devem refletir a distribuição que o modelo enfrentará durante a inferência.

  • Limpeza: o ruído e a redundância em seus dados podem prejudicar o desempenho. A desduplicação e a normalização de texto melhoram o treinamento do modelo.

  • Escala: conjuntos de dados maiores ajudam, mas além de um determinado limite (como executar várias épocas com dados limitados), os riscos de sobreajuste aumentam.

Os conjuntos de dados de treinamento e validação devem ser arquivos JSONL seguindo o formato Converse, em que cada linha contém um objeto JSON representando uma conversa com os campos e a estrutura necessários. Exemplo:

{"text": "AWS stands for Amazon Web Services"} {"text": "Amazon SageMaker is a fully managed machine learning service"} {"text": "Amazon Bedrock is a fully managed service for foundation models"}

As entradas de texto devem conter conteúdo fluído naturalmente e de alta qualidade que represente seu domínio de destino.

Validação do conjunto de dados

Para validar seu conjunto de dados antes de enviar seu trabalho de CPT, verifique as seguintes condições:

  • Cada linha deve conter um objeto JSON válido.

  • Cada objeto tem um campo de “texto” que contém dados de string.

  • Nenhum campo além de “texto” está presente.

  • O arquivo é uma .jsonl extensão.

Tempos de treinamento

A quantidade de tempo gasto no treinamento depende muito do tamanho do conjunto de dados, do número de instâncias usadas e do modelo que está sendo treinado. Espera-se que os tempos de treinamento sejam escalonados linearmente. A tabela a seguir fornece alguns exemplos de tempos de treinamento para vários modelos.

Tipo de modelo

GBS

Número de amostras no conjunto de dados

Número de instâncias P5

Valor do max_length

Tempo aproximado de treinamento em horas

Amazon Nova Micro

256

100.000

8

8,192

4

Amazon Nova Lite

256

100.000

16

8,192

4

Amazon Nova Pro

256

100.000

24

8,192

10

Os conjuntos de dados de treinamento e validação devem ser arquivos JSONL seguindo o formato de operação Amazon Bedrock Converse, em que cada linha contém um objeto JSON representando uma conversa com os campos e a estrutura necessários.

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

  • Executar configuração

    • name: Um nome descritivo para seu trabalho de treinamento. Isso ajuda a identificar seu trabalho no AWS Management Console.

    • model_type: A variante do modelo Amazon Nova a ser usada. As opções disponíveis sãoamazon.nova-micro-v1:0:128k,amazon.nova-lite-v1:0:300k, ouamazon.nova-pro-v1:0:300k.

    • model_name_or_path: O caminho para o modelo básico a ser usado em seu treinamento. As opções disponíveis sãonova-micro/prod,, nova-lite/prodnova-pro/prod, ou o caminho 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 para treinamento distribuído. Os valores disponíveis variam de acordo com o modelo escolhido. O Amazon Nova Micro oferece suporte a 2, 4 ou 8 réplicas. O Amazon Nova Lite oferece suporte a 4, 8, 16 ou 32 réplicas. O Amazon Nova Pro oferece suporte a 6, 12 ou 24 réplicas.

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

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

    • output_s3_path: o local do S3 em que o manifesto e TensorBoard os registros são armazenados. Todos os locais do S3 fornecidos devem estar no mesmo Conta da AWS e. Região da AWS

  • Configuração de 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 suportado é 8192 tokens para CPT.

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

  • Configurações do treinador

    • global_batch_size: o número total de amostras de treinamento processadas juntas em uma passagem para frente ou para trás em todos os dispositivos e funcionários.

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

    • max_epochs: o número de passagens completas em seu conjunto de dados de treinamento.

      Em geral, conjuntos de dados maiores exigem menos épocas para convergir, enquanto conjuntos de dados menores exigem mais épocas para convergir. Recomendamos que você ajuste o número de épocas com base no tamanho dos seus dados para evitar ajustes excessivos.

  • Configurações do modelo

    • hidden_dropout: A probabilidade de descartar saídas de estado oculto. 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-1, inclusive.

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

    • ffn_dropout: A probabilidade de perder as saídas da rede de feed-forward. Os valores válidos estão entre 0-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-1e-4 para um bom desempenho. Os valores válidos estão entre 0-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-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 no final da decadência. Os valores válidos estão entre 0-1, inclusive, mas devem ser menores que a taxa de aprendizado.

Receita CPT

A seguir está uma receita para o CPT.

## Run config run: name: "my-cpt-run" # A descriptive name for your training job model_type: "amazon.nova-lite-v1:0:300k" # Model variant specification, do not change model_name_or_path: "nova-lite/prod" # Base model path, do not change replicas: 4 # Number of compute instances for training, allowed values are 4, 8, 16 data_s3_path: [S3_PATH_TO_TRAIN_DATASET] validation_data_s3_path: (OPTIONAL)[S3_PATH_TO_VALIDATION_DATASET] output_s3_path: [S3_PATH_TO_STORE_MANIFEST] ## Training specific configs training_config: max_length: 8192 # Maximum context window size (tokens). global_batch_size: 256 # Global batch size, allowed values are 32, 64, 128, 256. trainer: max_epochs: 2 # Number of training epochs 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 ffn_dropout: 0.0 # Dropout for feed-forward networks, must be between 0.0 and 1.0 optim: 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 betas: # Adam optimizer betas, must be between 0.0 and 1.0 - 0.9 - 0.999 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
Limitações

O CPT tem as seguintes limitações:

  • Não há suporte para conjuntos de dados multimodais.

  • Os pontos de verificação intermediários não são salvos para avaliação e você não pode retomar a partir de um ponto de verificação intermediário. Somente o último ponto de verificação é salvo.

  • MLflow o registro não é suportado.