Paralelisme tensor - Amazon SageMaker

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Paralelisme tensor

Paralelisme tensor adalah jenis paralelisme model di mana bobot model tertentu, gradien, dan status pengoptimal dibagi di seluruh perangkat. Berbeda dengan paralelisme pipa, yang menjaga bobot individu tetap utuh tetapi mempartisi set bobot, gradien, atau pengoptimal di seluruh perangkat, paralelisme tensor memecah bobot individu. Ini biasanya melibatkan komputasi terdistribusi dari operasi tertentu, modul, atau lapisan model.

Paralelisme tensor diperlukan dalam kasus di mana satu parameter menghabiskan sebagian besar GPU memori (seperti tabel penyematan besar dengan ukuran kosakata besar atau lapisan softmax besar dengan sejumlah besar kelas). Dalam hal ini, memperlakukan tensor atau operasi besar ini sebagai unit atom tidak efisien dan menghambat keseimbangan beban memori.

SMPv2 terintegrasi dengan Transformer Engine untuk implementasi paralelisme tensor, dan berjalan di atasnya. PyTorch FSDP APIs Anda dapat mengaktifkan PyTorch FSDP dan SMP tensor paralelisme secara bersamaan, dan menentukan paralelisme model terbaik untuk kinerja terbaik.

Dalam praktiknya, paralelisme tensor sangat membantu dalam skenario berikut.

  • Saat berlatih dengan panjang konteks yang panjang seperti itu mengarah ke memori aktivasi tinggi dengan FSDP sendirian.

  • Saat berlatih dengan cluster yang sangat besar di mana ukuran batch global melebihi batas yang diinginkan.

Model Hugging Face Transformer kompatibel dengan paralelisme SMP tensor

SMPv2 saat ini menawarkan dukungan paralelisme tensor untuk model transformator Hugging Face berikut.

  • GPT-NeoX

  • Llama 2

Untuk konfigurasi referensi untuk menerapkan paralelisme tensor pada model ini, lihat. Kiat konfigurasi

Konfigurasikan paralelisme tensor

Untuktensor_parallel_degree, Anda memilih nilai untuk tingkat paralelisme tensor. Nilai harus merata membagi jumlah GPUs di cluster Anda. Misalnya, untuk membelah model Anda saat menggunakan instance dengan 8GPUs, pilih 2, 4, atau 8. Kami menyarankan Anda memulai dengan jumlah kecil, dan secara bertahap meningkatkannya sampai model pas di GPU memori.

Cuplikan kode berikut menunjukkan cara menambahkan modul SMP inisialisasi torch.sagemaker.init() ke skrip pelatihan Anda dan menyiapkan kamus SMP konfigurasi dalam JSON format untuk pelatihan peluncur pekerjaan sambil mengikuti proses dua langkah yang diperkenalkan. Memulai dengan SageMaker pustaka paralelisme model v2 Anda tidak perlu membuat perubahan apa pun pada PyTorch model atau PyTorch FSDPkonfigurasi Anda. Untuk informasi tentang parameter tensor_parallel_degree dan random_seed, lihat SMPParameter konfigurasi fitur inti v2.

SMPkonfigurasi

{ "tensor_parallel_degree": 8, "random_seed": 0 }

Dalam skrip pelatihan Anda

Inisialisasi dengan torch.sagemaker.init() untuk mengaktifkan SMP v2 dan bungkus model Anda dengan. torch.sagemaker.transform API

import torch.sagemaker as tsm tsm.init() from transformers import AutoModelForCausalLM model = AutoModelForCausalLM.from_config(..) model = tsm.transform(model)

Menyimpan dan memuat pos pemeriksaan Hugging Face Transformer

Setelah SMP perpustakaan mengubah model, ia mengubah state dictionary (state_dict) model. Ini berarti bahwa model menjadi tidak kompatibel dengan fungsi checkpointing Hugging Face Transformer asli. Untuk menangani ini, SMP perpustakaan menyediakan APIs untuk menyimpan pos pemeriksaan dari model yang diubah dalam representasi Hugging Face Transformer, dan torch.sagemaker.transform API untuk memuat pos pemeriksaan model Hugging Face Transformer untuk fine-tuning.

Untuk informasi lebih lanjut tentang menyimpan pos pemeriksaan saat menggunakan fitur paralelisme tensor v2, lihat. SMP Checkpointing menggunakan SMP

Untuk informasi lebih lanjut tentang menyempurnakan model yang menerapkan fitur paralelisme tensor v2, lihat. SMP Penyetelan halus