Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Ajuste preciso supervisado (SFT)
En las siguientes secciones se describe el proceso de ajuste preciso supervisado (SFT), tanto la SFT de rango completo como la SFT eficiente en cuanto a parámetros.
Ajuste de precisión supervisado (SFT) de rango completo
La afinación supervisada (SFT) es el proceso mediante el cual se proporciona una colección de pares de respuesta de peticiones a un modelo fundacional para mejorar el rendimiento de un modelo fundacional previamente entrenado en una tarea específica. Los ejemplos etiquetados tienen formato de pares de petición-respuesta y están redactados como instrucciones. Este proceso de ajuste modifica las ponderaciones del modelo.
Debe usar la SFT cuando tenga datos específicos de un dominio que requieran proporcionar pares específicos de pronta petición para obtener resultados óptimos.
Tenga en cuenta que sus conjuntos de datos de entrada de entrenamiento y validación deben residir en depósitos propiedad del cliente, no en depósitos de depósito en garantía o en grupos S3 gestionados por el servicio.
Requisitos de datos
Para el SFT de rango completo y el SFT de adaptador de rango bajo (LoRa), los datos deben seguir el formato de operación de Amazon Bedrock Converse. Para ver ejemplos y restricciones de este formato, consulte Preparación de datos para ajustar con precisión los modelos Understanding.
Para validar el formato del conjunto de datos antes de enviarlo, le recomendamos que utilice el script de validación del repositorio de muestras de Amazon Bedrock
Los parámetros de Amazon Nova que están disponibles para ajustar con SFT son los siguientes:
-
Ejecute la configuración
-
name
: un nombre descriptivo para su trabajo de formación. Esto ayuda a identificar su trabajo en el AWS Management Console. -
model_type
: La variante del modelo Amazon Nova que se utilizará. Las opciones disponibles sonamazon.nova-micro-v1:0:128k
amazon.nova-lite-v1:0:300k
, oamazon.nova-pro-v1:0:300k
. -
model_name_or_path
: La ruta hacia el modelo base que utilizarás en tu entrenamiento. Seleccione el modelo a utilizarnova-micro/prod
nova-lite/prod
nova-pro/prod
, o la ruta S3 para el punto de control posterior al entrenamiento ()s3://<escrow bucket>/<job id>/outputs/checkpoints
. -
replicas
: el número de instancias informáticas que se van a utilizar para el entrenamiento distribuido. Los valores disponibles varían en función del modelo elegido. 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 ó 24 réplicas. -
data_s3_path
: La ubicación en S3 del conjunto de datos de entrenamiento, que es un archivo JSONL. Este archivo debe residir en la misma región Cuenta de AWS y región que el clúster. Todas las ubicaciones de S3 de la ruta de S3 proporcionada deben estar en la misma cuenta y región. -
validation_data_s3_path
: (Opcional) La ubicación en 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 de la ruta de S3 proporcionada deben estar en la misma cuenta y región. -
output_s3_path
: La ubicación de S3 donde se almacenan el manifiesto y los TensorBoard registros. Todas las ubicaciones de S3 de la ruta de S3 proporcionada deben estar en la misma cuenta y región.
-
-
Configuración de entrenamiento
-
max_length
: La longitud máxima de la secuencia en fichas. Esto determina el tamaño de la ventana de contexto para el entrenamiento. El valor máximo admitido es de 65.536 fichas para SFT.Las secuencias más largas mejorarán la eficiencia del entrenamiento a costa de aumentar los requisitos de memoria. Le recomendamos que haga coincidir el
max_length
parámetro con su distribución de datos.
-
-
Ajustes del entrenador
-
max_epochs
: El número de pasadas completas por tu conjunto de datos de entrenamiento. El valor máximo es 5.En general, los conjuntos de datos más grandes requieren menos épocas para converger, mientras que los conjuntos de datos más pequeños requieren más épocas para converger. Le recomendamos que ajuste el número de épocas en función del tamaño de los datos.
-
-
Ajustes del modelo
-
hidden_dropout
: La probabilidad de eliminar las salidas de estado ocultas. Aumente este valor entre aproximadamente 0,0-0,2 para reducir el sobreajuste en conjuntos de datos más pequeños. Los valores válidos están entre 0 y 1, ambos inclusive. -
attention_dropout
: La probabilidad de perder el peso de la atención. Este parámetro puede ayudar a generalizar. Los valores válidos están comprendidos entre 0 y 1, ambos inclusive. -
ffn_dropout
: La probabilidad de que disminuyan las salidas de la red de retroalimentación. Los valores válidos están entre 0 y 1, ambos inclusive.
-
-
Configuración del optimizador
-
lr
: La tasa de aprendizaje, que controla el tamaño de los pasos durante la optimización. Los valores válidos están entre 1e-6-1e-3, ambos inclusive. Recomendamos valores entre 1e-6-1e-4 para un buen rendimiento. -
name
: El algoritmo optimizador. En la actualidad, solo se admitedistributed_fused_adam
. -
weight_decay
: La fuerza de regularización L2. Los valores más altos (entre 0,01 y 0,1) aumentan la regularización. -
warmup_steps
: El número de pasos para aumentar gradualmente la tasa de aprendizaje. Esto mejora la estabilidad del entrenamiento. Los valores válidos están entre 1 y 20, ambos inclusive. -
min_lr
: La tasa mínima de aprendizaje al final de la decadencia. Los valores válidos están entre 0 y 1, ambos inclusive, pero deben ser inferiores a la tasa de aprendizaje.
-
Comience rápido con una receta de SFT completa
La siguiente es una receta para una SFT de rango completo destinada a que pueda iniciar rápidamente un trabajo de SFT en un clúster. HyperPod Esta receta también supone que te has conectado a tu HyperPod clúster con las credenciales correctas. AWS
run: name: "my-sft-micro-job" # gets appended with a unique ID for HP jobs model_type: "amazon.nova-micro-v1:0:128k" model_name_or_path: "nova-micro/prod" replicas: 2 data_s3_path: s3:
Replace with your S3 bucket name
/input.jsonl validation_data_s3_path:[OPTIONAL] s3:your S3 bucket name
/input.jsonl output_s3_path:[S3_PATH_TO_STORE_MANIFEST]
## training specific configs training_config: max_length: 32768 save_steps: 100000 replicas: ${recipes.run.replicas} micro_batch_size: 1 task_type: sft global_batch_size: 64 weights_only: True allow_percentage_invalid_samples: 10 exp_manager: exp_dir: null create_wandb_logger: False create_tensorboard_logger: True project: null name: null checkpoint_callback_params: monitor: step save_top_k: 10 mode: max every_n_train_steps: ${recipes.training_config.save_steps} save_last: True create_early_stopping_callback: True early_stopping_callback_params: min_delta: 0.001 mode: min monitor: "val_loss" patience: 2 trainer: log_every_n_steps: 1 max_epochs: -1 max_steps: 16 val_check_interval: 100 limit_test_batches: 0 gradient_clip_val: 1.0 num_nodes: ${recipes.training_config.replicas} model: hidden_dropout: 0.0 # Dropout probability for hidden state transformer. attention_dropout: 0.0 # Dropout probability in the attention layer. ffn_dropout: 0.0 # Dropout probability in the feed-forward layer. sequence_parallel: True optim: lr: 1e-5 name: distributed_fused_adam bucket_cap_mb: 10 contiguous_grad_buffer: False overlap_param_sync: False contiguous_param_buffer: False overlap_grad_sync: False adam_w_mode: true eps: 1e-06 weight_decay: 0.0 betas: - 0.9 - 0.999 sched: name: CosineAnnealing warmup_steps: 10 constant_steps: 0 min_lr: 1e-6 mm_cfg: llm: freeze: false image_projector: freeze: true require_newline: true video_projector: freeze: true require_newline: false peft: peft_scheme: null training_validation: loader: args: data_loader_workers: 1 prefetch_factor: 2 collator: args: force_image_at_turn_beginning: false
Ejemplo de receta completa
El siguiente es un ejemplo de una receta completa para SFT con todos los componentes configurados correctamente.
## Run config run: name: "my-sft-run" # A descriptive name for your training job model_type: "amazon.nova-lite-v1:0:300k" # Model variant specification model_name_or_path: "nova-lite/prod" # Base model path replicas: 4 # Number of compute instances for training data_s3_path: s3:
Replace with your S3 bucket name
/input.jsonl validation_data_s3_path:[OPTIONAL] s3:your S3 bucket name
/input.jsonl output_s3_path:[S3_PATH_TO_STORE_MANIFEST]
## Training specific configs training_config: max_length: 32768 # Maximum context window size (tokens) trainer: max_epochs: 2 # Number of training epochs model: hidden_dropout: 0.0 # Dropout for hidden states attention_dropout: 0.0 # Dropout for attention weights ffn_dropout: 0.0 # Dropout for feed-forward networks optim: lr: 1e-5 # Learning rate name: distributed_fused_adam # Optimizer algorithm adam_w_mode: true # Enable AdamW mode eps: 1e-06 # Epsilon for numerical stability weight_decay: 0.0 # L2 regularization strength betas: # Adam optimizer betas - 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 peft: peft_scheme: null # Set to null for full-parameter fine-tuning
Limitaciones
No se admite la publicación de métricas en Weights & Biases. MLFlow
Los puntos de control intermedios no se guardan para su evaluación y no se pueden reanudar desde un punto de control intermedio. Solo se guarda el último punto de control.
Para ajustar los hiperparámetros, siga las instrucciones de la sección Selección de hiperparámetros.
Ajuste preciso con eficiencia de parámetros (PEFT)
El ajuste preciso con eficiencia de parámetros (PEFT) implica volver a entrenar una pequeña cantidad de pesos adicionales para adaptar un modelo básico a nuevas tareas o dominios. En concreto, el PEFT con adaptador de rango bajo (LoRa) ajusta de manera eficiente los modelos básicos al introducir matrices de peso entrenables de rango bajo en capas de modelos específicas, lo que reduce el número de parámetros que se pueden entrenar y, al mismo tiempo, mantiene la calidad del modelo.
Un adaptador PEFT LoRa mejora el modelo base al incorporar capas adaptadoras livianas que modifican los pesos del modelo durante la inferencia y, al mismo tiempo, mantienen intactos los parámetros del modelo original. Este enfoque también se considera una de las técnicas de afinación más rentables. Para obtener más información, consulte Afinación de modelos con componentes de inferencia del adaptador.
Debe utilizar el PEFT de LoRa en los siguientes escenarios:
-
Desea comenzar con un procedimiento de entrenamiento rápido.
-
El rendimiento del modelo base ya es satisfactorio. En este caso, el objetivo de LoRa PEFT es la mejora de sus capacidades en múltiples tareas relacionadas, como el resumen de textos o la traducción de idiomas. Las propiedades de regularización de LoRa PEFT ayudan a evitar el sobreajuste y a mitigar los riesgos de que el modelo «olvide» el dominio de origen. Esto garantiza que el modelo mantenga su versatilidad y adaptabilidad a diversas aplicaciones.
-
Desea realizar escenarios de ajuste fino de las instrucciones con conjuntos de datos relativamente pequeños. LoRA PEFT funciona mejor con conjuntos de datos más pequeños y específicos para tareas en comparación con conjuntos de datos más amplios y grandes.
-
Tiene conjuntos de datos grandes y etiquetados que superan los límites de datos de personalización de Amazon Bedrock. En este caso, puede usar LoRa PEFT en SageMaker IA para generar mejores resultados.
-
Si ya ha obtenido resultados prometedores mediante el ajuste fino de Amazon Bedrock, el PEFT de LoRa en SageMaker IA puede ayudarlo a optimizar aún más los hiperparámetros del modelo.
Los parámetros de Amazon Nova que están disponibles con LoRa PEFT incluyen:
-
Ejecute la configuración
-
name
: un nombre descriptivo para su trabajo de formación. Esto ayuda a identificar su trabajo en el AWS Management Console. -
model_type
: La variante del modelo Nova que se debe utilizar. Las opciones disponibles sonamazon.nova-micro-v1:0:128k
amazon.nova-lite-v1:0:300k
, oamazon.nova-pro-v1:0:300k
. -
model_name_or_path
: La ruta hacia el modelo base que utilizarás en tu entrenamiento. Selecciona el modelo que quieres usar. Las opciones disponibles sonnova-micro/prod
,nova-lite/prod
nova-pro/prod
, o la ruta S3 para el punto de control posterior al entrenamiento ()s3://<escrow bucket>/<job id>/outputs/checkpoints
. -
replicas
: El número de instancias informáticas que se van a utilizar para la formación distribuida. Los valores disponibles varían en función del modelo que utilice. 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 ó 24 réplicas. -
output_s3_path
: La ubicación de S3 donde se almacenan el manifiesto y TensorBoard los registros. Todas las ubicaciones de S3 de la ruta de S3 proporcionada deben estar en la misma cuenta y región.
-
-
Configuración de entrenamiento
-
max_length
: La longitud máxima de la secuencia en fichas. Esto determina el tamaño de la ventana de contexto para el entrenamiento. El valor máximo admitido es de 65.536 fichas para LoRa PEFT.Las secuencias más largas mejorarán la eficiencia del entrenamiento a costa de aumentar los requisitos de memoria. Le recomendamos que haga coincidir el
max_length
parámetro con su distribución de datos.
-
-
Ajustes del entrenador
-
max_epochs
: El número de pasadas completas por tu conjunto de datos de entrenamiento. Puedes configurar una de las dosmax_steps
opcionesmax_epochs
, pero no te recomendamos configurar ambas. El valor máximo es 5.En general, los conjuntos de datos más grandes requieren menos épocas para converger, mientras que los conjuntos de datos más pequeños requieren más épocas para converger. Le recomendamos que ajuste el número de épocas en función del tamaño de los datos.
-
-
Ajustes del modelo
-
hidden_dropout
: La probabilidad de eliminar las salidas de estado ocultas. Aumente este valor entre aproximadamente 0,0-0,2 para reducir el sobreajuste en conjuntos de datos más pequeños. Los valores válidos están entre 0 y 1, ambos inclusive. -
attention_dropout
: La probabilidad de perder el peso de la atención. Este parámetro puede ayudar a generalizar. Los valores válidos están comprendidos entre 0 y 1, ambos inclusive. -
ffn_dropout
: La probabilidad de que disminuyan las salidas de la red de retroalimentación. Los valores válidos están entre 0 y 1, ambos inclusive.
-
-
Configuración del optimizador
-
lr
: La 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 están comprendidos entre 0 y 1, ambos inclusive. -
name
: El algoritmo optimizador. En la actualidad, solo se admitedistributed_fused_adam
. -
weight_decay
: La fuerza de regularización L2. Los valores más altos (entre 0,01 y 0,1) aumentan la regularización. -
warmup_steps
: El número de pasos para aumentar gradualmente la tasa de aprendizaje. Esto mejora la estabilidad del entrenamiento. Los valores válidos están entre 1 y 20, ambos inclusive. -
min_lr
: La tasa mínima de aprendizaje al final de la decadencia. Los valores válidos están entre 0 y 1, ambos inclusive, pero deben ser inferiores a la tasa de aprendizaje.
-
-
Parámetros de configuración de LoRa
-
peft_scheme
: Configúrelolora
para permitir la adaptación de bajo rango. -
alpha
: El factor de escala de las pesas LoRa. Por lo general, se establece en el mismo valor queadapter_dim
. -
adaptor_dropout
: El parámetro de regularización de LoRa.
-
Receta PEFT
La siguiente es una receta de LoRa PEFT.
## Run config run: name: "my-lora-run" # A descriptive name for your training job model_type: "amazon.nova-lite-v1:0:300k" # Model variant specification model_name_or_path: "nova-lite/prod" # Base model path replicas: 4 # Number of compute instances for training output_s3_path:
[S3_PATH_TO_STORE_MANIFEST]
## Training specific configs training_config: max_length: 32768 # Maximum context window size (tokens) trainer: max_epochs: 2 # Number of training epochs model: hidden_dropout: 0.0 # Dropout for hidden states attention_dropout: 0.0 # Dropout for attention weights ffn_dropout: 0.0 # Dropout for feed-forward networks optim: lr: 1e-5 # Learning rate name: distributed_fused_adam # Optimizer algorithm adam_w_mode: true # Enable AdamW mode eps: 1e-06 # Epsilon for numerical stability weight_decay: 0.0 # L2 regularization strength betas: # Adam optimizer betas - 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 peft: peft_scheme: "lora" # Enable LoRA for parameter-efficient fine-tuning lora_tuning: loraplus_lr_ratio: 8.0 # LoRA+ learning rate scaling factor alpha: 32 # Scaling factor for LoRA weights adapter_dropout: 0.01 # Regularization for LoRA parameters
Limitaciones
El PEFT tiene las siguientes limitaciones:
-
La configuración de entrenamiento proporcionada anteriormente tiene los valores recomendados para cada parámetro.
-
Los puntos de control intermedios no se guardan para su evaluación y no se pueden reanudar desde un punto de control intermedio. Solo se guarda el último punto de control.
-
MLflow no se admite el registro.
Solución de problemas
Utilice la siguiente información para ayudar a resolver los problemas que puedan surgir:
-
El conjunto de datos de entrada, tanto para el entrenamiento como para la validación, debe residir en depósitos propiedad del cliente, no en depósitos de depósito en garantía o de S3 gestionados por el servicio.
-
Si aparece un error en el campo «Región no encontrada» AWS CLI, vuelva a enviar el trabajo con la región antes del comando start-job. Por ejemplo:
AWS_REGION=us-east-1 hyperpod start-job ...
.Job Parameters
-
Para ajustar los hiperparámetros, siga las instrucciones de la sección Selección de hiperparámetros.