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 in config.yaml ändern:
-
defaults: Geben Sie Ihre Standardeinstellungen an, z. B. den Standardcluster oder Standardrezepte. -
instance_type: Ändern Sie den EC2 Amazon-Instance-Typ so, dass er dem Instance-Typ entspricht, den Sie verwenden. -
git: Geben Sie den Speicherort des SageMaker HyperPod Rezeptadapter-Repositorys für den Trainingsjob an. -
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_DEBUG 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
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
-
name: Geben Sie den Namen für Ihren Trainingsjob in der Konfigurationsdatei an. -
results_dir: Sie können das Verzeichnis angeben, in dem die Ergebnisse Ihres Trainingsjobs gespeichert werden. -
time_limit: Sie können eine maximale Trainingszeit für Ihren Trainingsjob festlegen, um zu verhindern, dass er zu lange Hardwareressourcen beansprucht. -
model_type: Sie können den Modelltyp angeben, den Sie verwenden. Sie können beispielsweise angeben,hfob 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 Beispiel wird gezeigt, wie Sie den exp_manager konfigurieren können.
exp_manager: exp_dir: null name: experiment create_tensorboard_logger: True
-
exp_dir: Das Experimentverzeichnis enthält die Standardausgabe- und Standardfehlerdateien für Ihren Trainingsjob. Standardmäßig verwendet es Ihr aktuelles Verzeichnis. -
name: Der Name des Experiments, der zur Identifizierung Ihres Experiments unter dem exp_dir verwendet wurde. -
create_tensorboard_logger: Geben Sie anTrueFalse, ob der TensorBoard Logger aktiviert oder deaktiviert werden soll.
Checkpointing
Wir unterstützen drei Arten von Checkpoints:
-
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 aktivierenauto_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_state_dict 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
Sie können checkpoint_callback_params ändern, um einen Zwischen-Checkpoint asynchron in shared_state_dict 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.
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 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
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 festgelegt 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 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:
FP8
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 unterTraining mit gemischter Präzision.
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:
-
JSON
-
JSONGZ (komprimiertes JSON)
-
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 SageMaker HyperPod Rezepte.