Mengaktifkan, menonaktifkan, dan mengonfigurasi CoMMA

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:

  1. Instal NCCL 2.23 atau yang lebih baru.

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

Untuk mem-build dari sumber, selesaikan langkah-langkah berikut:

  1. 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 tingkat debug yang lebih mendetail. Untuk mengetahui 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 mengetahui 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 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:

  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 dalam tabel Opsi konfigurasi.

  2. Verifikasi bahwa CoMMA berfungsi.

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

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

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