Під час використання бібліотеки колективних комунікацій NVIDIA (NCCL) для виконання навчання глибокого навчання або робочого навантаження з висновками, що використовує колективні операції (такі як AllReduce, AllGather і ReduceScatter), може бути важко визначити, як працює NCCL під час виконання фактичного робочого навантаження.
Ця публікація представляє плагін NCCL Inspector Profiler, який вирішує цю проблему. Він пропонує спосіб комплексного постійного спостереження за продуктивністю з низькими накладними витратами для розподіленого глибокого навчання та робочих навантажень із висновками.
Що таке інспектор NCCL?
NCCL Inspector — це інструмент для профілювання та аналізу, який забезпечує детальну продуктивність кожного комунікатора, кожного колективу та реєстрацію метаданих. Цей інструмент складається з двох основних етапів: збору та аналізу даних.
Інспектор NCCL може допомогти відповісти на запитання на різні теми, зокрема:
- Порівняння колективної продуктивності всередині роботи: Як AllReduce, AllGather, ReduceScatter та інші колективи працюють у домені Data Parallel порівняно з доменом Tensor Parallel?
- Порівняння продуктивності колективу між посадами: Чи вчорашня перевантаженість мережі спричинила погану роботу колективів? Це стало причиною зниження продуктивності обчислень?
- Кореляція продуктивності обчислювальної мережі: Якщо є загальне зниження продуктивності обчислень (TFLOP), чи була причина зниження продуктивності мережі?
Інспектор NCCL регулярно записує на диск загальну пропускну здатність і тривалість кожного рангу комунікатора. Після виконання завдання ці дані про продуктивність аналізуються та корелюються протягом усього терміну виконання завдання. Продуктивність колективів NCCL потім характеризується протягом життя завдання з кількома GPU.
Будь-який фреймворк, що використовує NCCL, є критично важливим компонентом для зв’язку з кількома GPU та кількома вузлами, тому може отримати переваги від детального спостереження, яке надає NCCL Inspector.
NCCL Inspector використовує інтерфейс плагіна, представлений у NCCL 2.23, щоб увімкнути постійне спостереження за робочими навантаженнями виробництва, мінімізуючи при цьому накладні витрати на продуктивність.
На етапі збору даних бібліотека інспектора NCCL інструктує NCCL про конкретні колективні події, які вона має видавати. Користувачі можуть завантажити бібліотеку (наприклад, фреймворки DL) через NCCL_PROFILER_PLUGIN змінна середовища. Потім NCCL Inspector прослуховує передплачені події, які надсилає NCCL, і генерує структурований вихідний файл JSON для кожного з них, що дозволяє глибоко зрозуміти характеристики продуктивності колективів NCCL.
Аналіз і візуалізація після виконання завдання генеруються та виконуються за допомогою прикладів сценаріїв Python, наданих у сховищі NCCL. Цей результат у форматі JSON пізніше передається в сценарії аналізу та різні платформи спостереження, щоб дати розуміння продуктивності NCCL під час виконання робочого навантаження.
Основні можливості NCCL Inspector
Деякі з ключових видатних функцій NCCL Inspector, які роблять його корисним, включають:
- Відстеження кожного комунікатора: NCCL Inspector підтримує окреме відстеження для кожного комунікатора NCCL. Це особливо цінно у складних розподілених програмах, таких як робочі навантаження ШІ, де кілька комунікаторів можуть використовуватися для різних цілей, наприклад домени паралельності.
- Завжди ввімкнено низькі накладні витрати: відстеження продуктивності NCCL Inspector із низькими накладними витратами означає, що його можна ввімкнути у виробничих робочих навантаженнях, забезпечуючи «постійне» безперервне спостереження за продуктивністю NCCL без значного зниження продуктивності.
- Показники продуктивності: NCCL Inspector розраховує та звітує про ключові показники ефективності, включаючи:
- Алгоритмічна пропускна здатність
- Пропускна здатність шини
- Час виконання в мікросекундах
- Розміри повідомлень і типи колективів
- Агностик мережевих технологій: NCCL Inspector використовує інтерфейс плагіна для інтеграції з NCCL. Він не залежить від різних мережевих технологій, які підтримує NCCL (RoCE, IB, EFA тощо).
Етап збору даних
Для збору даних фазі, NCCL Inspector ініціалізується за допомогою кількох змінних середовища.
Необхідні змінні:
NCCL_PROFILER_PLUGIN: Шлях до двійкового файлу бібліотеки плагінів.NCCL_INSPECTOR_ENABLE=1NCCL_INSPECTOR_DUMP_THREAD_INTERVAL_MICROSECONDS: Встановлює інтервал для запису вихідних даних
Необов'язкові змінні:
NCCL_INSPECTOR_DUMP_DIR: вихідний каталог для журналівNCCL_INSPECTOR_DUMP_VERBOSE(Optional): вмикає детальний вивід із інформацією трасування подій
Приклад використання (SLURM)
Щоб увімкнути NCCL Inspector і почати етап збору даних, вставте такі параметри змінних середовища до сценарію SBATCH у SLURM:
export NCCL_PROFILER_PLUGIN=/path/to/nccl/ext-profiler/inspector/libnccl-profiler-inspector.so
export NCCL_INSPECTOR_ENABLE=1
export NCCL_INSPECTOR_DUMP_THREAD_INTERVAL_MICROSECONDS=500
export NCCL_INSPECTOR_DUMP_DIR=/path/to/logs/${SLURM_JOB_ID}/
srun your_nccl_application
Приклад вихідного формату
{
"header": {
"id": "0x7f8c496ae9f661", // communicator id
"rank": 2,
"n_ranks": 8,
"nnodes": 1
},
"metadata": {
"inspector_output_format_version": "v4.0",
"git_rev": "",
"rec_mechanism": "profiler_plugin",
"dump_timestamp_us": 1748030377748202,
"hostname": "hostname",
"pid": 1639453
},
"coll_perf": {
"coll": "AllReduce",
"coll_sn": 1407,
"coll_msg_size_bytes": 17179869184,
"coll_exec_time_us": 61974,
"coll_algobw_gbs": 277.210914,
"coll_busbw_gbs": 485.119099
}
}
Детальний висновок
Коли ввімкнуто докладний режим за допомогою NCCL_INSPECTOR_DUMP_VERBOSE=1продуктивність на ядро (SM) є наступною:
{
"header": {
"id": "0xe62dedaa97644a", //communicator info
"rank": 4, // communicator id
"n_ranks": 8,
"nnodes": 1
},
"metadata": {
"inspector_output_format_version": "v4.0",
"git_rev": "9019a1912-dirty",
"rec_mechanism": "nccl_profiler_interface",
"dump_timestamp_us": 1752867229276385,
"hostname": "hostname",
"pid": 438776
},
"coll_perf": {
"coll": "ReduceScatter",
"coll_sn": 1231,
"coll_msg_size_bytes": 2147483648,
"coll_exec_time_us": 41057,
"coll_timing_source": "kernel_gpu",
"coll_algobw_gbs": 418.439467,
"coll_busbw_gbs": 366.134533,
"event_trace_sn": {
"coll_start_sn": 1,
"coll_stop_sn": 2,
"kernel_events": [
{
"channel_id": 0,
"kernel_start_sn": 3,
"kernel_stop_sn": 48,
"kernel_record_sn": 47
}
]
},
"event_trace_ts": {
"coll_start_ts": 1752867229235059,
"coll_stop_ts": 1752867229235064,
"kernel_events": [
{
"channel_id": 0,
"kernel_start_ts": 1752867229235181,
"kernel_stop_ts": 1752867229275811,
"kernel_record_ts": 1752867229275811
}
]
}
}
}
Етап аналізу даних
NCCL Inspector містить приклад комплексного аналізу продуктивності та інструмент візуалізації, який обробляє файли журналів і створює докладні звіти про ефективність. Інструмент Performance Summary Exporter забезпечує багату візуалізацію та статистичний аналіз ефективності колективної комунікації.
Експортер підсумкових даних про продуктивність
Цей автономний засіб експорту підсумкових даних про продуктивність — це інструмент аналізу на основі Python, розташований у ext-profiler/inspector/exporter/example/. Цей інструмент виконує такі завдання:
- Обробляє журнали NCCL Inspector у кількох форматах (
.log,.log.gz,.jsonl,.jsonl.gz) - Експорт даних у формат Parquet для ефективної обробки
- Створює статистичні підсумки для колективних операцій
- Створює візуалізації, включаючи діаграми розсіювання, гістограми та прямокутні діаграми
- Класифікує моделі спілкування
- одноранговий
- лише nvlink
- лише hca
- змішаний
Інтеграція інформаційної панелі
Команда NVIDIA інтегрувала ці дані з NCCL Inspector на інформаційні панелі, які можуть надавати огляд продуктивності NCCL для кожного завдання SLURM.




Випадки використання та програми
Ви можете використовувати NCCL Inspector для низки додатків і варіантів використання, включаючи аналіз продуктивності, дослідження та розробки та моніторинг виробництва.
Аналіз продуктивності
Інспектор дозволяє детально аналізувати ефективність колективної комунікації, допомагаючи виявити вузькі місця та можливості оптимізації в розподілених навчальних навантаженнях.
Дослідження та розробки
Дослідники можуть використовувати детальні траси подій і показники продуктивності для розробки нових шаблонів зв’язку та алгоритмів.
Моніторинг виробництва
Завжди ввімкнений характер Inspector робить його придатним для безперервного моніторингу виробничих навантажень, надаючи розуміння продуктивності зв’язку з часом.
Почніть роботу з NCCL Inspector
NCCL Inspector надає потужний інструмент для розуміння й оптимізації продуктивності колективної комунікації в розподілених навчальних навантаженнях. Конструкція з низькими накладними витратами робить його придатним для використання у виробництві, а детальне відстеження подій і показники продуктивності дозволяють глибоко аналізувати шаблони зв’язку.
Щоб почати роботу та дізнатися більше про NCCL і пов’язані інструменти, відвідайте сховище NVIDIA/nccl NCCL GitHub і ознайомтеся з документацією NVIDIA Magnum IO.
