View a markdown version of this page

Gunakan estimator PyTorch kerangka kerja di SageMaker Python SDK - Amazon SageMaker AI

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

Gunakan estimator PyTorch kerangka kerja di SageMaker Python SDK

Anda dapat meluncurkan pelatihan terdistribusi dengan menambahkan distribution argumen ke estimator PyTorch kerangka kerja SageMaker AI. Pust SageMaker aka paralelisme data terdistribusi AI (SMDDP) mendukung pelatihan terdistribusi. PyTorch

catatan

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

Opsi peluncur berikut tersedia untuk meluncurkan pelatihan PyTorch terdistribusi.

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

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

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

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

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

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

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

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

from sagemaker.train import ModelTrainer from sagemaker.train.configs import SourceCode, Compute, InputData from sagemaker.core import image_uris # Retrieve the training image for the desired PyTorch version training_image = image_uris.retrieve( framework="pytorch", region="us-west-2", version="2.0.1", py_version="py310", instance_type="ml.p4d.24xlarge", image_scope="training" ) source_code = SourceCode( source_dir="subdirectory-to-your-code", entry_script="adapted-training-script.py" ) compute = Compute( # For running a multi-node distributed training job, specify a value greater than 1 # Example: 2,3,4,..8 instance_count=2, # Instance types supported by the SageMaker AI data parallel library: # ml.p4d.24xlarge, ml.p4de.24xlarge instance_type="ml.p4d.24xlarge" ) pt_model_trainer = ModelTrainer( training_image=training_image, base_job_name="training_job_name_prefix", source_code=source_code, role="SageMakerRole", compute=compute, # Activate distributed training with SMDDP distribution={ "pytorchddp": { "enabled": True } } # mpirun, activates SMDDP AllReduce OR AllGather # distribution={ "torch_distributed": { "enabled": True } } # torchrun, activates SMDDP AllGather # distribution={ "smdistributed": { "dataparallel": { "enabled": True } } } # mpirun, activates SMDDP AllReduce OR AllGather ) pt_model_trainer.train(input_data_config=[ InputData(channel_name="training", data_source="s3://bucket/path/to/training/data") ])
catatan

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

# requirements.txt pytorch-lightning lightning-bolts

Misalnya, direktori terstruktur pohon akan terlihat seperti berikut ini.

├── pytorch_training_launcher_jupyter_notebook.ipynb └── sub-folder-for-your-code ├── adapted-training-script.py └── requirements.txt

Untuk informasi selengkapnya tentang menentukan direktori sumber untuk menempatkan requirements.txt file bersama dengan skrip pelatihan dan pengiriman pekerjaan, lihat Menggunakan pustaka pihak ketiga dalam dokumentasi Amazon SageMaker AI Python SDK.

Pertimbangan untuk mengaktifkan operasi kolektif SMDDP dan menggunakan opsi peluncur pelatihan terdistribusi yang tepat
  • SMDDP AllReduce dan SMDDP tidak AllGather saling kompatibel saat ini.

  • SMDDP AllReduce diaktifkan secara default saat menggunakan smdistributed ataupytorchddp, yang mpirun berbasis peluncur, dan N AllGather CCL digunakan.

  • SMDDP AllGather diaktifkan secara default saat menggunakan torch_distributed peluncur, dan kembali ke AllReduce NCCL.

  • SMDDP juga AllGather dapat diaktifkan saat menggunakan peluncur mpirun berbasis dengan variabel lingkungan tambahan yang ditetapkan sebagai berikut.

    export SMDATAPARALLEL_OPTIMIZE_SDP=true