

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 von SageMaker Trainium-Schulungsaufträgen
<a name="sagemaker-hyperpod-trainium-sagemaker-training-jobs-pretrain-tutorial"></a>

Dieses Tutorial führt Sie durch den Prozess der Einrichtung und Ausführung eines Vorbereitungsjobs mithilfe von Schulungsaufträgen mit SageMaker Trainium-Instanzen. 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:  
 FSx Amazon-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 SageMaker AI an. Um eine Erhöhung der Servicekontingente zu beantragen, gehen Sie wie folgt vor:  
Navigieren Sie zur AWS Service Quotas Quotas-Konsole.
Wählen Sie AWS Dienste aus.
Wählen Sie aus JupyterLab.
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 Erlaubnis, die Beispiele auszuführen.
Daten in einem der folgenden Formate:  
JSON
JSONGZ (komprimiertes JSON)
ARROW
(Optional) Wenn du die vorab trainierten Gewichte von einem Lama 3.2-Modell benötigst HuggingFace oder wenn du ein Lama 3.2-Modell trainierst, musst du dir das HuggingFace Token besorgen, bevor du mit dem Training beginnst. Weitere Informationen zum Abrufen des Tokens finden Sie unter [Benutzerzugriffstoken](https://huggingface.co/docs/hub/en/security-tokens).

## Richten Sie Ihre Umgebung für Trainingsjobs bei SageMaker Trainium ein
<a name="sagemaker-hyperpod-trainium-sagemaker-training-jobs-environment-setup"></a>

Bevor Sie einen SageMaker Trainingsjob ausführen, konfigurieren Sie mit dem `aws configure` Befehl Ihre AWS Anmeldeinformationen und Ihre bevorzugte Region. 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](https://github.com/aws/sagemaker-python-sdk).

Wir empfehlen dringend, ein SageMaker KI-Jupyter-Notizbuch in SageMaker KI JupyterLab zu verwenden, um einen SageMaker Trainingsjob zu starten. Weitere Informationen finden Sie unter [SageMaker JupyterLab](studio-updated-jl.md).
+ (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 SageMaker AI Python SDK

  ```
  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` es nur an `requirements.txt` in source\$1dir an, wenn Sie das SageMaker AI Python SDK verwenden.
    + Wenn Sie HyperPod Rezepte zum Starten `sm_jobs` als Clustertyp verwenden, müssen Sie die Transformer-Version nicht angeben.
  + `Container`: Der Neuron-Container wird automatisch vom SageMaker AI Python SDK festgelegt.

## Starten des Trainingsjobs mit einem Jupyter Notebook
<a name="sagemaker-hyperpod-trainium-sagemaker-training-jobs-launch-training-job-notebook"></a>

Sie können den folgenden Python-Code verwenden, um einen SageMaker Trainingsjob nach Ihrem Rezept auszuführen. Es nutzt den PyTorch Schätzer aus dem [SageMaker AI Python SDK, um das](https://sagemaker.readthedocs.io/en/stable/) Rezept einzureichen. Im folgenden Beispiel wird das Rezept llama3-8b 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 sagemaker,boto3
from sagemaker.debugger import TensorBoardOutputConfig

from sagemaker.pytorch import PyTorch

sagemaker_session = sagemaker.Session()
role = sagemaker.get_execution_role()

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=overrides["exp_manager"]["explicit_log_dir"]
)

estimator = PyTorch(
    output_path=output_path,
    base_job_name=f"llama-trn",
    role=role,
    instance_type="ml.trn1.32xlarge",
    sagemaker_session=sagemaker_session,
    training_recipe="training/llama/hf_llama3_70b_seq8k_trn1x16_pretrain",
    recipe_overrides=recipe_overrides,
)

estimator.fit(inputs={"train": "your-inputs"}, wait=True)
```

Der obige Code erstellt ein PyTorch Schätzerobjekt mit dem Trainingsrezept und passt das Modell dann mithilfe der Methode an. `fit()` 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
<a name="sagemaker-hyperpod-trainium-sagemaker-training-jobs-launch-training-job-recipes"></a>
+ Aktualisieren: `./recipes_collection/cluster/sm_jobs.yaml`
  + compiler\$1cache\$1url: 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 Informationen zur Konfiguration von SageMaker Trainingsjobs finden Sie unter[SageMaker Tutorial für Trainingsjobs vor dem Training (GPU)](sagemaker-hyperpod-gpu-sagemaker-training-jobs-pretrain-tutorial.md).