View a markdown version of this page

Peningkatan inisialisasi komunikasi kolektif - Amazon SageMaker AI

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

Peningkatan inisialisasi komunikasi kolektif

NCCL dan Gloo adalah perpustakaan komunikasi mendasar yang memungkinkan operasi kolektif (seperti all-reduce dan broadcast) di seluruh proses pelatihan terdistribusi. Namun, inisialisasi NCCL dan Gloo tradisional dapat menciptakan kemacetan selama pemulihan kesalahan.

Proses pemulihan standar mengharuskan semua proses untuk terhubung ke TCPStore terpusat dan berkoordinasi melalui proses root, memperkenalkan overhead mahal yang menjadi sangat bermasalah selama restart. Desain terpusat ini menciptakan tiga masalah penting: overhead koordinasi dari koneksi TCPStore wajib, penundaan pemulihan karena setiap restart harus mengulangi urutan inisialisasi penuh, dan satu titik kegagalan dalam proses root itu sendiri. Ini memaksakan langkah koordinasi yang mahal dan terpusat setiap kali pelatihan menginisialisasi atau memulai kembali.

HyperPod pelatihan checkpointless menghilangkan kemacetan koordinasi ini, memungkinkan pemulihan lebih cepat dari kesalahan dengan membuat inisialisasi “tanpa akar” dan “TCPStoreless.”

Konfigurasi tanpa akar

Untuk mengaktifkan Rootless, seseorang dapat dengan mudah mengekspos variabel lingkungan berikut.

export HPCT_USE_ROOTLESS=1 && \ sysctl -w net.ipv4.ip_local_port_range="20000 65535" && \

HPCT_USE_ROOTLESS: 0 atau 1. Gunakan untuk menghidupkan dan mematikan rootless

sysctl -w net.ipv4.ip_local_port_range="20000 65535": Mengatur rentang port sistem

Lihat contoh untuk mengaktifkan Rootless.

Tanpa akar

HyperPod pelatihan checkpointless menawarkan metode inisialisasi baru, Rootless dan TCPStoreless, untuk grup proses NCCL dan Gloo.

Implementasi pengoptimalan ini melibatkan modifikasi NCCL, Gloo, dan: PyTorch

  • Memperluas API pustaka pihak ketiga untuk mengaktifkan pengoptimalan NCCL dan Gloo Rootless dan Storeless sambil mempertahankan kompatibilitas mundur

  • Memperbarui backend grup proses untuk menggunakan jalur yang dioptimalkan secara kondisional dan menangani masalah pemulihan dalam proses

  • Melewati pembuatan TCPStore yang mahal di lapisan PyTorch terdistribusi sambil mempertahankan pola alamat simetris melalui penghitung grup global

Grafik berikut menunjukkan arsitektur perpustakaan pelatihan terdistribusi dan perubahan yang dibuat dalam pelatihan tanpa pemeriksaan.

Grafik berikut menunjukkan arsitektur perpustakaan pelatihan terdistribusi dan perubahan yang dibuat dalam pelatihan tanpa pemeriksaan.

NCCL dan Gloo

Ini adalah paket independen yang melakukan fungsionalitas inti komunikasi kolektif. Mereka menyediakan API utama, seperti ncclCommInitRank, untuk menginisialisasi jaringan komunikasi, mengelola sumber daya yang mendasarinya, dan melakukan komunikasi kolektif. Setelah membuat perubahan kustom di NCCL dan Gloo, Rootless dan Storeless mengoptimalkan inisialisasi jaringan komunikasi (misalnya, lewati koneksi ke TCPStore). Anda dapat beralih antara menggunakan jalur kode asli atau jalur kode yang dioptimalkan secara fleksibel.

PyTorch backend grup proses

Backend grup proses, khususnya ProcessGroup NCCL dan ProcessGroupGloo, mengimplementasikan ProcessGroup API dengan menjalankan API dari pustaka dasar yang sesuai. Karena kami memperluas API perpustakaan pihak ketiga, kami harus memanggilnya dengan benar dan membuat sakelar jalur kode berdasarkan konfigurasi pelanggan.

Selain jalur kode pengoptimalan, kami juga mengubah backend grup proses untuk mendukung pemulihan dalam proses.