Pilih preferensi cookie Anda

Kami menggunakan cookie penting serta alat serupa yang diperlukan untuk menyediakan situs dan layanan. Kami menggunakan cookie performa untuk mengumpulkan statistik anonim sehingga kami dapat memahami cara pelanggan menggunakan situs dan melakukan perbaikan. Cookie penting tidak dapat dinonaktifkan, tetapi Anda dapat mengklik “Kustom” atau “Tolak” untuk menolak cookie performa.

Jika Anda setuju, AWS dan pihak ketiga yang disetujui juga akan menggunakan cookie untuk menyediakan fitur situs yang berguna, mengingat preferensi Anda, dan menampilkan konten yang relevan, termasuk iklan yang relevan. Untuk menerima atau menolak semua cookie yang tidak penting, klik “Terima” atau “Tolak”. Untuk membuat pilihan yang lebih detail, klik “Kustomisasi”.

Gunakan perpustakaan paralelisme SageMaker model v2

Mode fokus
Gunakan perpustakaan paralelisme SageMaker model v2 - Amazon SageMaker AI

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

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

Di halaman ini, Anda akan mempelajari cara menggunakan pustaka paralelisme SageMaker model v2 APIs dan memulai menjalankan pekerjaan pelatihan PyTorch Fully Sharded Data Parallel (FSDP) di platform Pelatihan atau di SageMaker cluster. SageMaker HyperPod

Ada berbagai skenario untuk menjalankan pekerjaan PyTorch pelatihan dengan SMP v2.

  1. Untuk SageMaker pelatihan, gunakan salah satu SageMaker Framework Container yang sudah dibuat sebelumnya untuk PyTorch v2.0.1 dan yang lebih baru, yang sudah dikemas sebelumnya dengan SMP v2.

  2. Gunakan file biner SMP v2 untuk menyiapkan lingkungan Conda untuk menjalankan beban kerja pelatihan terdistribusi di cluster. SageMaker HyperPod

  3. Perluas SageMaker Framework Container yang sudah dibuat sebelumnya untuk PyTorch v2.0.1 dan yang lebih baru untuk menginstal persyaratan fungsional tambahan untuk kasus penggunaan Anda. Untuk mempelajari cara memperluas wadah yang sudah dibuat sebelumnya, lihatPerluas Kontainer Pra-dibangun.

  4. Anda juga dapat membawa wadah Docker Anda sendiri dan secara manual mengatur semua lingkungan SageMaker Pelatihan menggunakan toolkit SageMaker Pelatihan dan menginstal file biner SMP v2. Ini adalah opsi yang paling tidak direkomendasikan karena kompleksitas dependensi. Untuk mempelajari cara menjalankan container Docker Anda sendiri, lihat Mengadaptasi Wadah Pelatihan Anda Sendiri.

Panduan memulai ini mencakup dua skenario pertama.

Langkah 1: Sesuaikan skrip pelatihan PyTorch FSDP Anda

Untuk mengaktifkan dan mengkonfigurasi perpustakaan SMP v2, mulailah dengan mengimpor dan menambahkan torch.sagemaker.init() modul di bagian atas skrip. Modul ini mengambil kamus konfigurasi SMP Parameter konfigurasi fitur inti SMP v2 yang akan Anda persiapkan. Langkah 2: Luncurkan pekerjaan pelatihan Selain itu, untuk menggunakan berbagai fitur inti yang ditawarkan oleh SMP v2, Anda mungkin perlu membuat beberapa perubahan lagi untuk menyesuaikan skrip pelatihan Anda. Petunjuk lebih rinci tentang mengadaptasi skrip pelatihan Anda untuk menggunakan fitur inti SMP v2 disediakan di. Fitur inti dari perpustakaan paralelisme SageMaker model v2

SageMaker Training

Dalam skrip pelatihan Anda, tambahkan dua baris kode berikut, yang merupakan persyaratan minimal untuk memulai pelatihan dengan SMP v2. DiLangkah 2: Luncurkan pekerjaan pelatihan, Anda akan menyiapkan objek kelas SageMaker PyTorch estimator dengan kamus konfigurasi SMP melalui distribution argumen kelas estimator.

import torch.sagemaker as tsm tsm.init()
catatan

Anda juga dapat langsung meneruskan kamus konfigurasi Parameter konfigurasi fitur inti SMP v2 ke torch.sagemaker.init() modul. Namun, parameter diteruskan ke PyTorch estimator dalam Langkah 2: Luncurkan pekerjaan pelatihan mengambil prioritas dan mengganti yang ditentukan ke modul. torch.sagemaker.init()

SageMaker HyperPod

Dalam skrip pelatihan Anda, tambahkan dua baris kode berikut. DiLangkah 2: Luncurkan pekerjaan pelatihan, Anda akan menyiapkan smp_config.json file untuk menyiapkan konfigurasi SMP dalam format JSON, dan mengunggahnya ke penyimpanan atau sistem file yang dipetakan dengan cluster Anda. SageMaker HyperPod Kami menyarankan Anda menyimpan file konfigurasi di bawah direktori yang sama tempat Anda mengunggah skrip pelatihan Anda.

import torch.sagemaker as tsm tsm.init("/dir_to_training_files/smp_config.json")
catatan

Anda juga dapat langsung meneruskan kamus konfigurasi Parameter konfigurasi fitur inti SMP v2 ke dalam torch.sagemaker.init() modul.

Dalam skrip pelatihan Anda, tambahkan dua baris kode berikut, yang merupakan persyaratan minimal untuk memulai pelatihan dengan SMP v2. DiLangkah 2: Luncurkan pekerjaan pelatihan, Anda akan menyiapkan objek kelas SageMaker PyTorch estimator dengan kamus konfigurasi SMP melalui distribution argumen kelas estimator.

import torch.sagemaker as tsm tsm.init()
catatan

Anda juga dapat langsung meneruskan kamus konfigurasi Parameter konfigurasi fitur inti SMP v2 ke torch.sagemaker.init() modul. Namun, parameter diteruskan ke PyTorch estimator dalam Langkah 2: Luncurkan pekerjaan pelatihan mengambil prioritas dan mengganti yang ditentukan ke modul. torch.sagemaker.init()

Langkah 2: Luncurkan pekerjaan pelatihan

Pelajari cara mengonfigurasi opsi distribusi SMP untuk meluncurkan pekerjaan pelatihan PyTorch FSDP dengan fitur inti SMP.

SageMaker Training

Saat Anda menyiapkan objek peluncur pekerjaan pelatihan dari kelas estimator PyTorch kerangka kerja di SageMaker Python SDK, konfigurasikan Parameter konfigurasi fitur inti SMP v2 melalui argumen sebagai berikut. distribution

catatan

distributionKonfigurasi untuk SMP v2 terintegrasi dalam SDK SageMaker Python mulai dari v2.200. Pastikan Anda menggunakan SageMaker Python SDK v2.200 atau yang lebih baru.

catatan

Di SMP v2, Anda harus mengkonfigurasi smdistributed dengan torch_distributed distribution argumen SageMaker PyTorch estimator. Dengantorch_distributed, SageMaker AI berjalantorchrun, yang merupakan peluncur pekerjaan multi-node default Distributed. PyTorch

from sagemaker.pytorch import PyTorch estimator = PyTorch( framework_version=2.2.0, py_version="310" # image_uri="<smp-docker-image-uri>" # For using prior versions, specify the SMP image URI directly. entry_point="your-training-script.py", # Pass the training script you adapted with SMP from Step 1. ... # Configure other required and optional parameters distribution={ "torch_distributed": { "enabled": True }, "smdistributed": { "modelparallel": { "enabled": True, "parameters": { "hybrid_shard_degree": Integer, "sm_activation_offloading": Boolean, "activation_loading_horizon": Integer, "fsdp_cache_flush_warnings": Boolean, "allow_empty_shards": Boolean, "tensor_parallel_degree": Integer, "expert_parallel_degree": Integer, "random_seed": Integer } } } } )
penting

Untuk menggunakan salah satu versi sebelumnya PyTorch atau SMP alih-alih yang terbaru, Anda perlu menentukan gambar SMP Docker secara langsung menggunakan image_uri argumen alih-alih dan pasangkanframework_version. py_version Berikut ini adalah contoh dari

estimator = PyTorch( ..., image_uri="658645717510.dkr.ecr.us-west-2.amazonaws.com/smdistributed-modelparallel:2.2.0-gpu-py310-cu121" )

Untuk menemukan gambar SMP Docker URIs, lihat. Kerangka kerja yang didukung

SageMaker HyperPod

Sebelum Anda mulai, pastikan apakah prasyarat berikut terpenuhi.

  • Direktori FSx bersama Amazon mount (/fsx) ke HyperPod klaster Anda.

  • Conda diinstal di direktori FSx bersama. Untuk mempelajari cara menginstal Conda, gunakan petunjuk di Instalasi di Linux di Panduan Pengguna Conda.

  • cuda11.8atau cuda12.1 dipasang di kepala dan menghitung node HyperPod cluster Anda.

Jika semua prasyarat terpenuhi, lanjutkan ke instruksi berikut tentang meluncurkan beban kerja dengan SMP v2 pada sebuah cluster. HyperPod

  1. Siapkan smp_config.json file yang berisi kamusParameter konfigurasi fitur inti SMP v2. Pastikan Anda mengunggah file JSON ini ke tempat Anda menyimpan skrip pelatihan Anda, atau jalur yang Anda tentukan ke torch.sagemaker.init() modul di Langkah 1. Jika Anda telah melewati kamus konfigurasi ke torch.sagemaker.init() modul dalam skrip pelatihan di Langkah 1, Anda dapat melewati langkah ini.

    // smp_config.json { "hybrid_shard_degree": Integer, "sm_activation_offloading": Boolean, "activation_loading_horizon": Integer, "fsdp_cache_flush_warnings": Boolean, "allow_empty_shards": Boolean, "tensor_parallel_degree": Integer, "expert_parallel_degree": Integer, "random_seed": Integer }
  2. Unggah smp_config.json file ke direktori di sistem file Anda. Jalur direktori harus cocok dengan jalur yang Anda tentukan di Langkah 1. Jika Anda telah melewati kamus konfigurasi ke torch.sagemaker.init() modul dalam skrip pelatihan, Anda dapat melewati langkah ini.

  3. Pada node komputasi cluster Anda, mulai sesi terminal dengan perintah berikut.

    sudo su -l ubuntu
  4. Buat lingkungan Conda pada node komputasi. Kode berikut adalah contoh skrip menciptakan lingkungan Conda dan menginstal SMP, SMDDP, CUDA, dan dependensi lainnya.

    # Run on compute nodes SMP_CUDA_VER=<11.8 or 12.1> source /fsx/<path_to_miniconda>/miniconda3/bin/activate export ENV_PATH=/fsx/<path to miniconda>/miniconda3/envs/<ENV_NAME> conda create -p ${ENV_PATH} python=3.10 conda activate ${ENV_PATH} # Verify aws-cli is installed: Expect something like "aws-cli/2.15.0*" aws ‐‐version # Install aws-cli if not already installed # https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html#cliv2-linux-install # Install the SMP library conda install pytorch="2.0.1=sm_py3.10_cuda${SMP_CUDA_VER}*" packaging ‐‐override-channels \ -c https://sagemaker-distributed-model-parallel.s3.us-west-2.amazonaws.com/smp-2.0.0-pt-2.0.1/2023-12-11/smp-v2/ \ -c pytorch -c numba/label/dev \ -c nvidia -c conda-forge # Install dependencies of the script as below python -m pip install packaging transformers==4.31.0 accelerate ninja tensorboard h5py datasets \ && python -m pip install expecttest hypothesis \ && python -m pip install "flash-attn>=2.0.4" ‐‐no-build-isolation # Install the SMDDP wheel SMDDP_WHL="smdistributed_dataparallel-2.0.2-cp310-cp310-linux_x86_64.whl" \ && wget -q https://smdataparallel.s3.amazonaws.com/binary/pytorch/2.0.1/cu118/2023-12-07/${SMDDP_WHL} \ && pip install ‐‐force ${SMDDP_WHL} \ && rm ${SMDDP_WHL} # cuDNN installation for Transformer Engine installation for CUDA 11.8 # Please download from below link, you need to agree to terms # https://developer.nvidia.com/downloads/compute/cudnn/secure/8.9.5/local_installers/11.x/cudnn-linux-x86_64-8.9.5.30_cuda11-archive.tar.xz tar xf cudnn-linux-x86_64-8.9.5.30_cuda11-archive.tar.xz \ && rm -rf /usr/local/cuda-$SMP_CUDA_VER/include/cudnn* /usr/local/cuda-$SMP_CUDA_VER/lib/cudnn* \ && cp ./cudnn-linux-x86_64-8.9.5.30_cuda11-archive/include/* /usr/local/cuda-$SMP_CUDA_VER/include/ \ && cp ./cudnn-linux-x86_64-8.9.5.30_cuda11-archive/lib/* /usr/local/cuda-$SMP_CUDA_VER/lib/ \ && rm -rf cudnn-linux-x86_64-8.9.5.30_cuda11-archive.tar.xz \ && rm -rf cudnn-linux-x86_64-8.9.5.30_cuda11-archive/ # Please download from below link, you need to agree to terms # https://developer.download.nvidia.com/compute/cudnn/secure/8.9.7/local_installers/12.x/cudnn-linux-x86_64-8.9.7.29_cuda12-archive.tar.xz \ # cuDNN installation for TransformerEngine installation for cuda12.1 tar xf cudnn-linux-x86_64-8.9.7.29_cuda12-archive.tar.xz \ && rm -rf /usr/local/cuda-$SMP_CUDA_VER/include/cudnn* /usr/local/cuda-$SMP_CUDA_VER/lib/cudnn* \ && cp ./cudnn-linux-x86_64-8.9.7.29_cuda12-archive/include/* /usr/local/cuda-$SMP_CUDA_VER/include/ \ && cp ./cudnn-linux-x86_64-8.9.7.29_cuda12-archive/lib/* /usr/local/cuda-$SMP_CUDA_VER/lib/ \ && rm -rf cudnn-linux-x86_64-8.9.7.29_cuda12-archive.tar.xz \ && rm -rf cudnn-linux-x86_64-8.9.7.29_cuda12-archive/ # TransformerEngine installation export CUDA_HOME=/usr/local/cuda-$SMP_CUDA_VER export CUDNN_PATH=/usr/local/cuda-$SMP_CUDA_VER/lib export CUDNN_LIBRARY=/usr/local/cuda-$SMP_CUDA_VER/lib export CUDNN_INCLUDE_DIR=/usr/local/cuda-$SMP_CUDA_VER/include export PATH=/usr/local/cuda-$SMP_CUDA_VER/bin:$PATH export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-$SMP_CUDA_VER/lib python -m pip install ‐‐no-build-isolation git+https://github.com/NVIDIA/TransformerEngine.git@v1.0
  5. Jalankan pekerjaan pelatihan tes.

    1. Di sistem file bersama (/fsx), kloning GitHub repositori Pelatihan Terdistribusi Awsome, dan buka folder. 3.test_cases/11.modelparallel

      git clone https://github.com/aws-samples/awsome-distributed-training/ cd awsome-distributed-training/3.test_cases/11.modelparallel
    2. Kirim pekerjaan menggunakan sbatch sebagai berikut.

      conda activate <ENV_PATH> sbatch -N 16 conda_launch.sh

      Jika pengiriman pekerjaan berhasil, pesan output dari sbatch perintah ini harus mirip Submitted batch job ABCDEF dengan.

    3. Periksa file log di direktori saat ini di bawahlogs/.

      tail -f ./logs/fsdp_smp_ABCDEF.out

Saat Anda menyiapkan objek peluncur pekerjaan pelatihan dari kelas estimator PyTorch kerangka kerja di SageMaker Python SDK, konfigurasikan Parameter konfigurasi fitur inti SMP v2 melalui argumen sebagai berikut. distribution

catatan

distributionKonfigurasi untuk SMP v2 terintegrasi dalam SDK SageMaker Python mulai dari v2.200. Pastikan Anda menggunakan SageMaker Python SDK v2.200 atau yang lebih baru.

catatan

Di SMP v2, Anda harus mengkonfigurasi smdistributed dengan torch_distributed distribution argumen SageMaker PyTorch estimator. Dengantorch_distributed, SageMaker AI berjalantorchrun, yang merupakan peluncur pekerjaan multi-node default Distributed. PyTorch

from sagemaker.pytorch import PyTorch estimator = PyTorch( framework_version=2.2.0, py_version="310" # image_uri="<smp-docker-image-uri>" # For using prior versions, specify the SMP image URI directly. entry_point="your-training-script.py", # Pass the training script you adapted with SMP from Step 1. ... # Configure other required and optional parameters distribution={ "torch_distributed": { "enabled": True }, "smdistributed": { "modelparallel": { "enabled": True, "parameters": { "hybrid_shard_degree": Integer, "sm_activation_offloading": Boolean, "activation_loading_horizon": Integer, "fsdp_cache_flush_warnings": Boolean, "allow_empty_shards": Boolean, "tensor_parallel_degree": Integer, "expert_parallel_degree": Integer, "random_seed": Integer } } } } )
penting

Untuk menggunakan salah satu versi sebelumnya PyTorch atau SMP alih-alih yang terbaru, Anda perlu menentukan gambar SMP Docker secara langsung menggunakan image_uri argumen alih-alih dan pasangkanframework_version. py_version Berikut ini adalah contoh dari

estimator = PyTorch( ..., image_uri="658645717510.dkr.ecr.us-west-2.amazonaws.com/smdistributed-modelparallel:2.2.0-gpu-py310-cu121" )

Untuk menemukan gambar SMP Docker URIs, lihat. Kerangka kerja yang didukung

PrivasiSyarat situsPreferensi cookie
© 2025, Amazon Web Services, Inc. atau afiliasinya. Semua hak dilindungi undang-undang.