Mengaktifkan, menonaktifkan, dan mengonfigurasi CoMMA

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:

  1. Instal NCCL 2.23 atau yang lebih baru.

  2. Instal CoMMA ke dalam workload Anda dengan menambahkan cuplikan berikut ke initContainers Anda:

    - 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 memerlukan bindgen.
  • CMake versi 3.10 atau yang lebih baru

Untuk membangun dari sumber, selesaikan langkah-langkah berikut:

  1. Buat clone repositori dan submodulnya.

    git clone --recurse-submodules https://github.com/google/CoMMA
  2. Kompilasi biner menggunakan Cargo.

    cargo build --release

    Cargo menyimpan biner di target/release/libnccl_profiler.so.

  3. Aktifkan NCCL untuk memuat library CoMMA menggunakan salah satu metode berikut:

    • Salin libnccl_profiler.so yang dikompilasi ke direktori di LD_LIBRARY_PATH Anda. Ganti namanya menjadi libnccl-profiler.so (gunakan tanda hubung, bukan garis bawah).
    • Atau, tetapkan variabel lingkungan NCCL_PROFILER_PLUGIN untuk menentukan jalur file .so.

Memverifikasi penginstalan atau pengaktifan

Untuk memverifikasi bahwa NCCL memuat library CoMMA, tinjau log NCCL:

  1. 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 bagian NCCL_DEBUG dalam dokumentasi NVIDIA.
  2. Tentukan subsistem INIT untuk proses debug. Tentukan INIT dengan menetapkan variabel lingkungan NCCL_DEBUG_SUBSYS=INIT. Anda juga dapat menentukan subsistem lainnya. Untuk opsi subsistem lainnya, lihat bagian NCCL_DEBUG_SUBSYS.
  3. 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:

  1. Tetapkan variabel lingkungan NCCL_TELEMETRY_MODE ke nilai bukan nol; misalnya, untuk menggunakan mode default, tentukan NCCL_TELEMETRY_MODE=3.

    Untuk meninjau daftar lengkap opsi, lihat NCCL_TELEMETRY_MODE di tabel Opsi konfigurasi.

  2. Verifikasi bahwa CoMMA berfungsi.

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=true
    • NCCL_PROFILER_AGGREGATE_STEPS=true
    • NCCL_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.

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:

  1. Tetapkan NCCL_TELEMETRY_MODE ke 1 atau 4. Untuk mempelajari variabel lingkungan NCCL_TELEMETRY_MODE, lihat Opsi konfigurasi.
  2. Tetapkan salah satu jalur ekspor berikut:

    • Tetapkan NCCL_PROFILER_LATENCY_FILE=PATH untuk mengekspor rekaman aktivitas peristiwa mendetail ke file lokal. Ganti PATH dengan jalur seperti /tmp/latency-%p.txt.
    • Tetapkan NCCL_PROFILER_SUMMARY_FILE=PATH untuk mengekspor statistik ringkasan gabungan. Ganti PATH dengan jalur seperti /tmp/summary-%p.txt.

      Sistem mengganti %p dengan ID proses.

  3. 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:

Nilai Deskripsi
0 Menonaktifkan pengumpulan telemetri NCCL.
1 Mengekspor telemetri NCCL ke file lokal. Dengan metode ini, telemetri NCCL tidak tersedia untuk Google.
3 Mengekspor telemetri NCCL ke layanan Google.
4 Mengekspor telemetri NCCL ke file lokal dan layanan Google.
3

Langkah berikutnya