

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 kerangka kerja SageMaker AI, [https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/sagemaker.pytorch.html#sagemaker.pytorch.estimator.PyTorch](https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/sagemaker.pytorch.html#sagemaker.pytorch.estimator.PyTorch)atau [https://sagemaker.readthedocs.io/en/stable/frameworks/tensorflow/sagemaker.tensorflow.html#tensorflow-estimator](https://sagemaker.readthedocs.io/en/stable/frameworks/tensorflow/sagemaker.tensorflow.html#tensorflow-estimator). Untuk detail selengkapnya, pilih salah satu kerangka kerja yang didukung oleh perpustakaan SageMaker AI distributed data parallelism (SMDDP) dari pilihan berikut.

------
#### [ PyTorch ]

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 tentang SageMaker AI. Untuk menggunakan opsi ini, teruskan 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 tentang SageMaker AI. Untuk menggunakan opsi ini, teruskan 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 tentang 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 PyTorch estimator dengan opsi pelatihan terdistribusi.

```
from sagemaker.pytorch import PyTorch

pt_estimator = PyTorch(
    base_job_name="training_job_name_prefix",
    source_dir="subdirectory-to-your-code",
    entry_point="adapted-training-script.py",
    role="SageMakerRole",
    py_version="py310",
    framework_version="2.0.1",

    # 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",

    # 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_estimator.fit("s3://bucket/path/to/training/data")
```

**catatan**  
PyTorch Lightning dan perpustakaan utilitasnya seperti Lightning Bolts tidak diinstal sebelumnya di AI. SageMaker PyTorch DLCs 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/frameworks/pytorch/using_pytorch.html#id12) dalam dokumentasi Amazon *AI SageMaker Python* SDK.

**Pertimbangan untuk mengaktifkan operasi kolektif SMDDP dan menggunakan opsi peluncur pelatihan terdistribusi yang tepat**
+ SMDDP `AllReduce` dan SMDDP tidak saling `AllGather` kompatibel saat ini.
+ SMDDP `AllReduce` diaktifkan secara default saat menggunakan `smdistributed` atau`pytorchddp`, yang `mpirun` berbasis peluncur, dan NCCL digunakan. `AllGather`
+ 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
  ```

------
#### [ TensorFlow ]

**penting**  
Pustaka SMDDP menghentikan dukungan untuk TensorFlow dan tidak lagi tersedia di TensorFlow lebih dari DLCs v2.11.0. Untuk menemukan sebelumnya TensorFlow DLCs dengan pustaka SMDDP diinstal, lihat. [TensorFlow (usang)](distributed-data-parallel-support.md#distributed-data-parallel-supported-frameworks-tensorflow)

```
from sagemaker.tensorflow import TensorFlow

tf_estimator = TensorFlow(
    base_job_name = "training_job_name_prefix",
    entry_point="adapted-training-script.py",
    role="SageMakerRole",
    framework_version="2.11.0",
    py_version="py38",

    # 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.p3dn.24xlarge, and ml.p3.16xlarge
    instance_type="ml.p3.16xlarge",

    # Training using the SageMaker AI data parallel distributed training strategy
    distribution={ "smdistributed": { "dataparallel": { "enabled": True } } }
)

tf_estimator.fit("s3://bucket/path/to/training/data")
```

------