

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

# Jalankan pelatihan terdistribusi dengan perpustakaan paralelisme data terdistribusi SageMaker AI
<a name="data-parallel"></a>

Pustaka paralelisme data terdistribusi SageMaker AI (SMDDP) memperluas kemampuan SageMaker pelatihan pada model pembelajaran mendalam dengan efisiensi penskalaan hampir linier dengan menyediakan implementasi operasi komunikasi kolektif yang dioptimalkan untuk infrastruktur. AWS 

Saat melatih model pembelajaran mesin besar (MLM), seperti model bahasa besar (LLM) dan model difusi, pada kumpulan data pelatihan yang besar, praktisi ML menggunakan kelompok akselerator dan teknik pelatihan terdistribusi untuk mengurangi waktu melatih atau menyelesaikan kendala memori untuk model yang tidak dapat muat di setiap memori GPU. Praktisi ML sering memulai dengan beberapa akselerator pada satu instance dan kemudian menskalakan ke kelompok instance saat persyaratan beban kerja mereka meningkat. Ketika ukuran cluster meningkat, demikian juga overhead komunikasi antara beberapa node, yang menyebabkan penurunan kinerja komputasi secara keseluruhan.

Untuk mengatasi masalah overhead dan memori seperti itu, perpustakaan SMDDP menawarkan yang berikut ini.
+ Pustaka SMDDP mengoptimalkan pekerjaan pelatihan untuk infrastruktur AWS jaringan dan topologi instans Amazon SageMaker AI ML.
+ Perpustakaan SMDDP meningkatkan komunikasi antar node dengan implementasi `AllReduce` dan operasi komunikasi `AllGather` kolektif yang dioptimalkan untuk infrastruktur. AWS 

Untuk mempelajari lebih lanjut tentang detail penawaran perpustakaan SMDDP, lanjutkan ke. [Pengantar perpustakaan paralelisme data terdistribusi SageMaker AI](data-parallel-intro.md)

Untuk informasi lebih lanjut tentang pelatihan dengan strategi model-paralel yang ditawarkan oleh SageMaker AI, lihat juga. [(Diarsipkan) perpustakaan SageMaker paralelisme model v1.x](model-parallel.md)

**Topics**
+ [Pengantar perpustakaan paralelisme data terdistribusi SageMaker AI](data-parallel-intro.md)
+ [Kerangka kerja yang didukung, Wilayah AWS, dan tipe instance](distributed-data-parallel-support.md)
+ [Pelatihan terdistribusi dengan perpustakaan paralelisme data terdistribusi SageMaker AI](data-parallel-modify-sdp.md)
+ [Contoh perpustakaan paralelisme data Amazon SageMaker AI](distributed-data-parallel-v2-examples.md)
+ [Kiat konfigurasi untuk perpustakaan paralelisme data terdistribusi SageMaker AI](data-parallel-config.md)
+ [FAQ perpustakaan paralelisme data terdistribusi Amazon SageMaker AI](data-parallel-faq.md)
+ [Pemecahan masalah untuk pelatihan terdistribusi di Amazon AI SageMaker](distributed-troubleshooting-data-parallel.md)
+ [SageMaker Catatan rilis perpustakaan paralelisme data AI](data-parallel-release-notes.md)

# Pengantar perpustakaan paralelisme data terdistribusi SageMaker AI
<a name="data-parallel-intro"></a>

Pustaka SageMaker AI distributed data parallelism (SMDDP) adalah perpustakaan komunikasi kolektif yang meningkatkan kinerja komputasi pelatihan paralel data terdistribusi. Perpustakaan SMDDP menangani overhead komunikasi dari operasi komunikasi kolektif utama dengan menawarkan yang berikut ini.

1. Perpustakaan menawarkan `AllReduce` dioptimalkan untuk AWS. `AllReduce`adalah operasi kunci yang digunakan untuk menyinkronkan gradien GPUs di akhir setiap iterasi pelatihan selama pelatihan data terdistribusi.

1. Perpustakaan menawarkan `AllGather` dioptimalkan untuk AWS. `AllGather`adalah operasi kunci lain yang digunakan dalam pelatihan paralelisme data sharded, yang merupakan teknik paralelisme data hemat memori yang ditawarkan oleh perpustakaan populer seperti perpustakaan paralelisme model SageMaker AI (SMP), DeepSpeed Zero Redundancy Optimizer (Zero), dan Fully Sharded Data Parallelism (FSDP). PyTorch 

1. Pustaka melakukan node-to-node komunikasi yang dioptimalkan dengan sepenuhnya memanfaatkan infrastruktur AWS jaringan dan topologi instans Amazon EC2. 

Pustaka SMDDP dapat meningkatkan kecepatan pelatihan dengan menawarkan peningkatan kinerja saat Anda menskalakan klaster pelatihan Anda, dengan efisiensi penskalaan hampir linier.

**catatan**  
Perpustakaan pelatihan terdistribusi SageMaker AI tersedia melalui wadah pembelajaran AWS mendalam untuk PyTorch dan Hugging Face dalam platform SageMaker Pelatihan. Untuk menggunakan pustaka, Anda harus menggunakan SDK SageMaker Python atau SageMaker APIs melalui SDK for Python (Boto3) atau. AWS Command Line Interface Sepanjang dokumentasi, instruksi dan contoh berfokus pada cara menggunakan pustaka pelatihan terdistribusi dengan SageMaker Python SDK.

## Operasi komunikasi kolektif SMDDP dioptimalkan untuk sumber daya AWS komputasi dan infrastruktur jaringan
<a name="data-parallel-collective-operations"></a>

Perpustakaan SMDDP menyediakan implementasi operasi `AllGather` kolektif yang dioptimalkan untuk sumber daya AWS komputasi `AllReduce` dan infrastruktur jaringan.

### Operasi kolektif SMDDP `AllReduce`
<a name="data-parallel-allreduce"></a>

Pustaka SMDDP mencapai tumpang tindih `AllReduce` operasi yang optimal dengan backward pass, secara signifikan meningkatkan pemanfaatan GPU. Ini mencapai efisiensi penskalaan hampir linier dan kecepatan pelatihan yang lebih cepat dengan mengoptimalkan operasi kernel antara dan. CPUs GPUs Library bekerja `AllReduce` secara paralel saat GPU menghitung gradien tanpa menghilangkan siklus GPU tambahan, yang membuat perpustakaan mencapai pelatihan yang lebih cepat.
+  *Leverages CPUs*: Pustaka menggunakan CPUs `AllReduce` gradien, membongkar tugas ini dari file. GPUs 
+ *Peningkatan penggunaan GPU*: GPUs Fokus cluster pada gradien komputasi, meningkatkan pemanfaatannya selama pelatihan.

Berikut ini adalah alur kerja tingkat tinggi dari operasi `AllReduce` SMDDP.

1. Perpustakaan memberikan peringkat ke GPUs (pekerja).

1. Pada setiap iterasi, perpustakaan membagi setiap batch global dengan jumlah total pekerja (ukuran dunia) dan memberikan batch kecil (pecahan batch) kepada pekerja.
   + Ukuran batch global adalah`(number of nodes in a cluster) * (number of GPUs per node) * (per batch shard)`. 
   + Batch shard (batch kecil) adalah subset dari dataset yang ditetapkan untuk setiap GPU (pekerja) per iterasi. 

1. Perpustakaan meluncurkan skrip pelatihan pada setiap pekerja.

1. Pustaka mengelola salinan bobot model dan gradien dari pekerja di akhir setiap iterasi.

1. Pustaka menyinkronkan bobot dan gradien model di seluruh pekerja untuk menggabungkan satu model terlatih.

Diagram arsitektur berikut menunjukkan contoh bagaimana perpustakaan mengatur paralelisme data untuk cluster 3 node. 

 

![\[SMDDP AllReduce dan diagram arsitektur paralelisme data\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/distributed/data-parallel/sdp-architecture.png)


### Operasi kolektif SMDDP `AllGather`
<a name="data-parallel-allgather"></a>

`AllGather`adalah operasi kolektif di mana setiap pekerja memulai dengan buffer input, dan kemudian menggabungkan atau *mengumpulkan* buffer input dari semua pekerja lain ke dalam buffer output.

**catatan**  
Operasi `AllGather` kolektif SMDDP tersedia di AWS Deep Learning Containers (DLC) untuk PyTorch v2.0.1 `smdistributed-dataparallel>=2.0.1` dan yang lebih baru.

`AllGather`banyak digunakan dalam teknik pelatihan terdistribusi seperti paralelisme data sharded di mana setiap pekerja individu memegang sebagian kecil dari model, atau lapisan sharded. Para pekerja memanggil `AllGather` sebelum umpan maju dan mundur untuk merekonstruksi lapisan yang dipecah. Pass maju dan mundur terus berlanjut setelah *semua* parameter dikumpulkan. Selama pass mundur, setiap pekerja juga memanggil `ReduceScatter` untuk mengumpulkan (mengurangi) gradien dan memecah (menyebarkan) mereka menjadi pecahan gradien untuk memperbarui lapisan sharded yang sesuai. [Untuk detail lebih lanjut tentang peran operasi kolektif ini dalam paralelisme data sharded, lihat [implementasi perpustakaan SMP tentang paralelisme data sharded, [Zero](https://deepspeed.readthedocs.io/en/latest/zero3.html#) dalam DeepSpeed dokumentasi, dan blog tentang Fully Sharded Data Parallelism](https://docs.aws.amazon.com/sagemaker/latest/dg/model-parallel-extended-features-pytorch-sharded-data-parallelism.html). PyTorch ](https://engineering.fb.com/2021/07/15/open-source/fsdp/)

Karena operasi kolektif seperti AllGather dipanggil dalam setiap iterasi, mereka adalah kontributor utama untuk overhead komunikasi GPU. Perhitungan yang lebih cepat dari operasi kolektif ini secara langsung diterjemahkan ke waktu pelatihan yang lebih singkat tanpa efek samping pada konvergensi. Untuk mencapai hal ini, perpustakaan SMDDP menawarkan `AllGather` dioptimalkan untuk instance [P4d](https://aws.amazon.com/ec2/instance-types/p4/).

SMDDP `AllGather` menggunakan teknik berikut untuk meningkatkan kinerja komputasi pada instance P4d.

1. Ini mentransfer data antar instance (antar-node) melalui jaringan [Elastic Fabric Adapter](https://aws.amazon.com/hpc/efa/) (EFA) dengan topologi mesh. EFA adalah solusi jaringan AWS latensi rendah dan throughput tinggi. Topologi mesh untuk komunikasi jaringan antar simpul lebih disesuaikan dengan karakteristik EFA dan infrastruktur jaringan. AWS Dibandingkan dengan cincin NCCL atau topologi pohon yang melibatkan beberapa packet hop, SMDDP menghindari akumulasi latensi dari beberapa hop karena hanya membutuhkan satu hop. SMDDP mengimplementasikan algoritma kontrol laju jaringan yang menyeimbangkan beban kerja untuk setiap rekan komunikasi dalam topologi mesh dan mencapai throughput jaringan global yang lebih tinggi.

1. Ini mengadopsi [perpustakaan salinan memori GPU latensi rendah berdasarkan teknologi NVIDIA GPUDirect RDMA (GDRCopy)](https://github.com/NVIDIA/gdrcopy) untuk mengoordinasikan lalu lintas jaringan lokal dan EFA. NVLink GDRCopy, pustaka salinan memori GPU latensi rendah yang ditawarkan oleh NVIDIA, menyediakan komunikasi latensi rendah antara proses CPU dan kernel CUDA GPU. Dengan teknologi ini, perpustakaan SMDDP mampu menyalurkan pergerakan data intra-node dan antar-node.

1. Ini mengurangi penggunaan multiprosesor streaming GPU untuk meningkatkan daya komputasi untuk menjalankan kernel model. Instans P4d dan P4de dilengkapi dengan NVIDIA A100 GPUs, yang masing-masing memiliki 108 multiprosesor streaming. Sementara NCCL membutuhkan hingga 24 multiprosesor streaming untuk menjalankan operasi kolektif, SMDDP menggunakan kurang dari 9 multiprosesor streaming. Kernel komputasi model mengambil multiprosesor streaming yang disimpan untuk komputasi yang lebih cepat.

# Kerangka kerja yang didukung, Wilayah AWS, dan tipe instance
<a name="distributed-data-parallel-support"></a>

Sebelum menggunakan pustaka SageMaker AI distributed data parallelism (SMDDP), periksa kerangka kerja dan tipe instans yang didukung dan apakah ada cukup kuota di akun Anda dan. AWS Wilayah AWS

## Kerangka kerja yang didukung
<a name="distributed-data-parallel-supported-frameworks"></a>

Tabel berikut menunjukkan kerangka kerja pembelajaran mendalam dan versinya yang didukung SageMaker AI dan SMDDP. Pustaka SMDDP tersedia dalam [SageMaker AI Framework Containers, terintegrasi dalam wadah](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#sagemaker-framework-containers-sm-support-only) [Docker yang didistribusikan oleh pustaka SageMaker model paralelisme (SMP) v2, atau dapat diunduh sebagai file biner](distributed-model-parallel-support-v2.md#distributed-model-parallel-supported-frameworks-v2).

**catatan**  
Untuk memeriksa pembaruan terbaru dan catatan rilis perpustakaan SMDDP, lihat. [SageMaker Catatan rilis perpustakaan paralelisme data AI](data-parallel-release-notes.md)

**Topics**
+ [PyTorch](#distributed-data-parallel-supported-frameworks-pytorch)
+ [PyTorch Petir](#distributed-data-parallel-supported-frameworks-lightning)
+ [Trafo Hugging Face](#distributed-data-parallel-supported-frameworks-transformers)
+ [TensorFlow (usang)](#distributed-data-parallel-supported-frameworks-tensorflow)

### PyTorch
<a name="distributed-data-parallel-supported-frameworks-pytorch"></a>


| PyTorch versi | Versi perpustakaan SMDDP | SageMaker Gambar AI Framework Container yang sudah diinstal sebelumnya dengan SMDDP | Gambar SMP Docker yang sudah diinstal sebelumnya dengan SMDDP | URL dari file biner\$1\$1 | 
| --- | --- | --- | --- | --- | 
| v2.3.1 | smdistributed-dataparallel==v2.5.0 | Tidak tersedia | 658645717510.dkr.ecr.<us-west-2>.amazonaws.com/smdistributed-modelparallel:2.4.1-gpu-py311-cu121 | https://smdataparallel.s3.amazonaws.com/binary/pytorch/2.4.1/cu121/2024-10-09/smdistributed\$1dataparallel-2.5.0-cp311-cp311-linux\$1x86\$164.whl | 
| v2.3.0 | smdistributed-dataparallel==v2.3.0 | 763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:2.3.0-gpu-py311-cu121-ubuntu20.04-sagemaker | Saat ini tidak tersedia | https://smdataparallel.s3.amazonaws.com/binary/pytorch/2.3.0/cu121/2024-05-23/smdistributed\$1dataparallel-2.3.0-cp311-cp311-linux\$1x86\$164.whl | 
| v2.2.0 | smdistributed-dataparallel==v2.2.0 | 763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:2.2.0-gpu-py310-cu121-ubuntu20.04-sagemaker | 658645717510.dkr.ecr.<region>.amazonaws.com/smdistributed-modelparallel:2.2.0-gpu-py310-cu121 | https://smdataparallel.s3.amazonaws.com/binary/pytorch/2.2.0/cu121/2024-03-04/smdistributed\$1dataparallel-2.2.0-cp310-cp310-linux\$1x86\$164.whl | 
| v2.1.0 | smdistributed-dataparallel==v2.1.0 | 763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:2.1.0-gpu-py310-cu121-ubuntu20.04-sagemaker | 658645717510.dkr.ecr.<region>.amazonaws.com/smdistributed-modelparallel:2.1.2-gpu-py310-cu121 | https://smdataparallel.s3.amazonaws.com/binary/pytorch/2.1.0/cu121/2024-02-04/smdistributed\$1dataparallel-2.1.0-cp310-cp310-linux\$1x86\$164.whl | 
| v2.0.1 | smdistributed-dataparallel==v2.0.1 | 763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:2.0.1-gpu-py310-cu118-ubuntu20.04-sagemaker | Tidak tersedia | https://smdataparallel.s3.amazonaws.com/binary/pytorch/2.0.1/cu118/2023-12-07/smdistributed\$1dataparallel-2.0.2-cp310-cp310-linux\$1x86\$164.whl | 
| v2.0.0 | smdistributed-dataparallel==v1.8.0 | 763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:2.0.0-gpu-py310-cu118-ubuntu20.04-sagemaker | Tidak tersedia | https://smdataparallel.s3.amazonaws.com/binary/pytorch/2.0.0/cu118/2023-03-20/smdistributed\$1dataparallel-1.8.0-cp310-cp310-linux\$1x86\$164.whl | 
| v1.13.1 | smdistributed-dataparallel==v1.7.0 | 763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:1.13.1-gpu-py39-cu117-ubuntu20.04-sagemaker | Tidak tersedia | https://smdataparallel.s3.amazonaws.com/binary/pytorch/1.13.1/cu117/2023-01-09/smdistributed\$1dataparallel-1.7.0-cp39-cp39-linux\$1x86\$164.whl | 
| v1.12.1 | smdistributed-dataparallel==v1.6.0 | 763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:1.12.1-gpu-py38-cu113-ubuntu20.04-sagemaker | Tidak tersedia | https://smdataparallel.s3.amazonaws.com/binary/pytorch/1.12.1/cu113/2022-12-05/smdistributed\$1dataparallel-1.6.0-cp38-cp38-linux\$1x86\$164.whl | 
| v1.12.0 | smdistributed-dataparallel==v1.5.0 | 763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:1.12.0-gpu-py38-cu113-ubuntu20.04-sagemaker | Tidak tersedia | https://smdataparallel.s3.amazonaws.com/binary/pytorch/1.12.0/cu113/2022-07-01/smdistributed\$1dataparallel-1.5.0-cp38-cp38-linux\$1x86\$164.whl | 
| v1.11.0 | smdistributed-dataparallel==v1.4.1 | 763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:1.11.0-gpu-py38-cu113-ubuntu20.04-sagemaker | Tidak tersedia | https://smdataparallel.s3.amazonaws.com/binary/pytorch/1.11.0/cu113/2022-04-14/smdistributed\$1dataparallel-1.4.1-cp38-cp38-linux\$1x86\$164.whl | 

\$1\$1 File biner adalah untuk menginstal perpustakaan SMDDP dalam wadah khusus. URLs Untuk informasi selengkapnya, lihat [Buat wadah Docker Anda sendiri dengan perpustakaan paralel data terdistribusi SageMaker AI](data-parallel-bring-your-own-container.md).

**catatan**  
Pustaka SMDDP tersedia di Wilayah AWS tempat [SageMaker AI Framework Containers](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#sagemaker-framework-containers-sm-support-only) dan [gambar SMP Docker](distributed-model-parallel-support-v2.md) berada dalam layanan.

**catatan**  
Pustaka SMDDP v1.4.0 dan yang lebih baru berfungsi sebagai backend paralelisme data terdistribusi ( PyTorch torch.distributed) (torch.parallel. DistributedDataParallel). Sesuai dengan perubahan, [smdistributed](https://sagemaker.readthedocs.io/en/stable/api/training/sdp_versions/latest/smd_data_parallel_pytorch.html#pytorch-api) berikut APIs untuk paket PyTorch terdistribusi telah usang.  
`smdistributed.dataparallel.torch.distributed`sudah usang. Gunakan paket [torch.distributed](https://pytorch.org/docs/stable/distributed.html) sebagai gantinya.
`smdistributed.dataparallel.torch.parallel.DistributedDataParallel`sudah usang. Gunakan [torch.nn.parallel. DistributedDataParallel](https://pytorch.org/docs/stable/generated/torch.nn.parallel.DistributedDataParallel.html) API sebagai gantinya.
Jika Anda perlu menggunakan versi pustaka sebelumnya (v1.3.0 atau sebelumnya), lihat dokumentasi [paralelisme data terdistribusi SageMaker AI yang diarsipkan dalam dokumentasi](https://sagemaker.readthedocs.io/en/stable/api/training/sdp_versions/latest.html#documentation-archive) AI *SageMaker Python* SDK.

### PyTorch Petir
<a name="distributed-data-parallel-supported-frameworks-lightning"></a>

Pustaka SMDDP tersedia untuk PyTorch Lightning di Wadah Kerangka SageMaker AI berikut untuk PyTorch dan wadah SMP Docker.

**PyTorch Petir v2**


| PyTorch Versi petir | PyTorch versi | Versi perpustakaan SMDDP | SageMaker Gambar AI Framework Container yang sudah diinstal sebelumnya dengan SMDDP | Gambar SMP Docker yang sudah diinstal sebelumnya dengan SMDDP | URL dari file biner\$1\$1 | 
| --- | --- | --- | --- | --- | --- | 
| 2.2.5 | 2.3.0 | smdistributed-dataparallel==v2.3.0 | 763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:2.3.0-gpu-py311-cu121-ubuntu20.04-sagemaker | Saat ini tidak tersedia | https://smdataparallel.s3.amazonaws.com/binary/pytorch/2.3.0/cu121/2024-05-23/smdistributed\$1dataparallel-2.3.0-cp311-cp311-linux\$1x86\$164.whl | 
| 2.2.0 | 2.2.0 | smdistributed-dataparallel==v2.2.0 | 763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:2.2.0-gpu-py310-cu121-ubuntu20.04-sagemaker | 658645717510.dkr.ecr.<region>.amazonaws.com/smdistributed-modelparallel:2.2.0-gpu-py310-cu121 | https://smdataparallel.s3.amazonaws.com/binary/pytorch/2.2.0/cu121/2024-03-04/smdistributed\$1dataparallel-2.2.0-cp310-cp310-linux\$1x86\$164.whl | 
| 2.1.2 | 2.1.0 | smdistributed-dataparallel==v2.1.0 | 763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:2.1.0-gpu-py310-cu121-ubuntu20.04-sagemaker | 658645717510.dkr.ecr.<region>.amazonaws.com/smdistributed-modelparallel:2.1.2-gpu-py310-cu121 | https://smdataparallel.s3.amazonaws.com/binary/pytorch/2.1.0/cu121/2024-02-04/smdistributed\$1dataparallel-2.1.0-cp310-cp310-linux\$1x86\$164.whl | 
| 2.1.0 | 2.0.1 | smdistributed-dataparallel==v2.0.1 | 763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:2.0.1-gpu-py310-cu118-ubuntu20.04-sagemaker | Tidak tersedia | https://smdataparallel.s3.amazonaws.com/binary/pytorch/2.0.1/cu118/2023-12-07/smdistributed\$1dataparallel-2.0.2-cp310-cp310-linux\$1x86\$164.whl | 

**PyTorch Petir v1**


| PyTorch Versi petir | PyTorch versi | Versi perpustakaan SMDDP | SageMaker Gambar AI Framework Container yang sudah diinstal sebelumnya dengan SMDDP | URL dari file biner\$1\$1 | 
| --- | --- | --- | --- | --- | 
|  1.7.2 1.7.0 1.6.4 1.6.3 1.5.10  | 1.12.0 | smdistributed-dataparallel==v1.5.0 | 763104351884.dkr.ecr. <region>.amazonaws.com/pytorch-training:1.12.0-gpu-py38-cu113-ubuntu20.04-sagemaker | https://smdataparallel.s3.amazonaws.com/binary/pytorch/1.12.0/cu113/2022-07-01/smdistributed\$1dataparallel-1.5.0-cp38-cp38-linux\$1x86\$164.whl | 

\$1\$1 File biner adalah untuk menginstal perpustakaan SMDDP dalam wadah khusus. URLs Untuk informasi selengkapnya, lihat [Buat wadah Docker Anda sendiri dengan perpustakaan paralel data terdistribusi SageMaker AI](data-parallel-bring-your-own-container.md).

**catatan**  
PyTorch Lightning dan perpustakaan utilitasnya seperti Lightning Bolts tidak diinstal sebelumnya di file. PyTorch DLCs Saat Anda membuat PyTorch estimator SageMaker AI dan mengirimkan permintaan pekerjaan pelatihan di [Langkah 2](https://docs.aws.amazon.com/sagemaker/latest/dg/data-parallel-use-api.html#data-parallel-framework-estimator), Anda perlu menyediakan `requirements.txt` untuk menginstal `pytorch-lightning` dan `lightning-bolts` dalam wadah PyTorch pelatihan SageMaker AI.  

```
# requirements.txt
pytorch-lightning
lightning-bolts
```
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.

### Trafo Hugging Face
<a name="distributed-data-parallel-supported-frameworks-transformers"></a>

 AWS Deep Learning Containers untuk Hugging Face menggunakan SageMaker Wadah Pelatihan PyTorch untuk TensorFlow dan sebagai gambar dasarnya. [Untuk mencari versi pustaka Hugging Face Transformers dan PyTorch dipasangkan TensorFlow dan versi, lihat Wadah Wajah Pelukan terbaru [dan Versi Wadah Wajah Pelukan](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#huggingface-training-containers) Sebelumnya.](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#prior-hugging-face-container-versions)

### TensorFlow (usang)
<a name="distributed-data-parallel-supported-frameworks-tensorflow"></a>

**penting**  
Pustaka SMDDP menghentikan dukungan untuk TensorFlow dan tidak lagi tersedia di TensorFlow lebih dari DLCs v2.11.0. Tabel berikut mencantumkan sebelumnya DLCs untuk TensorFlow dengan pustaka SMDDP diinstal.


| TensorFlow versi | Versi perpustakaan SMDDP | 
| --- | --- | 
| 2.9.1, 2.10.1, 2.11.0 |  smdistributed-dataparallel==v1.4.1  | 
| 2.8.3 |  smdistributed-dataparallel==v1.3.0  | 

## Wilayah AWS
<a name="distributed-data-parallel-availablity-zone"></a>

Pustaka SMDDP tersedia di semua Wilayah AWS tempat [AWS Deep Learning Containers untuk SageMaker AI](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#sagemaker-framework-containers-sm-support-only) dan [gambar SMP Docker](distributed-model-parallel-support-v2.md) berada dalam layanan.

## Tipe instans yang didukung
<a name="distributed-data-parallel-supported-instance-types"></a>

Pustaka SMDDP membutuhkan salah satu jenis contoh berikut.


| Tipe instans | 
| --- | 
| ml.p3dn.24xlarge\$1 | 
| ml.p4d.24xlarge | 
| ml.p4de.24xlarge | 

**Tip**  
Untuk menjalankan pelatihan terdistribusi dengan benar pada jenis instans yang mendukung EFA, Anda harus mengaktifkan lalu lintas antar instans dengan menyiapkan grup keamanan VPC Anda untuk memungkinkan semua lalu lintas masuk dan keluar ke dan dari grup keamanan itu sendiri. Untuk mempelajari cara mengatur aturan grup keamanan, lihat [Langkah 1: Mempersiapkan grup keamanan berkemampuan EFA di Panduan](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa-start.html#efa-start-security) Pengguna *Amazon EC2*.

**penting**  
\$1 Perpustakaan SMDDP telah menghentikan dukungan untuk mengoptimalkan operasi komunikasi kolektifnya pada instans P3. Meskipun Anda masih dapat menggunakan `AllReduce` kolektif SMDDP yang dioptimalkan pada `ml.p3dn.24xlarge` instance, tidak akan ada dukungan pengembangan lebih lanjut untuk meningkatkan kinerja pada jenis instance ini. Perhatikan bahwa `AllGather` kolektif yang dioptimalkan SMDDP hanya tersedia untuk instance P4.

Untuk spesifikasi jenis instans, lihat bagian **Komputasi Akselerasi** di halaman Jenis [Instans Amazon EC2](https://aws.amazon.com/ec2/instance-types/). Untuk informasi tentang harga instans, lihat [ SageMaker Harga Amazon](https://aws.amazon.com/sagemaker/pricing/).

Jika Anda menemukan pesan kesalahan yang mirip dengan berikut ini, ikuti petunjuk di [Minta peningkatan kuota layanan untuk sumber daya SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/regions-quotas.html#service-limit-increase-request-procedure).

```
ResourceLimitExceeded: An error occurred (ResourceLimitExceeded) when calling
the CreateTrainingJob operation: The account-level service limit 'ml.p3dn.24xlarge
for training job usage' is 0 Instances, with current utilization of 0 Instances
and a request delta of 1 Instances.
Please contact AWS support to request an increase for this limit.
```

# Pelatihan terdistribusi dengan perpustakaan paralelisme data terdistribusi SageMaker AI
<a name="data-parallel-modify-sdp"></a>

Pustaka paralelisme data terdistribusi SageMaker AI (SMDDP) dirancang untuk kemudahan penggunaan dan untuk memberikan integrasi yang mulus. PyTorch

Saat melatih model pembelajaran mendalam dengan perpustakaan SMDDP tentang SageMaker AI, Anda dapat fokus menulis skrip pelatihan dan pelatihan model Anda. 

Untuk memulai, impor perpustakaan SMDDP untuk menggunakan operasi kolektifnya yang dioptimalkan. AWS Topik berikut memberikan instruksi tentang apa yang harus ditambahkan ke skrip pelatihan Anda tergantung pada operasi kolektif mana yang ingin Anda optimalkan.

**Topics**
+ [Mengadaptasi skrip pelatihan Anda untuk menggunakan operasi kolektif SMDDP](data-parallel-modify-sdp-select-framework.md)
+ [Meluncurkan pekerjaan pelatihan terdistribusi dengan SMDDP menggunakan Python SageMaker SDK](data-parallel-use-api.md)

# Mengadaptasi skrip pelatihan Anda untuk menggunakan operasi kolektif SMDDP
<a name="data-parallel-modify-sdp-select-framework"></a>

Contoh skrip pelatihan yang disediakan di bagian ini disederhanakan dan hanya menyoroti perubahan yang diperlukan untuk mengaktifkan perpustakaan SageMaker AI distributed data parallelism (SMDDP) dalam skrip pelatihan Anda. Untuk contoh end-to-end notebook Jupyter yang menunjukkan cara menjalankan pekerjaan pelatihan terdistribusi dengan pustaka SMDDP, lihat. [Contoh perpustakaan paralelisme data Amazon SageMaker AI](distributed-data-parallel-v2-examples.md)

**Topics**
+ [Gunakan perpustakaan SMDDP dalam skrip pelatihan Anda PyTorch](data-parallel-modify-sdp-pt.md)
+ [Gunakan perpustakaan SMDDP dalam skrip pelatihan PyTorch Lightning Anda](data-parallel-modify-sdp-pt-lightning.md)
+ [Gunakan pustaka SMDDP dalam skrip TensorFlow pelatihan Anda (tidak digunakan lagi)](data-parallel-modify-sdp-tf2.md)

# Gunakan perpustakaan SMDDP dalam skrip pelatihan Anda PyTorch
<a name="data-parallel-modify-sdp-pt"></a>

[Mulai dari perpustakaan SageMaker AI distributed data parallelism (SMDDP) v1.4.0, Anda dapat menggunakan library sebagai opsi backend untuk paket terdistribusi. PyTorch ](https://pytorch.org/tutorials/beginner/dist_overview.html) Untuk menggunakan SMDDP `AllReduce` dan operasi `AllGather` kolektif, Anda hanya perlu mengimpor perpustakaan SMDDP di awal skrip pelatihan Anda dan menetapkan SMDDP sebagai backend modul terdistribusi selama inisialisasi grup proses. PyTorch Dengan satu baris spesifikasi backend, Anda dapat menyimpan semua modul PyTorch terdistribusi asli dan seluruh skrip pelatihan tidak berubah. [Cuplikan kode berikut menunjukkan cara menggunakan pustaka SMDDP sebagai backend paket pelatihan terdistribusi PyTorch berbasis: distributed [PyTorch data parallel (DDP), [PyTorch full sharded data parallelism](https://pytorch.org/docs/stable/fsdp.html) (FSDP)](https://pytorch.org/docs/stable/notes/ddp.html), dan Megatron-. [DeepSpeed](https://github.com/microsoft/DeepSpeed)DeepSpeed](https://github.com/microsoft/Megatron-DeepSpeed)

## Untuk PyTorch DDP atau FSDP
<a name="data-parallel-enable-for-ptddp-ptfsdp"></a>

Inisialisasi kelompok proses sebagai berikut.

```
import torch.distributed as dist
import smdistributed.dataparallel.torch.torch_smddp

dist.init_process_group(backend="smddp")
```

**catatan**  
(Hanya untuk pekerjaan PyTorch DDP) `smddp` Backend saat ini tidak mendukung pembuatan grup subproses dengan API. `torch.distributed.new_group()` Anda juga tidak dapat menggunakan `smddp` backend secara bersamaan dengan backend grup proses lainnya seperti dan. `NCCL` `Gloo`

## Untuk DeepSpeed atau Megatron- DeepSpeed
<a name="data-parallel-enable-for-deepspeed"></a>

Inisialisasi kelompok proses sebagai berikut.

```
import deepspeed
import smdistributed.dataparallel.torch.torch_smddp

deepspeed.init_distributed(dist_backend="smddp")
```

**catatan**  
Untuk menggunakan SMDDP `AllGather` dengan peluncur `mpirun` berbasis (`smdistributed`dan`pytorchddp`) di[Meluncurkan pekerjaan pelatihan terdistribusi dengan SMDDP menggunakan Python SageMaker SDK](data-parallel-use-api.md), Anda juga perlu mengatur variabel lingkungan berikut dalam skrip pelatihan Anda.  

```
export SMDATAPARALLEL_OPTIMIZE_SDP=true
```

Untuk panduan umum tentang menulis skrip pelatihan PyTorch FSDP, lihat [Pelatihan Model Lanjutan dengan Paralel Data Berbagi Penuh (FSDP](https://pytorch.org/tutorials/intermediate/FSDP_adavnced_tutorial.html)) dalam dokumentasi. PyTorch

Untuk panduan umum tentang menulis skrip pelatihan PyTorch DDP, lihat [Memulai dengan data terdistribusi paralel](https://pytorch.org/tutorials/intermediate/ddp_tutorial.html) dalam PyTorch dokumentasi.

Setelah Anda selesai mengadaptasi skrip pelatihan Anda, lanjutkan ke[Meluncurkan pekerjaan pelatihan terdistribusi dengan SMDDP menggunakan Python SageMaker SDK](data-parallel-use-api.md).

# Gunakan perpustakaan SMDDP dalam skrip pelatihan PyTorch Lightning Anda
<a name="data-parallel-modify-sdp-pt-lightning"></a>

Jika Anda ingin membawa skrip pelatihan [PyTorchLightning](https://pytorch-lightning.readthedocs.io/en/latest/starter/introduction.html) dan menjalankan pekerjaan pelatihan paralel data terdistribusi di SageMaker AI, Anda dapat menjalankan pekerjaan pelatihan dengan sedikit perubahan dalam skrip pelatihan Anda. Perubahan yang diperlukan meliputi: mengimpor PyTorch modul `smdistributed.dataparallel` perpustakaan, mengatur variabel lingkungan untuk PyTorch Lightning untuk menerima variabel lingkungan SageMaker AI yang telah ditetapkan oleh toolkit SageMaker pelatihan, dan mengaktifkan perpustakaan SMDDP dengan menyetel backend grup proses ke. `"smddp"` Untuk mempelajari lebih lanjut, ikuti instruksi berikut yang memecah langkah-langkah dengan contoh kode.

**catatan**  
Dukungan PyTorch Lightning tersedia di perpustakaan paralel data SageMaker AI v1.5.0 dan yang lebih baru.

## PyTorch Petir == v2.1.0 dan == 2.0.1 PyTorch
<a name="smddp-pt-201-lightning-210"></a>

1. Impor `pytorch_lightning` perpustakaan dan `smdistributed.dataparallel.torch` modul.

   ```
   import lightning as pl
   import smdistributed.dataparallel.torch.torch_smddp
   ```

1. Instantiate. [LightningEnvironment](https://pytorch-lightning.readthedocs.io/en/stable/api/pytorch_lightning.plugins.environments.LightningEnvironment.html)

   ```
   from lightning.fabric.plugins.environments.lightning import LightningEnvironment
   
   env = LightningEnvironment()
   env.world_size = lambda: int(os.environ["WORLD_SIZE"])
   env.global_rank = lambda: int(os.environ["RANK"])
   ```

1. **Untuk PyTorch DDP** — Buat objek [DDPStrategy](https://lightning.ai/docs/pytorch/stable/api/lightning.pytorch.strategies.DDPStrategy.html)kelas dengan `"smddp"` for `process_group_backend` dan `"gpu"` for`accelerator`, dan berikan itu ke kelas [Trainer](https://pytorch-lightning.readthedocs.io/en/stable/common/trainer.html).

   ```
   import lightning as pl
   from lightning.pytorch.strategies import DDPStrategy
   
   ddp = DDPStrategy(
       cluster_environment=env, 
       process_group_backend="smddp", 
       accelerator="gpu"
   )
   
   trainer = pl.Trainer(
       max_epochs=200, 
       strategy=ddp, 
       devices=num_gpus, 
       num_nodes=num_nodes
   )
   ```

   **Untuk PyTorch FSDP** [- Buat objek [FSDPStrategy](https://lightning.ai/docs/pytorch/stable/api/lightning.pytorch.strategies.FSDPStrategy.html)kelas (dengan [kebijakan pembungkus](https://pytorch.org/docs/stable/fsdp.html) pilihan) dengan `"smddp"` for `process_group_backend` dan `"gpu"` for`accelerator`, dan teruskan ke kelas Trainer.](https://pytorch-lightning.readthedocs.io/en/stable/common/trainer.html)

   ```
   import lightning as pl
   from lightning.pytorch.strategies import FSDPStrategy
   
   from functools import partial
   from torch.distributed.fsdp.wrap import size_based_auto_wrap_policy
   
   policy = partial(
       size_based_auto_wrap_policy, 
       min_num_params=10000
   )
   
   fsdp = FSDPStrategy(
       auto_wrap_policy=policy,
       process_group_backend="smddp", 
       cluster_environment=env
   )
   
   trainer = pl.Trainer(
       max_epochs=200, 
       strategy=fsdp, 
       devices=num_gpus, 
       num_nodes=num_nodes
   )
   ```

Setelah Anda selesai mengadaptasi skrip pelatihan Anda, lanjutkan ke[Meluncurkan pekerjaan pelatihan terdistribusi dengan SMDDP menggunakan Python SageMaker SDK](data-parallel-use-api.md). 

**catatan**  
Saat Anda membuat PyTorch estimator SageMaker AI dan mengajukan permintaan pekerjaan pelatihan[Meluncurkan pekerjaan pelatihan terdistribusi dengan SMDDP menggunakan Python SageMaker SDK](data-parallel-use-api.md), Anda perlu menyediakan `requirements.txt` untuk menginstal `pytorch-lightning` dan `lightning-bolts` dalam wadah PyTorch pelatihan SageMaker AI.  

```
# requirements.txt
pytorch-lightning
lightning-bolts
```
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.

# Gunakan pustaka SMDDP dalam skrip TensorFlow pelatihan Anda (tidak digunakan lagi)
<a name="data-parallel-modify-sdp-tf2"></a>

**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 perpustakaan SMDDP diinstal, lihat. [Kerangka kerja yang didukung](distributed-data-parallel-support.md#distributed-data-parallel-supported-frameworks)

Langkah-langkah berikut menunjukkan cara memodifikasi skrip TensorFlow pelatihan untuk memanfaatkan perpustakaan paralel data terdistribusi SageMaker AI.  

Perpustakaan APIs dirancang agar mirip dengan Horovod APIs. Untuk detail tambahan tentang setiap API yang ditawarkan library TensorFlow, lihat [dokumentasi TensorFlow API paralel data terdistribusi SageMaker AI](https://sagemaker.readthedocs.io/en/stable/api/training/smd_data_parallel.html#api-documentation).

**catatan**  
SageMaker AI distributed data parallel dapat disesuaikan dengan skrip TensorFlow pelatihan yang terdiri dari modul `tf` inti kecuali `tf.keras` modul. SageMaker AI distributed data parallel tidak mendukung TensorFlow implementasi Keras.

**catatan**  
Pustaka paralelisme data terdistribusi SageMaker AI mendukung Automatic Mixed Precision (AMP) di luar kotak. Tidak diperlukan tindakan tambahan untuk mengaktifkan AMP selain modifikasi tingkat kerangka kerja pada skrip pelatihan Anda. Jika gradien masuk FP16, perpustakaan paralelisme data SageMaker AI menjalankan operasinya `AllReduce` di. FP16 Untuk informasi selengkapnya tentang penerapan AMP APIs ke skrip pelatihan Anda, lihat sumber daya berikut:  
[Kerangka kerja - TensorFlow dalam dokumentasi](https://docs.nvidia.com/deeplearning/performance/mixed-precision-training/index.html#tensorflow) *NVIDIA Deep Learning Performance*
[Presisi Campuran Otomatis untuk Pembelajaran Mendalam](https://developer.nvidia.com/automatic-mixed-precision) di *Dokumen Pengembang NVIDIA*
[TensorFlow presisi campuran APIs](https://www.tensorflow.org/guide/mixed_precision) dalam *TensorFlowdokumentasi*

1. Impor TensorFlow klien perpustakaan dan inisialisasi.

   ```
   import smdistributed.dataparallel.tensorflow as sdp 
   sdp.init()
   ```

1. Sematkan setiap GPU ke satu `smdistributed.dataparallel` proses dengan `local_rank` —ini mengacu pada peringkat relatif proses dalam node tertentu. `sdp.tensorflow.local_rank()`API memberi Anda peringkat lokal perangkat. Node pemimpin adalah peringkat 0, dan node pekerja adalah peringkat 1, 2, 3, dan seterusnya. Ini dipanggil dalam blok kode berikut sebagai`sdp.local_rank()`. `set_memory_growth`tidak terkait langsung dengan SageMaker AI yang didistribusikan, tetapi harus ditetapkan untuk pelatihan terdistribusi dengan TensorFlow. 

   ```
   gpus = tf.config.experimental.list_physical_devices('GPU')
   for gpu in gpus:
       tf.config.experimental.set_memory_growth(gpu, True)
   if gpus:
       tf.config.experimental.set_visible_devices(gpus[sdp.local_rank()], 'GPU')
   ```

1. Skala tingkat pembelajaran dengan jumlah pekerja. `sdp.tensorflow.size()`API memberi Anda jumlah pekerja di cluster. Ini dipanggil dalam blok kode berikut sebagai`sdp.size()`. 

   ```
   learning_rate = learning_rate * sdp.size()
   ```

1. Gunakan perpustakaan `DistributedGradientTape` untuk mengoptimalkan `AllReduce` operasi selama pelatihan. Ini membungkus`tf.GradientTape`.  

   ```
   with tf.GradientTape() as tape:
         output = model(input)
         loss_value = loss(label, output)
       
   # SageMaker AI data parallel: Wrap tf.GradientTape with the library's DistributedGradientTape
   tape = sdp.DistributedGradientTape(tape)
   ```

1. Siarkan variabel model awal dari node pemimpin (peringkat 0) ke semua node pekerja (peringkat 1 hingga n). Ini diperlukan untuk memastikan inisialisasi yang konsisten di semua peringkat pekerja. Gunakan `sdp.tensorflow.broadcast_variables` API setelah variabel model dan pengoptimal diinisialisasi. Ini dipanggil dalam blok kode berikut sebagai`sdp.broadcast_variables()`. 

   ```
   sdp.broadcast_variables(model.variables, root_rank=0)
   sdp.broadcast_variables(opt.variables(), root_rank=0)
   ```

1. Terakhir, modifikasi skrip Anda untuk menyimpan pos pemeriksaan hanya pada node pemimpin. Node pemimpin memiliki model yang disinkronkan. Ini juga menghindari node pekerja yang menimpa pos pemeriksaan dan mungkin merusak pos pemeriksaan. 

   ```
   if sdp.rank() == 0:
       checkpoint.save(checkpoint_dir)
   ```

Berikut ini adalah contoh skrip TensorFlow pelatihan untuk pelatihan terdistribusi dengan perpustakaan.

```
import tensorflow as tf

# SageMaker AI data parallel: Import the library TF API
import smdistributed.dataparallel.tensorflow as sdp

# SageMaker AI data parallel: Initialize the library
sdp.init()

gpus = tf.config.experimental.list_physical_devices('GPU')
for gpu in gpus:
    tf.config.experimental.set_memory_growth(gpu, True)
if gpus:
    # SageMaker AI data parallel: Pin GPUs to a single library process
    tf.config.experimental.set_visible_devices(gpus[sdp.local_rank()], 'GPU')

# Prepare Dataset
dataset = tf.data.Dataset.from_tensor_slices(...)

# Define Model
mnist_model = tf.keras.Sequential(...)
loss = tf.losses.SparseCategoricalCrossentropy()

# SageMaker AI data parallel: Scale Learning Rate
# LR for 8 node run : 0.000125
# LR for single node run : 0.001
opt = tf.optimizers.Adam(0.000125 * sdp.size())

@tf.function
def training_step(images, labels, first_batch):
    with tf.GradientTape() as tape:
        probs = mnist_model(images, training=True)
        loss_value = loss(labels, probs)

    # SageMaker AI data parallel: Wrap tf.GradientTape with the library's DistributedGradientTape
    tape = sdp.DistributedGradientTape(tape)

    grads = tape.gradient(loss_value, mnist_model.trainable_variables)
    opt.apply_gradients(zip(grads, mnist_model.trainable_variables))

    if first_batch:
       # SageMaker AI data parallel: Broadcast model and optimizer variables
       sdp.broadcast_variables(mnist_model.variables, root_rank=0)
       sdp.broadcast_variables(opt.variables(), root_rank=0)

    return loss_value

...

# SageMaker AI data parallel: Save checkpoints only from master node.
if sdp.rank() == 0:
    checkpoint.save(checkpoint_dir)
```

Setelah Anda selesai mengadaptasi skrip pelatihan Anda, lanjutkan ke[Meluncurkan pekerjaan pelatihan terdistribusi dengan SMDDP menggunakan Python SageMaker SDK](data-parallel-use-api.md). 

# Meluncurkan pekerjaan pelatihan terdistribusi dengan SMDDP menggunakan Python SageMaker SDK
<a name="data-parallel-use-api"></a>

Untuk menjalankan pekerjaan pelatihan terdistribusi dengan skrip adaptasi Anda dari[Mengadaptasi skrip pelatihan Anda untuk menggunakan operasi kolektif SMDDP](data-parallel-modify-sdp-select-framework.md), gunakan kerangka kerja SageMaker Python SDK atau estimator generik dengan menentukan skrip pelatihan yang disiapkan sebagai skrip titik masuk dan konfigurasi pelatihan terdistribusi.

Halaman ini memandu Anda melalui cara menggunakan [SageMaker AI Python SDK](https://sagemaker.readthedocs.io/en/stable/api/training/index.html) dalam dua cara.
+ Jika Anda ingin mencapai adopsi cepat dari pekerjaan pelatihan terdistribusi Anda di SageMaker AI, konfigurasikan kelas SageMaker AI [PyTorch](https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/sagemaker.pytorch.html#sagemaker.pytorch.estimator.PyTorch)atau penaksir [TensorFlow](https://sagemaker.readthedocs.io/en/stable/frameworks/tensorflow/sagemaker.tensorflow.html#tensorflow-estimator)kerangka kerja. Estimator framework mengambil skrip latihan Anda dan secara otomatis mencocokkan URI gambar yang tepat dari Deep Learning Containers (DLC) yang [sudah dibuat sebelumnya PyTorch atau TensorFlow Deep Learning Containers (DLC)](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#sagemaker-framework-containers-sm-support-only), dengan nilai yang ditentukan pada parameter. `framework_version`
+ Jika Anda ingin memperluas salah satu container yang sudah dibuat sebelumnya atau membuat container khusus untuk membuat lingkungan MLmu sendiri dengan SageMaker AI, gunakan `Estimator` class generik AI dan tentukan URI image dari container Docker kustom yang dihosting di Amazon Elastic Container Registry (Amazon ECR). SageMaker 

Kumpulan data pelatihan Anda harus disimpan di Amazon S3 [atau FSx Amazon](https://docs.aws.amazon.com/fsx/latest/LustreGuide/what-is.html) untuk Lustre Wilayah AWS di mana Anda meluncurkan pekerjaan pelatihan Anda. Jika Anda menggunakan notebook Jupyter, Anda harus memiliki instance SageMaker notebook atau aplikasi SageMaker Studio Classic yang berjalan dalam hal yang sama. Wilayah AWS Untuk informasi selengkapnya tentang menyimpan data latihan, lihat dokumentasi [SageMaker input data SDK Python](https://sagemaker.readthedocs.io/en/stable/overview.html#use-file-systems-as-training-input). 

**Tip**  
Kami menyarankan Anda menggunakan Amazon FSx untuk Lustre alih-alih Amazon S3 untuk meningkatkan kinerja pelatihan. Amazon FSx memiliki throughput yang lebih tinggi dan latensi yang lebih rendah daripada Amazon S3.

**Tip**  
Untuk menjalankan pelatihan terdistribusi dengan benar pada jenis instans yang mendukung EFA, Anda harus mengaktifkan lalu lintas antar instans dengan menyiapkan grup keamanan VPC Anda untuk memungkinkan semua lalu lintas masuk dan keluar ke dan dari grup keamanan itu sendiri. Untuk mempelajari cara mengatur aturan grup keamanan, lihat [Langkah 1: Mempersiapkan grup keamanan berkemampuan EFA di Panduan](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa-start.html#efa-start-security) Pengguna *Amazon EC2*.

Pilih salah satu topik berikut untuk instruksi tentang cara menjalankan pekerjaan pelatihan terdistribusi dari skrip pelatihan Anda. Setelah Anda meluncurkan pekerjaan pelatihan, Anda dapat memantau pemanfaatan sistem dan kinerja model menggunakan [Amazon SageMaker Debugger](train-debugger.md) atau Amazon CloudWatch.

Saat Anda mengikuti petunjuk dalam topik berikut untuk mempelajari lebih lanjut tentang detail teknis, kami juga menyarankan Anda mencoba [Contoh perpustakaan paralelisme data Amazon SageMaker AI](distributed-data-parallel-v2-examples.md) untuk memulai.

**Topics**
+ [Gunakan estimator PyTorch kerangka kerja di SageMaker Python SDK](data-parallel-framework-estimator.md)
+ [Gunakan estimator generik SageMaker AI untuk memperluas wadah DLC yang sudah dibuat sebelumnya](data-parallel-use-python-skd-api.md)
+ [Buat wadah Docker Anda sendiri dengan perpustakaan paralel data terdistribusi SageMaker AI](data-parallel-bring-your-own-container.md)

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

------

# Gunakan estimator generik SageMaker AI untuk memperluas wadah DLC yang sudah dibuat sebelumnya
<a name="data-parallel-use-python-skd-api"></a>

Anda dapat menyesuaikan kontainer prebuilt SageMaker AI atau memperluasnya untuk menangani persyaratan fungsional tambahan apa pun untuk algoritme atau model Anda yang tidak didukung oleh image SageMaker AI Docker bawaan. Untuk contoh bagaimana Anda dapat memperluas kontainer yang sudah dibuat sebelumnya, lihat [Memperluas Kontainer Prebuilt](https://docs.aws.amazon.com/sagemaker/latest/dg/prebuilt-containers-extend.html).

Untuk memperluas wadah bawaan atau menyesuaikan wadah Anda sendiri untuk menggunakan pustaka, Anda harus menggunakan salah satu gambar yang tercantum di dalamnya[Kerangka kerja yang didukung](distributed-data-parallel-support.md#distributed-data-parallel-supported-frameworks).

**catatan**  
Dari TensorFlow 2.4.1 dan PyTorch 1.8.1, kerangka kerja SageMaker AI DLCs mendukung jenis instans berkemampuan EFA. Kami menyarankan Anda menggunakan gambar DLC yang berisi TensorFlow 2.4.1 atau yang lebih baru dan PyTorch 1.8.1 atau yang lebih baru. 

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

```
# SageMaker AI PyTorch image
FROM 763104351884.dkr.ecr.<aws-region>.amazonaws.com/pytorch-training:<image-tag>

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

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

# /opt/ml and all subdirectories are utilized by SageMaker AI, use the /code subdirectory to store your user code.
COPY train.py /opt/ml/code/train.py

# Defines cifar10.py as script entrypoint
ENV SAGEMAKER_PROGRAM train.py
```

Anda dapat lebih lanjut menyesuaikan wadah Docker Anda sendiri untuk bekerja dengan SageMaker AI menggunakan [toolkit SageMaker Pelatihan](https://github.com/aws/sagemaker-training-toolkit) dan file biner dari perpustakaan paralel SageMaker data terdistribusi AI. Untuk mempelajari lebih lanjut, lihat petunjuk di bagian berikut.

# Buat wadah Docker Anda sendiri dengan perpustakaan paralel data terdistribusi SageMaker AI
<a name="data-parallel-bring-your-own-container"></a>

Untuk membangun wadah Docker Anda sendiri untuk pelatihan dan menggunakan perpustakaan paralel data SageMaker AI, Anda harus menyertakan dependensi yang benar dan file biner dari pustaka paralel SageMaker terdistribusi AI di Dockerfile Anda. Bagian ini memberikan instruksi tentang cara membuat Dockerfile lengkap dengan kumpulan dependensi minimum untuk pelatihan terdistribusi di SageMaker AI menggunakan pustaka paralel data.

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

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

1. Mulailah dengan gambar Docker dari [NVIDIA CUDA](https://hub.docker.com/r/nvidia/cuda). [Gunakan versi pengembang cuDNN yang berisi runtime CUDA dan alat pengembangan (header dan pustaka) untuk membangun dari kode sumber. PyTorch ](https://github.com/pytorch/pytorch#from-source)

   ```
   FROM nvidia/cuda:11.3.1-cudnn8-devel-ubuntu20.04
   ```
**Tip**  
Gambar AWS Deep Learning Container (DLC) resmi dibuat dari gambar dasar [NVIDIA CUDA](https://hub.docker.com/r/nvidia/cuda). Jika Anda ingin menggunakan gambar DLC bawaan sebagai referensi sambil mengikuti instruksi lainnya, lihat [AWS Deep Learning Containers](https://github.com/aws/deep-learning-containers/tree/master/pytorch) untuk Dockerfiles. PyTorch 

1. Tambahkan argumen berikut untuk menentukan versi PyTorch dan paket lainnya. Juga, tunjukkan jalur bucket Amazon S3 ke perpustakaan paralel data SageMaker AI dan perangkat lunak lain untuk menggunakan AWS sumber daya, seperti plug-in Amazon S3. 

   Untuk menggunakan versi pustaka pihak ketiga selain yang disediakan dalam contoh kode berikut, kami sarankan Anda melihat ke [Dockerfiles resmi AWS Deep Learning Container PyTorch untuk](https://github.com/aws/deep-learning-containers/tree/master/pytorch/training/docker) menemukan versi yang diuji, kompatibel, dan cocok untuk aplikasi Anda. 

    URLs Untuk menemukan `SMDATAPARALLEL_BINARY` argumen, lihat tabel pencarian di[Kerangka kerja yang didukung](distributed-data-parallel-support.md#distributed-data-parallel-supported-frameworks).

   ```
   ARG PYTORCH_VERSION=1.10.2
   ARG PYTHON_SHORT_VERSION=3.8
   ARG EFA_VERSION=1.14.1
   ARG SMDATAPARALLEL_BINARY=https://smdataparallel.s3.amazonaws.com/binary/pytorch/${PYTORCH_VERSION}/cu113/2022-02-18/smdistributed_dataparallel-1.4.0-cp38-cp38-linux_x86_64.whl
   ARG PT_S3_WHL_GPU=https://aws-s3-plugin.s3.us-west-2.amazonaws.com/binaries/0.0.1/1c3e69e/awsio-0.0.1-cp38-cp38-manylinux1_x86_64.whl
   ARG CONDA_PREFIX="/opt/conda"
   ARG BRANCH_OFI=1.1.3-aws
   ```

1. Atur variabel lingkungan berikut untuk membangun komponen SageMaker pelatihan dengan benar dan menjalankan pustaka paralel data. Anda menggunakan variabel-variabel ini untuk komponen pada langkah selanjutnya.

   ```
   # Set ENV variables required to build PyTorch
   ENV TORCH_CUDA_ARCH_LIST="7.0+PTX 8.0"
   ENV TORCH_NVCC_FLAGS="-Xfatbin -compress-all"
   ENV NCCL_VERSION=2.10.3
   
   # Add OpenMPI to the path.
   ENV PATH /opt/amazon/openmpi/bin:$PATH
   
   # Add Conda to path
   ENV PATH $CONDA_PREFIX/bin:$PATH
   
   # Set this enviroment variable for SageMaker AI to launch SMDDP correctly.
   ENV SAGEMAKER_TRAINING_MODULE=sagemaker_pytorch_container.training:main
   
   # Add enviroment variable for processes to be able to call fork()
   ENV RDMAV_FORK_SAFE=1
   
   # Indicate the container type
   ENV DLC_CONTAINER_TYPE=training
   
   # Add EFA and SMDDP to LD library path
   ENV LD_LIBRARY_PATH="/opt/conda/lib/python${PYTHON_SHORT_VERSION}/site-packages/smdistributed/dataparallel/lib:$LD_LIBRARY_PATH"
   ENV LD_LIBRARY_PATH=/opt/amazon/efa/lib/:$LD_LIBRARY_PATH
   ```

1. Instal atau perbarui `curl``wget`,, dan `git` unduh dan buat paket di langkah selanjutnya.

   ```
   RUN --mount=type=cache,id=apt-final,target=/var/cache/apt \
       apt-get update && apt-get install -y  --no-install-recommends \
           curl \
           wget \
           git \
       && rm -rf /var/lib/apt/lists/*
   ```

1. Instal [perangkat lunak Elastic Fabric Adapter (EFA) untuk komunikasi](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa.html) jaringan Amazon EC2.

   ```
   RUN DEBIAN_FRONTEND=noninteractive apt-get update
   RUN mkdir /tmp/efa \
       && cd /tmp/efa \
       && curl --silent -O https://efa-installer.amazonaws.com/aws-efa-installer-${EFA_VERSION}.tar.gz \
       && tar -xf aws-efa-installer-${EFA_VERSION}.tar.gz \
       && cd aws-efa-installer \
       && ./efa_installer.sh -y --skip-kmod -g \
       && rm -rf /tmp/efa
   ```

1. Instal [Conda](https://docs.conda.io/en/latest/) untuk menangani manajemen paket. 

   ```
   RUN curl -fsSL -v -o ~/miniconda.sh -O  https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh  && \
       chmod +x ~/miniconda.sh && \
       ~/miniconda.sh -b -p $CONDA_PREFIX && \
       rm ~/miniconda.sh && \
       $CONDA_PREFIX/bin/conda install -y python=${PYTHON_SHORT_VERSION} conda-build pyyaml numpy ipython && \
       $CONDA_PREFIX/bin/conda clean -ya
   ```

1. Dapatkan, bangun, PyTorch dan instal serta dependensinya. Kami membangun [PyTorch dari kode sumber](https://github.com/pytorch/pytorch#from-source) karena kami perlu memiliki kontrol versi NCCL untuk menjamin kompatibilitas dengan plug-in [AWS OFI](https://github.com/aws/aws-ofi-nccl) NCCL.

   1. Mengikuti langkah-langkah di [dockerfile PyTorch resmi](https://github.com/pytorch/pytorch/blob/master/Dockerfile), instal dependensi build dan atur [ccache untuk mempercepat kompilasi ulang](https://ccache.dev/).

      ```
      RUN DEBIAN_FRONTEND=noninteractive \
          apt-get install -y --no-install-recommends \
              build-essential \
              ca-certificates \
              ccache \
              cmake \
              git \
              libjpeg-dev \
              libpng-dev \
          && rm -rf /var/lib/apt/lists/*
        
      # Setup ccache
      RUN /usr/sbin/update-ccache-symlinks
      RUN mkdir /opt/ccache && ccache --set-config=cache_dir=/opt/ccache
      ```

   1. [Ketergantungan umum dan Linux](https://github.com/pytorch/pytorch#install-dependencies) InstallPyTorch.

      ```
      # Common dependencies for PyTorch
      RUN conda install astunparse numpy ninja pyyaml mkl mkl-include setuptools cmake cffi typing_extensions future six requests dataclasses
      
      # Linux specific dependency for PyTorch
      RUN conda install -c pytorch magma-cuda113
      ```

   1. Kloning [PyTorch GitHubrepositori](https://github.com/pytorch/pytorch).

      ```
      RUN --mount=type=cache,target=/opt/ccache \
          cd / \
          && git clone --recursive https://github.com/pytorch/pytorch -b v${PYTORCH_VERSION}
      ```

   1. Instal dan buat versi [NCCL](https://developer.nvidia.com/nccl) tertentu. Untuk melakukan ini, ganti konten di folder NCCL default (`/pytorch/third_party/nccl`) dengan versi NCCL tertentu dari repositori NVIDIA. PyTorch Versi NCCL ditetapkan pada langkah 3 panduan ini.

      ```
      RUN cd /pytorch/third_party/nccl \
          && rm -rf nccl \
          && git clone https://github.com/NVIDIA/nccl.git -b v${NCCL_VERSION}-1 \
          && cd nccl \
          && make -j64 src.build CUDA_HOME=/usr/local/cuda NVCC_GENCODE="-gencode=arch=compute_70,code=sm_70 -gencode=arch=compute_80,code=sm_80" \
          && make pkg.txz.build \
          && tar -xvf build/pkg/txz/nccl_*.txz -C $CONDA_PREFIX --strip-components=1
      ```

   1. Membangun dan menginstal PyTorch. Proses ini biasanya memakan waktu sedikit lebih dari 1 jam untuk menyelesaikannya. Itu dibangun menggunakan versi NCCL yang diunduh pada langkah sebelumnya.

      ```
      RUN cd /pytorch \
          && CMAKE_PREFIX_PATH="$(dirname $(which conda))/../" \
          python setup.py install \
          && rm -rf /pytorch
      ```

1. Membangun dan menginstal [AWS plugin OFI NCCL](https://github.com/aws/aws-ofi-nccl). Ini memungkinkan dukungan [libfabric](https://github.com/ofiwg/libfabric) untuk perpustakaan paralel data SageMaker AI.

   ```
   RUN DEBIAN_FRONTEND=noninteractive apt-get update \
       && apt-get install -y --no-install-recommends \
           autoconf \
           automake \
           libtool
   RUN mkdir /tmp/efa-ofi-nccl \
       && cd /tmp/efa-ofi-nccl \
       && git clone https://github.com/aws/aws-ofi-nccl.git -b v${BRANCH_OFI} \
       && cd aws-ofi-nccl \
       && ./autogen.sh \
       && ./configure --with-libfabric=/opt/amazon/efa \
       --with-mpi=/opt/amazon/openmpi \
       --with-cuda=/usr/local/cuda \
       --with-nccl=$CONDA_PREFIX \
       && make \
       && make install \
       && rm -rf /tmp/efa-ofi-nccl
   ```

1. Membangun dan menginstal [TorchVision](https://github.com/pytorch/vision.git).

   ```
   RUN pip install --no-cache-dir -U \
       packaging \
       mpi4py==3.0.3
   RUN cd /tmp \
       && git clone https://github.com/pytorch/vision.git -b v0.9.1 \
       && cd vision \
       && BUILD_VERSION="0.9.1+cu111" python setup.py install \
       && cd /tmp \
       && rm -rf vision
   ```

1. Instal dan konfigurasikan OpenSSH. OpenSSH diperlukan agar MPI dapat berkomunikasi antar kontainer. Izinkan OpenSSH untuk berbicara dengan kontainer tanpa meminta konfirmasi.

   ```
   RUN apt-get update \
       && apt-get install -y  --allow-downgrades --allow-change-held-packages --no-install-recommends \
       && apt-get install -y --no-install-recommends openssh-client openssh-server \
       && mkdir -p /var/run/sshd \
       && cat /etc/ssh/ssh_config | grep -v StrictHostKeyChecking > /etc/ssh/ssh_config.new \
       && echo "    StrictHostKeyChecking no" >> /etc/ssh/ssh_config.new \
       && mv /etc/ssh/ssh_config.new /etc/ssh/ssh_config \
       && rm -rf /var/lib/apt/lists/*
   
   # Configure OpenSSH so that nodes can communicate with each other
   RUN mkdir -p /var/run/sshd && \
    sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
   RUN rm -rf /root/.ssh/ && \
    mkdir -p /root/.ssh/ && \
    ssh-keygen -q -t rsa -N '' -f /root/.ssh/id_rsa && \
    cp /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys \
    && printf "Host *\n StrictHostKeyChecking no\n" >> /root/.ssh/config
   ```

1. Instal plug-in PT S3 untuk mengakses kumpulan data secara efisien di Amazon S3.

   ```
   RUN pip install --no-cache-dir -U ${PT_S3_WHL_GPU}
   RUN mkdir -p /etc/pki/tls/certs && cp /etc/ssl/certs/ca-certificates.crt /etc/pki/tls/certs/ca-bundle.crt
   ```

1. Instal perpustakaan [libboost](https://www.boost.org/). Paket ini diperlukan untuk jaringan fungsionalitas IO asinkron dari perpustakaan paralel SageMaker data AI.

   ```
   WORKDIR /
   RUN wget https://sourceforge.net/projects/boost/files/boost/1.73.0/boost_1_73_0.tar.gz/download -O boost_1_73_0.tar.gz \
       && tar -xzf boost_1_73_0.tar.gz \
       && cd boost_1_73_0 \
       && ./bootstrap.sh \
       && ./b2 threading=multi --prefix=${CONDA_PREFIX} -j 64 cxxflags=-fPIC cflags=-fPIC install || true \
       && cd .. \
       && rm -rf boost_1_73_0.tar.gz \
       && rm -rf boost_1_73_0 \
       && cd ${CONDA_PREFIX}/include/boost
   ```

1. Instal alat SageMaker AI berikut untuk PyTorch pelatihan.

   ```
   WORKDIR /root
   RUN pip install --no-cache-dir -U \
       smclarify \
       "sagemaker>=2,<3" \
       sagemaker-experiments==0.* \
       sagemaker-pytorch-training
   ```

1. Terakhir, instal biner paralel data SageMaker AI dan dependensi yang tersisa.

   ```
   RUN --mount=type=cache,id=apt-final,target=/var/cache/apt \
     apt-get update && apt-get install -y  --no-install-recommends \
     jq \
     libhwloc-dev \
     libnuma1 \
     libnuma-dev \
     libssl1.1 \
     libtool \
     hwloc \
     && rm -rf /var/lib/apt/lists/*
   
   RUN SMDATAPARALLEL_PT=1 pip install --no-cache-dir ${SMDATAPARALLEL_BINARY}
   ```

1. Setelah Anda selesai membuat Dockerfile, lihat [Mengadaptasi Wadah Pelatihan Anda Sendiri untuk mempelajari cara membuat container](https://docs.aws.amazon.com/sagemaker/latest/dg/adapt-training-container.html) Docker, menghostingnya di Amazon ECR, dan menjalankan tugas pelatihan menggunakan Python SDK. SageMaker 

Kode contoh berikut menunjukkan Dockerfile lengkap setelah menggabungkan semua blok kode sebelumnya.

```
# This file creates a docker image with minimum dependencies to run SageMaker AI data parallel training
FROM nvidia/cuda:11.3.1-cudnn8-devel-ubuntu20.04

# Set appropiate versions and location for components
ARG PYTORCH_VERSION=1.10.2
ARG PYTHON_SHORT_VERSION=3.8
ARG EFA_VERSION=1.14.1
ARG SMDATAPARALLEL_BINARY=https://smdataparallel.s3.amazonaws.com/binary/pytorch/${PYTORCH_VERSION}/cu113/2022-02-18/smdistributed_dataparallel-1.4.0-cp38-cp38-linux_x86_64.whl
ARG PT_S3_WHL_GPU=https://aws-s3-plugin.s3.us-west-2.amazonaws.com/binaries/0.0.1/1c3e69e/awsio-0.0.1-cp38-cp38-manylinux1_x86_64.whl
ARG CONDA_PREFIX="/opt/conda"
ARG BRANCH_OFI=1.1.3-aws

# Set ENV variables required to build PyTorch
ENV TORCH_CUDA_ARCH_LIST="3.7 5.0 7.0+PTX 8.0"
ENV TORCH_NVCC_FLAGS="-Xfatbin -compress-all"
ENV NCCL_VERSION=2.10.3

# Add OpenMPI to the path.
ENV PATH /opt/amazon/openmpi/bin:$PATH

# Add Conda to path
ENV PATH $CONDA_PREFIX/bin:$PATH

# Set this enviroment variable for SageMaker AI to launch SMDDP correctly.
ENV SAGEMAKER_TRAINING_MODULE=sagemaker_pytorch_container.training:main

# Add enviroment variable for processes to be able to call fork()
ENV RDMAV_FORK_SAFE=1

# Indicate the container type
ENV DLC_CONTAINER_TYPE=training

# Add EFA and SMDDP to LD library path
ENV LD_LIBRARY_PATH="/opt/conda/lib/python${PYTHON_SHORT_VERSION}/site-packages/smdistributed/dataparallel/lib:$LD_LIBRARY_PATH"
ENV LD_LIBRARY_PATH=/opt/amazon/efa/lib/:$LD_LIBRARY_PATH

# Install basic dependencies to download and build other dependencies
RUN --mount=type=cache,id=apt-final,target=/var/cache/apt \
  apt-get update && apt-get install -y  --no-install-recommends \
  curl \
  wget \
  git \
  && rm -rf /var/lib/apt/lists/*

# Install EFA.
# This is required for SMDDP backend communication
RUN DEBIAN_FRONTEND=noninteractive apt-get update
RUN mkdir /tmp/efa \
    && cd /tmp/efa \
    && curl --silent -O https://efa-installer.amazonaws.com/aws-efa-installer-${EFA_VERSION}.tar.gz \
    && tar -xf aws-efa-installer-${EFA_VERSION}.tar.gz \
    && cd aws-efa-installer \
    && ./efa_installer.sh -y --skip-kmod -g \
    && rm -rf /tmp/efa

# Install Conda
RUN curl -fsSL -v -o ~/miniconda.sh -O  https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh  && \
    chmod +x ~/miniconda.sh && \
    ~/miniconda.sh -b -p $CONDA_PREFIX && \
    rm ~/miniconda.sh && \
    $CONDA_PREFIX/bin/conda install -y python=${PYTHON_SHORT_VERSION} conda-build pyyaml numpy ipython && \
    $CONDA_PREFIX/bin/conda clean -ya

# Install PyTorch.
# Start with dependencies listed in official PyTorch dockerfile
# https://github.com/pytorch/pytorch/blob/master/Dockerfile
RUN DEBIAN_FRONTEND=noninteractive \
    apt-get install -y --no-install-recommends \
        build-essential \
        ca-certificates \
        ccache \
        cmake \
        git \
        libjpeg-dev \
        libpng-dev && \
    rm -rf /var/lib/apt/lists/*

# Setup ccache
RUN /usr/sbin/update-ccache-symlinks
RUN mkdir /opt/ccache && ccache --set-config=cache_dir=/opt/ccache

# Common dependencies for PyTorch
RUN conda install astunparse numpy ninja pyyaml mkl mkl-include setuptools cmake cffi typing_extensions future six requests dataclasses

# Linux specific dependency for PyTorch
RUN conda install -c pytorch magma-cuda113

# Clone PyTorch
RUN --mount=type=cache,target=/opt/ccache \
    cd / \
    && git clone --recursive https://github.com/pytorch/pytorch -b v${PYTORCH_VERSION}
# Note that we need to use the same NCCL version for PyTorch and OFI plugin.
# To enforce that, install NCCL from source before building PT and OFI plugin.

# Install NCCL.
# Required for building OFI plugin (OFI requires NCCL's header files and library)
RUN cd /pytorch/third_party/nccl \
    && rm -rf nccl \
    && git clone https://github.com/NVIDIA/nccl.git -b v${NCCL_VERSION}-1 \
    && cd nccl \
    && make -j64 src.build CUDA_HOME=/usr/local/cuda NVCC_GENCODE="-gencode=arch=compute_70,code=sm_70 -gencode=arch=compute_80,code=sm_80" \
    && make pkg.txz.build \
    && tar -xvf build/pkg/txz/nccl_*.txz -C $CONDA_PREFIX --strip-components=1

# Build and install PyTorch.
RUN cd /pytorch \
    && CMAKE_PREFIX_PATH="$(dirname $(which conda))/../" \
    python setup.py install \
    && rm -rf /pytorch

RUN ccache -C

# Build and install OFI plugin. \
# It is required to use libfabric.
RUN DEBIAN_FRONTEND=noninteractive apt-get update \
    && apt-get install -y --no-install-recommends \
        autoconf \
        automake \
        libtool
RUN mkdir /tmp/efa-ofi-nccl \
    && cd /tmp/efa-ofi-nccl \
    && git clone https://github.com/aws/aws-ofi-nccl.git -b v${BRANCH_OFI} \
    && cd aws-ofi-nccl \
    && ./autogen.sh \
    && ./configure --with-libfabric=/opt/amazon/efa \
        --with-mpi=/opt/amazon/openmpi \
        --with-cuda=/usr/local/cuda \
        --with-nccl=$CONDA_PREFIX \
    && make \
    && make install \
    && rm -rf /tmp/efa-ofi-nccl

# Build and install Torchvision
RUN pip install --no-cache-dir -U \
    packaging \
    mpi4py==3.0.3
RUN cd /tmp \
    && git clone https://github.com/pytorch/vision.git -b v0.9.1 \
    && cd vision \
    && BUILD_VERSION="0.9.1+cu111" python setup.py install \
    && cd /tmp \
    && rm -rf vision

# Install OpenSSH.
# Required for MPI to communicate between containers, allow OpenSSH to talk to containers without asking for confirmation
RUN apt-get update \
    && apt-get install -y  --allow-downgrades --allow-change-held-packages --no-install-recommends \
    && apt-get install -y --no-install-recommends openssh-client openssh-server \
    && mkdir -p /var/run/sshd \
    && cat /etc/ssh/ssh_config | grep -v StrictHostKeyChecking > /etc/ssh/ssh_config.new \
    && echo "    StrictHostKeyChecking no" >> /etc/ssh/ssh_config.new \
    && mv /etc/ssh/ssh_config.new /etc/ssh/ssh_config \
    && rm -rf /var/lib/apt/lists/*
# Configure OpenSSH so that nodes can communicate with each other
RUN mkdir -p /var/run/sshd && \
    sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
RUN rm -rf /root/.ssh/ && \
    mkdir -p /root/.ssh/ && \
    ssh-keygen -q -t rsa -N '' -f /root/.ssh/id_rsa && \
    cp /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys \
    && printf "Host *\n StrictHostKeyChecking no\n" >> /root/.ssh/config

# Install PT S3 plugin.
# Required to efficiently access datasets in Amazon S3
RUN pip install --no-cache-dir -U ${PT_S3_WHL_GPU}
RUN mkdir -p /etc/pki/tls/certs && cp /etc/ssl/certs/ca-certificates.crt /etc/pki/tls/certs/ca-bundle.crt

# Install libboost from source.
# This package is needed for smdataparallel functionality (for networking asynchronous IO).
WORKDIR /
RUN wget https://sourceforge.net/projects/boost/files/boost/1.73.0/boost_1_73_0.tar.gz/download -O boost_1_73_0.tar.gz \
    && tar -xzf boost_1_73_0.tar.gz \
    && cd boost_1_73_0 \
    && ./bootstrap.sh \
    && ./b2 threading=multi --prefix=${CONDA_PREFIX} -j 64 cxxflags=-fPIC cflags=-fPIC install || true \
    && cd .. \
    && rm -rf boost_1_73_0.tar.gz \
    && rm -rf boost_1_73_0 \
    && cd ${CONDA_PREFIX}/include/boost

# Install SageMaker AI PyTorch training.
WORKDIR /root
RUN pip install --no-cache-dir -U \
    smclarify \
    "sagemaker>=2,<3" \
    sagemaker-experiments==0.* \
    sagemaker-pytorch-training

# Install SageMaker AI data parallel binary (SMDDP)
# Start with dependencies
RUN --mount=type=cache,id=apt-final,target=/var/cache/apt \
    apt-get update && apt-get install -y  --no-install-recommends \
        jq \
        libhwloc-dev \
        libnuma1 \
        libnuma-dev \
        libssl1.1 \
        libtool \
        hwloc \
    && rm -rf /var/lib/apt/lists/*

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

**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).

**Tip**  
Jika Anda ingin memperluas Dockerfile khusus untuk menggabungkan pustaka paralel model SageMaker AI, lihat. [Buat Container Docker Anda Sendiri dengan Perpustakaan Paralel Model SageMaker Terdistribusi](model-parallel-sm-sdk.md#model-parallel-bring-your-own-container)

# Contoh perpustakaan paralelisme data Amazon SageMaker AI
<a name="distributed-data-parallel-v2-examples"></a>

Halaman ini menyediakan buku catatan Jupyter yang menyajikan contoh penerapan perpustakaan SageMaker AI distributed data parallelism (SMDDP) untuk menjalankan pekerjaan pelatihan terdistribusi tentang AI. SageMaker 

## Blog dan Studi Kasus
<a name="distributed-data-parallel-v2-examples-blog"></a>

Blog-blog berikut membahas studi kasus tentang penggunaan perpustakaan SMDDP.

**SMDDP v2 blog**
+ [Aktifkan pelatihan lebih cepat dengan library paralel data Amazon SageMaker AI](https://aws.amazon.com/blogs/machine-learning/enable-faster-training-with-amazon-sagemaker-data-parallel-library/), *AWS Machine Learning Blog* (05 Desember 2023)

**SMDDP v1 blog**
+ [Bagaimana saya melatih 10TB untuk Difusi Stabil pada SageMaker AI](https://medium.com/@emilywebber/how-i-trained-10tb-for-stable-diffusion-on-sagemaker-39dcea49ce32) dalam *Medium* (29 November 2022)
+ [Jalankan PyTorch Lightning dan PyTorch DDP asli di Amazon SageMaker Training, menampilkan Amazon Search](https://aws.amazon.com/blogs/machine-learning/run-pytorch-lightning-and-native-pytorch-ddp-on-amazon-sagemaker-training-featuring-amazon-search/), *AWS Machine Learning Blog* (18 Agustus 2022)
+ [Pelatihan YOLOv5 AWS dengan PyTorch dan perpustakaan paralel data terdistribusi SageMaker AI](https://medium.com/@sitecao/training-yolov5-on-aws-with-pytorch-and-sagemaker-distributed-data-parallel-library-a196ab01409b), *Medium* (6 Mei 2022)
+ [Percepat pelatihan EfficientNet model SageMaker AI dengan PyTorch dan perpustakaan paralel data terdistribusi SageMaker AI](https://medium.com/@dangmz/speed-up-efficientnet-model-training-on-amazon-sagemaker-with-pytorch-and-sagemaker-distributed-dae4b048c01a), *Medium* (21 Maret 2022)
+ [Percepat EfficientNet pelatihan AWS dengan perpustakaan paralel data terdistribusi SageMaker AI](https://towardsdatascience.com/speed-up-efficientnet-training-on-aws-by-up-to-30-with-sagemaker-distributed-data-parallel-library-2dbf6d1e18e8), *Menuju Ilmu Data* (12 Januari 2022)
+ [Hyundai mengurangi waktu pelatihan model ML untuk model mengemudi otonom menggunakan Amazon SageMaker AI](https://aws.amazon.com/blogs/machine-learning/hyundai-reduces-training-time-for-autonomous-driving-models-using-amazon-sagemaker/), *AWS Machine Learning Blog* (25 Juni 2021)
+ [Pelatihan Terdistribusi: Latih BART/T5 untuk Ringkasan menggunakan Transformers dan Amazon AI, situs web SageMaker ](https://huggingface.co/blog/sagemaker-distributed-training-seq2seq) Hugging Face (8 *April* 2021)

## Notebook contoh
<a name="distributed-data-parallel-v2-examples-pytorch"></a>

Contoh notebook disediakan di [ GitHub repositori contoh SageMaker AI](https://github.com/aws/amazon-sagemaker-examples/tree/master/training/distributed_training/). Untuk mengunduh contoh, jalankan perintah berikut untuk mengkloning repositori dan pergi ke. `training/distributed_training/pytorch/data_parallel`

**catatan**  
Kloning dan jalankan contoh notebook di SageMaker AI ML berikut. IDEs  
[SageMaker AI JupyterLab](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-jl.html) (tersedia di [Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated.html) yang dibuat setelah Desember 2023)
[SageMaker Editor Kode AI](https://docs.aws.amazon.com/sagemaker/latest/dg/code-editor.html) (tersedia di [Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated.html) yang dibuat setelah Desember 2023)
[Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio.html) (tersedia sebagai aplikasi di [Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated.html) yang dibuat setelah Desember 2023)
[SageMaker Instans Notebook](https://docs.aws.amazon.com/sagemaker/latest/dg/nbi.html)

```
git clone https://github.com/aws/amazon-sagemaker-examples.git
cd amazon-sagemaker-examples/training/distributed_training/pytorch/data_parallel
```

**Contoh SMDDP v2**
+ [Latih Llama 2 menggunakan SageMaker AI distributed data parallel library (SMDDP) dan DeepSpeed](https://github.com/aws/amazon-sagemaker-examples/blob/main/training/distributed_training/pytorch/data_parallel/deepspeed/llama2/smddp_deepspeed_example.ipynb)
+ [Latih Falcon menggunakan SageMaker AI distributed data parallel library (SMDDP) dan PyTorch Fully Sharded Data Parallelism (FSDP)](https://github.com/aws/amazon-sagemaker-examples/blob/main/training/distributed_training/pytorch/data_parallel/fully_sharded_data_parallel/falcon/smddp_fsdp_example.ipynb)

**Contoh SMDDP v1**
+ [CNN dengan PyTorch dan perpustakaan SageMaker paralelisme data AI](https://github.com/aws/amazon-sagemaker-examples/blob/main/training/distributed_training/pytorch/data_parallel/mnist/pytorch_smdataparallel_mnist_demo.ipynb)
+ [BERT dengan PyTorch dan perpustakaan paralelisme data SageMaker AI](https://github.com/aws/amazon-sagemaker-examples/blob/main/training/distributed_training/pytorch/data_parallel/bert/pytorch_smdataparallel_bert_demo.ipynb)
+ [CNN dengan TensorFlow 2.3.1 dan perpustakaan SageMaker paralelisme data AI](https://sagemaker-examples.readthedocs.io/en/latest/training/distributed_training/tensorflow/data_parallel/mnist/tensorflow2_smdataparallel_mnist_demo.html)
+ [BERT dengan TensorFlow 2.3.1 dan perpustakaan paralelisme data SageMaker AI](https://sagemaker-examples.readthedocs.io/en/latest/training/distributed_training/tensorflow/data_parallel/bert/tensorflow2_smdataparallel_bert_demo.html)
+ [HuggingFace Pelatihan Paralel Data Terdistribusi PyTorch di SageMaker AI - Menjawab Pertanyaan Terdistribusi](https://github.com/huggingface/notebooks/blob/master/sagemaker/03_distributed_training_data_parallelism/sagemaker-notebook.ipynb)
+ [HuggingFace Pelatihan Paralel Data Terdistribusi PyTorch di SageMaker AI - Ringkasan Teks Terdistribusi](https://github.com/huggingface/notebooks/blob/master/sagemaker/08_distributed_summarization_bart_t5/sagemaker-notebook.ipynb)
+ [HuggingFace Pelatihan Paralel Data Terdistribusi TensorFlow di SageMaker AI](https://github.com/huggingface/notebooks/blob/master/sagemaker/07_tensorflow_distributed_training_data_parallelism/sagemaker-notebook.ipynb)

# Kiat konfigurasi untuk perpustakaan paralelisme data terdistribusi SageMaker AI
<a name="data-parallel-config"></a>

Tinjau tips berikut sebelum menggunakan perpustakaan SageMaker AI distributed data parallelism (SMDDP). Daftar ini mencakup tips yang berlaku di seluruh kerangka kerja.

**Topics**
+ [Prapemrosesan data](#data-parallel-config-dataprep)
+ [Tunggal versus beberapa node](#data-parallel-config-multi-node)
+ [Efisiensi penskalaan debug dengan Debugger](#data-parallel-config-debug)
+ [Ukuran batch](#data-parallel-config-batch-size)
+ [Opsi MPI kustom](#data-parallel-config-mpi-custom)
+ [Gunakan Amazon FSx dan siapkan kapasitas penyimpanan dan throughput yang optimal](#data-parallel-config-fxs)

## Prapemrosesan data
<a name="data-parallel-config-dataprep"></a>

Jika Anda melakukan pra-proses data selama pelatihan menggunakan pustaka eksternal yang menggunakan CPU, Anda mungkin mengalami kemacetan CPU karena AI SageMaker distributed data parallel menggunakan CPU untuk operasi. `AllReduce` Anda mungkin dapat meningkatkan waktu pelatihan dengan memindahkan langkah-langkah pra-pemrosesan ke perpustakaan yang menggunakan GPUs atau dengan menyelesaikan semua pra-pemrosesan sebelum pelatihan.

## Tunggal versus beberapa node
<a name="data-parallel-config-multi-node"></a>

Kami menyarankan Anda menggunakan pustaka ini dengan beberapa node. Pustaka dapat digunakan dengan satu host, penyiapan multi-perangkat (misalnya, satu instance komputasi ML dengan beberapa GPUs); Namun, ketika Anda menggunakan dua atau lebih node, `AllReduce` operasi perpustakaan memberi Anda peningkatan kinerja yang signifikan. Juga, pada satu host, NVLink sudah berkontribusi pada `AllReduce` efisiensi in-node.

## Efisiensi penskalaan debug dengan Debugger
<a name="data-parallel-config-debug"></a>

Anda dapat menggunakan Amazon SageMaker Debugger untuk memantau dan memvisualisasikan pemanfaatan CPU dan GPU serta metrik lain yang menarik selama pelatihan. Anda dapat menggunakan [aturan bawaan](https://docs.aws.amazon.com/sagemaker/latest/dg/debugger-built-in-rules.html) Debugger untuk memantau masalah kinerja komputasi, seperti`CPUBottleneck`,, dan. `LoadBalancing` `LowGPUUtilization` Anda dapat menentukan aturan ini dengan [konfigurasi Debugger](https://docs.aws.amazon.com/sagemaker/latest/dg/debugger-configuration-for-debugging.html) saat menentukan estimator Amazon Python SageMaker SDK. Jika Anda menggunakan AWS CLI dan AWS SDK untuk Python (Boto3) untuk pelatihan tentang SageMaker AI, Anda dapat mengaktifkan Debugger seperti yang ditunjukkan pada [Konfigurasi SageMaker Debugger Menggunakan Amazon API](https://docs.aws.amazon.com/sagemaker/latest/dg/debugger-createtrainingjob-api.html). SageMaker 

Untuk melihat contoh menggunakan Debugger dalam pekerjaan SageMaker pelatihan, Anda dapat mereferensikan salah satu contoh buku catatan di repositori [Contoh SageMaker GitHub Notebook](https://github.com/aws/amazon-sagemaker-examples/tree/master/sagemaker-debugger). Untuk mempelajari lebih lanjut tentang Debugger, lihat [Amazon SageMaker ](https://docs.aws.amazon.com/sagemaker/latest/dg/train-debugger.html) Debugger.

## Ukuran batch
<a name="data-parallel-config-batch-size"></a>

Dalam pelatihan terdistribusi, karena lebih banyak node ditambahkan, ukuran batch harus meningkat secara proporsional. Untuk meningkatkan kecepatan konvergensi saat Anda menambahkan lebih banyak node ke pekerjaan pelatihan Anda dan meningkatkan ukuran batch global, tingkatkan tingkat pembelajaran.

Salah satu cara untuk mencapai hal ini adalah dengan menggunakan pemanasan tingkat pembelajaran bertahap di mana tingkat pembelajaran ditingkatkan dari nilai kecil ke nilai besar saat pekerjaan pelatihan berlangsung. Jalan ini menghindari peningkatan kecepatan belajar yang tiba-tiba, memungkinkan konvergensi yang sehat pada awal pelatihan. Misalnya, Anda dapat menggunakan *Aturan Penskalaan Linear* di mana setiap kali ukuran mini-batch dikalikan dengan k, tingkat pembelajaran juga dikalikan dengan k. Untuk mempelajari lebih lanjut tentang teknik ini, lihat paper penelitian, [Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour](https://arxiv.org/pdf/1706.02677.pdf), Section 2 dan 3.

## Opsi MPI kustom
<a name="data-parallel-config-mpi-custom"></a>

Pustaka paralel data terdistribusi SageMaker AI menggunakan Message Passing Interface (MPI), standar populer untuk mengelola komunikasi antar node dalam cluster berkinerja tinggi, dan menggunakan perpustakaan NCCL NVIDIA untuk komunikasi tingkat GPU. Saat Anda menggunakan pustaka paralel data dengan TensorFlow atau Pytorch`Estimator`, wadah masing-masing mengatur lingkungan MPI dan menjalankan `mpirun` perintah untuk memulai pekerjaan di node cluster.

Anda dapat mengatur operasi MPI kustom menggunakan `custom_mpi_options` parameter di. `Estimator` `mpirun`Bendera apa pun yang diteruskan di bidang ini ditambahkan ke `mpirun` perintah dan dijalankan oleh SageMaker AI untuk pelatihan. Misalnya, Anda dapat menentukan `distribution` parameter dari `Estimator` menggunakan berikut ini untuk menggunakan [https://docs.nvidia.com/deeplearning/nccl/user-guide/docs/env.html#nccl-debug](https://docs.nvidia.com/deeplearning/nccl/user-guide/docs/env.html#nccl-debug)variabel untuk mencetak versi NCCL di awal program:

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

## Gunakan Amazon FSx dan siapkan kapasitas penyimpanan dan throughput yang optimal
<a name="data-parallel-config-fxs"></a>

Saat melatih model pada beberapa node dengan paralelisme data terdistribusi, sangat disarankan untuk digunakan [FSx untuk](https://docs.aws.amazon.com/fsx/latest/LustreGuide/what-is.html) Lustre. Amazon FSx adalah layanan penyimpanan yang dapat diskalakan dan berkinerja tinggi yang mendukung penyimpanan file bersama dengan throughput yang lebih cepat. Menggunakan FSx penyimpanan Amazon dalam skala besar, Anda dapat mencapai kecepatan pemuatan data yang lebih cepat di seluruh node komputasi.

Biasanya, dengan paralelisme data terdistribusi, Anda akan mengharapkan bahwa total throughput pelatihan berskala mendekati linier dengan jumlah. GPUs Namun, jika Anda menggunakan penyimpanan FSx Amazon yang kurang optimal, kinerja pelatihan mungkin melambat karena throughput Amazon yang rendah. FSx 

Misalnya, jika Anda menggunakan [jenis penyebaran **SCRATCH\$12** dari sistem FSx file Amazon](https://docs.aws.amazon.com/fsx/latest/LustreGuide/performance.html#fsx-aggregate-perf) dengan kapasitas penyimpanan minimum 1,2 TiB, kapasitas throughputnya adalah 240. I/O MB/s. Amazon FSx storage works in a way that you can assign physical storage devices, and the more devices assigned, the larger throughput you get. The smallest storage increment for the SRATCH\$12 type is 1.2 TiB, and the corresponding throughput gain is 240 MB/s

Asumsikan bahwa Anda memiliki model untuk dilatih pada cluster 4-node lebih dari kumpulan data 100 GB. Dengan ukuran batch tertentu yang dioptimalkan ke cluster, asumsikan bahwa model dapat menyelesaikan satu epoch dalam waktu sekitar 30 detik. Dalam hal ini, I/O kecepatan minimum yang diperlukan adalah sekitar 3 GB/s (100 GB/30 detik). Ini tampaknya merupakan persyaratan throughput yang jauh lebih tinggi daripada 240 masalah MB/s. With such a limited Amazon FSx capacity, scaling your distributed training job up to larger clusters might aggravate I/O bottleneck; throughput pelatihan model mungkin meningkat di zaman selanjutnya saat cache menumpuk, tetapi throughput Amazon masih bisa menjadi hambatan. FSx

Untuk mengatasi masalah I/O kemacetan seperti itu, Anda harus meningkatkan ukuran FSx penyimpanan Amazon untuk mendapatkan kapasitas throughput yang lebih tinggi. Biasanya, untuk menemukan I/O throughput yang optimal, Anda dapat bereksperimen dengan kapasitas FSx throughput Amazon yang berbeda, menetapkan throughput yang sama atau sedikit lebih rendah dari perkiraan Anda, sampai Anda menemukan bahwa itu cukup untuk menyelesaikan masalah bottleneck. I/O Dalam kasus contoh yang disebutkan di atas, FSx penyimpanan Amazon dengan GB/s throughput 2, 4 dan cache RAM 67 GB sudah cukup. Jika sistem file memiliki throughput yang optimal, throughput pelatihan model harus mencapai maksimum baik segera atau setelah epoch pertama karena cache telah dibangun.

Untuk mempelajari selengkapnya tentang cara meningkatkan jenis FSx penyimpanan dan penyebaran Amazon, lihat halaman berikut di dokumentasi *Amazon FSx untuk Lustre*:
+  [Cara meningkatkan kapasitas penyimpanan](https://docs.aws.amazon.com/fsx/latest/LustreGuide/managing-storage-capacity.html#increase-storage-capacity) 
+  [Kinerja sistem file agregat](https://docs.aws.amazon.com/fsx/latest/LustreGuide/performance.html#fsx-aggregate-perf) 

# FAQ perpustakaan paralelisme data terdistribusi Amazon SageMaker AI
<a name="data-parallel-faq"></a>

Gunakan yang berikut ini untuk menemukan jawaban atas pertanyaan umum tentang perpustakaan SMDDP.

**T: Saat menggunakan pustaka, bagaimana instans CPU `allreduce` -pendukung dikelola? Apakah saya harus membuat cluster CPU-GPU yang heterogen, atau apakah layanan SageMaker AI membuat C5 tambahan untuk pekerjaan yang menggunakan perpustakaan SMDDP?**

Pustaka SMDDP hanya mendukung instans GPU, lebih spesifik, instans P4d dan P4de dengan NVIDIA A100 dan EFA. GPUs Tidak ada instans C5 atau CPU tambahan yang diluncurkan; jika pekerjaan pelatihan SageMaker AI Anda ada di cluster P4d 8-node, hanya 8 instans yang digunakan. `ml.p4d.24xlarge` Tidak ada instance tambahan yang disediakan.

**T: Saya memiliki pekerjaan pelatihan yang memakan waktu 5 hari pada satu `ml.p3.24xlarge` contoh dengan satu set hiperparameter H1 (tingkat pembelajaran, ukuran batch, pengoptimal, dll). Apakah menggunakan perpustakaan paralelisme data SageMaker AI dan cluster lima kali lebih besar cukup untuk mencapai perkiraan percepatan lima kali? Atau apakah saya harus meninjau kembali hiperparameter pelatihannya setelah mengaktifkan perpustakaan SMDDP?**

Pustaka mengubah ukuran batch keseluruhan. Ukuran batch keseluruhan yang baru diskalakan secara linier dengan jumlah instance pelatihan yang digunakan. Akibatnya, hiperparameter, seperti tingkat pembelajaran, harus diubah untuk memastikan konvergensi. 

**T: Apakah perpustakaan SMDDP mendukung Spot?**

Ya. Anda dapat menggunakan pelatihan spot terkelola. Anda menentukan jalur ke file pos pemeriksaan dalam pekerjaan SageMaker pelatihan. Anda menyimpan dan memulihkan pos pemeriksaan dalam skrip pelatihan mereka seperti yang disebutkan dalam langkah terakhir [Gunakan pustaka SMDDP dalam skrip TensorFlow pelatihan Anda (tidak digunakan lagi)](data-parallel-modify-sdp-tf2.md) dan[Gunakan perpustakaan SMDDP dalam skrip pelatihan Anda PyTorch](data-parallel-modify-sdp-pt.md). 

**T: Apakah pustaka SMDDP relevan dalam penyiapan multi-perangkat host tunggal?**

Pustaka dapat digunakan dalam pelatihan multi-perangkat host tunggal tetapi perpustakaan hanya menawarkan peningkatan kinerja dalam pelatihan multi-host.

**T: Di mana dataset pelatihan harus disimpan?**

Dataset pelatihan dapat disimpan dalam bucket Amazon S3 atau di drive Amazon FSx . Lihat [dokumen ini untuk berbagai sistem file input yang didukung untuk pekerjaan pelatihan](https://sagemaker.readthedocs.io/en/stable/api/utility/inputs.html#sagemaker.inputs.FileSystemInput). 

**T: Saat menggunakan perpustakaan SMDDP, apakah wajib memiliki data pelatihan untuk Lustre FSx ? Bisakah Amazon EFS dan Amazon S3 digunakan?**

Kami biasanya menyarankan Anda menggunakan Amazon FSx karena latensi yang lebih rendah dan throughput yang lebih tinggi. Jika mau, Anda dapat menggunakan Amazon EFS atau Amazon S3.

**T: Dapatkah perpustakaan digunakan dengan node CPU?** 

Tidak. Untuk menemukan jenis instance yang didukung oleh pustaka SMDDP, lihat. [Tipe instans yang didukung](distributed-data-parallel-support.md#distributed-data-parallel-supported-instance-types)

**T: Kerangka kerja dan versi kerangka kerja apa yang saat ini didukung oleh pustaka SMDDP saat diluncurkan?** 

perpustakaan SMDDP saat ini mendukung PyTorch v1.6.0 atau yang lebih baru dan TensorFlow v2.3.0 atau yang lebih baru. Itu tidak mendukung TensorFlow 1.x. Untuk informasi selengkapnya tentang versi pustaka SMDDP mana yang dikemas dalam wadah pembelajaran AWS mendalam, lihat [Catatan Rilis untuk Deep](https://docs.aws.amazon.com/deep-learning-containers/latest/devguide/dlc-release-notes.html) Learning Containers.

**T: Apakah library mendukung AMP?**

Ya, pustaka SMDDP mendukung Automatic Mixed Precision (AMP) di luar kotak. Tidak diperlukan tindakan tambahan untuk menggunakan AMP selain modifikasi tingkat kerangka kerja pada skrip latihan Anda. Jika gradien masuk FP16, perpustakaan paralelisme data SageMaker AI menjalankan operasinya `AllReduce` di. FP16 Untuk informasi selengkapnya tentang penerapan AMP APIs ke skrip pelatihan Anda, lihat sumber daya berikut:
+ [Kerangka kerja - PyTorch dalam dokumentasi](https://docs.nvidia.com/deeplearning/performance/mixed-precision-training/index.html#pytorch) *NVIDIA Deep Learning Performace*
+ [Kerangka kerja - TensorFlow dalam dokumentasi](https://docs.nvidia.com/deeplearning/performance/mixed-precision-training/index.html#tensorflow) *NVIDIA Deep Learning Performace*
+ [Presisi Campuran Otomatis untuk Pembelajaran Mendalam](https://developer.nvidia.com/automatic-mixed-precision) di *Dokumen Pengembang NVIDIA*
+ [Memperkenalkan presisi campuran PyTorch otomatis asli untuk pelatihan lebih cepat pada NVIDIA GPUs](https://pytorch.org/blog/accelerating-training-on-nvidia-gpus-with-pytorch-automatic-mixed-precision/) di *PyTorch Blog*
+ [TensorFlow presisi campuran APIs](https://www.tensorflow.org/guide/mixed_precision) dalam *TensorFlow dokumentasi*

**T: Bagaimana cara mengidentifikasi jika pekerjaan pelatihan terdistribusi saya melambat karena kemacetan I/O?**

Dengan cluster yang lebih besar, pekerjaan pelatihan membutuhkan lebih banyak throughput I/O, dan oleh karena itu throughput pelatihan mungkin membutuhkan waktu lebih lama (lebih banyak zaman) untuk meningkatkan kinerja maksimum. Ini menunjukkan bahwa I/O sedang macet dan cache lebih sulit untuk dibangun saat Anda meningkatkan skala node (persyaratan throughput yang lebih tinggi dan topologi jaringan yang lebih kompleks). Untuk informasi selengkapnya tentang memantau FSx throughput Amazon CloudWatch, lihat [Monitoring FSx for Lustre](https://docs.aws.amazon.com/fsx/latest/LustreGuide/monitoring_overview.html) di Panduan Pengguna *FSx untuk Lustre*. 

**T: Bagaimana cara mengatasi kemacetan I/O saat menjalankan pekerjaan pelatihan terdistribusi dengan paralelisme data?**

Kami sangat menyarankan Anda menggunakan Amazon FSx sebagai saluran data Anda jika Anda menggunakan Amazon S3. Jika Anda sudah menggunakan Amazon FSx tetapi masih mengalami masalah bottleneck I/O, Anda mungkin telah menyiapkan sistem FSx file Amazon Anda dengan throughput I/O rendah dan kapasitas penyimpanan yang kecil. Untuk informasi selengkapnya tentang cara memperkirakan dan memilih ukuran kapasitas throughput I/O yang tepat, lihat. [Gunakan Amazon FSx dan siapkan kapasitas penyimpanan dan throughput yang optimal](data-parallel-config.md#data-parallel-config-fxs)

**T: (Untuk perpustakaan v1.4.0 atau yang lebih baru) Bagaimana cara mengatasi `Invalid backend` kesalahan saat menginisialisasi grup proses.**

Jika Anda menemukan pesan kesalahan `ValueError: Invalid backend: 'smddp'` saat memanggil`init_process_group`, ini karena perubahan yang melanggar di perpustakaan SMDDP v1.4.0 dan yang lebih baru. Anda harus mengimpor PyTorch klien perpustakaan,`smdistributed.dataparallel.torch.torch_smddp`, yang mendaftar `smddp` sebagai backend untuk. PyTorch Untuk mempelajari selengkapnya, lihat [Gunakan perpustakaan SMDDP dalam skrip pelatihan Anda PyTorch](data-parallel-modify-sdp-pt.md).

**T: (Untuk perpustakaan SMDDP v1.4.0 atau yang lebih baru) Saya ingin memanggil primitif kolektif antarmuka. [https://pytorch.org/docs/stable/distributed.html](https://pytorch.org/docs/stable/distributed.html) Primitif mana yang `smddp` didukung backend?**

Di v1.4.0, perpustakaan SMDDP mendukung`all_reduce`,`broadcast`,`reduce`,`all_gather`, dan `barrier` antarmuka. `torch.distributed`

**T: (Untuk perpustakaan SMDDP v1.4.0 atau yang lebih baru) Apakah API baru ini berfungsi dengan kelas atau pustaka DDP khusus lainnya seperti Apex DDP?**

Pustaka SMDDP diuji dengan library paralel data terdistribusi pihak ketiga lainnya dan implementasi kerangka kerja yang menggunakan modul. `torch.distribtued` Menggunakan perpustakaan SMDDP dengan kelas DDP kustom bekerja selama operasi kolektif yang digunakan oleh kelas DDP kustom didukung oleh perpustakaan SMDDP. Lihat pertanyaan sebelumnya untuk daftar kolektif yang didukung. Jika Anda memiliki kasus penggunaan ini dan membutuhkan dukungan lebih lanjut, hubungi tim SageMaker AI melalui [Pusat AWS Dukungan](https://console.aws.amazon.com/support/) atau [Forum AWS Pengembang untuk Amazon SageMaker AI](https://forums.aws.amazon.com/forum.jspa?forumID=285).

**T: Apakah perpustakaan SMDDP mendukung opsi bring-your-own-container (BYOC)? Jika demikian, bagaimana cara menginstal perpustakaan dan menjalankan pekerjaan pelatihan terdistribusi dengan menulis Dockerfile khusus?**

Jika Anda ingin mengintegrasikan perpustakaan SMDDP dan dependensi minimumnya ke dalam wadah Docker Anda sendiri, BYOC adalah pendekatan yang tepat. Anda dapat membangun wadah Anda sendiri menggunakan file biner perpustakaan. Proses yang disarankan adalah menulis Dockerfile khusus dengan perpustakaan dan dependensinya, membangun wadah Docker, menghostingnya di Amazon ECR, dan menggunakan URI gambar ECR untuk meluncurkan pekerjaan pelatihan menggunakan kelas estimator generik AI. SageMaker Untuk petunjuk lebih lanjut tentang cara menyiapkan Dockerfile khusus untuk pelatihan terdistribusi di SageMaker AI dengan perpustakaan SMDDP, lihat. [Buat wadah Docker Anda sendiri dengan perpustakaan paralel data terdistribusi SageMaker AI](data-parallel-bring-your-own-container.md)

# Pemecahan masalah untuk pelatihan terdistribusi di Amazon AI SageMaker
<a name="distributed-troubleshooting-data-parallel"></a>

Jika Anda memiliki masalah dalam menjalankan pekerjaan pelatihan saat Anda menggunakan pustaka, gunakan daftar berikut untuk mencoba memecahkan masalah. Jika Anda membutuhkan dukungan lebih lanjut, hubungi tim SageMaker AI melalui [AWS Support Center](https://console.aws.amazon.com/support/) atau [Forum AWS Pengembang untuk Amazon Amazon SageMaker AI](https://forums.aws.amazon.com/forum.jspa?forumID=285).

**Topics**
+ [Menggunakan data terdistribusi SageMaker AI paralel dengan Amazon SageMaker Debugger dan pos pemeriksaan](#distributed-ts-data-parallel-debugger)
+ [Awalan tak terduga yang dilampirkan ke kunci parameter model](#distributed-ts-data-parallel-pytorch-prefix)
+ [SageMaker AI mendistribusikan pekerjaan pelatihan yang terhenti selama inisialisasi](#distributed-ts-data-parallel-efa-sg)
+ [SageMaker AI mendistribusikan pekerjaan pelatihan yang mengulur-ulur di akhir pelatihan](#distributed-ts-data-parallel-stall-at-the-end)
+ [Mengamati degradasi efisiensi penskalaan karena kemacetan throughput Amazon FSx](#distributed-ts-data-parallel-fxs-bottleneck)
+ [SageMaker Pekerjaan pelatihan terdistribusi AI dengan PyTorch mengembalikan peringatan penghentian](#distributed-ts-data-parallel-deprecation-warnings)

## Menggunakan data terdistribusi SageMaker AI paralel dengan Amazon SageMaker Debugger dan pos pemeriksaan
<a name="distributed-ts-data-parallel-debugger"></a>

Untuk memantau kemacetan sistem, operasi kerangka kerja profil, dan tensor keluaran model debug untuk pekerjaan pelatihan dengan paralel SageMaker data terdistribusi AI, gunakan Amazon Debugger. SageMaker 

Namun, saat Anda menggunakan SageMaker Debugger, SageMaker AI distributed data parallel, dan pos pemeriksaan SageMaker AI, Anda mungkin melihat kesalahan yang terlihat seperti contoh berikut. 

```
SMDebug Does Not Currently Support Distributed Training Jobs With Checkpointing Enabled
```

Ini karena kesalahan internal antara Debugger dan pos pemeriksaan, yang terjadi saat Anda mengaktifkan paralel data terdistribusi SageMaker AI. 
+ Jika Anda mengaktifkan ketiga fitur, SageMaker Python SDK secara otomatis mematikan Debugger dengan meneruskan`debugger_hook_config=False`, yang setara dengan contoh kerangka kerja berikut. `estimator`

  ```
  bucket=sagemaker.Session().default_bucket()
  base_job_name="sagemaker-checkpoint-test"
  checkpoint_in_bucket="checkpoints"
  
  # The S3 URI to store the checkpoints
  checkpoint_s3_bucket="s3://{}/{}/{}".format(bucket, base_job_name, checkpoint_in_bucket)
  
  estimator = TensorFlow(
      ...
  
      distribution={"smdistributed": {"dataparallel": { "enabled": True }}},
      checkpoint_s3_uri=checkpoint_s3_bucket,
      checkpoint_local_path="/opt/ml/checkpoints",
      debugger_hook_config=False
  )
  ```
+ Jika Anda ingin tetap menggunakan paralel data terdistribusi SageMaker AI dan SageMaker Debugger, solusinya adalah menambahkan fungsi checkpointing secara manual ke skrip pelatihan Anda alih-alih menentukan parameter dan dari estimator. `checkpoint_s3_uri` `checkpoint_local_path` Untuk informasi selengkapnya tentang menyiapkan pos pemeriksaan manual dalam skrip pelatihan, lihat. [Menyimpan Pos Pemeriksaan](distributed-troubleshooting-model-parallel.md#distributed-ts-model-parallel-checkpoints)

## Awalan tak terduga yang dilampirkan ke kunci parameter model
<a name="distributed-ts-data-parallel-pytorch-prefix"></a>

Untuk pekerjaan pelatihan PyTorch terdistribusi, awalan yang tidak terduga (`model`misalnya) mungkin dilampirkan ke `state_dict` kunci (parameter model). Pustaka paralel data SageMaker AI tidak secara langsung mengubah atau menambahkan nama parameter model apa pun saat pekerjaan PyTorch pelatihan menyimpan artefak model. Pelatihan PyTorch terdistribusi mengubah nama dalam `state_dict` untuk melewati jaringan, mendahului awalan. Jika Anda mengalami masalah kegagalan model karena nama parameter yang berbeda saat Anda menggunakan perpustakaan paralel data SageMaker AI dan pos pemeriksaan untuk PyTorch pelatihan, sesuaikan kode contoh berikut untuk menghapus awalan pada langkah Anda memuat pos pemeriksaan dalam skrip pelatihan Anda.

```
state_dict = {k.partition('model.')[2]:state_dict[k] for k in state_dict.keys()}
```

Ini mengambil setiap `state_dict` kunci sebagai nilai string, memisahkan string pada kemunculan pertama`'model.'`, dan mengambil item daftar ketiga (dengan indeks 2) dari string yang dipartisi.

Untuk informasi selengkapnya tentang masalah awalan, lihat utas diskusi di [nama parameter Awalan dalam model tersimpan jika dilatih oleh](https://discuss.pytorch.org/t/prefix-parameter-names-in-saved-model-if-trained-by-multi-gpu/494) multi-GPU? di *forum PyTorch diskusi*.

Untuk informasi selengkapnya tentang PyTorch metode penyimpanan dan pemuatan model, lihat [Menyimpan & Memuat Model di Seluruh Perangkat](https://pytorch.org/tutorials/beginner/saving_loading_models.html#saving-loading-model-across-devices) dalam *PyTorchdokumentasi*.

## SageMaker AI mendistribusikan pekerjaan pelatihan yang terhenti selama inisialisasi
<a name="distributed-ts-data-parallel-efa-sg"></a>

Jika pekerjaan pelatihan paralel data terdistribusi SageMaker AI Anda terhenti selama inisialisasi saat menggunakan instans berkemampuan EFA, ini mungkin disebabkan oleh kesalahan konfigurasi dalam grup keamanan subnet VPC yang digunakan untuk pekerjaan pelatihan. EFA membutuhkan konfigurasi grup keamanan yang tepat untuk mengaktifkan lalu lintas antar node.

**Untuk mengonfigurasi aturan masuk dan keluar untuk grup keamanan**

1. Masuk ke Konsol Manajemen AWS dan buka konsol VPC Amazon di. [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)

1. Pilih **Grup Keamanan** di panel navigasi kiri.

1. Pilih grup keamanan yang terkait dengan subnet VPC yang Anda gunakan untuk pelatihan. 

1. Di bagian **Detail**, salin **ID grup Keamanan**.

1. Pada tab **Inbound rules** (Aturan ke dalam), pilih **Edit inbound rules** (Edit aturan ke dalam).

1. Pada halaman **Edit aturan ke dalam**, lakukan hal berikut ini: 

   1. Pilih **Add rule** (Tambahkan aturan).

   1. Untuk **Tipe**, pilih **Semua lalu lintas**.

   1. Untuk **Sumber**, pilih **Kustom**, tempel ID grup keamanan ke dalam kotak pencarian, dan pilih grup keamanan yang muncul.

1. Pilih **Simpan aturan** untuk menyelesaikan konfigurasi aturan masuk untuk grup keamanan.

1. Pada tab **Aturan keluar**, pilih **Edit aturan keluar**.

1. Ulangi langkah 6 dan 7 untuk menambahkan aturan yang sama dengan aturan keluar.

Setelah Anda menyelesaikan langkah-langkah sebelumnya untuk mengonfigurasi grup keamanan dengan aturan masuk dan keluar, jalankan kembali tugas pelatihan dan verifikasi apakah masalah penghentian teratasi.

[Untuk informasi selengkapnya tentang mengonfigurasi grup keamanan untuk VPC dan EFA, [lihat Grup keamanan untuk VPC](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html) dan Adaptor Kain Elastis.](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa.html)

## SageMaker AI mendistribusikan pekerjaan pelatihan yang mengulur-ulur di akhir pelatihan
<a name="distributed-ts-data-parallel-stall-at-the-end"></a>

Salah satu akar penyebab masalah mengulur-ulur di akhir pelatihan adalah ketidakcocokan dalam jumlah batch yang diproses per zaman di berbagai peringkat. Semua pekerja (GPUs) menyinkronkan gradien lokal mereka di lintasan mundur untuk memastikan mereka semua memiliki salinan model yang sama di akhir iterasi batch. Jika ukuran batch ditetapkan secara tidak merata ke kelompok pekerja yang berbeda selama zaman terakhir pelatihan, pekerjaan pelatihan berhenti. Misalnya, sementara sekelompok pekerja (grup A) selesai memproses semua batch dan keluar dari loop pelatihan, kelompok pekerja lain (grup B) mulai memproses batch lain dan masih mengharapkan komunikasi dari grup A untuk menyinkronkan gradien. Hal ini menyebabkan grup B menunggu grup A, yang sudah menyelesaikan pelatihan dan tidak memiliki gradien untuk disinkronkan. 

Oleh karena itu, saat menyiapkan kumpulan data pelatihan Anda, penting bahwa setiap pekerja mendapatkan jumlah sampel data yang sama sehingga setiap pekerja melewati jumlah batch yang sama saat pelatihan. Pastikan setiap peringkat mendapatkan jumlah batch yang sama untuk menghindari masalah stalling ini.

## Mengamati degradasi efisiensi penskalaan karena kemacetan throughput Amazon FSx
<a name="distributed-ts-data-parallel-fxs-bottleneck"></a>

Salah satu penyebab potensial penurunan efisiensi penskalaan adalah batas FSx throughput. Jika Anda mengamati penurunan efisiensi penskalaan yang tiba-tiba saat beralih ke kluster pelatihan yang lebih besar, coba gunakan sistem file Lustre yang lebih besar FSx dengan batas throughput yang lebih tinggi. Untuk informasi selengkapnya, lihat [Menggabungkan kinerja sistem file](https://docs.aws.amazon.com/fsx/latest/LustreGuide/performance.html#fsx-aggregate-perf) dan [Mengelola kapasitas penyimpanan dan throughput](https://docs.aws.amazon.com/fsx/latest/LustreGuide/managing-storage-capacity.html) di Panduan Pengguna *Amazon FSx for Lustre*.

## SageMaker Pekerjaan pelatihan terdistribusi AI dengan PyTorch mengembalikan peringatan penghentian
<a name="distributed-ts-data-parallel-deprecation-warnings"></a>

Sejak v1.4.0, perpustakaan paralelisme data terdistribusi SageMaker AI berfungsi sebagai backend terdistribusi. PyTorch Karena perubahan yang melanggar penggunaan pustaka dengan PyTorch, Anda mungkin menemukan pesan peringatan bahwa `smdistributed` APIs untuk paket PyTorch terdistribusi tidak digunakan lagi. Pesan peringatan harus mirip dengan yang berikut ini:

```
smdistributed.dataparallel.torch.dist is deprecated in the SageMaker AI distributed data parallel library v1.4.0+.
Please use torch.distributed and specify 'smddp' as a backend when initializing process group as follows:
torch.distributed.init_process_group(backend='smddp')
For more information, see the library's API documentation at
https://docs.aws.amazon.com/sagemaker/latest/dg/data-parallel-modify-sdp-pt.html
```

Di v1.4.0 dan yang lebih baru, perpustakaan hanya perlu diimpor sekali di bagian atas skrip pelatihan Anda dan ditetapkan sebagai backend selama inisialisasi terdistribusi. PyTorch Dengan satu baris spesifikasi backend, Anda dapat menjaga skrip PyTorch pelatihan Anda tidak berubah dan langsung menggunakan modul terdistribusi. PyTorch Lihat [Gunakan perpustakaan SMDDP dalam skrip pelatihan Anda PyTorch](data-parallel-modify-sdp-pt.md) untuk mempelajari tentang perubahan yang melanggar dan cara baru untuk menggunakan perpustakaan PyTorch.

# SageMaker Catatan rilis perpustakaan paralelisme data AI
<a name="data-parallel-release-notes"></a>

Lihat catatan rilis berikut untuk melacak pembaruan terbaru untuk pustaka paralelisme data terdistribusi SageMaker AI (SMDDP).

## Pustaka paralelisme data terdistribusi SageMaker AI v2.5.0
<a name="data-parallel-release-notes-20241017"></a>

*Tanggal: 17 Oktober 2024*

**Fitur baru**
+ Menambahkan dukungan untuk PyTorch v2.4.1 dengan CUDA v12.1.

**Integrasi ke dalam wadah Docker yang didistribusikan oleh perpustakaan paralelisme model SageMaker AI (SMP)**

Versi pustaka SMDDP ini dimigrasikan ke. [Pustaka paralelisme SageMaker model v2.6.0](model-parallel-release-notes.md#model-parallel-release-notes-20241017)

```
658645717510.dkr.ecr.<us-west-2>.amazonaws.com/smdistributed-modelparallel:2.4.1-gpu-py311-cu121
```

Untuk Wilayah di mana gambar SMP Docker tersedia, lihat. [Wilayah AWS](distributed-model-parallel-support-v2.md#distributed-model-parallel-availablity-zone-v2)

**File biner dari rilis ini**

Anda dapat mengunduh atau menginstal perpustakaan menggunakan URL berikut.

```
https://smdataparallel.s3.amazonaws.com/binary/pytorch/2.4.1/cu121/2024-10-09/smdistributed_dataparallel-2.5.0-cp311-cp311-linux_x86_64.whl
```

## Pustaka paralelisme data terdistribusi SageMaker AI v2.3.0
<a name="data-parallel-release-notes-20240611"></a>

*Tanggal: 11 Juni 2024*

**Fitur baru**
+ Menambahkan dukungan untuk PyTorch v2.3.0 dengan CUDA v12.1 dan Python v3.11.
+ Ditambahkan dukungan untuk PyTorch Lightning v2.2.5. Ini diintegrasikan ke dalam wadah kerangka SageMaker AI untuk PyTorch v2.3.0.
+ Menambahkan validasi tipe instance selama impor untuk mencegah pemuatan pustaka SMDDP pada jenis instance yang tidak didukung. Untuk daftar jenis instance yang kompatibel dengan pustaka SMDDP, lihat. [Kerangka kerja yang didukung, Wilayah AWS, dan tipe instance](distributed-data-parallel-support.md)

**Integrasi ke dalam Wadah Kerangka SageMaker AI**

Versi pustaka SMDDP ini dimigrasikan ke [SageMaker AI](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#sagemaker-framework-containers-sm-support-only) Framework Container berikut.
+ PyTorch v2.3.0

  ```
  763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:2.3.0-gpu-py311-cu121-ubuntu20.04-sagemaker
  ```

Untuk daftar lengkap versi pustaka SMDDP dan kontainer yang sudah dibuat sebelumnya, lihat. [Kerangka kerja yang didukung, Wilayah AWS, dan tipe instance](distributed-data-parallel-support.md)

**File biner dari rilis ini**

Anda dapat mengunduh atau menginstal perpustakaan menggunakan URL berikut.

```
https://smdataparallel.s3.amazonaws.com/binary/pytorch/2.3.0/cu121/2024-05-23/smdistributed_dataparallel-2.3.0-cp311-cp311-linux_x86_64.whl
```

**Perubahan lainnya**
+ Pustaka SMDDP v2.2.0 diintegrasikan ke dalam wadah kerangka SageMaker AI untuk v2.2.0. PyTorch 

## Pustaka paralelisme data terdistribusi SageMaker AI v2.2.0
<a name="data-parallel-release-notes-20240304"></a>

*Tanggal: 4 Maret 2024*

**Fitur baru**
+ Menambahkan dukungan untuk PyTorch v2.2.0 dengan CUDA v12.1.

**Integrasi ke dalam wadah Docker yang didistribusikan oleh perpustakaan paralelisme model SageMaker AI (SMP)**

Versi pustaka SMDDP ini dimigrasikan ke. [Pustaka paralelisme SageMaker model v2.2.0](model-parallel-release-notes.md#model-parallel-release-notes-20240307)

```
658645717510.dkr.ecr.<region>.amazonaws.com/smdistributed-modelparallel:2.2.0-gpu-py310-cu121
```

Untuk Wilayah di mana gambar SMP Docker tersedia, lihat. [Wilayah AWS](distributed-model-parallel-support-v2.md#distributed-model-parallel-availablity-zone-v2)

**File biner dari rilis ini**

Anda dapat mengunduh atau menginstal perpustakaan menggunakan URL berikut.

```
https://smdataparallel.s3.amazonaws.com/binary/pytorch/2.2.0/cu121/2024-03-04/smdistributed_dataparallel-2.2.0-cp310-cp310-linux_x86_64.whl
```

## Pustaka paralelisme data terdistribusi SageMaker AI v2.1.0
<a name="data-parallel-release-notes-20240301"></a>

*Tanggal: 1 Maret 2024*

**Fitur baru**
+ Menambahkan dukungan untuk PyTorch v2.1.0 dengan CUDA v12.1.

**Perbaikan bug**
+ Memperbaiki masalah kebocoran memori CPU di[SMDDP v2.0.1](#data-parallel-release-notes-20231207).

**Integrasi ke dalam Wadah Kerangka SageMaker AI**

[Versi pustaka SMDDP ini lulus pengujian benchmark dan dimigrasikan ke AI Framework Container berikutSageMaker .](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#sagemaker-framework-containers-sm-support-only)
+ PyTorch v2.1.0

  ```
  763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:2.1.0-gpu-py310-cu121-ubuntu20.04-sagemaker
  ```

**Integrasi ke dalam wadah Docker yang didistribusikan oleh perpustakaan paralelisme model SageMaker AI (SMP)**

Versi pustaka SMDDP ini dimigrasikan ke. [Pustaka paralelisme SageMaker model v2.1.0](model-parallel-release-notes.md#model-parallel-release-notes-20240206)

```
658645717510.dkr.ecr.<region>.amazonaws.com/smdistributed-modelparallel:2.1.2-gpu-py310-cu121
```

Untuk Wilayah di mana gambar SMP Docker tersedia, lihat. [Wilayah AWS](distributed-model-parallel-support-v2.md#distributed-model-parallel-availablity-zone-v2)

**File biner dari rilis ini**

Anda dapat mengunduh atau menginstal perpustakaan menggunakan URL berikut.

```
https://smdataparallel.s3.amazonaws.com/binary/pytorch/2.1.0/cu121/2024-02-04/smdistributed_dataparallel-2.1.0-cp310-cp310-linux_x86_64.whl
```

## Pustaka paralelisme data terdistribusi SageMaker AI v2.0.1
<a name="data-parallel-release-notes-20231207"></a>

*Tanggal: 7 Desember 2023*

**Fitur baru**
+ Menambahkan implementasi SMDDP baru dari operasi `AllGather` kolektif yang dioptimalkan untuk sumber daya AWS komputasi dan infrastruktur jaringan. Untuk mempelajari selengkapnya, lihat [Operasi kolektif SMDDP `AllGather`](data-parallel-intro.md#data-parallel-allgather).
+ Operasi `AllGather` kolektif SMDDP kompatibel dengan PyTorch FSDP dan. DeepSpeed Untuk mempelajari selengkapnya, lihat [Gunakan perpustakaan SMDDP dalam skrip pelatihan Anda PyTorch](data-parallel-modify-sdp-pt.md).
+ Ditambahkan dukungan untuk PyTorch v2.0.1

**Masalah yang diketahui**
+ Ada masalah kebocoran memori CPU dari peningkatan memori CPU bertahap saat berlatih dengan SMDDP dalam mode DDP`AllReduce`.

**Integrasi ke dalam Wadah Kerangka SageMaker AI**

[Versi pustaka SMDDP ini lulus pengujian benchmark dan dimigrasikan ke AI Framework Container berikutSageMaker .](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#sagemaker-framework-containers-sm-support-only)
+ PyTorch v2.0.1

  ```
  763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:2.0.1-gpu-py310-cu118-ubuntu20.04-sagemaker
  ```

**File biner dari rilis ini**

Anda dapat mengunduh atau menginstal perpustakaan menggunakan URL berikut.

```
https://smdataparallel.s3.amazonaws.com/binary/pytorch/2.0.1/cu118/2023-12-07/smdistributed_dataparallel-2.0.2-cp310-cp310-linux_x86_64.whl
```

**Perubahan lainnya**
+ Mulai dari rilis ini, dokumentasi untuk perpustakaan SMDDP sepenuhnya tersedia di Panduan *Pengembang Amazon SageMaker AI* ini. Untuk mendukung panduan pengembang lengkap untuk SMDDP v2 yang terdapat di *Amazon SageMaker AI Developer Guide*, dokumentasi untuk [referensi tambahan untuk SMDDP v1.x](https://sagemaker.readthedocs.io/en/stable/api/training/smd_data_parallel.html) dalam dokumentasi *SageMaker AI Python* SDK tidak lagi didukung. Jika Anda masih memerlukan dokumentasi SMP v1.x, lihat snapshot dokumentasi berikut di dokumentasi [SageMaker Python](https://sagemaker.readthedocs.io/en/v2.212.0/api/training/distributed.html#the-sagemaker-distributed-data-parallel-library) SDK v2.212.0.