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.
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 siguientes parámetros enconfig.yaml
:
-
defaults
: especifique la configuración predeterminada, como el clúster predeterminado o las recetas 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 ajustar el nivel de registro de NCCL especificando la variable de entorno NCCL_DEBUG.
La receta es la configuración básica que define la arquitectura de su trabajo de formación. Este archivo incluye muchos datos importantes para su trabajo de formación, como los siguientes:
-
Si se debe utilizar el paralelismo de modelos
-
La fuente de sus conjuntos de datos
-
Entrenamiento de precisión mixta
-
Configuraciones relacionadas con los puntos de control
Puede utilizar las recetas tal cual. También puede utilizar la siguiente información para modificarlas.
ejecutar
La siguiente es la información básica de ejecución 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 formación. -
time_limit
: Puede establecer un tiempo máximo de entrenamiento 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 especificarhf
si su modelo es de HuggingFace.
exp_manager
El exp_manager configura el experimento. Con el exp_manager, puede especificar campos como el directorio de salida o la configuración de los puntos de control. El siguiente es un ejemplo de cómo se 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 estándar y de error estándar para su trabajo de formación. De forma predeterminada, usa tu directorio actual. -
name
: El nombre del experimento utilizado para identificarlo en exp_dir. -
create_tensorboard_logger
: especifiqueTrue
oFalse
active o desactive el TensorBoard registrador.
Creación de puntos de control
Estos son los tres tipos de puntos de control que admitimos:
-
Puntos de control automáticos
-
Puntos de control manuales
-
Puntos de control completos
Puntos de control automáticos
Si guardas o cargas puntos de control gestionados automáticamente por el adaptador de SageMaker HyperPod recetas, puedes activarlos. auto_checkpoint
Para activarlosauto_checkpoint
, enabled
configúrelos en. True
Puedes usar los puntos de control automáticos tanto para el entrenamiento como para el ajuste. Puede utilizar los puntos de control 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 control 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 control, los puntos de control guardados automáticamente no admiten la refragmentación entre las sesiones de entrenamiento. Para reanudar desde el último punto de control guardado automáticamente, debe conservar los mismos grados de fragmento. No es necesario que especifiques información adicional para la reanudación automática.
Control manual
Puede modificarlo checkpoint_callback_params
para guardar de forma asíncrona un punto de control intermedio en shared_state_dict. Por ejemplo, puede especificar la siguiente configuración para habilitar los puntos de control fragmentados cada 10 pasos y conservar los 3 puntos de control más recientes.
Los puntos de control fragmentados te permiten cambiar los grados de fragmentación entre las sesiones de entrenamiento y cargar el punto de control mediante ajustes. resume_from_checkpoint
nota
-
Si se trata de un ajuste de PEFT, los puntos de control fragmentados no son compatibles con Amazon S3.
-
Los puntos de control automáticos y manuales se excluyen mutuamente.
-
Solo se permiten los cambios en los grados de fragmentación y los grados de replicación del 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 control, consulte. Puntos de comprobación mediante SMP
Puntos de control completos
El punto de control full_state_dict exportado se puede utilizar para inferencias o ajustes precisos. Puede cargar un punto de control completo mediante hf_model_name_or_path. En este modo, solo se guardan los pesos del modelo.
Para exportar el modelo full_state_dict, puede configurar los siguientes parámetros.
nota
Actualmente, los puntos de control completos no son compatibles con los puntos de control de Amazon S3. No puede configurar la ruta S3 exp_manager.checkpoint_dir
si está habilitando los puntos de control completos. Sin embargo, puede exp_manager.export_full_model.final_export_dir
configurarlo en un directorio específico de su sistema de archivos local y, al mismo tiempo, exp_manager.checkpoint_dir
configurar 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
modelo
Defina varios aspectos de la arquitectura de su modelo y del proceso de formación. Esto incluye la configuración del paralelismo, la precisión y el manejo de datos del modelo. A continuación se muestran los componentes clave que puede configurar en la sección de modelos:
paralelismo del modelo
Una vez que haya especificado la receta, defina el modelo que está entrenando. También puedes definir el paralelismo del modelo. Por ejemplo, puede definir tensor_model_parallel_degree. Puedes habilitar otras funciones, como el entrenamiento con precisión. FP8 Por ejemplo, puedes entrenar un modelo con paralelismo tensorial 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 habilitarlo FP8 (precisión de punto flotante de 8 bits), puede especificar la configuración relacionada en el FP8 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
Puedes especificar tus conjuntos de datos personalizados para tu trabajo de entrenamiento añadiendo las rutas de datos en la sección de datos. El módulo de datos de nuestro sistema admite los siguientes formatos de datos:
-
JSON
-
JSONGZ (JSON comprimido)
-
FLECHA
Sin embargo, usted es responsable de 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
Puedes especificar cómo vas a entrenar el modelo. De forma predeterminada, la receta utiliza el entrenamiento previo en lugar de los ajustes. El siguiente ejemplo configura la receta para ejecutar un trabajo de ajuste 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 recetas. SageMaker HyperPod