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 terpusat TCPStore dan berkoordinasi melalui proses root, memperkenalkan overhead mahal yang menjadi sangat bermasalah selama restart. Desain terpusat ini menciptakan tiga masalah penting: overhead koordinasi dari TCPStore koneksi 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 cukup 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 pustaka pihak ketiga APIs 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 TCPStore kreasi 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 kunci APIs, seperti ncclCommInit Rank, 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 (misalnya, lewati koneksi ke) inisialisasi jaringan komunikasi. 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 APIs dengan memanggil pustaka dasar yang sesuai APIs . Karena kami memperluas perpustakaan pihak ketiga APIs, 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.