Pré-treinamento contínuo (CPT)
O pré-treinamento contínuo (CPT) é o processo de treinamento adicional de um modelo de base 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 distribucionais.
O CPT não requer mudanças de arquitetura ou ajustes finos para tarefas específicas subsequentes. Em vez disso, ele amplia a capacidade de compreensão da linguagem do modelo de uma maneira que reconhece o 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ê deseja que o modelo mantenha os recursos gerais de linguagem e, ao mesmo tempo, melhore o conteúdo específico do domínio.
-
Você deseja melhorar o desempenho de zero shot e few shot 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 a estrutura e os campos 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 ter um conteúdo de alta qualidade que flua naturalmente e 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 também deve ser um objeto JSON válido.
-
Cada objeto tem um campo de “texto” que contém dados de string.
-
Não há nenhum outro campo além de “texto”.
-
O arquivo é uma extensão
.jsonl.
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 escalem linearmente. A tabela a seguir apresenta 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 |
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 Converse do Amazon Bedrock, em que cada linha contém um objeto JSON representando uma conversa com a estrutura e os campos necessários.
Os parâmetros do Amazon Nova 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ãoamazon.nova-micro-v1:0:128k,amazon.nova-lite-v1:0:300kouamazon.nova-pro-v1:0:300k. -
model_name_or_path: o caminho para o modelo de base a ser usado em seu treinamento. As opções disponíveis sãonova-micro/prod,nova-lite/prod,nova-pro/prodou 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 Micro permite 2, 4 ou 8 réplicas. O Amazon Nova Lite permite 4, 8, 16 ou 32 réplicas. O Amazon Nova Pro permite 6, 12 ou 24 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 região e Conta 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.
-
-
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ê compatibilize o parâmetro
max_lengthcom 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 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.
-
max_epochs: o número de passagens completas pelo 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 sobreajuste.
-
-
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 e 1, inclusive. -
attention_dropout: a probabilidade de descartar os pesos de atenção. Esse parâmetro pode ajudar na generalização. Os valores válidos estão entre 0 e 1, inclusive. -
ffn_dropout: a probabilidade de descartar as saídas da rede de alimentação direta. 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 comdistributed_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 no final da queda. Os valores válidos estão entre 0-1, inclusive, mas devem ser menores que a taxa de aprendizado.
-
Fórmula de CPT
A seguir é apresentada uma fórmula para 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 é possível usar conjuntos de dados multimodais.
-
Os pontos de verificação intermediários não são salvos para avaliação e não é possível retomar a partir de um ponto de verificação intermediário. Somente o último ponto de verificação é salvo.
-
Não é possível usar o registro em log do MLflow.