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
Topik
- Menggunakan data SageMaker terdistribusi paralel dengan Amazon SageMaker Debugger dan pos pemeriksaan
- Awalan tak terduga yang dilampirkan ke kunci parameter model
- SageMaker mengulur-ulur pekerjaan pelatihan terdistribusi selama inisialisasi
- SageMaker terdistribusi pekerjaan pelatihan mengulur-ulur di akhir pelatihan
- Mengamati degradasi efisiensi penskalaan karena kemacetan throughput Amazon FSx
- SageMaker pekerjaan pelatihan terdistribusi dengan PyTorch mengembalikan peringatan penghentian
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 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 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 (model
misalnya) 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
Untuk informasi selengkapnya tentang PyTorch metode penyimpanan dan pemuatan model, lihat Menyimpan & Memuat Model di Seluruh Perangkat
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
-
Pilih Grup Keamanan di panel navigasi kiri.
-
Pilih grup keamanan yang terkait dengan subnet VPC yang Anda gunakan untuk pelatihan.
-
Di bagian Detail, salin ID grup Keamanan.
-
Pada tab Inbound rules (Aturan ke dalam), pilih Edit inbound rules (Edit aturan ke dalam).
-
Pada halaman Edit aturan ke dalam, lakukan hal berikut ini:
-
Pilih Add rule (Tambahkan aturan).
-
Untuk Tipe, pilih Semua lalu lintas.
-
Untuk Sumber, pilih Kustom, tempel ID grup keamanan ke dalam kotak pencarian, dan pilih grup keamanan yang muncul.
-
-
Pilih Simpan aturan untuk menyelesaikan konfigurasi aturan masuk untuk grup keamanan.
-
Pada tab Aturan keluar, pilih Edit aturan keluar.
-
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 SMDDP perpustakaan dalam skrip PyTorch pelatihan Anda untuk mempelajari tentang perubahan yang melanggar dan cara baru untuk menggunakan perpustakaan PyTorch.