

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
<a name="training-compiler-tips-pitfalls"></a>

**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 ](https://docs.aws.amazon.com/deep-learning-containers/latest/devguide/support-policy.html)AWS tainer Pembelajaran Mendalam.

Tinjau praktik terbaik dan pertimbangan berikut saat menggunakan Tra SageMaker ining Compiler.

## Praktik Terbaik
<a name="training-compiler-tips-pitfalls-best-practices"></a>

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](training-compiler-support.md#training-compiler-supported-instance-types) dan[Model yang Diuji](training-compiler-support.md#training-compiler-tested-models). 
+ 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 gunakan `padding='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 truncation ](https://huggingface.co/docs/transformers/pad_truncation) di 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 besar `batch_size` menghasilkan pemanfaatan GPU yang lebih baik dan mengurangi total waktu pelatihan. 

  Saat Anda menyesuaikan ukuran batch, Anda juga harus menyesuaikan dengan `learning_rate` tepat. Misalnya, jika Anda meningkatkan ukuran batch dengan faktor`k`, Anda perlu menyesuaikan secara `learning_rate` linier (perkalian sederhana dengan`k`) atau mengalikan dengan akar kuadrat dari`k`. Ini untuk mencapai perilaku konvergensi yang sama atau serupa dalam waktu pelatihan yang berkurang. Untuk referensi yang `batch_size` diuji untuk model populer, lihat[Model yang Diuji](training-compiler-support.md#training-compiler-tested-models).
+ Untuk men-debug pekerjaan pelatihan yang dipercepat kompiler, aktifkan `debug` flag di parameter. `compiler_config` Ini 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.save`](https://pytorch.org/xla/release/1.9/index.html#torch_xla.core.xla_model.save) * PyTorch pada Perangkat XLA. 

  Untuk mempelajari cara menambahkan modifikasi ke PyTorch skrip Anda, lihat[Model Bahasa Besar Menggunakan Lang PyTorch sung (tanpa API Hugging Face Transformers Trainer)](training-compiler-pytorch-models.md#training-compiler-pytorch-models-non-trainer).

  Untuk informasi lebih lanjut tentang aplikasi aktual menggunakan fungsi penyimpanan model, lihat [ Checkpoint Writing and Loading ](https://huggingface.co/blog/pytorch-xla#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.24xlarge` instance memiliki waktu pelatihan yang lebih cepat dibandingkan dengan 8 x `ml.p3.2xlarge` instance.
  + Gunakan instance dengan dukungan EFA seperti `ml.p3dn.24xlarge` dan`ml.p4d.24xlarge`. Jenis instance 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-pertimbangan
<a name="training-compiler-tips-pitfalls-considerations"></a>

Pertimbangkan hal berikut saat menggunakan Tra SageMaker ining Compiler.

### Penurunan kinerja karena pencatatan, checkpointing, dan pembuatan profil
<a name="training-compiler-considerations-performance-degradation"></a>
+ 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+d
  ```

  Kompiler menafsirkan kode sebagai berikut dan mengurangi jejak memori untuk variabel: `a`

  ```
  e = b+c+d
  ```

  Sekarang 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 `a` sebagai berikut.

  ```
  e = b+c+d
  a = b+c    # Explicit evaluation
  print(a)
  ```

  Di PyTorch, misalnya, hindari menggunakan [ torch.tensor.items ()](https://pytorch.org/docs/stable/generated/torch.Tensor.item.html), 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
<a name="training-compiler-considerations-incorrect-api-use"></a>

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()`](https://pytorch.org/xla/release/1.9/index.html)) 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, lihat[Model Bahasa Besar Menggunakan Lang PyTorch sung (tanpa API Hugging Face Transformers Trainer)](training-compiler-pytorch-models.md#training-compiler-pytorch-models-non-trainer).