

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

# Gunakan estimator PyTorch kerangka kerja di SageMaker Python SDK
<a name="data-parallel-framework-estimator"></a>

Anda dapat meluncurkan pelatihan terdistribusi dengan menambahkan `distribution` argumen ke estimator [`PyTorch`](https://sagemaker.readthedocs.io/en/stable/api/sagemaker_train.html) kerangka kerja SageMaker AI. Pust SageMaker aka paralelisme data terdistribusi AI (SMDDP) mendukung pelatihan terdistribusi. PyTorch 

**catatan**  
SMDDP menghentikan TensorFlow dukungan setelah v2.11.0. Untuk pelatihan terdistribusi dengan TensorFlow, gunakan strategi distribusi alternatif.

Opsi peluncur berikut tersedia untuk meluncurkan pelatihan PyTorch terdistribusi.
+ `pytorchddp`- Opsi ini menjalankan `mpirun` dan mengatur variabel lingkungan yang diperlukan untuk menjalankan pelatihan PyTorch terdistribusi pada SageMaker AI. Untuk menggunakan opsi ini, berikan kamus berikut ke `distribution` parameter.

  ```
  { "pytorchddp": { "enabled": True } }
  ```
+ `torch_distributed`- Opsi ini menjalankan `torchrun` dan mengatur variabel lingkungan yang diperlukan untuk menjalankan pelatihan PyTorch terdistribusi pada SageMaker AI. Untuk menggunakan opsi ini, berikan kamus berikut ke `distribution` parameter.

  ```
  { "torch_distributed": { "enabled": True } }
  ```
+ `smdistributed`- Opsi ini juga berjalan `mpirun` tetapi dengan `smddprun` itu mengatur variabel lingkungan yang diperlukan untuk menjalankan pelatihan PyTorch terdistribusi pada SageMaker AI.

  ```
  { "smdistributed": { "dataparallel": { "enabled": True } } }
  ```

Jika Anda memilih untuk mengganti NCCL `AllGather` ke SMDDP`AllGather`, Anda dapat menggunakan ketiga opsi. Pilih satu opsi yang sesuai dengan kasus penggunaan Anda.

Jika Anda memilih untuk mengganti NCCL `AllReduce` dengan SMDDP`AllReduce`, Anda harus memilih salah satu opsi `mpirun` berbasis: atau. `smdistributed` `pytorchddp` Anda juga dapat menambahkan opsi MPI tambahan sebagai berikut.

```
{ 
    "pytorchddp": {
        "enabled": True, 
        "custom_mpi_options": "-verbose -x NCCL_DEBUG=VERSION"
    }
}
```

```
{ 
    "smdistributed": { 
        "dataparallel": {
            "enabled": True, 
            "custom_mpi_options": "-verbose -x NCCL_DEBUG=VERSION"
        }
    }
}
```

Contoh kode berikut menunjukkan struktur dasar ModelTrainer dengan opsi pelatihan terdistribusi.

```
from sagemaker.train import ModelTrainer
from sagemaker.train.configs import SourceCode, Compute, InputData
from sagemaker.core import image_uris

# Retrieve the training image for the desired PyTorch version
training_image = image_uris.retrieve(
    framework="pytorch",
    region="{{us-west-2}}",
    version="{{2.0.1}}",
    py_version="{{py310}}",
    instance_type="{{ml.p4d.24xlarge}}",
    image_scope="training"
)

source_code = SourceCode(
    source_dir="{{subdirectory-to-your-code}}",
    entry_script="{{adapted-training-script.py}}"
)

compute = Compute(
    # For running a multi-node distributed training job, specify a value greater than 1
    # Example: 2,3,4,..8
    instance_count={{2}},

    # Instance types supported by the SageMaker AI data parallel library: 
    # ml.p4d.24xlarge, ml.p4de.24xlarge
    instance_type="{{ml.p4d.24xlarge}}"
)

pt_model_trainer = ModelTrainer(
    training_image=training_image,
    base_job_name="{{training_job_name_prefix}}",
    source_code=source_code,
    role="{{SageMakerRole}}",
    compute=compute,

    # Activate distributed training with SMDDP
    distribution={ "pytorchddp": { "enabled": True } }  # mpirun, activates SMDDP AllReduce OR AllGather
    # distribution={ "torch_distributed": { "enabled": True } }  # torchrun, activates SMDDP AllGather
    # distribution={ "smdistributed": { "dataparallel": { "enabled": True } } }  # mpirun, activates SMDDP AllReduce OR AllGather
)

pt_model_trainer.train(input_data_config=[
    InputData(channel_name="training", data_source="{{s3://bucket/path/to/training/data}}")
])
```

**catatan**  
PyTorch Lightning dan pustaka utilitasnya seperti Lightning Bolts tidak diinstal sebelumnya di PyTorch DLC SageMaker AI. Buat `requirements.txt` file berikut dan simpan di direktori sumber tempat Anda menyimpan skrip pelatihan.  

```
# requirements.txt
pytorch-lightning
lightning-bolts
```
Misalnya, direktori terstruktur pohon akan terlihat seperti berikut ini.  

```
├── pytorch_training_launcher_jupyter_notebook.ipynb
└── sub-folder-for-your-code
    ├──  adapted-training-script.py
    └──  requirements.txt
```
Untuk informasi selengkapnya tentang menentukan direktori sumber untuk menempatkan `requirements.txt` file bersama dengan skrip pelatihan dan pengiriman pekerjaan, lihat [ Menggunakan pustaka pihak ketiga ](https://sagemaker.readthedocs.io/en/stable/api/sagemaker_train.html) dalam dokumentasi * Amazon SageMaker AI Python SDK*.

**Pertimbangan untuk mengaktifkan operasi kolektif SMDDP dan menggunakan opsi peluncur pelatihan terdistribusi yang tepat**
+ SMDDP `AllReduce` dan SMDDP tidak `AllGather` saling kompatibel saat ini.
+ SMDDP `AllReduce` diaktifkan secara default saat menggunakan `smdistributed` atau`pytorchddp`, yang `mpirun` berbasis peluncur, dan N `AllGather` CCL digunakan.
+ SMDDP `AllGather` diaktifkan secara default saat menggunakan `torch_distributed` peluncur, dan kembali ke `AllReduce` NCCL.
+ SMDDP juga `AllGather` dapat diaktifkan saat menggunakan peluncur `mpirun` berbasis dengan variabel lingkungan tambahan yang ditetapkan sebagai berikut.

  ```
  export SMDATAPARALLEL_OPTIMIZE_SDP=true
  ```