Panduan ini menjelaskan cara mengaktifkan, menonaktifkan, dan mengelola library Collective Communication Analyzer (CoMMA). CoMMA mengumpulkan telemetri NCCL untuk Google Cloud layanan. Untuk mengetahui informasi selengkapnya tentang CoMMA, lihat Collective Communication Analyzer (CoMMA).
Mengaktifkan CoMMA
CoMMA telah diinstal dan diaktifkan jika Anda menggunakan image yang berisi plugin NCCL gIB. Untuk mengetahui daftar image ini, lihat Image yang mengaktifkan CoMMA.
Opsi penginstalan
Jika Anda tidak menggunakan salah satu image ini dan ingin menginstal CoMMA, gunakan salah satu metode berikut.
| Metode penginstalan | Jenis mesin yang didukung |
|---|---|
| Image NCCL/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 terlampir |
Menginstal CoMMA
Untuk menginstal CoMMA, pilih salah satu opsi berikut:
Image NCCL gIB
Untuk menginstal CoMMA menggunakan image NCCL gIB, 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
Image 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 workload 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
initContainers:- 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 yang ditambahkan ke LD_LIBRARY_PATH.
Bagian command menjalankan skrip shell untuk menghapus library profiler yang ada. Kemudian, skrip tersebut menyalin library profiler baru ke dalam direktori plugin yang ditentukan.
Skrip ini memastikan bahwa plugin profiler versi yang benar telah diinstal dan siap digunakan.
Build dari sumber
Untuk mem-build library CoMMA dari sumber, instal software berikut:
- Bahasa Pemrograman Rust, yang diperlukan oleh compiler dan Cargo. Bahasa ini dapat diinstal dengan rustup atau paket sistem
Libclang-dev, yang diperlukan olehbindgen.CMakeversi 3.10 atau yang lebih baru
Untuk mem-build dari sumber, selesaikan langkah-langkah berikut:
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 tingkat debug yang lebih mendetail. Untuk mengetahui 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 mengetahui 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 CoMMA mengumpulkan 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_MODEdalam tabel Opsi konfigurasi.
Mengonfigurasi dan melihat telemetri CoMMA NCCL
Jika CoMMA diaktifkan di lingkungan Anda, Anda dapat mengonfigurasi jenis data telemetri yang dikumpulkan dengan menetapkan tingkat perincian data. Bagian ini menjelaskan cara menetapkan perincian data dan opsi yang tersedia.
Anda juga dapat meninjau data yang dikumpulkan CoMMA untuk memverifikasi bahwa data tersebut selaras dengan kebijakan keamanan organisasi Anda atau untuk menganalisisnya dengan alat analisis telemetri NCCL Anda sendiri. Untuk melakukannya, ekspor data mentah ke file lokal.
Menetapkan perincian data
CoMMA mengumpulkan telemetri NCCL pada tingkat perincian yang berbeda. Konfigurasikan 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. CoMMA menggunakan variabel lingkungan berikut:
NCCL_PROFILER_TRACK_NCCLOP=trueNCCL_PROFILER_AGGREGATE_STEPS=trueNCCL_PROFILER_TRACK_INTERPROCESS_PROXYOP=true
- Untuk mengaktifkan tingkat pengumpulan data yang lebih mendetail, tetapkan variabel lingkungan berikut:
- Lacak waktu penyelesaian untuk operasi proxy dengan menetapkan
NCCL_PROFILER_TRACK_PROXYOP=true. - Lacak waktu yang dihabiskan untuk setiap operasi I/O jaringan dengan menetapkan
NCCL_PROFILER_TRACK_STEPS=true. Setelan ini memberikan tingkat perincian tertinggi.
- Lacak waktu penyelesaian untuk operasi proxy dengan menetapkan
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 akan 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. Bagian ini juga menjelaskan cara menetapkan variabel lingkungan.
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 dipertahankan per sesi. Untuk membuat 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 harus menetapkan variabel lingkungan CoMMA sebelum workload dimulai karena workload 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 default-nya.
| Nama | Deskripsi | Default | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
NCCL_PROFILER_AGGREGATE_STEPS |
Mengaktifkan (true) atau menonaktifkan (false)
operasi gabungan potongan jaringan. |
true |
||||||||||
NCCL_PROFILER_GPUVIZ_LIB |
Menentukan jalur ke libGPUViz.so, library yang mengupload
telemetri NCCL ke Google Cloud layanan. Library ini menggabungkan
API komunikasi agen.
API komunikasi agen adalah antarmuka yang digunakan oleh agen, seperti proses
yang berjalan dalam sistem operasi tamu Anda, untuk memulai koneksi yang aman dan
andal dengan Google Cloud layanan.
Jika Anda menggunakan image NCCL gIB sebagai penginstal atau menggunakan salah satu image yang menggabungkan plugin NCCL gIB, 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 akan 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 akan 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)
operasi proxy NCCL antarproses. |
true |
||||||||||
NCCL_PROFILER_TRACK_NCCLOP |
Mengaktifkan (true) atau menonaktifkan (false)
pelacakan dan pelaporan untuk operasi NCCL,
termasuk komunikasi kolektif dan point-to-point. |
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)
operasi pelacakan dan pelaporan potongan jaringan. |
false |
||||||||||
NCCL_PROFILER_HEARTBEAT |
Mengaktifkan (true) atau menonaktifkan (false)
mekanisme pelaporan telemetri heartbeat berkala. |
true |
||||||||||
NCCL_PROFILER_HEARTBEAT_UPLOAD_INTERVAL |
Menentukan interval untuk mekanisme pelaporan telemetri heartbeat. Misalnya, 10s, 1m. Mendukung
d, h, m, s,
ms, us, ns |
10s |
||||||||||
NCCL_TELEMETRY_MODE |
Mengontrol lokasi ekspor data telemetri NCCL.
Opsi ini mencakup hal berikut:
|
3 |
Langkah berikutnya
- Pelajari cara me mecahkan masalah terkait CoMMA.
- Pelajari cara mendeteksi dan mengatasi straggler.
- Pelajari cara mendeteksi workload yang tidak responsif.