View a markdown version of this page

Pemecahan masalah untuk pelatihan terdistribusi di Amazon SageMaker AI - Amazon SageMaker AI

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

Pemecahan masalah untuk pelatihan terdistribusi di Amazon SageMaker AI

Jika Anda mengalami masalah dalam menjalankan tugas pelatihan saat menggunakan pustaka, gunakan daftar berikut untuk mencoba memecahkan masalah. Jika Anda memerlukan dukungan lebih lanjut, hubungi tim SageMaker AI melalui Pusat AWS Dukungan atau Forum AWS Pengembang untuk Amazon Amazon SageMaker AI.

Menggunakan data SageMaker terdistribusi AI secara paralel dengan Amazon SageMaker Debugger dan pos pemeriksaan

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

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

SMDebug Does Not Currently Support Distributed Training Jobs With Checkpointing Enabled

Hal ini disebabkan kesalahan internal antara Debugger dan pos pemeriksaan, yang terjadi ketika Anda mengaktifkan data terdistribusi SageMaker AI secara paralel.

  • Jika Anda mengaktifkan ketiga fitur, SageMaker Python SDK secara otomatis mematikan Debugger dengan melewatidebugger_hook_config=False, yang setara dengan ModelTrainer contoh kerangka kerja berikut.

    bucket=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) model_trainer = ModelTrainer( ... distribution={"smdistributed": {"dataparallel": { "enabled": True }}}, checkpoint_s3_uri=checkpoint_s3_bucket, checkpoint_local_path="/opt/ml/checkpoints", debugger_hook_config=False )
  • Jika Anda ingin terus menggunakan data terdistribusi SageMaker AI secara paralel dan SageMaker Debugger, solusinya adalah menambahkan fungsi checkpointing secara manual ke skrip pelatihan Anda alih-alih menentukan parameter checkpoint_s3_uri dan checkpoint_local_path dari. ModelTrainer Untuk informasi selengkapnya tentang menyiapkan checkpointing manual dalam skrip pelatihan, lihatMenyimpan Pos Pemeriksaan.

Awalan tak terduga yang dilampirkan ke kunci parameter model

Untuk PyTorch pekerjaan pelatihan terdistribusi, awalan tak terduga (modelmisalnya) mungkin dilampirkan ke state_dict kunci (parameter model). P SageMaker ustaka paralel data AI tidak secara langsung mengubah atau menambahkan nama parameter model apa pun saat pekerjaan PyTorch pelatihan menyimpan artefak model. Pel PyTorch atihan terdistribusi mengubah nama state_dict untuk pergi melalui jaringan, mendahului awalan. Jika Anda mengalami masalah kegagalan model karena nama parameter yang berbeda saat Anda menggunakan pustaka paralel data SageMaker AI dan checkpoint 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 kejadian pertama'model.', dan mengambil item daftar ketiga (dengan indeks 2) dari string yang dipartisi.

Untuk informasi lebih lanjut tentang masalah awalan, lihat utas diskusi di Nama parameter Awalan dalam model yang disimpan jika dilatih oleh multi-GPU? dalam forum PyTorch diskusi.

Untuk informasi selengkapnya tentang PyTorch metode untuk menyimpan dan memuat model, lihat Meny impan & Memuat Model di Seluruh Perangkat dalam PyTorch dokumentasi.

SageMaker Pekerjaan pelatihan terdistribusi AI terhenti selama inisialisasi

Jika pekerjaan pelatihan paralel data terdistribusi SageMaker AI Anda terhenti selama inisialisasi saat menggunakan EFA-enabled instance, ini mungkin disebabkan oleh kesalahan konfigurasi dalam grup keamanan subnet VPC yang digunakan untuk pekerjaan pelatihan. EFA memerlukan 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 Amazon VPC di https://console.aws.amazon.com/vpc/.

  2. Pilih Grup Keamanan di panel navigasi kiri.

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

  4. Di bagian Detail, salin ID grup keamanan.

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

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

    1. Pilih Add rule (Tambahkan aturan).

    2. Untuk Tipe, pilih Semua lalu lintas.

    3. Untuk Sumber, pilih K ustom, tempel ID grup keamanan ke kotak pencarian, dan pilih grup keamanan yang muncul.

  7. Pilih Simpan aturan untuk menyelesaikan konfigurasi aturan masuk untuk grup keamanan.

  8. Pada tab Aturan keluar, pilih Edit aturan keluar.

  9. 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 pekerjaan pelatihan dan verifikasi apakah masalah penundaan telah diselesaikan.

Untuk informasi selengkapnya tentang mengonfigurasi grup keamanan untuk VPC dan EFA, lihat Grup keamanan untuk VPC dan Adaptor Kain Elastis Anda.

SageMaker AI mendistribusikan pekerjaan pelatihan terhenti di akhir pelatihan

Salah satu akar penyebab masalah penundaan di akhir pelatihan adalah ketidakcocokan dalam jumlah batch yang diproses per zaman di peringkat yang berbeda. Semua pekerja (GPU) menyinkronkan gradien lokal mereka dalam pass mundur untuk memastikan mereka semua memiliki salinan model yang sama di akhir iterasi batch. Jika ukuran batch tidak merata ditetapkan ke kelompok pekerja yang berbeda selama periode terakhir pelatihan, pekerjaan pelatihan terhenti. 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 dataset 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 penundaan ini.

Mengamati penurunan efisiensi penskalaan karena hambatan throughput Amazon FSx

Salah satu penyebab potensial penurunan efisiensi penskalaan adalah batas throughput FSx. Jika Anda mengamati penurunan mendadak dalam efisiensi penskalaan saat beralih ke cluster pelatihan yang lebih besar, coba gunakan sistem file FSx for Lustre yang lebih besar dengan batas throughput yang lebih tinggi. Untuk informasi selengkapnya, lihat Performa sistem file agregat dan M engelola kapasitas penyimpanan dan throughput di Panduan Pengguna Amazon FSx for Lustre.

SageMaker AI mendistribusikan pekerjaan pelatihan dengan peringatan pengh PyTorch entian pengembalian

Sejak v1.4.0, perpustakaan paralelisme data terdistribusi SageMaker AI berfungsi sebagai backend terdistribusi. PyTorch Karena perubahan besar dalam menggunakan pustaka dengan PyTorch, Anda mungkin menemukan pesan peringatan bahwa smdistributed API untuk paket ter PyTorch distribusi tidak digunakan lagi. Pesan peringatan harus mirip dengan yang berikut:

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, pustaka 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 ter PyTorch distribusi. Lihat Gunakan pustaka SMDDP dalam skrip pelatihan Anda PyTorch untuk mempelajari tentang perubahan besar dan cara baru untuk menggunakan perpustakaan PyTorch.