

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Tutorial SageMaker pra-pelatihan pekerjaan pelatihan trainium
<a name="sagemaker-hyperpod-trainium-sagemaker-training-jobs-pretrain-tutorial"></a>

Tutorial ini memandu Anda melalui proses menyiapkan dan menjalankan pekerjaan pra-pelatihan menggunakan pekerjaan pelatihan dengan SageMaker instance AWS Trainium.
+ Siapkan lingkungan Anda
+ Luncurkan pekerjaan pelatihan

Sebelum Anda mulai, pastikan Anda memiliki prasyarat berikut.

**Prasyarat**  
Sebelum Anda mulai mengatur lingkungan Anda, pastikan Anda memiliki:  
Sistem FSx file Amazon atau bucket S3 tempat Anda dapat memuat data dan mengeluarkan artefak pelatihan.
Minta Kuota Layanan untuk `ml.trn1.32xlarge` instans di Amazon SageMaker AI. Untuk meminta peningkatan kuota layanan, lakukan hal berikut:  
Arahkan ke konsol AWS Service Quotas.
Pilih AWS layanan.
Pilih JupyterLab.
Tentukan satu contoh untuk`ml.trn1.32xlarge`.
Buat peran AWS Identity and Access Management (IAM) dengan kebijakan yang `AmazonEC2FullAccess` dikelola `AmazonSageMakerFullAccess` dan dikelola. Kebijakan ini memberi Amazon SageMaker AI izin untuk menjalankan contoh.
Data dalam salah satu format berikut:  
JSON
JSONGZ (JSON Terkompresi)
PANAH
(Opsional) Jika Anda memerlukan bobot yang telah dilatih sebelumnya dari HuggingFace atau jika Anda melatih model Llama 3.2, Anda harus mendapatkan HuggingFace token sebelum memulai pelatihan. Untuk informasi selengkapnya tentang mendapatkan token, lihat [Token akses pengguna](https://huggingface.co/docs/hub/en/security-tokens).

## Siapkan lingkungan Anda untuk pekerjaan pelatihan Trainium SageMaker
<a name="sagemaker-hyperpod-trainium-sagemaker-training-jobs-environment-setup"></a>

Sebelum Anda menjalankan pekerjaan SageMaker pelatihan, gunakan `aws configure` perintah untuk mengonfigurasi AWS kredensyal dan wilayah pilihan Anda. Sebagai alternatif, Anda juga dapat memberikan kredensyal Anda melalui variabel lingkungan seperti`AWS_ACCESS_KEY_ID`,`AWS_SECRET_ACCESS_KEY`, dan. `AWS_SESSION_TOKEN` Untuk informasi selengkapnya, lihat [SageMaker AI Python SDK](https://github.com/aws/sagemaker-python-sdk).

Kami sangat menyarankan menggunakan notebook SageMaker AI Jupyter di SageMaker AI JupyterLab untuk meluncurkan pekerjaan SageMaker pelatihan. Untuk informasi selengkapnya, lihat [SageMaker JupyterLab](studio-updated-jl.md).
+ (Opsional) Jika Anda menggunakan notebook Jupyter di Amazon SageMaker Studio, Anda dapat melewatkan menjalankan perintah berikut. Pastikan untuk menggunakan versi >= python 3.9

  ```
  # 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
  ```
+ Instal SageMaker AI Python SDK

  ```
  pip3 install --upgrade sagemaker
  ```
+ 
  + Jika Anda menjalankan pekerjaan pelatihan multi-modal llama 3.2, `transformers` versinya harus `4.45.2` atau lebih besar.
    + Tambahkan `transformers==4.45.2` ke `requirements.txt` source\_dir hanya saat Anda menggunakan AI SageMaker Python SDK.
    + Jika Anda menggunakan HyperPod resep untuk diluncurkan menggunakan `sm_jobs` sebagai tipe cluster, Anda tidak perlu menentukan versi transformer.
  + `Container`: Wadah Neuron diatur secara otomatis oleh SageMaker AI Python SDK.

## Luncurkan pekerjaan pelatihan dengan Notebook Jupyter
<a name="sagemaker-hyperpod-trainium-sagemaker-training-jobs-launch-training-job-notebook"></a>

Anda dapat menggunakan kode Python berikut untuk menjalankan pekerjaan SageMaker pelatihan menggunakan resep Anda. Ini memanfaatkan PyTorch estimator dari AI [SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable/) untuk mengirimkan resep. Contoh berikut meluncurkan resep llama3-8b sebagai AI Training Job. SageMaker 
+ `compiler_cache_url`: Cache yang akan digunakan untuk menyimpan artefak yang dikompilasi, seperti artefak Amazon S3.

```
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)
```

Kode sebelumnya membuat objek PyTorch estimator dengan resep pelatihan dan kemudian cocok dengan model menggunakan metode. `fit()` Gunakan `training_recipe` parameter untuk menentukan resep yang ingin Anda gunakan untuk pelatihan.

## Luncurkan pekerjaan pelatihan dengan peluncur resep
<a name="sagemaker-hyperpod-trainium-sagemaker-training-jobs-launch-training-job-recipes"></a>
+ Perbarui `./recipes_collection/cluster/sm_jobs.yaml`
  + compiler\_cache\_url: URL yang digunakan untuk menyimpan artefak. Ini bisa berupa URL Amazon S3.

  ```
  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
  ```
+ Perbarui `./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.
  ```
+ Luncurkan pekerjaan dengan `main.py`

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

Untuk informasi selengkapnya tentang mengonfigurasi pekerjaan SageMaker pelatihan, lihat[SageMaker pelatihan pekerjaan pra-pelatihan tutorial (GPU)](sagemaker-hyperpod-gpu-sagemaker-training-jobs-pretrain-tutorial.md).