Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Langkah 1: Ubah Skrip Pelatihan Anda Sendiri Menggunakan P SageMaker ustaka Paralel Model Terdistribusi
Gunakan bagian ini untuk mempelajari cara menyesuaikan skrip pelatihan Anda untuk menggunakan fitur inti dari pustaka paralelisme model Amazon SageMaker AI. Untuk menggunakan fungsi dan parameter API khusus pustaka, kami sarankan Anda menggunakan dokumentasi ini bersama API pust SageMaker aka paralel model
Contoh skrip pelatihan yang disediakan di bagian ini disederhanakan dan dirancang untuk menyoroti perubahan yang diperlukan yang harus Anda lakukan untuk menggunakan perpustakaan. Untuk contoh buku catatan ujung ke ujung dan dapat dijalankan yang menunjukkan cara menggunakan skrip TensorFlow atau PyTorch pelatihan dengan pustaka paralelisme SageMaker model, lihat. Contoh perpustakaan paralelisme model Amazon SageMaker AI v2
Topik
Pisahkan model skrip pelatihan Anda menggunakan pustaka paralelisme SageMaker model
Ada dua cara untuk memodifikasi skrip pelatihan Anda untuk mengatur pemisahan model: pemisahan otomatis atau pemisahan manual.
Pemisahan model otomatis
Saat Anda menggunakan SageMaker pustaka paralelisme model, Anda dapat memanfaatkan pemisahan model otomatis, juga disebut sebagai partisi model otomatis. Perpustakaan menggunakan algoritma partisi yang menyeimbangkan memori, meminimalkan komunikasi antar perangkat, dan mengoptimalkan kinerja. Anda dapat mengonfigurasi algoritma partisi otomatis untuk mengoptimalkan kecepatan atau memori.
Atau, Anda dapat menggunakan pemisahan model manual. Kami merekomendasikan pemisahan model otomatis, kecuali jika Anda sangat akrab dengan arsitektur model dan memiliki ide bagus tentang cara mempartisi model Anda secara efisien.
Cara kerjanya
Auto-partitioning terjadi selama langkah pelatihan pertama, ketika fungsi smp.step -pertama kali dipanggil. Selama panggilan ini, perpustakaan pertama-tama membangun versi model pada RAM CPU (untuk menghindari keterbatasan memori GPU), dan kemudian menganalisis grafik model dan membuat keputusan partisi. Berdasarkan keputusan ini, setiap partisi model dimuat pada GPU, dan hanya kemudian langkah pertama dijalankan. Karena langkah-langkah analisis dan partisi ini, langkah pelatihan pertama mungkin memakan waktu lebih lama.
Dalam kedua kerangka kerja, perpustakaan mengelola komunikasi antar perangkat melalui backendnya sendiri, yang dioptimalkan untuk AWS infrastruktur.
Desain partisi otomatis menyesuaikan dengan karakteristik kerangka kerja, dan perpustakaan melakukan partisi pada tingkat granularitas yang lebih alami di setiap kerangka kerja. Misalnya, di TensorFlow, setiap operasi tertentu dapat ditugaskan ke perangkat yang berbeda, sedangkan di PyTorch, penugasan dilakukan pada tingkat modul, di mana setiap modul terdiri dari beberapa operasi. Bagian berikut meninjau spesifikasi desain di setiap kerangka kerja.
Selama langkah pelatihan pertama, perpustakaan paralelisme model secara internal menjalankan langkah pelacakan yang dimaksudkan untuk membangun grafik model dan menentukan bentuk tensor dan parameter. Setelah langkah pelacakan ini, pustaka membangun pohon, yang terdiri dari nn.Module objek bersarang dalam model, serta data tambahan yang dikumpulkan dari penelusuran, seperti jumlah yang disimpannn.Parameters, dan waktu eksekusi untuk masing-masing. nn.Module
Selanjutnya, pustaka melintasi pohon ini dari root dan menjalankan algoritma partisi yang menetapkan masing-masing nn.Module ke perangkat, yang menyeimbangkan beban komputasi (diukur dengan waktu eksekusi modul) dan penggunaan memori (diukur dengan nn.Parameter ukuran dan aktivasi total yang disimpan). Jika beberapa nn.Modules berbagi yang samann.Parameter, maka modul ini ditempatkan pada perangkat yang sama untuk menghindari mempertahankan beberapa versi dari parameter yang sama. Setelah keputusan partisi dibuat, modul dan bobot yang ditetapkan dimuat ke perangkat mereka.
Untuk petunjuk tentang cara mendaftarkan smp.step dekorator ke skrip PyTorch pelatihan Anda, lihatPemisahan otomatis dengan PyTorch.
Pustaka paralelisme model menganalisis ukuran variabel yang dapat dilatih dan struktur grafik, dan secara internal menggunakan algoritma partisi grafik. Algoritma ini datang dengan penugasan perangkat untuk setiap operasi, dengan tujuan meminimalkan jumlah komunikasi yang dibutuhkan di seluruh perangkat, tunduk pada dua kendala:
-
Menyeimbangkan jumlah variabel yang disimpan di setiap perangkat
-
Menyeimbangkan jumlah operasi yang dijalankan di setiap perangkat
Jika Anda menentukan speed untuk optimize (dalam parameter paralelisme model di Python SDK), pustaka mencoba menyeimbangkan jumlah operasi dan tf.Variable objek di setiap perangkat. Jika tidak, ia mencoba menyeimbangkan ukuran totaltf.Variables.
Setelah keputusan partisi dibuat, pustaka membuat representasi serial dari subgraf yang setiap perangkat perlu dieksekusi dan mengimpornya ke setiap perangkat. Saat mempartisi, pustaka menempatkan operasi yang menggunakan yang sama tf.Variable dan operasi yang merupakan bagian dari lapisan Keras yang sama ke perangkat yang sama. Ini juga menghormati batasan kolokasi yang diberlakukan oleh TensorFlow. Ini berarti bahwa, misalnya, jika ada dua lapisan Keras yang berbagi atf.Variable, maka semua operasi yang merupakan bagian dari lapisan ini ditempatkan pada satu perangkat.
Untuk petunjuk tentang cara mendaftarkan smp.step dekorator ke skrip PyTorch pelatihan Anda, lihatPemisahan otomatis dengan TensorFlow.
Perbandingan pemisahan model otomatis antara kerangka kerja
Dalam TensorFlow, unit dasar komputasi adalah atf.Operation, dan TensorFlow mewakili model sebagai grafik asiklik terarah (DAG) dari tf.Operation s, dan oleh karena itu perpustakaan paralelisme model mempartisi DAG ini sehingga setiap simpul pergi ke satu perangkat. Yang terpenting, tf.Operation objek cukup kaya dengan atribut yang dapat disesuaikan, dan mereka bersifat universal dalam arti bahwa setiap model dijamin terdiri dari grafik objek tersebut.
PyTorch di sisi lain, tidak memiliki gagasan operasi yang setara yang cukup kaya dan universal. Unit komputasi terdekat PyTorch yang memiliki karakteristik ini adalah annn.Module, yang berada pada tingkat granularitas yang jauh lebih tinggi, dan inilah mengapa perpustakaan melakukan partisi pada level ini di. PyTorch
Pemisahan Model Manual
Jika Anda ingin menentukan secara manual cara mempartisi model Anda di seluruh perangkat, gunakan pengel smp.partition ola konteks. Untuk petunjuk tentang cara mengatur pengelola konteks untuk partisi manual, lihat halaman berikut.
Untuk menggunakan opsi ini setelah melakukan modifikasi, pada Langkah 2, Anda harus mengatur auto_partition keFalse, dan mendefinisikan a default_partition di ModelTrainer kelas SageMaker Python SDK. Setiap operasi yang tidak secara eksplisit ditempatkan pada partisi melalui smp.partition pengelola konteks dijalankan padadefault_partition. Dalam hal ini, logika pemisahan otomatis dilewati, dan setiap operasi ditempatkan berdasarkan spesifikasi Anda. Berdasarkan struktur grafik yang dihasilkan, pustaka paralelisme model membuat jadwal eksekusi pipeline secara otomatis.