

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Allgemeine Konfiguration
<a name="sagemaker-hyperpod-recipes-general-configuration"></a>

Die Datei config.yaml spezifiziert das Trainingsrezept und den Cluster. Sie enthält auch Laufzeitkonfigurationen wie Umgebungsvariablen für den Trainingsjob.

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

Sie können die folgenden Parameter in `config.yaml` ändern:

1. `defaults`: Geben Sie Ihre Standardeinstellungen an, z. B. den Standardcluster oder Standardrezepte.

1. `instance_type`: Passen Sie den Instance-Typ von Amazon EC2 an den von Ihnen verwendeten Instance-Typ an.

1. `git`: Geben Sie den Speicherort des SageMaker HyperPod Rezeptadapter-Repositorys für den Trainingsjob an.

1. `env_vars`: Sie können die Umgebungsvariablen angeben, die an Ihren Laufzeit-Trainingsjob übergeben werden sollen. Sie können beispielsweise die Protokollierungsebene von NCCL anpassen, indem Sie die Umgebungsvariable NCCL\$1DEBUG angeben.

Das Rezept ist die Kernkonfiguration, die Ihre Trainingsjob-Architektur definiert. Diese Datei enthält viele wichtige Informationen für Ihren Trainingsjob, z. B.:
+ Ob Modellparallelität verwendet werden soll
+ Die Quelle Ihrer Datensätze
+ Training mit gemischter Präzision
+ Konfigurationen im Zusammenhang mit Checkpoints

Sie können die Rezepte unverändert verwenden. Sie können auch die folgenden Informationen verwenden, um sie zu ändern.

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

Im Folgenden finden Sie die grundlegenden Informationen zum Ausführen Ihres Trainingsjobs.

```
run:
  name: llama-8b
  results_dir: ${base_results_dir}/${.name}
  time_limit: "6-00:00:00"
  model_type: hf
```

1. `name`: Geben Sie den Namen für Ihren Trainingsjob in der Konfigurationsdatei an.

1. `results_dir`: Sie können das Verzeichnis angeben, in dem die Ergebnisse Ihres Trainingsjobs gespeichert werden.

1. `time_limit`: Sie können eine maximale Trainingszeit für Ihren Trainingsjob festlegen, um zu verhindern, dass er zu lange Hardwareressourcen beansprucht.

1. `model_type`: Sie können den Modelltyp angeben, den Sie verwenden. Sie können beispielsweise angeben, `hf` ob Ihr Modell von stammt HuggingFace.

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

Der exp\$1manager konfiguriert das Experiment. Mit dem exp\$1manager können Sie Felder wie das Ausgabeverzeichnis oder Checkpoint-Einstellungen angeben. Im folgenden Beispiel wird gezeigt, wie Sie den exp\$1manager konfigurieren können.

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

1. `exp_dir`: Das Experimentverzeichnis enthält die Standardausgabe- und Standardfehlerdateien für Ihren Trainingsjob. Standardmäßig verwendet es Ihr aktuelles Verzeichnis.

1. `name`: Der Name des Experiments, der zur Identifizierung Ihres Experiments unter dem exp\$1dir verwendet wurde.

1. `create_tensorboard_logger`: Geben Sie an `True``False`, ob der TensorBoard Logger aktiviert oder deaktiviert werden soll.

## Checkpointing
<a name="checkpointing"></a>

Wir unterstützen drei Arten von Checkpoints:
+ Automatisches Checkpointing
+ Manuelles Checkpointing
+ Vollständiges Checkpointing

### Automatisches Checkpointing
<a name="auto-checkpointing"></a>

Wenn Sie Checkpoints speichern oder laden, die automatisch vom SageMaker HyperPod Rezeptadapter verwaltet werden, können Sie sie aktivieren`auto_checkpoint`. Legen Sie `enabled` auf `True` fest, um `auto_checkpoint` zu aktivieren. Sie können das automatische Checkpointing sowohl für das Training als auch für die Feinabstimmung verwenden. Sie können das automatische Checkpointing sowohl für gemeinsam genutzte Dateisysteme als auch für Amazon S3 verwenden.

```
exp_manager
  checkpoint_dir: ${recipes.exp_manager.exp_dir}/checkpoints/
  auto_checkpoint:
    enabled: True
```

Beim automatischen Checkpoint wird das local\$1state\$1dict asynchron mit einem automatisch berechneten optimalen Speicherintervall gespeichert.

**Anmerkung**  
In diesem Checkpointing-Modus unterstützt das automatische Speichern von Checkpoints kein erneutes Sharding zwischen Trainingsausführungen. Um den letzten automatisch gespeicherten Checkpoint wieder aufzunehmen, müssen Sie die gleichen Shard-Grade beibehalten. Sie müssen keine zusätzlichen Informationen angeben, um die automatische Wiederaufnahme zu aktivieren.

### Manuelles Checkpointing
<a name="manual-checkpointing"></a>

Sie können `checkpoint_callback_params` ändern, um einen Zwischen-Checkpoint asynchron in shared\$1state\$1dict zu speichern. Beispielsweise können Sie die folgende Konfiguration festlegen, um alle 10 Schritte ein Sharded Checkpointing zu aktivieren und die letzten 3 Checkpoints zu behalten.

Mit Sharded Checkpointing können Sie die Shard-Grade zwischen den Trainingsausführungen ändern und den Checkpoint laden, indem Sie einstellen.

**Anmerkung**  
Wenn es sich um eine PEFT-Feinabstimmung handelt, unterstützt Sharded Checkpointing Amazon S3 nicht.
Automatisches und manuelles Checkpointing schließen sich gegenseitig aus.
Nur Änderungen von FSDP-Shard- und Replikationsgraden sind zulässig.

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

Weitere Informationen zum Checkpointing finden Sie unter [Checkpointing mit SMP](model-parallel-core-features-v2-checkpoints.md).

### Vollständiges Checkpointing
<a name="full-checkpointing"></a>

Der exportierte Checkpoint full\$1state\$1dict kann für Inferenz oder Feinabstimmung verwendet werden. Sie können einen vollständigen Checkpoint über hf\$1model\$1name\$1or\$1path laden. In diesem Modus werden nur die Modellgewichte gespeichert.

Um das Modell full\$1state\$1dict zu exportieren, können Sie die folgenden Parameter festlegen.

**Anmerkung**  
Derzeit wird vollständiges Checkpointing für Amazon-S3-Checkpointing nicht unterstützt. Sie können den S3-Pfad für `exp_manager.checkpoint_dir` nicht festlegen, wenn Sie das vollständige Checkpointing aktivieren. Sie können jedoch `exp_manager.export_full_model.final_export_dir` auf ein bestimmtes Verzeichnis in Ihrem lokalen Dateisystem setzen und gleichzeitig `exp_manager.checkpoint_dir` auf einen Amazon-S3-Pfad festlegen.

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

Definieren Sie verschiedene Aspekte Ihrer Modellarchitektur und Ihres Trainingsprozesses. Dazu gehören Einstellungen für Modellparallelität, Präzision und Datenverarbeitung. Im Folgenden sind die wichtigsten Komponenten aufgeführt, die Sie im Modellbereich konfigurieren können:

### Modellparallelität
<a name="model-parallelism"></a>

Nachdem Sie das Rezept festgelegt haben, definieren Sie das Modell, das Sie trainieren. Sie können auch die Modellparallelität definieren. Sie können beispielsweise tensor\$1model\$1parallel\$1degree definieren. Sie können andere Funktionen wie FP8 präzises Training aktivieren. Sie können beispielsweise ein Modell mit Tensorparallelität und Kontextparallelität trainieren:

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

Um ein besseres Verständnis der verschiedenen Arten von Modellparallelitätstechniken zu erlangen, können Sie auf die folgenden Ansätze zurückgreifen:

1. [Tensor-Parallelität](model-parallel-core-features-v2-tensor-parallelism.md)

1. [Expertenparallelität](model-parallel-core-features-v2-expert-parallelism.md)

1. [Kontextparallelität](model-parallel-core-features-v2-context-parallelism.md)

1. [Parallelität hybrider fragmentierter Daten](model-parallel-core-features-v2-sharded-data-parallelism.md)

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

Zur Aktivierung FP8 (8-Bit-Gleitkomma-Präzision) können Sie die entsprechende Konfiguration im FP8 folgenden Beispiel angeben:

```
model:
  # FP8 config
  fp8: True
  fp8_amax_history_len: 1024
  fp8_amax_compute_algo: max
```

Es ist wichtig zu beachten, dass das FP8 Datenformat derzeit nur für den Instance-Typ P5 unterstützt wird. Wenn Sie einen älteren Instanztyp wie P4 verwenden, deaktivieren Sie die FP8 Funktion für Ihren Modelltrainingsprozess. Weitere Informationen zu finden Sie FP8 unter[Training mit gemischter Präzision](model-parallel-core-features-v2-mixed-precision.md).

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

Sie können Ihre benutzerdefinierten Datensätze für Ihren Trainingsjob angeben, indem Sie die Datenpfade unter Daten hinzufügen. Das Datenmodul in unserem System unterstützt die folgenden Datenformate:

1. JSON

1. JSONGZ (komprimiertes JSON)

1. ARROW

Sie sind jedoch dafür verantwortlich, Ihren eigenen vortokenisierten Datensatz vorzubereiten. Wenn Sie ein fortgeschrittener Benutzer mit spezifischen Anforderungen sind, besteht auch die Möglichkeit, ein maßgeschneidertes Datenmodul zu implementieren und zu integrieren. Weitere Informationen zu HuggingFace Datensätzen finden Sie unter [Datensätze](https://huggingface.co/docs/datasets/v3.1.0/en/index).

```
model:
  data:
    train_dir: /path/to/your/train/data
    val_dir: /path/to/your/val/data
    dataset_type: hf
    use_synthetic_data: False
```

Sie können angeben, wie Sie das Modell trainieren. Standardmäßig verwendet das Rezept ein Vortraining anstelle einer Feinabstimmung. Im folgenden Beispiel wird das Rezept so konfiguriert, dass es einen Feinabstimmungsjob mit LoRa (Low-Rank Adaptation) ausführt.

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

[Informationen zu den Rezepten finden Sie unter SageMaker HyperPod Rezepte.](https://github.com/aws/sagemaker-hyperpod-recipes)