Pemecahan masalah untuk pelatihan terdistribusi di Amazon SageMaker - Amazon SageMaker

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

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

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

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

Namun, ketika Anda menggunakan SageMaker Debugger, SageMaker distributed data parallel, dan SageMaker checkpoints, Anda mungkin melihat error yang terlihat seperti contoh berikut.

SMDebug Does Not Currently Support Distributed Training Jobs With Checkpointing Enabled

Hal ini disebabkan oleh kesalahan internal antara Debugger dan checkpoints, yang terjadi ketika Anda mengaktifkan distributed SageMaker data parallel.

  • Jika Anda mengaktifkan ketiga fitur, SageMaker Python SDK secara otomatis mematikan Debugger dengan meneruskandebugger_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 data parallel dan SageMaker Debugger SageMaker terdistribusi, 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

Awalan tak terduga yang dilampirkan ke kunci parameter model

Untuk pekerjaan pelatihan PyTorch terdistribusi, awalan yang tidak terduga (modelmisalnya) mungkin dilampirkan ke state_dict kunci (parameter model). Pustaka paralel SageMaker data 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 pustaka paralel SageMaker data 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 multi-GPU? di forum PyTorch diskusi.

Untuk informasi selengkapnya tentang PyTorch metode penyimpanan dan pemuatan model, lihat Menyimpan & Memuat Model di Seluruh Perangkat dalam PyTorchdokumentasi.

SageMaker mengulur-ulur pekerjaan pelatihan terdistribusi selama inisialisasi

Jika pekerjaan pelatihan paralel data SageMaker terdistribusi 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 AWS Management Console dan buka konsol VPC Amazon 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 Kustom, tempel ID grup keamanan ke dalam 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 tugas pelatihan dan verifikasi apakah masalah penghentian teratasi.

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

SageMaker terdistribusi pekerjaan pelatihan mengulur-ulur di akhir pelatihan

Salah satu akar penyebab masalah mengulur-ulur di akhir pelatihan adalah ketidakcocokan dalam jumlah batch yang diproses per zaman di berbagai peringkat. Semua pekerja (GPU) 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

Salah satu penyebab potensial penurunan efisiensi penskalaan adalah batas throughput FSx. Jika Anda mengamati penurunan efisiensi penskalaan yang tiba-tiba 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 Menggabungkan kinerja sistem file dan Mengelola kapasitas penyimpanan dan throughput di Panduan Pengguna Amazon FSx for Lustre.

SageMaker pekerjaan pelatihan terdistribusi dengan PyTorch mengembalikan peringatan penghentian

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

smdistributed.dataparallel.torch.dist is deprecated in the SageMaker 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 untuk mempelajari tentang perubahan yang melanggar dan cara baru untuk menggunakan perpustakaan PyTorch.