

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

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

 SageMaker Python SDK mendukung pelatihan terkelola model dengan kerangka kerja ML seperti dan. TensorFlow PyTorch [Untuk meluncurkan pekerjaan pelatihan menggunakan salah satu kerangka kerja ini, Anda mendefinisikan estimator, SageMaker [TensorFlow estimator](https://sagemaker.readthedocs.io/en/v2.199.0/frameworks/tensorflow/sagemaker.tensorflow.html#tensorflow-estimator), atau SageMaker [PyTorch Estimator](https://sagemaker.readthedocs.io/en/v2.199.0/frameworks/pytorch/sagemaker.pytorch.html#pytorch-estimator) SageMaker generik untuk menggunakan skrip pelatihan yang dimodifikasi dan konfigurasi paralelisme model.](https://sagemaker.readthedocs.io/en/v2.199.0/api/training/estimators.html#sagemaker.estimator.Estimator)

**Topics**
+ [Menggunakan SageMaker TensorFlow dan PyTorch Estimator](#model-parallel-using-sagemaker-pysdk)
+ [Perluas Container Docker Pra-built yang Berisi Perpustakaan Paralel Model SageMaker Terdistribusi](#model-parallel-customize-container)
+ [Buat Container Docker Anda Sendiri dengan Perpustakaan Paralel Model SageMaker Terdistribusi](#model-parallel-bring-your-own-container)

## Menggunakan SageMaker TensorFlow dan PyTorch Estimator
<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. Pustaka paralel SageMaker model secara internal menggunakan MPI untuk data hibrida dan paralelisme model, jadi Anda harus menggunakan opsi MPI dengan perpustakaan.

Template berikut dari TensorFlow atau PyTorch estimator menunjukkan cara mengkonfigurasi `distribution` parameter untuk menggunakan SageMaker model parallel library dengan MPI.

------
#### [ Using the SageMaker TensorFlow estimator ]

```
import sagemaker
from sagemaker.tensorflow import TensorFlow

smp_options = {
    "enabled":True,              # Required
    "parameters": {
        "partitions": 2,         # Required
        "microbatches": 4,
        "placement_strategy": "spread",
        "pipeline": "interleaved",
        "optimize": "speed",
        "horovod": True,         # Use this for hybrid model and data parallelism
    }
}

mpi_options = {
    "enabled" : True,            # Required
    "processes_per_host" : 8,    # Required
    # "custom_mpi_options" : "--mca btl_vader_single_copy_mechanism none"
}

smd_mp_estimator = TensorFlow(
    entry_point="{{your_training_script.py}}", # Specify your train script
    source_dir="{{location_to_your_script}}",
    role=sagemaker.get_execution_role(),
    instance_count=1,
    instance_type='{{ml.p3.16xlarge}}',
    framework_version='{{2.6.3}}',
    py_version='{{py38}}',
    distribution={
        "smdistributed": {"modelparallel": smp_options},
        "mpi": mpi_options
    },
    base_job_name="{{SMD-MP-demo}}",
)

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

------
#### [ Using the SageMaker PyTorch estimator ]

```
import sagemaker
from sagemaker.pytorch import PyTorch

smp_options = {
    "enabled":True,
    "parameters": {                        # Required
        "pipeline_parallel_degree": 2,     # Required
        "microbatches": 4,
        "placement_strategy": "spread",
        "pipeline": "interleaved",
        "optimize": "speed",
        "ddp": True,
    }
}

mpi_options = {
    "enabled" : True,                      # Required
    "processes_per_host" : 8,              # Required
    # "custom_mpi_options" : "--mca btl_vader_single_copy_mechanism none"
}

smd_mp_estimator = PyTorch(
    entry_point="{{your_training_script.py}}", # Specify your train script
    source_dir="{{location_to_your_script}}",
    role=sagemaker.get_execution_role(),
    instance_count=1,
    instance_type='{{ml.p3.16xlarge}}',
    framework_version='{{1.13.1}}',
    py_version='{{py38}}',
    distribution={
        "smdistributed": {"modelparallel": smp_options},
        "mpi": mpi_options
    },
    base_job_name="{{SMD-MP-demo}}",
)

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

------

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

**Parameter konfigurasi untuk SageMaker paralelisme model**
+ Untuk `"smdistributed"` kuncinya, 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 SageMaker paralelisme 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-Parameter spesifik](https://sagemaker.readthedocs.io/en/v2.199.0/api/training/smd_model_parallel_general.html#tensorflow-specific-parameters).

      Untuk PyTorch, lihat [PyTorch-Parameter spesifik](https://sagemaker.readthedocs.io/en/v2.199.0/api/training/smd_model_parallel_general.html#pytorch-specific-parameters).
    + `"pipeline_parallel_degree"`(atau `"partitions"` di`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 pada nama parameter. `"pipeline_parallel_degree"`Parameter menggantikan `"partitions"` sejak `smdistributed-modelparallel` v1.6.0. Untuk informasi selengkapnya, lihat [Parameter 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 Paralel Model SageMaker 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"` kuncinya, berikan kamus yang berisi berikut ini:
  + `"enabled"` – Wajib. Ditetapkan `True` untuk meluncurkan pekerjaan pelatihan terdistribusi dengan MPI.
  + `"processes_per_host"` – Wajib. Tentukan jumlah proses yang harus diluncurkan MPI pada setiap host. Dalam SageMaker AI, host adalah instans Amazon EC2 ML tunggal. SageMaker Python SDK mempertahankan one-to-one pemetaan antara proses dan GPUs lintas 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 GPUs per instance dan biasanya akan sama dengan jumlah GPUs per instance.
  + `"custom_mpi_options"`(opsional) - Gunakan kunci ini untuk meneruskan opsi MPI khusus yang mungkin Anda perlukan. Jika Anda tidak meneruskan opsi kustom MPI ke kunci, opsi MPI diatur 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 secara eksplisit menentukannya, 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 tugas pelatihan menggunakan jenis instans berkemampuan EFA, seperti `ml.p4d.24xlarge` dan`ml.p3dn.24xlarge`, gunakan flag berikut untuk performa 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 paralel SageMaker model Anda, jalankan `estimator.fit()` fungsinya.

Gunakan sumber daya berikut untuk mempelajari selengkapnya tentang penggunaan fitur paralelisme model di Python SageMaker 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)
+ Kami menyarankan Anda menggunakan instance SageMaker notebook jika Anda adalah pengguna baru. Untuk melihat contoh bagaimana Anda dapat meluncurkan pekerjaan pelatihan menggunakan instance SageMaker notebook, 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 di mesin Anda, lihat [mengatur AWS kredensyal Anda dan Wilayah untuk pengembangan](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-credentials.html).

## Perluas Container Docker Pra-built yang Berisi Perpustakaan Paralel Model SageMaker Terdistribusi
<a name="model-parallel-customize-container"></a>

Untuk memperluas wadah pra-bangun dan menggunakan SageMaker pustaka paralelisme model, Anda harus menggunakan salah satu gambar AWS Deep Learning Containers (DLC) yang tersedia untuk atau. PyTorch TensorFlow Pustaka paralelisme SageMaker model termasuk 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 [Deep Learning Containers yang Tersedia](https://github.com/aws/deep-learning-containers/blob/master/available_images.md) di repositori *AWS Deep Learning Containers GitHub *.

**Tip**  
Kami menyarankan Anda menggunakan gambar yang berisi versi terbaru TensorFlow atau PyTorch untuk mengakses sebagian besar up-to-date versi 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 bahwa `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 image (`image_uri`) untuk menentukan estimator untuk pelatihan. SageMaker Untuk informasi selengkapnya, lihat [Perluas Kontainer Pra-dibangun](prebuilt-containers-extend.md). 

Setelah Anda selesai menghosting wadah Docker dan mengambil URI gambar 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 Perpustakaan Paralel Model SageMaker 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 SageMaker paralel terdistribusi di Dockerfile Anda. Bagian ini menyediakan kumpulan blok kode minimum yang harus Anda sertakan untuk mempersiapkan lingkungan SageMaker pelatihan dengan benar dan pustaka paralel model di wadah Docker Anda sendiri.

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

**Untuk membuat Dockerfile dengan toolkit SageMaker pelatihan dan perpustakaan 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 dibuat dari gambar dasar [NVIDIA CUDA](https://hub.docker.com/r/nvidia/cuda). Kami sarankan Anda melihat ke [Dockerfiles resmi dari AWS Deep Learning Container PyTorch untuk](https://github.com/aws/deep-learning-containers/tree/master/pytorch/training/docker) menemukan versi pustaka mana yang perlu Anda instal dan cara mengonfigurasinya. Dockerfiles resmi lengkap, benchmark diuji, dan dikelola oleh tim layanan Deep Learning Container SageMaker dan Deep Learning. Di tautan yang disediakan, pilih PyTorch versi yang Anda gunakan, pilih folder CUDA (`cuxyz`), dan pilih Dockerfile yang diakhiri dengan atau. `.gpu` `.sagemaker.gpu`

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

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

1. Tambahkan argumen berikut untuk menentukan URLs paket pelatihan SageMaker terdistribusi untuk PyTorch. Pustaka paralel SageMaker model membutuhkan pustaka paralel SageMaker data untuk menggunakan cross-node Remote Direct Memory Access (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 oleh pustaka SageMaker paralel model.

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

      ```
      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 [perpustakaan RAPIDS Memory Manager](https://github.com/rapidsai/rmm#rmm-rapids-memory-manager). Ini membutuhkan [CMake](https://cmake.org/)3,14 atau 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 perpustakaan paralel SageMaker model.

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

1. Instal perpustakaan paralel SageMaker 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 [Mengadaptasi Wadah Pelatihan Anda Sendiri untuk mempelajari cara membuat wadah](https://docs.aws.amazon.com/sagemaker/latest/dg/adapt-training-container.html) Docker dan menghostingnya di Amazon ECR.

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