Entrenamiento previo continuo (CPT)
El entrenamiento previo continuo (CPT) es el proceso de entrenamiento adicional de un modelo fundacional entrenado previamente con nuevos datos utilizando los mismos objetivos sin supervisión (como el modelado de lenguaje enmascarado o el modelado de lenguaje causal). Conserva las capacidades lingüísticas generales aprendidas previamente y, al mismo tiempo, se adapta a nuevos dominios o cambios distributivos.
El CPT no implica cambios en la arquitectura ni refinamiento para tareas posteriores específicas. Más bien amplía la capacidad de comprensión del lenguaje del modelo teniendo en cuenta el dominio.
Debe utilizar el CPT en las siguientes situaciones:
-
Dispone de datos a gran escala y sin etiquetar que son específicos de un dominio (por ejemplo, medicina o finanzas).
-
Desea que el modelo conserve las capacidades lingüísticas generales y, al mismo tiempo, mejore el contenido específico de un dominio.
-
Desea mejorar el rendimiento desde cero y con pocos pasos en áreas especializadas sin necesidad de realizar refinamientos exhaustivos y específicos de la tarea.
Requisitos del formato de los datos
Es recomendable que se cumplan los siguientes requisitos del conjunto de datos al realizar CPT:
-
Diversidad: los datos deben cubrir una amplia variedad de expresiones en el dominio de destino para evitar un ajuste excesivo.
-
Representación: los datos deben reflejar la distribución a la que se enfrentará el modelo durante la inferencia.
-
Limpieza: el ruido y la redundancia de los datos pueden reducir el rendimiento. La desduplicación y la normalización del texto mejoran el entrenamiento del modelo.
-
Escalabilidad: los grandes conjuntos de datos ayudan, pero si se supera cierto umbral (por ejemplo, si se ejecutan varias épocas con datos limitados), aumentan los riesgos de ajuste excesivo.
Los conjuntos de datos de entrenamiento y validación deben ser archivos JSONL con formato Converse, donde cada línea contenga un objeto JSON que represente una conversación con los campos y la estructura requeridos. A continuación se muestra un ejemplo:
{"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"}
Las entradas de texto deben incluir contenido fluido y de alta calidad que represente el dominio de destino.
Validación del conjunto de datos
Para validar el conjunto de datos antes de enviar el trabajo de CPT, compruebe las siguientes condiciones:
-
Cada línea también debe contener un objeto JSON válido.
-
Cada objeto tiene un campo de “texto” que contiene datos de cadena.
-
Todos los campos son de “texto”.
-
El archivo tiene la extensión
.jsonl.
Horas de entrenamiento
La cantidad de tiempo dedicado al entrenamiento depende en gran medida del tamaño del conjunto de datos, la cantidad de instancias utilizadas y el modelo que se esté entrenando. Se espera que los tiempos de entrenamiento se escalen linealmente. La siguiente tabla muestra algunos ejemplos de tiempos de entrenamiento para varios modelos.
Tipo de modelo |
GBS |
Número de muestras en el conjunto de datos |
Número de instancias P5 |
Valor de |
Tiempo aproximado de entrenamiento en 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 |
Los conjuntos de datos de entrenamiento y validación deben ser archivos JSONL con formato operativo Converse de Amazon Bedrock, donde cada línea contenga un objeto JSON que represente una conversación con los campos y la estructura requeridos.
Parámetros de Amazon Nova disponibles para el ajuste con CPT:
-
Ejecutar configuración
-
name: nombre descriptivo para el trabajo de entrenamiento. Ayuda a identificar el trabajo en la Consola de administración de AWS. -
model_type: variante del modelo de Amazon Nova que desea utilizar. Las opciones disponibles sonamazon.nova-micro-v1:0:128k,amazon.nova-lite-v1:0:300kyamazon.nova-pro-v1:0:300k. -
model_name_or_path: ruta al modelo base que desea utilizar para el entrenamiento. Las opciones disponibles sonnova-micro/prod,nova-lite/prodynova-pro/prod, o la ruta de S3 para el punto de comprobación posterior al entrenamiento (s3://customer-escrow-bucket-unique_id/training_run_name). -
replicas: número de instancias de computación que desea utilizar para entrenamiento distribuido. Los valores disponibles varían en función del modelo que elija. Amazon Nova Micro admite 2, 4 u 8 réplicas. Amazon Nova Lite admite 4, 8, 16 o 32 réplicas. Amazon Nova Pro admite 6, 12 o 24 réplicas. -
data_s3_path: ubicación de S3 del conjunto de datos de entrenamiento, que es un archivo JSONL. Este archivo debe residir en la misma Cuenta de AWS y región que el clúster. Todas las ubicaciones de S3 proporcionadas deben estar en la misma cuenta y región. -
validation_data_s3_path: (Opcional) Ubicación de S3 del conjunto de datos de validación, que es un archivo JSONL. Este archivo debe residir en la misma cuenta y región que el clúster. Todas las ubicaciones de S3 proporcionadas deben estar en la misma cuenta y región. -
output_s3_path: ubicación de S3 donde se almacenan el manifiesto y los registros de TensorBoard. Todas las ubicaciones de S3 proporcionadas deben estar en la misma Cuenta de AWS y Región de AWS.
-
-
Configuración de entrenamiento
-
max_length: longitud máxima de secuencia en tokens. Determina el tamaño de la ventana de contexto para entrenamiento. El valor máximo admitido es de 8192 tokens para CPT.Las secuencias más largas mejorarán la eficiencia del entrenamiento a costa de aumentar los requisitos de memoria. Es recomendable que el parámetro
max_lengthcoincida con la distribución de datos.
-
-
Ajustes del entrenador
-
global_batch_size: número total de muestras de entrenamiento procesadas juntas en una sola pasada hacia delante o hacia atrás en todos los dispositivos y trabajadores.Este valor multiplica el tamaño del lote por dispositivo y el número de dispositivos. Afecta a la estabilidad del entrenamiento y al rendimiento. Le recomendamos que comience con un tamaño de lote que se ajuste fácilmente a la memoria y, a partir de ahí, se escale verticalmente. En el caso de datos específicos de un dominio, es posible que los lotes de mayor tamaño suavicen en exceso los gradientes.
-
max_epochs: número de pasadas completas por el conjunto de datos de entrenamiento.En general, los conjuntos de datos grandes requieren menos épocas para converger, mientras que los conjuntos de datos pequeños requieren un mayor número de épocas. Le recomendamos que ajuste el número de épocas en función del tamaño de los datos para evitar el ajuste excesivo.
-
-
Ajustes de modelos
-
hidden_dropout: probabilidad de eliminar salidas de estado ocultas. Aumente este valor aproximadamente 0,0-0,2 para reducir el ajuste excesivo en conjuntos de datos más pequeños. Los valores válidos van de 0 a 1, ambos inclusive. -
attention_dropout: probabilidad de perder ponderaciones de atención. Este parámetro puede ayudar en la generalización. Los valores válidos van de 0 a 1, ambos inclusive. -
ffn_dropout: probabilidad de que disminuyan las salidas de red de prealimentada. Los valores válidos van de 0 a 1, ambos inclusive.
-
-
Configuración del optimizador
-
lr: tasa de aprendizaje, que controla el tamaño de los pasos durante la optimización. Recomendamos valores entre 1e-6-1e-4 para un buen rendimiento. Los valores válidos van de 0 a 1, ambos inclusive. -
name: algoritmo optimizador. En la actualidad, solo se admitedistributed_fused_adam. -
weight_decay: fuerza de regularización de L2. Los valores más altos (entre 0,01 y 0,1) aumentan la regularización. -
warmup_steps: número de pasos para aumentar gradualmente la tasa de aprendizaje. Mejora la estabilidad del entrenamiento. Los valores válidos van de 1 a 20, ambos inclusive. -
min_lr: tasa mínima de aprendizaje al final de la degradación. Los valores válidos van de 0 a 1, ambos inclusive, pero deben ser inferiores a la tasa de aprendizaje.
-
Fórmula de CPT
A continuación se ofrece una 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
Limitaciones
CPT presenta las siguientes limitaciones:
-
No admite conjuntos de datos multimodales.
-
Los puntos de comprobación intermedios no se guardan para su evaluación y no es posible reanudar desde un punto de comprobación intermedio. Solo se guarda el último punto de comprobación.
-
No se admite el registro de MLflow.