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 Tra SageMaker ining Compiler. Anda dapat terus menggunakan Tra SageMaker ining Compiler melalui AWS Deep Learning Containers (DLC) yang ada untuk SageMaker Pelatihan. Penting untuk dicatat bahwa sementara DLC yang ada tetap dapat diakses, mereka tidak akan lagi menerima tambalan atau pembaruan dari AWS, sesuai dengan Kebijakan Dukungan Kerangka Kon AWS tainer Pembelajaran Mendalam.
Tinjau praktik terbaik dan pertimbangan berikut saat menggunakan Tra SageMaker ining Compiler.
Praktik Terbaik
Gunakan panduan berikut untuk mencapai hasil terbaik saat menjalankan tugas pelatihan dengan Tra SageMaker ining Compiler.
Praktik Terbaik Umum
-
Pastikan Anda menggunakan salah satu Tipe Instans Yang Didukung danModel yang Diuji.
-
Saat Anda membuat tokenizer untuk model NLP menggunakan pustaka Hugging Face Transformers di skrip pelatihan Anda, pastikan Anda menggunakan bentuk tensor input statis dengan menentukan.
padding='max_length'Jangan gunakanpadding='longest'karena bantalan ke urutan terpanjang dalam batch dapat mengubah bentuk tensor untuk setiap batch pelatihan. Bentuk input dinamis dapat memulai kompilasi ulang model dan mungkin meningkatkan total waktu pelatihan. Untuk informasi selengkapnya tentang opsi padding dari tokenizer Transformers, lihat Padding dan truncationdi dokumentasi Hugging Face Transformers. -
Ukur pemanfaatan memori GPU untuk memastikan bahwa Anda menggunakan ukuran batch maksimum yang dapat masuk ke dalam memori GPU. Amazon SageMaker Training Compiler mengurangi jejak memori model Anda selama pelatihan, yang biasanya memungkinkan Anda untuk memasukkan memori GPU yang lebih besar
batch_size. Menggunakan yang lebih besarbatch_sizemenghasilkan pemanfaatan GPU yang lebih baik dan mengurangi total waktu pelatihan.Saat Anda menyesuaikan ukuran batch, Anda juga harus menyesuaikan dengan
learning_ratetepat. Misalnya, jika Anda meningkatkan ukuran batch dengan faktork, Anda perlu menyesuaikan secaralearning_ratelinier (perkalian sederhana dengank) atau mengalikan dengan akar kuadrat darik. Ini untuk mencapai perilaku konvergensi yang sama atau serupa dalam waktu pelatihan yang berkurang. Untuk referensi yangbatch_sizediuji untuk model populer, lihatModel yang Diuji. -
Untuk men-debug pekerjaan pelatihan yang dipercepat kompiler, aktifkan
debugflag di parameter.compiler_configIni memungkinkan SageMaker AI untuk memasukkan log debugging ke log pekerjaan SageMaker pelatihan.from sagemaker.core.training_compiler import TrainingCompilerConfig from sagemaker.train import ModelTrainer from sagemaker.core import image_uris training_image = image_uris.retrieve( framework="huggingface", region=region, version="4.21.1", py_version="py38", instance_type="ml.p3.2xlarge", image_scope="training", training_compiler_config=TrainingCompilerConfig(debug=True) ) model_trainer=ModelTrainer( training_image=training_image, ... )Perhatikan bahwa jika Anda mengaktifkan debugging penuh dari pekerjaan pelatihan dengan kompiler, ini mungkin menambah beberapa overhead.
Praktik Terbaik untuk PyTorch
-
Jika Anda membawa PyTorch model dan ingin memeriksanya, pastikan Anda menggunakan PyTorch/XLA fungsi penyimpanan model untuk memeriksa model Anda dengan benar. Untuk informasi selengkapnya tentang fungsi ini, lihat dokument asi
torch_xla.core.xla_model.savePyTorch pada Perangkat XLA. Untuk mempelajari cara menambahkan modifikasi ke PyTorch skrip Anda, lihatModel Bahasa Besar Menggunakan Lang PyTorch sung (tanpa API Hugging Face Transformers Trainer).
Untuk informasi lebih lanjut tentang aplikasi aktual menggunakan fungsi penyimpanan model, lihat Checkpoint Writing and Loading
in the Hugging Face on PyTorch/XLA TPU: Blog pelatihan yang lebih cepat dan lebih murah. -
Untuk mencapai waktu pelatihan yang paling optimal untuk pelatihan terdistribusi, pertimbangkan hal berikut.
-
Gunakan instance dengan beberapa GPU alih-alih menggunakan instance GPU tunggal. Misalnya, satu
ml.p3dn.24xlargeinstance memiliki waktu pelatihan yang lebih cepat dibandingkan dengan 8 xml.p3.2xlargeinstance. -
Gunakan instance dengan dukungan EFA seperti
ml.p3dn.24xlargedanml.p4d.24xlarge. Jenis instance ini telah mempercepat kecepatan jaringan dan mengurangi waktu pelatihan. -
Setel
preprocessing_num_workersparameter untuk kumpulan data, sehingga pelatihan model tidak tertunda oleh preprocessing yang lambat.
-
Pertimbangan-pertimbangan
Pertimbangkan hal berikut saat menggunakan Tra SageMaker ining Compiler.
Penurunan kinerja karena pencatatan, checkpointing, dan pembuatan profil
-
Hindari pencatatan, checkpointing, dan pembuatan profil tensor model yang mengarah pada evaluasi eksplisit. Untuk memahami apa itu evaluasi eksplisit, pertimbangkan contoh kompilasi kode berikut.
a = b+c e = a+dKompiler menafsirkan kode sebagai berikut dan mengurangi jejak memori untuk variabel:
ae = b+c+dSekarang perhatikan kasus berikut di mana kode diubah untuk menambahkan fungsi cetak untuk variabel
a.a = b+c e = a+d print(a)Kompiler membuat evaluasi eksplisit dari variabel
asebagai berikut.e = b+c+d a = b+c # Explicit evaluation print(a)Di PyTorch, misalnya, hindari menggunakan torch.tensor.items ()
, yang mungkin memperkenalkan evaluasi eksplisit. Dalam pembelajaran mendalam, evaluasi eksplisit semacam 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 Tra SageMaker ining Compiler, sebaiknya catat dan checkpoint pada frekuensi yang lebih rendah untuk mengurangi overhead karena evaluasi eksplisit. Misalnya, catat setiap 10 zaman alih-alih 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 di masa depan jauh lebih cepat. Overhead kompilasi awal tergantung pada ukuran model, ukuran tensor input, dan distribusi bentuk tensor input.
Penggunaan PyTorch/XLA API yang salah saat menggunakan PyTorch secara langsung
PyTorch/XLA mendefinisikan satu set API untuk menggantikan beberapa API PyTorch pelatihan yang ada. Gagal menggunakannya dengan benar menyebabkan PyTorch pelatihan gagal.
-
Salah satu kesalahan paling umum saat menyusun PyTorch model adalah karena jenis perangkat yang salah untuk operator dan tensor. Untuk mengkompilasi PyTorch model dengan benar, pastikan Anda menggunakan perangkat XLA (
xm.xla_device()) alih-alih menggunakan CUDA atau mencampur perangkat CUDA dan perangkat XLA. -
mark_step()adalah penghalang hanya untuk XLA. Gagal mengaturnya dengan benar menyebabkan pekerjaan pelatihan terhenti. -
PyTorch/XLA menyediakan API pelatihan terdistribusi tambahan. Gagal memprogram API dengan benar menyebabkan gradien dikumpulkan secara tidak benar, yang menyebabkan kegagalan konvergensi pelatihan.
Untuk mengatur PyTorch skrip Anda dengan benar dan menghindari penggunaan API yang salah yang disebutkan di atas, lihatModel Bahasa Besar Menggunakan Lang PyTorch sung (tanpa API Hugging Face Transformers Trainer).