

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

# Langkah 2: Luncurkan Pekerjaan Pelatihan Menggunakan SageMaker Python SDK
<a name="model-parallel-sm-sdk"></a>

 SageMaker Python SDK mendukung pelatihan model terkelola dengan kerangka kerja ML seperti TensorFlow dan PyTorch. Untuk meluncurkan pekerjaan pelatihan menggunakan salah satu kerangka kerja ini, Anda menentukan estimator, SageMaker [ TensorFlow estimator](https://sagemaker.readthedocs.io/en/stable/api/sagemaker_train.html), atau SageMaker [ PyTorch Estimator ](https://sagemaker.readthedocs.io/en/stable/api/sagemaker_train.html) SageMaker generik [https://sagemaker.readthedocs.io/en/stable/api/sagemaker_train.html](https://sagemaker.readthedocs.io/en/stable/api/sagemaker_train.html) untuk menggunakan skrip pelatihan yang dimodifikasi dan konfigurasi paralelisme model.

**Topics**
+ [Menggunakan SageMaker TensorFlow dan E PyTorch stimator](#model-parallel-using-sagemaker-pysdk)
+ [Memperpanjang Container Pre-built Docker yang Berisi Pustaka SageMaker Paralel Model Terdistribusi](#model-parallel-customize-container)
+ [Buat Container Docker Anda Sendiri dengan Pustaka Paral SageMaker el Model Terdistribusi](#model-parallel-bring-your-own-container)

## Menggunakan SageMaker TensorFlow dan E PyTorch stimator
<a name="model-parallel-using-sagemaker-pysdk"></a>

Kelas TensorFlow dan PyTorch estimator berisi `distribution` parameter, yang dapat Anda gunakan untuk menentukan parameter konfigurasi untuk menggunakan kerangka pelatihan terdistribusi. P SageMaker ustaka paralel model secara internal menggunakan MPI untuk data hibrida dan paralelisme model, jadi Anda harus menggunakan opsi MPI dengan pustaka.

Template PyTorch estimator TensorFlow atau berikut menunjukkan cara mengkonfigurasi `distribution` parameter untuk menggunakan pustaka paralel SageMaker model dengan MPI.

```
import sagemaker
from sagemaker.train import ModelTrainer
from sagemaker.train.configs import SourceCode, Compute
from sagemaker.train.distributed import Torchrun
from sagemaker.core.helper.session_helper import get_execution_role
from sagemaker.core import image_uris

training_image = image_uris.retrieve(
    framework="{{tensorflow}}", region=region, version='{{2.6.3}}',
    py_version='{{py38}}', instance_type='{{ml.p3.16xlarge}}',
    image_scope="training"
)

smd_mp_model_trainer = ModelTrainer(
    source_code=SourceCode(entry_script="{{your_training_script.py}}", source_dir="{{location_to_your_script}}"),
    role=get_execution_role(),
    compute=Compute(instance_count=1, instance_type='{{ml.p3.16xlarge}}'),
    training_image=training_image,
    distributed=Torchrun(),
    base_job_name="{{SMD-MP-demo}}",
)

smd_mp_model_trainer.train('{{s3://my_bucket/my_training_data/}}')
```

Untuk mengaktifkan perpustakaan, Anda perlu meneruskan kamus konfigurasi ke `"mpi"` kunci `"smdistributed"` dan melalui `distribution` argumen konstruktor SageMaker estimator.

**Parameter konfigurasi untuk paral SageMaker elisme model**
+ Untuk `"smdistributed"` kunci, berikan kamus dengan `"modelparallel"` kunci dan kamus batin berikut. 
**catatan**  
Menggunakan `"modelparallel"` dan `"dataparallel"` dalam satu pekerjaan pelatihan tidak didukung. 
  + `"enabled"` – Wajib. Untuk mengaktifkan paralelisme model, atur. `"enabled": True`
  + `"parameters"` – Wajib. Tentukan satu set parameter untuk paralel SageMaker isme model.
    + Untuk daftar lengkap parameter umum, lihat [ Parameter untuk `smdistributed`](https://sagemaker.readthedocs.io/en/v2.199.0/api/training/smd_model_parallel_general.html#smdistributed-parameters) dalam dokumentasi * SageMaker Python SDK*.

      Untuk TensorFlow, lihat [ TensorFlow-specific Parameter](https://sagemaker.readthedocs.io/en/v2.199.0/api/training/smd_model_parallel_general.html#tensorflow-specific-parameters).

      Untuk PyTorch, lihat [ PyTorch-specific Parameter](https://sagemaker.readthedocs.io/en/v2.199.0/api/training/smd_model_parallel_general.html#pytorch-specific-parameters).
    + `"pipeline_parallel_degree"`(atau `"partitions"` dalam`smdistributed-modelparallel<v1.6.0`) - Diperlukan. Di antara [ parameter untuk `smdistributed`](https://sagemaker.readthedocs.io/en/v2.199.0/api/training/smd_model_parallel_general.html#smdistributed-parameters), parameter ini diperlukan untuk menentukan berapa banyak partisi model yang ingin Anda bagi.
**penting**  
Ada perubahan besar dalam nama parameter. `"pipeline_parallel_degree"`Parameter menggantikan `"partitions"` sejak `smdistributed-modelparallel` v1.6.0. Untuk informasi selengkapnya, lihat Param [ eter Umum ](https://sagemaker.readthedocs.io/en/v2.199.0/api/training/smd_model_parallel_general.html#common-parameters) untuk konfigurasi paralelisme SageMaker model dan Catatan Rilis [ SageMaker Paralel Model Terdistribusi ](https://sagemaker.readthedocs.io/en/v2.199.0/api/training/smd_model_parallel_release_notes/smd_model_parallel_change_log.html) dalam dokumentasi * SageMaker Python SDK. *
+ Untuk `"mpi"` kunci, berikan kamus yang berisi berikut ini:
  + `"enabled"` – Wajib. Set `True` el untuk meluncurkan pekerjaan pelatihan terdistribusi dengan MPI.
  + `"processes_per_host"` – Wajib. Tentukan jumlah proses MPI harus diluncurkan pada setiap host. Di SageMaker AI, host adalah satu instans Amazon EC2 ML. SageMaker Python SDK mempertahankan pemetaan satu-ke-satu antara proses dan GPU di seluruh model dan paralelisme data. Ini berarti bahwa SageMaker AI menjadwalkan setiap proses pada satu GPU terpisah dan tidak ada GPU yang berisi lebih dari satu proses. Jika Anda menggunakan PyTorch, Anda harus membatasi setiap proses ke perangkatnya sendiri`torch.cuda.set_device(smp.local_rank())`. Untuk mempelajari selengkapnya, lihat [Pemisahan otomatis dengan PyTorch](model-parallel-customize-training-script-pt.md#model-parallel-customize-training-script-pt-16).
**penting**  
 `process_per_host`**tidak boleh lebih besar dari jumlah GPU per instance dan biasanya akan sama dengan jumlah GPU per instance.
  + `"custom_mpi_options"`(opsional) — Gunakan tombol ini untuk meneruskan opsi MPI khusus yang mungkin Anda perlukan. Jika Anda tidak meneruskan opsi kustom MPI apa pun ke kunci, opsi MPI disetel secara default ke bendera berikut.

    ```
    --mca btl_vader_single_copy_mechanism none
    ```
**catatan**  
Anda tidak perlu secara eksplisit menentukan bendera default ini ke kunci. Jika Anda menentukannya secara eksplisit, pekerjaan pelatihan paralel model terdistribusi Anda mungkin gagal dengan kesalahan berikut:  

    ```
    The following MCA parameter has been listed multiple times on the command line: 
    MCA param: btl_vader_single_copy_mechanism MCA parameters can only be listed once 
    on a command line to ensure there is no ambiguity as to its value. 
    Please correct the situation and try again.
    ```
**Tip**  
Jika Anda meluncurkan pekerjaan pelatihan menggunakan jenis EFA-enabled instans, seperti `ml.p4d.24xlarge` dan`ml.p3dn.24xlarge`, gunakan tanda berikut untuk kinerja terbaik:  

    ```
    -x FI_EFA_USE_DEVICE_RDMA=1 -x FI_PROVIDER=efa -x RDMAV_FORK_SAFE=1
    ```

Untuk meluncurkan pekerjaan pelatihan menggunakan estimator dan skrip pelatihan yang dikonfigurasi secara paralel SageMaker model Anda, jalankan fung `estimator.fit()` sinya.

Gunakan sumber daya berikut untuk mempelajari lebih lanjut tentang menggunakan fitur paralelisme model di SageMaker Python SDK:
+ [Gunakan TensorFlow dengan SageMaker Python SDK ](https://sagemaker.readthedocs.io/en/v2.199.0/frameworks/tensorflow/using_tf.html)
+ [Gunakan PyTorch dengan SageMaker Python SDK ](https://sagemaker.readthedocs.io/en/v2.199.0/frameworks/pytorch/using_pytorch.html)
+ Sebaiknya gunakan instance SageMaker buku catatan jika Anda pengguna baru. Untuk melihat contoh bagaimana Anda dapat meluncurkan pekerjaan pelatihan menggunakan instance buku SageMaker catatan, lihat[Contoh perpustakaan paralelisme model Amazon SageMaker AI v2](distributed-model-parallel-v2-examples.md).
+ Anda juga dapat mengirimkan pekerjaan pelatihan terdistribusi dari mesin Anda menggunakan AWS CLI. Untuk mengatur AWS CLI pada mesin Anda, lihat [ mengatur kredensibilitas AWS dan Wilayah untuk pengembangan](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-credentials.html).

## Memperpanjang Container Pre-built Docker yang Berisi Pustaka SageMaker Paralel Model Terdistribusi
<a name="model-parallel-customize-container"></a>

Untuk memperluas wadah pra-bangun dan menggunakan pustaka SageMaker paralelisme model, Anda harus menggunakan salah satu gambar AWS Deep Learning Containers (DLC) yang tersedia untuk atau. PyTorch TensorFlow Pust SageMaker aka paralelisme model disertakan dalam gambar DLC TensorFlow (2.3.0 dan yang lebih baru) dan PyTorch (1.6.0 dan yang lebih baru) dengan CUDA (). `cuxyz` Untuk daftar lengkap gambar DLC, lihat Gambar Wadah Pembelajaran [ Mendalam yang Tersedia ](https://github.com/aws/deep-learning-containers/blob/master/available_images.md) di GitHub repositori *AWS * Deep Learning Containers.

**Tip**  
Kami menyarankan Anda menggunakan gambar yang berisi versi terbaru TensorFlow atau PyTorch untuk mengakses versi terbaru dari pustaka paralelisme SageMaker model.

Misalnya, Dockerfile Anda harus berisi `FROM` pernyataan yang mirip dengan berikut ini:

```
# Use the SageMaker DLC image URI for TensorFlow or PyTorch
FROM {{aws-dlc-account-id}}.dkr.ecr.{{aws-region}}.amazonaws.com/{{framework}}-training:{{{framework-version-tag}}}

# Add your dependencies here
RUN {{...}}

ENV PATH="/opt/ml/code:{{${PATH}}}"

# this environment variable is used by the SageMaker AI container to determine our user code directory.
ENV SAGEMAKER_SUBMIT_DIRECTORY /opt/ml/code
```

Selain itu, ketika Anda mendefinisikan PyTorch atau TensorFlow estimator, Anda harus menentukan itu `entry_point` untuk skrip pelatihan Anda. Ini harus menjadi jalur yang sama yang diidentifikasi `ENV SAGEMAKER_SUBMIT_DIRECTORY` di Dockerfile Anda. 

**Tip**  
Anda harus mendorong wadah Docker ini ke Amazon Elastic Container Registry (Amazon ECR) dan menggunakan URI gambar (`image_uri`) untuk menentukan SageMaker estimator untuk pelatihan. Untuk informasi selengkapnya, lihat [Perpanjang Pre-built Wadah](prebuilt-containers-extend.md). 

Setelah Anda selesai menghosting wadah Docker dan mengambil URI gambar dari wadah, buat objek SageMaker `PyTorch` estimator sebagai berikut. Contoh ini mengasumsikan bahwa Anda telah mendefinisikan `smp_options` dan`mpi_options`. 

```
smd_mp_estimator = Estimator(
    entry_point="{{your_training_script.py}}",
    role=sagemaker.get_execution_role(),
    instance_type='{{ml.p3.16xlarge}}',
    sagemaker_session=sagemaker_session,
    image_uri='{{your_aws_account_id}}.dkr.ecr.{{region}}.amazonaws.com/{{name}}:{{tag}}'
    instance_count={{1}},
    distribution={
        "smdistributed": smp_options,
        "mpi": mpi_options
    },
    base_job_name="{{SMD-MP-demo}}",
)

smd_mp_estimator.fit('s3://my_bucket/my_training_data/')
```

## Buat Container Docker Anda Sendiri dengan Pustaka Paral SageMaker el Model Terdistribusi
<a name="model-parallel-bring-your-own-container"></a>

Untuk membangun wadah Docker Anda sendiri untuk pelatihan dan menggunakan pustaka paralel SageMaker model, Anda harus menyertakan dependensi yang benar dan file biner dari pustaka paralel terdistribusi SageMaker di Dockerfile Anda. Bagian ini menyediakan kumpulan blok kode minimum yang harus Anda sertakan untuk mempersiapkan lingkungan SageMaker pelatihan dan pustaka paralel model dengan benar di wadah Docker Anda sendiri.

**catatan**  
Opsi Docker kustom ini dengan SageMaker pustaka paralel model sebagai biner hanya tersedia untuk PyTorch.

**Untuk membuat Dockerfile dengan toolkit SageMaker pelatihan dan pustaka paralel model**

1. Mulailah dengan salah satu gambar dasar [ NVIDIA CUDA](https://hub.docker.com/r/nvidia/cuda).

   ```
   FROM {{<cuda-cudnn-base-image>}}
   ```
**Tip**  
Gambar AWS Deep Learning Container (DLC) resmi dibangun dari gambar [ dasar ](https://hub.docker.com/r/nvidia/cuda) NVIDIA CUDA. Kami sarankan Anda melihat ke Dockerfiles [ resmi dari AWS Deep Learning Container PyTorch ](https://github.com/aws/deep-learning-containers/tree/master/pytorch/training/docker) untuk menemukan versi pustaka mana yang perlu Anda instal dan cara mengkonfigurasinya. Dockerfiles resmi lengkap, diuji benchmark, dan dikelola oleh tim layanan Deep Learning Container. SageMaker Di tautan yang disediakan, pilih PyTorch versi yang Anda gunakan, pilih folder CUDA (`cuxyz`), dan pilih Dockerfile yang diakhiri dengan `.gpu` atau. `.sagemaker.gpu`

1. Untuk menyiapkan lingkungan pelatihan terdistribusi, Anda perlu menginstal perangkat lunak untuk perangkat komunikasi dan jaringan, seperti [ Elastic Fabric Adapter (EFA)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa.html), [ NVIDIA Collective Communications Library (NCCL)](https://developer.nvidia.com/nccl), dan [ Open MPI. ](https://www.open-mpi.org/) Tergantung pada PyTorch dan versi CUDA yang Anda pilih, Anda harus menginstal versi pustaka yang kompatibel.
**penting**  
Karena pust SageMaker aka paralel model memerlukan SageMaker pustaka paralel data dalam langkah-langkah selanjutnya, kami sangat menyarankan Anda mengikuti instruksi di [Buat wadah Docker Anda sendiri dengan pustaka paralel data terdistribusi SageMaker AI](data-parallel-bring-your-own-container.md) untuk mengatur lingkungan SageMaker pelatihan dengan benar untuk pelatihan terdistribusi.

   Untuk informasi selengkapnya tentang menyiapkan EFA dengan NCCL dan Open MPI, lihat Mem [ ulai dengan EFA dan MPI dan Memulai dengan EFA ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa-start.html) dan [ NCCL. ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa-start-nccl.html)

1. Tambahkan argumen berikut untuk menentukan URL paket pelatihan SageMaker yang didistribusikan untuk PyTorch. Pust SageMaker aka paralel model memerlukan pustaka paralel SageMaker data untuk menggunakan Akses Memori Langsung Jarak Jauh lintas simpul (RDMA).

   ```
   ARG SMD_MODEL_PARALLEL_URL=https://sagemaker-distributed-model-parallel.s3.us-west-2.amazonaws.com/pytorch-1.10.0/build-artifacts/2022-02-21-19-26/smdistributed_modelparallel-1.7.0-cp38-cp38-linux_x86_64.whl
   ARG SMDATAPARALLEL_BINARY=https://smdataparallel.s3.amazonaws.com/binary/pytorch/1.10.2/cu113/2022-02-18/smdistributed_dataparallel-1.4.0-cp38-cp38-linux_x86_64.whl
   ```

1. Instal dependensi yang dibutuhkan SageMaker pustaka paralel model.

   1. Instal per [ pustakaan ](http://glaros.dtc.umn.edu/gkhome/metis/metis/overview) METIS.

      ```
      ARG METIS=metis-{{5.1.0}}
      
      RUN rm /etc/apt/sources.list.d/* \
        && wget -nv http://glaros.dtc.umn.edu/gkhome/fetch/sw/metis/${METIS}.tar.gz \
        && gunzip -f ${METIS}.tar.gz \
        && tar -xvf ${METIS}.tar \
        && cd ${METIS} \
        && apt-get update \
        && make config shared=1 \
        && make install \
        && cd .. \
        && rm -rf ${METIS}.tar* \
        && rm -rf ${METIS} \
        && rm -rf /var/lib/apt/lists/* \
        && apt-get clean
      ```

   1. Instal pust [ aka Manajer Memori RAPIDS](https://github.com/rapidsai/rmm#rmm-rapids-memory-manager). Ini membutuhkan [ CMake ](https://cmake.org/) 3.14 atau yang lebih baru.

      ```
      ARG RMM_VERSION={{0.15.0}}
      
      RUN  wget -nv https://github.com/rapidsai/rmm/archive/v${RMM_VERSION}.tar.gz \
        && tar -xvf v${RMM_VERSION}.tar.gz \
        && cd rmm-${RMM_VERSION} \
        && INSTALL_PREFIX=/usr/local ./build.sh librmm \
        && cd .. \
        && rm -rf v${RMM_VERSION}.tar* \
        && rm -rf rmm-${RMM_VERSION}
      ```

1. Instal SageMaker pustaka paralel model.

   ```
   RUN pip install --no-cache-dir -U ${SMD_MODEL_PARALLEL_URL}
   ```

1. Instal SageMaker pustaka paralel data.

   ```
   RUN SMDATAPARALLEL_PT=1 pip install --no-cache-dir ${SMDATAPARALLEL_BINARY}
   ```

1. Instal toolkit [ pelatihan sagemaker. ](https://github.com/aws/sagemaker-training-toolkit) Toolkit berisi fungsionalitas umum yang diperlukan untuk membuat wadah yang kompatibel dengan platform SageMaker pelatihan dan SageMaker Python SDK.

   ```
   RUN pip install sagemaker-training
   ```

1. Setelah Anda selesai membuat Dockerfile, lihat Meng [ adaptasi Kontainer Pelatihan Anda Sendiri ](https://docs.aws.amazon.com/sagemaker/latest/dg/adapt-training-container.html) untuk mempelajari cara membuat wadah Docker dan meng-hostingnya di Amazon ECR.

**Tip**  
Untuk informasi lebih umum tentang membuat Dockerfile khusus untuk pelatihan di SageMaker AI, lihat [ Menggunakan Algoritma Pelatihan Anda Sendiri. ](https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms-training-algo.html)