View a markdown version of this page

Tutorial zur Vorbereitung auf SageMaker Trainingsjobs bei Trainium - 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.

Tutorial zur Vorbereitung auf SageMaker Trainingsjobs bei Trainium

Dieses Tutorial führt Sie durch den Prozess der Einrichtung und Ausführung eines Vorbereitungsjobs mithilfe von SageMaker Trainingsjobs mit Trainium-Instances. AWS

  • So richten Sie Ihre Umgebung ein

  • Starten eines Trainingsjobs

Bevor Sie beginnen, stellen Sie sicher, dass Sie die folgenden Voraussetzungen erfüllen.

Voraussetzungen

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

  • Amazon-FSx-Dateisystem oder S3-Bucket, in den Sie die Daten laden und die Trainingsartefakte ausgeben können.

  • Fordern Sie ein Service-Kontingent für die ml.trn1.32xlarge Instance auf Amazon AI an. SageMaker Um eine Erhöhung der Servicekontingente zu beantragen, gehen Sie wie folgt vor:

    So fordern Sie eine Erhöhung der Service Quota für die ml.trn1.32xlarge-Instance an
    1. Navigieren Sie zur AWS Service Quotas Console.

    2. Wählen Sie AWS Dienste aus.

    3. Wählen Sie JupyterLab.

    4. Geben Sie eine Instance für ml.trn1.32xlarge an.

  • Erstellen Sie eine AWS Identity and Access Management (IAM-) Rolle mit den AmazonSageMakerFullAccess und AmazonEC2FullAccess verwalteten Richtlinien. Diese Richtlinien gewähren Amazon SageMaker AI die Berechtigungen zur Ausführung der Beispiele.

  • Daten in einem der folgenden Formate:

    • JSON

    • JSONGZ (komprimiertes JSON)

    • ARROW

  • (Optional) Wenn Sie die vorab trainierten Gewichte von einem Llama 3.2-Modell benötigen HuggingFace oder wenn Sie ein Llama 3.2-Modell trainieren, müssen Sie sich das HuggingFace Token besorgen, bevor Sie mit dem Training beginnen. Weitere Informationen zum Abrufen des Tokens finden Sie unter Benutzerzugriffstoken.

Richte deine Umgebung für Trainingsjobs bei SageMaker Trainium ein

Bevor Sie einen SageMaker Trainingsjob ausführen, verwenden Sie den aws configure Befehl, um Ihre AWS Anmeldeinformationen und Ihre bevorzugte Region zu konfigurieren. Als Alternative können Sie Ihre Anmeldeinformationen auch über Umgebungsvariablen wie AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY und AWS_SESSION_TOKEN angeben. Weitere Informationen finden Sie unter SageMaker AI Python SDK.

Wir empfehlen dringend, ein SageMaker AI-Jupyter-Notebook in SageMaker AI JupyterLab zu verwenden, um einen SageMaker Trainingsjob zu starten. Weitere Informationen finden Sie unter SageMaker JupyterLab.

  • (Optional) Wenn Sie das Jupyter-Notebook in Amazon SageMaker Studio verwenden, können Sie die Ausführung des folgenden Befehls überspringen. Stellen Sie sicher, dass Sie eine Version >= Python 3.9 verwenden.

    # set up a virtual environment python3 -m venv ${PWD}/venv source venv/bin/activate # install dependencies after git clone. git clone --recursive git@github.com:aws/sagemaker-hyperpod-recipes.git cd sagemaker-hyperpod-recipes pip3 install -r requirements.txt
  • Installieren Sie das AI Python SDK SageMaker

    pip3 install --upgrade sagemaker
    • Wenn Sie einen multimodalen Trainingsjob mit llama 3.2 ausführen, muss die transformers-Version 4.45.2 oder höher sein.

      • Hängen Sie transformers==4.45.2 an requirements.txt in source_dir nur an, wenn du das SageMaker AI Python SDK verwendest.

      • Wenn Sie HyperPod Rezepte zum Starten sm_jobs als Clustertyp verwenden, müssen Sie die Transformers-Version nicht angeben.

    • Container: Der Neuron-Container wird automatisch vom SageMaker AI Python SDK festgelegt.

Starten des Trainingsjobs mit einem Jupyter Notebook

Sie können den folgenden Python-Code verwenden, um einen SageMaker Trainingsjob mit Ihrem Rezept auszuführen. Es nutzt das PyTorch ModelTrainer aus dem SageMaker AI Python SDK, um das Rezept einzureichen. Im folgenden Beispiel wird das llama3-8b-Rezept als KI-Trainingsjob gestartet. SageMaker

  • compiler_cache_url: Cache, der zum Speichern der kompilierten Artefakte verwendet wird, z. B. ein Amazon-S3-Artefakt.

import os import boto3 from sagemaker.core.debugger import TensorBoardOutputConfig from sagemaker.core.helper.session_helper import Session, get_execution_role from sagemaker.train import ModelTrainer from sagemaker.train.configs import Compute, InputData, OutputDataConfig sagemaker_session = Session() role = get_execution_role() bucket = sagemaker_session.default_bucket() output = os.path.join(f"s3://{bucket}", "output") output_path = "<s3-URI>" recipe_overrides = { "run": { "results_dir": "/opt/ml/model", }, "exp_manager": { "explicit_log_dir": "/opt/ml/output/tensorboard", }, "data": { "train_dir": "/opt/ml/input/data/train", }, "model": { "model_config": "/opt/ml/input/data/train/config.json", }, "compiler_cache_url": "<compiler_cache_url>" } tensorboard_output_config = TensorBoardOutputConfig( s3_output_path=os.path.join(output, 'tensorboard'), container_local_output_path=recipe_overrides["exp_manager"]["explicit_log_dir"] ) model_trainer = ModelTrainer( output_data_config=OutputDataConfig(s3_output_path=output_path), base_job_name=f"llama-trn", role=role, compute=Compute(instance_type="ml.trn1.32xlarge", instance_count=1), training_recipe="training/llama/hf_llama3_70b_seq8k_trn1x16_pretrain", recipe_overrides=recipe_overrides, ) model_trainer.train(input_data_config=[ InputData(channel_name="train", data_source="your-inputs") ], wait=True)

Der vorhergehende Code erstellt ein ModelTrainer Objekt mit dem Trainingsrezept und trainiert dann das Modell mit der Methode. train() Verwenden Sie den Parameter training_recipe, um das Rezept anzugeben, das Sie für das Training verwenden möchten.

Starten des Trainingsjobs mit dem Launcher für Rezepte

  • Aktualisieren: ./recipes_collection/cluster/sm_jobs.yaml

    • compiler_cache_url: Die URL, die zum Speichern der Artefakte verwendet wurde. Es kann sich um eine Amazon-S3-URL handeln.

    sm_jobs_config: output_path: <s3_output_path> wait: True tensorboard_config: output_path: <s3_output_path> container_logs_path: /opt/ml/output/tensorboard # Path to logs on the container wait: True # Whether to wait for training job to finish inputs: # Inputs to call fit with. Set either s3 or file_system, not both. s3: # Dictionary of channel names and s3 URIs. For GPUs, use channels for train and validation. train: <s3_train_data_path> val: null additional_estimator_kwargs: # All other additional args to pass to estimator. Must be int, float or string. max_run: 180000 image_uri: <your_image_uri> enable_remote_debug: True py_version: py39 recipe_overrides: model: exp_manager: exp_dir: <exp_dir> data: train_dir: /opt/ml/input/data/train val_dir: /opt/ml/input/data/val
  • Aktualisieren: ./recipes_collection/config.yaml

    defaults: - _self_ - cluster: sm_jobs - recipes: training/llama/hf_llama3_8b_seq8k_trn1x4_pretrain cluster_type: sm_jobs # bcm, bcp, k8s or sm_jobs. If bcm, k8s or sm_jobs, it must match - cluster above. instance_type: ml.trn1.32xlarge base_results_dir: ~/sm_job/hf_llama3_8B # Location to store the results, checkpoints and logs.
  • Starten des Jobs mit main.py

    python3 main.py --config-path recipes_collection --config-name config

Weitere Hinweise zur Konfiguration von SageMaker Trainingsjobs finden Sie unterSageMaker Tutorial für Trainingsjobs vor dem Training (GPU).