Allgemeine Konfiguration - Amazon SageMaker KI

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

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 ändern inconfig.yaml:

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

  2. instance_type: Ändern Sie den EC2 Amazon-Instance-Typ so, dass er dem Instance-Typ entspricht, den Sie verwenden.

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

  4. env_vars: Sie können die Umgebungsvariablen angeben, die an Ihren Runtime-Trainingsjob übergeben werden sollen. Sie können beispielsweise die Protokollierungsebene von anpassen, NCCL indem Sie die DEBUG Umgebungsvariable NCCL _ angeben.

Das Rezept ist die Kernkonfiguration, die Ihre Trainingsjob-Architektur definiert. Diese Datei enthält viele wichtige Informationen für Ihren Ausbildungsberuf, z. B. die folgenden:

  • Ob Modellparallelität verwendet werden soll

  • Die Quelle Ihrer Datensätze

  • Gemischtes Präzisionstraining

  • Konfigurationen im Zusammenhang mit Checkpoints

Sie können die Rezepte unverändert verwenden. Sie können sie auch anhand der folgenden Informationen ändern.

run

Im Folgenden finden Sie die grundlegenden Laufinformationen für die Ausführung 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.

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

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

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

exp_manager

Der exp_manager konfiguriert das Experiment. Mit dem exp_manager können Sie Felder wie das Ausgabeverzeichnis oder Checkpoint-Einstellungen angeben. Im Folgenden finden Sie ein Beispiel dafür, wie Sie den exp_manager 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 dein aktuelles Verzeichnis.

  2. name: Der Name des Experiments, der zur Identifizierung Ihres Experiments unter dem exp_dir verwendet wurde.

  3. create_tensorboard_logger: Geben Sie True oder anFalse, um den Logger zu aktivieren oder zu deaktivieren. TensorBoard

Checkpointing

Wir unterstützen drei Arten von Checkpointing:

  • Automatisches Checkpointing

  • Manuelles Checkpointing

  • Vollständiges Checkpointing

Automatisches Checkpointing

Wenn Sie Checkpoints speichern oder laden, die automatisch vom SageMaker HyperPod Rezeptadapter verwaltet werden, können Sie sie aktivieren. auto_checkpoint Um zu aktivierenauto_checkpoint, stellen Sie enabled auf True ein. Sie können das automatische Checkpointing sowohl für das Training als auch für die Feinabstimmung verwenden. Sie können das auto 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_state_dict asynchron mit einem automatisch berechneten optimalen Speicherintervall gespeichert.

Anmerkung

In diesem Checkpoint-Modus unterstützt das auto gespeicherte Checkpointing kein Re-Sharding zwischen Trainingsläufen. Um mit dem letzten auto gespeicherten Checkpoint fortzufahren, müssen Sie die gleichen Shard-Grade beibehalten. Sie müssen keine zusätzlichen Informationen angeben, um auto fortzufahren.

Manuelles Checkpointing

Sie können Änderungen vornehmencheckpoint_callback_params, um einen Zwischencheckpoint asynchron in shared_state_dict zu speichern. Sie können beispielsweise die folgende Konfiguration angeben, um Sharded Checkpointing alle 10 Schritte zu aktivieren und die letzten 3 Checkpoints beizubehalten.

Mit Sharded Checkpointing können Sie die Shard-Stufen zwischen Trainingsläufen ändern und den Checkpoint durch Einstellungen laden. resume_from_checkpoint

Anmerkung
  • Es handelt sich um eine PEFT Feinabstimmung: Sharded Checkpointing unterstützt Amazon S3 nicht.

  • Automatisches und manuelles Checkpointing schließen sich gegenseitig aus.

  • Nur Änderungen von FSDP Shard-Graden 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 über Checkpointing finden Sie unter. Checkpointing mit SMP

Vollständiges Checkpointing

Der exportierte Checkpoint full_state_dict kann für Inferenz oder Feinabstimmung verwendet werden. Sie können einen vollständigen Checkpoint über hf_model_name_or_path laden. In diesem Modus werden nur die Modellgewichte gespeichert.

Um das Modell full_state_dict 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 nicht festlegen, exp_manager.checkpoint_dir 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 einen Amazon S3 S3-Pfad festlegenexp_manager.checkpoint_dir.

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

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

Nachdem Sie das Rezept angegeben haben, definieren Sie das Modell, das Sie trainieren. Sie können auch die Modellparallelität definieren. Sie können beispielsweise tensor_model_parallel_degree definieren. Sie können andere Funktionen wie präzises Training aktivieren. FP8 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:

FP8

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

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. Mehr über FP8 erfahren Sie unter Gemischtes Präzisionstraining.

data

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

  2. JSONGZ(KomprimiertJSON)

  3. 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.

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 Rezepte. SageMaker HyperPod