

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
<a name="model-parallel-customize-training-script"></a>

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 ](https://sagemaker.readthedocs.io/en/v2.199.0/api/training/smd_model_parallel.html) dalam dokumentasi * SageMaker Python SDK. *

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](distributed-model-parallel-v2-examples.md)

**Topics**
+ [Pisahkan model skrip pelatihan Anda menggunakan pustaka paralelisme SageMaker model](#model-parallel-model-splitting-using-smp-lib)
+ [Memodifikasi skrip TensorFlow pelatihan](model-parallel-customize-training-script-tf.md)
+ [Memodifikasi Skrip PyTorch Pelatihan](model-parallel-customize-training-script-pt.md)

## Pisahkan model skrip pelatihan Anda menggunakan pustaka paralelisme SageMaker model
<a name="model-parallel-model-splitting-using-smp-lib"></a>

Ada dua cara untuk memodifikasi skrip pelatihan Anda untuk mengatur pemisahan model: pemisahan otomatis atau pemisahan manual.

### Pemisahan model otomatis
<a name="model-parallel-automated-model-splitting"></a>

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
<a name="model-parallel-automated-model-splitting-how-it-works"></a>

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.

##### Pemisahan model otomatis dengan PyTorch
<a name="model-parallel-auto-model-split-pt"></a>

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 disimpan`nn.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 sama`nn.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, lihat[Pemisahan otomatis dengan PyTorch](model-parallel-customize-training-script-pt.md#model-parallel-customize-training-script-pt-16).

##### Pemisahan model otomatis dengan TensorFlow
<a name="model-parallel-auto-model-split-tf"></a>

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 total`tf.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 a`tf.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, lihat[Pemisahan otomatis dengan TensorFlow](model-parallel-customize-training-script-tf.md#model-parallel-customize-training-script-tf-23).

##### Perbandingan pemisahan model otomatis antara kerangka kerja
<a name="model-parallel-auto-model-split-comparison"></a>

Dalam TensorFlow, unit dasar komputasi adalah a`tf.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 an`nn.Module`, yang berada pada tingkat granularitas yang jauh lebih tinggi, dan inilah mengapa perpustakaan melakukan partisi pada level ini di. PyTorch

### Pemisahan Model Manual
<a name="model-parallel-manual-model-splitting"></a>

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.
+ [Pemisahan manual dengan TensorFlow](model-parallel-customize-training-script-tf.md#model-parallel-customize-training-script-tf-manual)
+ [Pemisahan manual dengan PyTorch](model-parallel-customize-training-script-pt.md#model-parallel-customize-training-script-pt-16-hvd)

Untuk menggunakan opsi ini setelah melakukan modifikasi, pada Langkah 2, Anda harus mengatur `auto_partition` ke`False`, 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 pada`default_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.