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.
Configuración general
El archivo config.yaml especifica la receta de entrenamiento y el clúster. También incluye configuraciones de tiempo de ejecución, como variables de entorno para el trabajo de entrenamiento.
defaults: - _self_ - cluster: slurm - recipes: training/llama/hf_llama3_8b_seq8192_gpu instance_type: p5.48xlarge git: repo_url_or_path: null branch: null commit: null entry_script: null token: null env_vars: NCCL_DEBUG: WARN
Puede modificar los parámetros siguientes en config.yaml:
-
defaults: especifique la configuración predeterminada, como el clúster predeterminado o las fórmulas predeterminadas. -
instance_type: modifica el tipo de EC2 instancia de Amazon para que coincida con el tipo de instancia que estás utilizando. -
git: especifique la ubicación del repositorio de adaptadores de SageMaker HyperPod recetas para el trabajo de formación. -
env_vars: puede especificar las variables de entorno que se transferirán a su trabajo de entrenamiento en tiempo de ejecución. Por ejemplo, puede adaptar el nivel de registro de NCCL especificando la variable de entorno NCCL_DEBUG.
La fórmula es la configuración básica que define la arquitectura de su trabajo de entrenamiento. Este archivo incluye muchos datos importantes para su trabajo de entrenamiento, como los siguientes:
-
Si se debe utilizar el paralelismo de modelos
-
El nombre de su conjunto de datos
-
El entrenamiento de precisión mixta
-
Configuraciones relacionadas con los puntos de comprobación
Puede utilizar las fórmulas tal cual. También puede utilizar la siguiente información para modificarlas.
run
La siguiente es la información básica de run para ejecutar el trabajo de entrenamiento.
run: name: llama-8b results_dir: ${base_results_dir}/${.name} time_limit: "6-00:00:00" model_type: hf
-
name: especifique el nombre del trabajo de entrenamiento en el archivo de configuración. -
results_dir: puede especificar el directorio en el que se almacenan los resultados de su trabajo de entrenamiento. -
time_limit: puede establecer un tiempo de entrenamiento máximo para su trabajo de entrenamiento para evitar que ocupe recursos de hardware durante demasiado tiempo. -
model_type: puede especificar el tipo de modelo que va a utilizar. Por ejemplo, puede especificarhfsi su modelo es de HuggingFace.
exp_manager
exp_manager configura el experimento. exp_manager le permite especificar campos como el directorio de salida o la configuración de los puntos de comprobación. A continuación se muestra un ejemplo de cómo puede configurar el exp_manager.
exp_manager: exp_dir: null name: experiment create_tensorboard_logger: True
-
exp_dir: el directorio de experimentos incluye los archivos de salida y de error estándares para su trabajo de entrenamiento. De forma predeterminada, usa su directorio actual. -
name: es el nombre del experimento utilizado para identificar el experimento en exp_dir. -
create_tensorboard_logger: especifiqueTrueoFalseactive o desactive el TensorBoard registrador.
Creación de puntos de comprobación
Estos son los tres tipos de puntos de comprobación admitidos:
-
Puntos de comprobación automáticos
-
Puntos de comprobación manuales
-
Puntos de control completos
Puntos de comprobación automáticos
Si va a guardar o cargar puntos de control que el adaptador de SageMaker HyperPod recetas gestiona automáticamente, puede activarlos. auto_checkpoint Establezca auto_checkpoint en enabled para activar True. Puede utilizar los puntos de comprobación automáticos tanto para entrenar como para refinar. Puede utilizar los puntos de comprobación automáticos tanto para los sistemas de archivos compartidos como para Amazon S3.
exp_manager checkpoint_dir: ${recipes.exp_manager.exp_dir}/checkpoints/ auto_checkpoint: enabled: True
El punto de comprobación automático guarda el local_state_dict de forma asíncrona con un intervalo de almacenamiento óptimo calculado automáticamente.
nota
En este modo de puntos de comprobación, los puntos de comprobación guardados automáticamente no admiten la repartición entre las sesiones de entrenamiento. Para reanudar desde el último punto de comprobación guardado automáticamente, debe conservar los mismos grados de partición. No es necesario especificar información adicional para la reanudación automática.
Puntos de comprobación manuales
Puede modificar checkpoint_callback_params para guardar un punto de comprobación intermedio de forma asíncrona en shared_state_dict. Por ejemplo, puede especificar la siguiente configuración para activar los puntos de comprobación particionados cada 10 pasos y conservar los 3 últimos puntos de comprobación.
Los puntos de comprobación particionados le permiten cambiar los grados de partición entre las ejecuciones de entrenamiento y cargar el punto de comprobación configurando resume_from_checkpoint.
nota
-
Si se trata de un refinamiento PEFT, los puntos de comprobación particionados no admiten Amazon S3.
-
Los puntos de comprobación automáticos y manuales son mutuamente excluyentes.
-
Solo se permiten los cambios en los grados de partición y de replicación de FSDP.
exp_manager: checkpoint_callback_params: # Set save_top_k = 0 to disable sharded checkpointing save_top_k: 3 every_n_train_steps: 10 monitor: "step" mode: "max" save_last: False resume_from_checkpoint: ${recipes.exp_manager.exp_dir}/checkpoints/
Para obtener más información sobre los puntos de comprobación, consulte Puntos de comprobación mediante SMP.
Puntos de control completos
El punto de comprobación full_state_dict exportado se puede utilizar para las inferencias o para refinar. Puede cargar un punto de comprobación completo mediante hf_model_name_or_path. En este modo, solo se guardan las ponderaciones del modelo.
Para exportar el modelo full_state_dict, puede establecer los siguientes parámetros.
nota
Actualmente, los puntos de comprobación completos no admiten los puntos de comprobación de Amazon S3. No puede configurar la ruta de S3 para exp_manager.checkpoint_dir si está habilitando los puntos de comprobación completos. Sin embargo, puede establecer exp_manager.export_full_model.final_export_dir en un directorio específico de su sistema de archivos local y, al mismo tiempo, configurar exp_manager.checkpoint_dir en una ruta de Amazon S3.
exp_manager: export_full_model: # Set every_n_train_steps = 0 to disable full checkpointing every_n_train_steps: 0 save_last: True final_export_dir : null
model
Defina varios aspectos de la arquitectura de su modelo y del proceso de entrenamiento. Esto incluye configurar el paralelismo, la precisión y la gestión de datos del modelo. A continuación se muestran los componentes clave que puede configurar en la sección model:
paralelismo de modelos
Después de especificar la fórmula, debe definir el modelo que está entrenando. También puede definir el paralelismo de modelos. Por ejemplo, puede definir tensor_model_parallel_degree. Puedes activar otras funciones, como el entrenamiento con FP8 precisión. Por ejemplo, puede entrenar un modelo con paralelismo tensor y paralelismo contextual:
model: model_type: llama_v3 # Base configs train_batch_size: 4 val_batch_size: 1 seed: 12345 grad_clip: 1.0 # Model parallelism tensor_model_parallel_degree: 4 expert_model_parallel_degree: 1 context_parallel_degree: 2
Para comprender mejor los diferentes tipos de técnicas de paralelismo de modelos, puede consultar los siguientes enfoques:
FP8
Para activarla FP8 (precisión de punto flotante de 8 bits), puede especificar la configuración FP8 relacionada en el siguiente ejemplo:
model: # FP8 config fp8: True fp8_amax_history_len: 1024 fp8_amax_compute_algo: max
Es importante tener en cuenta que, actualmente, el formato de FP8 datos solo se admite en el tipo de instancia P5. Si utilizas un tipo de instancia anterior, como la P4, desactiva la FP8 función para tu proceso de entrenamiento de modelos. Para obtener más información al respecto FP8, consulteEntrenamiento de precisión mixta.
data
Puede especificar sus conjuntos de datos personalizados para su trabajo de entrenamiento añadiendo las rutas de datos en la sección data. El módulo de datos de nuestro sistema es compatible con los siguientes formatos de datos:
-
JSON
-
JSONGZ (JSON comprimido)
-
ARROW
Sin embargo, usted debe preparar su propio conjunto de datos previamente tokenizado. Si es un usuario avanzado con requisitos específicos, también existe la opción de implementar e integrar un módulo de datos personalizado. Para obtener más información sobre los HuggingFace conjuntos de datos, consulte Conjuntos
model: data: train_dir: /path/to/your/train/data val_dir: /path/to/your/val/data dataset_type: hf use_synthetic_data: False
Puede especificar cómo va a entrenar el modelo. De forma predeterminada, la fórmula utiliza el entrenamiento previo en lugar del refinamiento. El siguiente ejemplo configura la receta para ejecutar un trabajo de refinamiento con LoRA (adaptación de rango bajo).
model: # Fine tuning config do_finetune: True # The path to resume from, needs to be HF compatible hf_model_name_or_path: null hf_access_token: null # PEFT config peft: peft_type: lora rank: 32 alpha: 16 dropout: 0.1
Para obtener información sobre las recetas, consulte SageMaker HyperPod recetas.