

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
<a name="sagemaker-hyperpod-recipes-general-configuration"></a>

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`:

1. `defaults`: especifique la configuración predeterminada, como el clúster predeterminado o las fórmulas predeterminadas.

1. `instance_type`: modifique el tipo de instancia de Amazon EC2 para que coincida con el tipo de instancia que está utilizando.

1. `git`: especifique la ubicación del repositorio de adaptadores de SageMaker HyperPod recetas para el trabajo de formación.

1. `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\$1DEBUG.

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
<a name="run"></a>

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
```

1. `name`: especifique el nombre del trabajo de entrenamiento en el archivo de configuración.

1. `results_dir`: puede especificar el directorio en el que se almacenan los resultados de su trabajo de entrenamiento.

1. `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.

1. `model_type`: puede especificar el tipo de modelo que va a utilizar. Por ejemplo, puede especificar `hf` si su modelo es de HuggingFace.

## exp\$1manager
<a name="exp-manager"></a>

exp\$1manager configura el experimento. exp\$1manager 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\$1manager.

```
exp_manager:
  exp_dir: null
  name: experiment
  create_tensorboard_logger: True
```

1. `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.

1. `name`: es el nombre del experimento utilizado para identificar el experimento en exp\$1dir.

1. `create_tensorboard_logger`: especifique `True` o `False` active o desactive el TensorBoard registrador.

## Creación de puntos de comprobación
<a name="checkpointing"></a>

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
<a name="auto-checkpointing"></a>

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\$1state\$1dict 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
<a name="manual-checkpointing"></a>

Puede modificar `checkpoint_callback_params` para guardar un punto de comprobación intermedio de forma asíncrona en shared\$1state\$1dict. 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](model-parallel-core-features-v2-checkpoints.md).

### Puntos de control completos
<a name="full-checkpointing"></a>

El punto de comprobación full\$1state\$1dict exportado se puede utilizar para las inferencias o para refinar. Puede cargar un punto de comprobación completo mediante hf\$1model\$1name\$1or\$1path. En este modo, solo se guardan las ponderaciones del modelo.

Para exportar el modelo full\$1state\$1dict, 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
<a name="model"></a>

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
<a name="model-parallelism"></a>

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\$1model\$1parallel\$1degree. 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:

1. [Paralelismo de tensores](model-parallel-core-features-v2-tensor-parallelism.md)

1. [Paralelismo experto](model-parallel-core-features-v2-expert-parallelism.md)

1. [Paralelismo de contexto](model-parallel-core-features-v2-context-parallelism.md)

1. [Paralelismo híbrido de datos particionados](model-parallel-core-features-v2-sharded-data-parallelism.md)

### FP8
<a name="fp8"></a>

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, consulte[Entrenamiento de precisión mixta](model-parallel-core-features-v2-mixed-precision.md).

### data
<a name="data"></a>

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:

1. JSON

1. JSONGZ (JSON comprimido)

1. 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](https://huggingface.co/docs/datasets/v3.1.0/en/index) de datos.

```
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.](https://github.com/aws/sagemaker-hyperpod-recipes)