Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
SageMaker Praktik dan Pertimbangan Terbaik Kompiler Pelatihan
penting
Amazon Web Services (AWS) mengumumkan bahwa tidak akan ada rilis baru atau versi SageMaker Training Compiler. Anda dapat terus menggunakan SageMaker Training Compiler melalui AWS Deep Learning Containers (DLCs) for SageMaker Training yang ada. Penting untuk dicatat bahwa meskipun yang ada DLCs tetap dapat diakses, mereka tidak akan lagi menerima tambalan atau pembaruan AWS, sesuai dengan Kebijakan Dukungan Framework AWS Deep Learning Containers.
Tinjau praktik dan pertimbangan terbaik berikut saat menggunakan SageMaker Training Compiler.
Praktik Terbaik
Gunakan panduan berikut untuk mencapai hasil terbaik saat Anda menjalankan pekerjaan pelatihan dengan SageMaker Training Compiler.
Praktik Terbaik Umum
-
Pastikan Anda menggunakan salah satu Tipe Instans Yang Didukung danModel yang Diuji.
-
Saat Anda membuat tokenizer untuk NLP model menggunakan pustaka Hugging Face Transformers dalam skrip pelatihan Anda, pastikan Anda menggunakan bentuk tensor input statis dengan menentukan.
padding='max_length'
Jangan gunakanpadding='longest'
karena padding ke urutan terpanjang dalam batch dapat mengubah bentuk tensor untuk setiap batch pelatihan. Bentuk input dinamis dapat memulai kompilasi ulang model dan dapat meningkatkan total waktu pelatihan. Untuk informasi selengkapnya tentang opsi padding tokenizer Transformers, lihat Padding dan pemotongan dalam dokumentasi Hugging Face Transformers. -
Ukur pemanfaatan GPU memori untuk memastikan bahwa Anda menggunakan ukuran batch maksimum yang dapat masuk ke dalam GPU memori. Amazon SageMaker Training Compiler mengurangi jejak memori model Anda selama pelatihan, yang biasanya memungkinkan Anda memasukkan memori yang lebih besar
batch_size
. GPU Menggunakanbatch_size
hasil yang lebih besar dalam GPU pemanfaatan yang lebih baik dan mengurangi total waktu pelatihan.Saat Anda menyesuaikan ukuran batch, Anda juga harus menyesuaikannya
learning_rate
dengan tepat. Misalnya, jika Anda meningkatkan ukuran batch dengan faktork
, Anda perlu menyesuaikan secaralearning_rate
linier (perkalian sederhana dengank
) atau kalikan dengan akar kuadrat dari.k
Ini untuk mencapai perilaku konvergensi yang sama atau serupa dalam waktu pelatihan yang berkurang. Untuk referensibatch_size
diuji untuk model populer, lihatModel yang Diuji. -
Untuk men-debug tugas pelatihan yang dipercepat kompiler, aktifkan
debug
flag di parameter.compiler_config
Hal ini memungkinkan SageMaker untuk menempatkan log debugging ke dalam log pekerjaan SageMaker pelatihan.huggingface_estimator=HuggingFace( ... compiler_config=TrainingCompilerConfig(debug=True) )
Perhatikan bahwa jika Anda mengaktifkan debugging penuh dari pekerjaan pelatihan dengan kompiler, ini mungkin menambahkan beberapa overhead.
Praktik Terbaik untuk PyTorch
-
Jika Anda membawa PyTorch model dan ingin memeriksanya, pastikan Anda menggunakan fungsi penyimpanan PyTorch XLA model/untuk memeriksa model Anda dengan benar. Untuk informasi selengkapnya tentang fungsi ini, lihat
torch_xla.core.xla_model.save
PyTorchdi dokumentasi tentang XLA Perangkat. Untuk mempelajari cara menambahkan modifikasi ke PyTorch skrip Anda, lihatModel Bahasa Besar Menggunakan PyTorch Langsung (tanpa API Pelatih Trainer Hugging Face Transformers).
Untuk informasi lebih lanjut tentang aplikasi aktual menggunakan fungsi penyimpanan model, lihat Penulisan Pos Pemeriksaan dan Pemuatan
di Hugging Face di PyTorch/XLATPUs: Blog pelatihan yang lebih cepat dan lebih murah. -
Untuk mencapai waktu pelatihan paling optimal untuk pelatihan terdistribusi, pertimbangkan hal berikut.
-
Gunakan instance dengan beberapa GPUs alih-alih menggunakan instance gpu tunggal. Misalnya, satu
ml.p3dn.24xlarge
instance memiliki waktu pelatihan yang lebih cepat dibandingkan dengan 8 xml.p3.2xlarge
instance. -
Gunakan instance dengan EFA dukungan seperti
ml.p3dn.24xlarge
danml.p4d.24xlarge
. Jenis contoh ini telah mempercepat kecepatan jaringan dan mengurangi waktu pelatihan. -
Setel
preprocessing_num_workers
parameter untuk kumpulan data, sehingga pelatihan model tidak tertunda oleh preprocessing yang lambat.
-
Pertimbangan
Pertimbangkan hal berikut saat menggunakan SageMaker Training Compiler.
Degradasi kinerja karena logging, checkpointing, dan profiling
-
Hindari logging, checkpointing, dan profiling tensor model yang mengarah ke evaluasi eksplisit. Untuk memahami apa itu evaluasi eksplisit, pertimbangkan contoh kompilasi kode berikut.
a = b+c e = a+d
Sebuah compiler menafsirkan kode sebagai berikut dan mengurangi footprint memori untuk variabel:
a
e = b+c+d
Sekarang pertimbangkan kasus berikut di mana kode diubah untuk menambahkan fungsi cetak untuk variabel
a
.a = b+c e = a+d print(a)
Compiler membuat evaluasi eksplisit dari variabel
a
sebagai berikut.e = b+c+d a = b+c # Explicit evaluation print(a)
Misalnya PyTorch, hindari penggunaan torch.tensor.items ()
, yang mungkin memperkenalkan evaluasi eksplisit. Dalam pembelajaran mendalam, evaluasi eksplisit seperti itu dapat menyebabkan overhead karena mereka merusak operasi yang menyatu dalam grafik kompilasi model dan mengarah pada perhitungan ulang tensor. Jika Anda masih ingin mengevaluasi model secara berkala selama pelatihan saat menggunakan SageMaker Training Compiler, kami merekomendasikan logging dan checkpointing pada frekuensi yang lebih rendah untuk mengurangi overhead karena evaluasi eksplisit. Misalnya, catat setiap 10 zaman, bukan setiap zaman.
-
Kompilasi grafik berjalan selama beberapa langkah pertama pelatihan. Akibatnya, beberapa langkah pertama diharapkan sangat lambat. Namun, ini adalah biaya kompilasi satu kali dan dapat diamortisasi dengan pelatihan untuk durasi yang lebih lama karena kompilasi membuat langkah-langkah masa depan jauh lebih cepat. Overhead kompilasi awal tergantung pada ukuran model, ukuran tensor input, dan distribusi bentuk tensor input.
Penggunaan yang salah dari PyTorch/XLAAPIssaat menggunakan PyTorch secara langsung
PyTorch/XLAmendefinisikan satu set APIs untuk menggantikan beberapa PyTorch pelatihan APIs yang ada. Gagal menggunakannya dengan benar menyebabkan PyTorch pelatihan gagal.
-
Salah satu kesalahan paling umum saat mengkompilasi PyTorch model adalah karena jenis perangkat yang salah untuk operator dan tensor. Untuk mengkompilasi PyTorch model dengan benar, pastikan Anda menggunakan XLA perangkat (
xm.xla_device()
) alih-alih menggunakan CUDA atau mencampur CUDA perangkat dan XLA perangkat. -
mark_step()
adalah penghalang hanya untukXLA. Gagal mengaturnya dengan benar menyebabkan pekerjaan pelatihan terhenti. -
PyTorch/XLAmenyediakan pelatihan terdistribusi tambahanAPIs. Gagal memprogram APIs dengan benar menyebabkan gradien dikumpulkan secara tidak benar, yang menyebabkan kegagalan konvergensi pelatihan.
Untuk mengatur PyTorch skrip Anda dengan benar dan menghindari API penggunaan yang salah yang disebutkan di atas, lihatModel Bahasa Besar Menggunakan PyTorch Langsung (tanpa API Pelatih Trainer Hugging Face Transformers).