View a markdown version of this page

Anleitungen - Amazon SageMaker HyperPod PEFT-LoRA Checkpointless GPT OSS 120b - 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.

Anleitungen - Amazon SageMaker HyperPod PEFT-LoRA Checkpointless GPT OSS 120b

Die folgende Abfolge von Schritten ist erforderlich, um Trainingsrezepte ohne Checkpoint auszuführen. HyperPod

Voraussetzungen

Bevor Sie mit der Einrichtung Ihrer Umgebung beginnen, stellen Sie sicher, dass Sie über Folgendes verfügen:

Einrichtung der Kubernetes-Umgebung

Gehen Sie wie folgt vor, um Ihre Kubernetes-Umgebung einzurichten:

  1. Richten Sie die virtuelle Umgebung ein. Stellen Sie sicher, dass Sie Python größer oder gleich 3.10 und < 3.14 verwenden.

    python3 -m venv ${PWD}/venv source venv/bin/activate
  2. Richten Sie kubectl und eksctl ein

  3. Installiere Helm

  4. Verbinden mit Ihrem Kubernetes-Cluster

    aws eks update-kubeconfig --region "${CLUSTER_REGION}" --name "${CLUSTER_NAME}"
  5. Installieren Sie Abhängigkeiten mit einer der folgenden Methoden:

    • SageMaker HyperPod Rezepte-Methode:

      # install SageMaker HyperPod Recipes. git clone --recursive git@github.com:aws/sagemaker-hyperpod-recipes.git cd sagemaker-hyperpod-recipes pip3 install -r requirements.txt
    • kubectl mit vordefinierter Job-Yaml-Methode

      # install SageMaker HyperPod checkpointless training. git clone git@github.com:aws/sagemaker-hyperpod-checkpointless-training.git cd sagemaker-hyperpod-checkpointless-training

Sie können das Checkpointless-Trainingsrezept jetzt entweder mit dem Launcher oder mit kubectl starten. NeMo-style

Starten des Trainingsjobs mit dem Launcher für Rezepte

Alternativ kannst du die SageMaker HyperPod Rezepte verwenden, um deinen Ausbildungsjob einzureichen. Um die Rezepte zu verwenden, müssen k8s.yaml und config.yaml aktualisiert und das Startskript ausgeführt werden.

  1. Aktualisieren: launcher_scripts/gpt_oss/run_checkpointless_gpt_oss_120b_lora.sh

    your_contrainer: Ein Deep-Learning-Container. Die neueste Version des Checkpointless-Trainingscontainers finden Sie in den Versionshinweisen zum Checkpointless-Training. https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-release-notes.html

    #!/bin/bash SAGEMAKER_TRAINING_LAUNCHER_DIR=${SAGEMAKER_TRAINING_LAUNCHER_DIR:-"$(pwd)"} TRAIN_DIR="${TRAIN_DIR}" VAL_DIR="${VAL_DIR}" EXP_DIR="${EXP_DIR}" LOG_DIR="${LOG_DIR}" CONTAINER_MOUNT="/data" CONTAINER="${CONTAINER}" MODEL_NAME_OR_PATH="${MODEL_NAME_OR_PATH}" HYDRA_FULL_ERROR=1 python3 "${SAGEMAKER_TRAINING_LAUNCHER_DIR}/main.py" \ recipes=fine-tuning/gpt_oss/checkpointless_gpt_oss_120b_lora \ recipes.dataset.dataset_path="${TRAIN_DIR}" \ recipes.exp_manager.exp_dir="${EXP_DIR}" \ recipes.log_dir="${LOG_DIR}" \ recipes.resume.restore_config.path="${MODEL_NAME_OR_PATH}" \ base_results_dir="${SAGEMAKER_TRAINING_LAUNCHER_DIR}/results" \ git.use_default=false \ cluster=k8s \ cluster_type=k8s \ container="${CONTAINER}" \ +cluster.hostNetwork=true \ +cluster.persistent_volume_claims.0.claimName=fsx-claim \ +cluster.persistent_volume_claims.0.mountPath="${CONTAINER_MOUNT}" \ +recipes.dataset.val_dataset_path="${VAL_DIR}" \ ++recipes.callbacks.3.test_fault_config.fault_prob_between_lock=1 \
  2. Starten eines Trainingsjobs

    bash launcher_scripts/gpt_oss/run_checkpointless_gpt_oss_120b_lora.sh

Nachdem Sie den Trainingsjob eingereicht haben, können Sie mit dem folgenden Befehl überprüfen, ob die Übermittlung erfolgreich war.

kubectl get pods NAME READY STATUS RESTARTS AGE gpt-oss-120b-worker-0 0/1 running 0 36s

Wenn der STATUS auf PENDING oder steht ContainerCreating, führen Sie den folgenden Befehl aus, um weitere Informationen zu erhalten

kubectl describe pod <name of pod>

Nachdem der Job-STATUS zu „Laufend“ geändert wurde, können Sie das Protokoll mit dem folgenden Befehl überprüfen.

kubectl logs <name of pod>

Der STATUS wechselt zu Completed, wenn Sie kubectl get pods ausführen

Starten Sie den Trainingsjob mit kubectl mit vordefiniertem Yaml

Eine andere Möglichkeit besteht darin, das Training über kubectl mit einem vordefinierten Job yaml zu starten.

  1. aktualisiere/.yaml examples/gpt_oss launch/peft_gpt_oss_120b_checkpointless_p5

  2. Senden Sie den Job mithilfe von kubectl mit peft_gpt_oss_120b_checkpointless_p5.yaml

    kubectl apply -f examples/gpt_oss/launch/peft_gpt_oss_120b_checkpointless_p5.yaml

Nachdem Sie den Trainingsjob eingereicht haben, können Sie mit dem folgenden Befehl überprüfen, ob die Übermittlung erfolgreich war.

kubectl get pods NAME READY STATUS RESTARTS AGE gpt-120b-lora-checkpointless-worker-0 0/1 running 0 36s

Wenn der STATUS auf PENDING oder steht, führen Sie den folgenden Befehl aus, um weitere Informationen zu erhalten ContainerCreating

kubectl describe pod <name of pod>

Nachdem der Job-STATUS zu „Laufend“ geändert wurde, können Sie das Protokoll mit dem folgenden Befehl überprüfen.

kubectl logs <name of pod>

Der STATUS wechselt zu Completed, wenn Sie kubectl get pods ausführen