Panduan ini menjelaskan cara mengaktifkan, menonaktifkan, dan mengelola library Collective Communication Analyzer (CoMMA). CoMMA mengumpulkan telemetri NCCL untuk layananGoogle Cloud . Untuk mengetahui informasi selengkapnya tentang CoMMA, lihat Penganalisis Komunikasi Kolektif (CoMMA).
Mengaktifkan CoMMA
CoMMA telah diinstal sebelumnya dan diaktifkan jika Anda menggunakan image yang berisi plugin gIB NCCL. Untuk mengetahui daftar image ini, lihat Image yang mengaktifkan CoMMA.
Opsi penginstalan
Jika Anda tidak menggunakan salah satu gambar ini dan ingin menginstal CoMMA, gunakan salah satu metode berikut.
| Metode penginstalan | Jenis mesin yang didukung |
|---|---|
| Image NCCL Google Infrastructure Bundle (gIB) (Direkomendasikan untuk jenis mesin yang lebih baru) | A4X Max, A4X, A4 High, dan A3 Ultra |
| Image penginstal CoMMA | A4X, A4 High, dan A3 Ultra |
| Build dari sumber (Diperlukan untuk jenis mesin yang lebih lama) | A3 Mega, A3 High, A3 Edge, A2 Ultra, A2 Standard, dan N1 dengan GPU yang terpasang |
Menginstal CoMMA
Untuk menginstal CoMMA, pilih salah satu opsi berikut:
Gambar gIB NCCL
Untuk menginstal CoMMA menggunakan image gIB NCCL, jalankan perintah berikut.
docker run --rm --name nccl-gib-installer --volume /usr/local/gib:/var/lib/gib \ us-docker.pkg.dev/gce-ai-infra/gpudirect-gib/nccl-plugin-gib install \ --install-nccl
Gambar penginstal CoMMA
Anda bisa mendapatkan biner CoMMA dalam image Docker mandiri. Anda dapat menggunakan image Docker CoMMA, us-docker.pkg.dev/gce-ai-infra/gpudirect-gib/comma-installer,
sebagai initContainers untuk menginstal biner CoMMA ke dalam container beban kerja Anda.
Container menyimpan biner di direktori /artifacts.
Untuk menggunakan image penginstal CoMMA, selesaikan langkah-langkah berikut:
Instal CoMMA ke dalam workload Anda dengan menambahkan cuplikan berikut ke
initContainersAnda:- name: profiler-plugin-installer image: us-docker.pkg.dev/gce-ai-infra/gpudirect-gib/comma-installer:latest imagePullPolicy: Always volumeMounts: - name: nccl-plugin-volume mountPath: /usr/local/nccl-plugin command: - /bin/sh - -c - | set -ex rm -rf /usr/local/nccl-plugin/lib64/libnccl-profiler.so cp /artifacts/libnccl_profiler.so /usr/local/nccl-plugin/lib64/libnccl-profiler.so # GPUViz is a dependency of telemetry insights such as straggler detection rm -rf /usr/local/nccl-plugin/lib64/libGPUViz.so cp /artifacts/libGPUViz.so /usr/local/nccl-plugin/lib64/
Cuplikan konfigurasi YAML menentukan container untuk menginstal CoMMA.
Cuplikan ini menentukan image container penginstal, kebijakan pull-nya, dan pemasangan volume untuk plugin.
Pemasangan volume yang sama harus dipasang ke container workload Anda dengan
<mount-path>/lib64 ditambahkan ke LD_LIBRARY_PATH.
Bagian command menjalankan skrip shell untuk menghapus pustaka profiler yang ada. Kemudian, salin pustaka profiler baru ke direktori plugin yang ditentukan.
Skrip ini memastikan bahwa plugin profiler versi yang benar telah diinstal dan siap digunakan.
Membangun dari sumber
Untuk mem-build library CoMMA dari sumber, instal software berikut:
- Bahasa Pemrograman Rust, yang diperlukan oleh compiler dan Cargo. Ini dapat diinstal dengan rustup atau paket sistem
Libclang-dev, yang memerlukanbindgen.CMakeversi 3.10 atau yang lebih baru
Untuk membangun dari sumber, selesaikan langkah-langkah berikut:
Buat clone repositori dan submodulnya.
git clone --recurse-submodules https://github.com/google/CoMMA
Kompilasi biner menggunakan Cargo.
cargo build --release
Cargo menyimpan biner di
target/release/libnccl_profiler.so.Aktifkan NCCL untuk memuat library CoMMA menggunakan salah satu metode berikut:
- Salin
libnccl_profiler.soyang dikompilasi ke direktori diLD_LIBRARY_PATHAnda. Ganti namanya menjadilibnccl-profiler.so(gunakan tanda hubung, bukan garis bawah). - Atau, tetapkan variabel lingkungan
NCCL_PROFILER_PLUGINuntuk menentukan jalur file.so.
- Salin
Memverifikasi penginstalan atau pengaktifan
Untuk memverifikasi bahwa NCCL memuat library CoMMA, tinjau log NCCL:
- Aktifkan logging debug NCCL. Aktifkan logging dengan menetapkan variabel lingkungan
NCCL_DEBUG=INFO. Anda juga dapat menentukan level debug yang lebih mendetail. Untuk opsi debug lainnya, lihat bagianNCCL_DEBUGdalam dokumentasi NVIDIA. - Tentukan subsistem
INITuntuk proses debug. TentukanINITdengan menetapkan variabel lingkunganNCCL_DEBUG_SUBSYS=INIT. Anda juga dapat menentukan subsistem lainnya. Untuk opsi subsistem lainnya, lihat bagianNCCL_DEBUG_SUBSYS. - Temukan baris dalam log NCCL yang mirip dengan berikut ini:
NCCL INFO PROFILER/Plugin: Plugin name set by env to PATH_TO_PROFILER_PLUGIN
Menonaktifkan CoMMA
Jika CoMMA sudah diinstal, cegah pengumpulan telemetri NCCL dengan menetapkan variabel lingkungan CoMMA NCCL_TELEMETRY_MODE=0 sebelum menjalankan workload Anda. Untuk menetapkan variabel lingkungan CoMMA, lihat Menetapkan variabel lingkungan.
Untuk mengaktifkan kembali CoMMA setelah menonaktifkannya, ikuti langkah-langkah berikut:
Tetapkan variabel lingkungan
NCCL_TELEMETRY_MODEke nilai bukan nol; misalnya, untuk menggunakan mode default, tentukanNCCL_TELEMETRY_MODE=3.Untuk meninjau daftar lengkap opsi, lihat
NCCL_TELEMETRY_MODEdi tabel Opsi konfigurasi.
Mengonfigurasi dan melihat telemetri NCCL CoMMA
Jika CoMMA diaktifkan di lingkungan Anda, Anda dapat mengonfigurasi jenis data telemetri yang dikumpulkan dengan menetapkan tingkat perincian data. Bagian ini menjelaskan cara menyetel perincian data dan opsi yang tersedia.
Anda juga dapat meninjau data yang dikumpulkan CoMMA untuk memverifikasi bahwa data tersebut sesuai dengan kebijakan keamanan organisasi Anda atau menganalisisnya dengan alat analisis telemetri NCCL Anda sendiri. Untuk melakukannya, ekspor data mentah ke file lokal.
Menetapkan perincian data
CoMMA mengumpulkan telemetri NCCL pada berbagai tingkat perincian. Konfigurasi tingkat perincian menggunakan variabel lingkungan. Untuk menetapkan variabel lingkungan CoMMA, lihat Menetapkan variabel lingkungan.
- Perilaku default: Secara default, CoMMA melacak operasi NCCL,
termasuk kolektif dan peer-to-peer, metadata operasi tersebut, dan waktu
penyelesaian. Plugin ini menggunakan variabel lingkungan berikut:
NCCL_PROFILER_TRACK_NCCLOP=trueNCCL_PROFILER_AGGREGATE_STEPS=trueNCCL_PROFILER_TRACK_INTERPROCESS_PROXYOP=true
- Untuk mengaktifkan pengumpulan data tingkat yang lebih terperinci,
tetapkan variabel lingkungan berikut:
- Lacak waktu penyelesaian untuk operasi proxy dengan menyetel
NCCL_PROFILER_TRACK_PROXYOP=true. - Lacak waktu yang dihabiskan untuk setiap operasi I/O jaringan dengan menyetel
NCCL_PROFILER_TRACK_STEPS=true. Setelan ini memberikan tingkat perincian tertinggi.
- Lacak waktu penyelesaian untuk operasi proxy dengan menyetel
Untuk meninjau daftar lengkap variabel lingkungan, lihat Opsi konfigurasi.
Mengekspor data ke file lokal
Ekspor data mentah ke file lokal untuk melihatnya. Untuk mengekspor data ke file lokal dan melihat output, ikuti langkah-langkah berikut:
- Tetapkan
NCCL_TELEMETRY_MODEke1atau4. Untuk mempelajari variabel lingkunganNCCL_TELEMETRY_MODE, lihat Opsi konfigurasi. Tetapkan salah satu jalur ekspor berikut:
- Tetapkan
NCCL_PROFILER_LATENCY_FILE=PATHuntuk mengekspor rekaman aktivitas peristiwa mendetail ke file lokal. GantiPATHdengan jalur seperti/tmp/latency-%p.txt. Tetapkan
NCCL_PROFILER_SUMMARY_FILE=PATHuntuk mengekspor statistik ringkasan gabungan. GantiPATHdengan jalur seperti/tmp/summary-%p.txt.Sistem mengganti
%pdengan ID proses.
- Tetapkan
Tinjau output-nya. Output mentah adalah file JSON.
Opsi konfigurasi
Bagian berikut merangkum semua variabel lingkungan yang dapat Anda konfigurasi untuk CoMMA. Artikel ini juga menjelaskan cara menetapkan variabel lingkungan apa pun.
Menetapkan variabel lingkungan CoMMA
Untuk menetapkan variabel lingkungan CoMMA ke nilai non-default, tetapkan variabel
lingkungan. Anda dapat menetapkan variabel lingkungan di command line untuk instance komputasi atau menambahkannya ke skrip startup. Jika Anda menetapkan variabel lingkungan
di command line, nilai hanya akan tetap ada per sesi. Agar variabel lingkungan bersifat permanen, tempatkan variabel tersebut ke dalam file ~/.bashrc, ~/.profile, atau file startup mana pun yang digunakan sistem operasi Anda. Untuk mengetahui informasi selengkapnya, tinjau dokumentasi sistem operasi Anda.
Anda perlu menetapkan variabel lingkungan CoMMA sebelum beban kerja dimulai karena beban kerja membaca variabel selama inisialisasi NCCL. Anda dapat menetapkan variabel lingkungan sebagai berikut:
export ENVIRONMENT_VARIABLE=VALUE
Ganti kode berikut:
ENVIRONMENT_VARIABLE: variabel lingkungan yang ingin Anda tetapkan; misalnya,NCCL_TELEMETRY_MODE.VALUE: nilai untuk variabel lingkungan; misalnya,0.
Variabel lingkungan CoMMA
Bagian ini mencantumkan variabel lingkungan yang dapat Anda tetapkan untuk CoMMA dan nilai defaultnya.
| Nama | Deskripsi | Default | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
NCCL_PROFILER_AGGREGATE_STEPS |
Mengaktifkan (true) atau menonaktifkan (false)
operasi menggabungkan potongan jaringan. |
true |
||||||||||
NCCL_PROFILER_GPUVIZ_LIB |
Menentukan jalur ke libGPUViz.so, library yang mengupload
telemetri NCCL ke layanan Google Cloud . Library ini menggabungkan
agent communication API.
API komunikasi agen adalah antarmuka yang digunakan agen, seperti proses yang berjalan dalam sistem operasi tamu, untuk memulai koneksi yang aman dan andal dengan layanan Google Cloud .
Jika Anda menggunakan image gIB NCCL sebagai penginstal atau menggunakan image yang memaketkan plugin gIB NCCL, Anda tidak perlu menetapkan variabel lingkungan ini. |
|||||||||||
NCCL_PROFILER_LATENCY_FILE |
Menentukan template jalur untuk file rekaman aktivitas latensi. Misalnya /tmp/latency-%p.txt.
Sistem mengganti %p dalam nama dengan ID proses (pid).
Untuk menonaktifkan ekspor berbasis file, hapus setelan variabel ini. |
|||||||||||
NCCL_PROFILER_PLUGIN |
Menentukan jalur ke biner plugin profiler. Jika Anda tidak menentukan setelan ini, NCCL akan mencari libnccl-profiler.so di
LD_LIBRARY_PATH. |
|||||||||||
NCCL_PROFILER_SUMMARY_FILE |
Menentukan jalur untuk file ringkasan gabungan. Misalnya /tmp/summary-%p.txt.
Sistem mengganti %p dalam nama dengan ID proses (pid).
Untuk menonaktifkan ekspor berbasis file, hapus setelan variabel ini. |
|||||||||||
NCCL_PROFILER_SUMMARY_INTERVAL |
Menentukan interval untuk pelaporan ringkasan. Misalnya,
10s, 1m.
Mendukung d, h, m, s,
ms, us, ns |
1m |
||||||||||
NCCL_PROFILER_TRACK_INTERPROCESS_PROXYOP |
Mengaktifkan (true) atau menonaktifkan (false)
pemantauan operasi proxy NCCL antar-proses. |
true |
||||||||||
NCCL_PROFILER_TRACK_NCCLOP |
Mengaktifkan (true) atau menonaktifkan (false)
pelacakan dan pelaporan untuk operasi NCCL,
termasuk komunikasi kolektif dan titik ke titik. |
true |
||||||||||
NCCL_PROFILER_TRACK_PROXYOP |
Mengaktifkan (true) atau menonaktifkan (false) pelacakan dan pelaporan operasi proxy. |
false |
||||||||||
NCCL_PROFILER_TRACK_STEPS |
Mengaktifkan (true) atau menonaktifkan (false)
pelacakan dan pelaporan operasi chunk jaringan. |
false |
||||||||||
NCCL_TELEMETRY_MODE |
Mengontrol lokasi ekspor data telemetri NCCL.
Opsinya meliputi:
|
3 |
Langkah berikutnya
- Pelajari cara memecahkan masalah CoMMA.
- Pelajari cara mendeteksi dan mengatasi masalah keterlambatan.