Назад

PyTorch 2.15 переписує бекенд NCCL для кращого відновлення після збоїв GPU
SiTech AI Team3 хв читання

PyTorch 2.15 переписує бекенд NCCL для кращого відновлення після збоїв GPU

PyTorch 2.15 містить переписаний бекенд для бібліотеки NCCL від Nvidia, щоб покращити діагностику та відновлення після збоїв, коли GPU працюють разом у великих завданнях навчання штучного інтелекту.

PyTorch 2.15 містить переписаний бекенд для Collective Communications Library (NCCL) від Nvidia, створений для покращення діагностики та відновлення після збоїв, коли GPU працюють разом. Випуск також додає інші можливості й виходить, коли творці програмного забезпечення продовжують переводити його з інструмента для дослідників у виробниче використання ШІ. Оновлення складалося з 3 117 комітів від 583 контриб'юторів.

Переписування бекенда NCCL

Попередній бекенд PyTorch для NCCL, який називається ProcessGroupNCCL, міг створювати десятки комунікаторів на групу процесів, що призводило до періодичних взаємних блокувань і непередбачуваної продуктивності. Основний розробник PyTorch Трістан Райс, інженер Meta з розподілених обчислень, сказав під час прямої трансляції на YouTube у четвер, що інтерфейс до мережевої бібліотеки потребував переписування, бо він потопав у технічному боргу. Новий бекенд використовує суворе правило: одна група процесів отримує лише один комунікатор під час ініціалізації. За замовчуванням це усуває перехресні завади між кількома комунікаторами та пов'язану складність; програми, що потребують паралелізму, мають створювати більше груп процесів.

Оновлена бібліотека також краще працює з відстаючими вузлами завдяки легшій реконфігурації. Якщо GPU виходить з ладу або працює повільно, сторонній оркестратор може виключити відстаючий вузол і призначити робочий вузол на заміну. Бортовий реєстратор фіксує всі операції у знімках, які можна перевірити після збою, замість загального повідомлення, яке користувачі раніше отримували, коли кластер GPU зависав через тайм-аут або взаємне блокування. Райс зазначив, що очищений бекенд NCCL, який також називається ProcessGroupNCCL, дасть розробникам чистий аркуш і полегшить додавання нових можливостей.

Чому NCCL важливий

NCCL, який вимовляють як 'Nickel', надає PyTorch примітиви зв'язку між GPU для кластерів з одного вузла та кількох вузлів. Це критично для виконання інференсу на великих нейронних мережах і для побудови та підтримки великих мовних моделей. Робочі вузли мають постійно обмінюватися тензорами, градієнтами, активаціями та вагами, а NCCL використовує оптимізовані шляхи зв'язку для переміщення даних між GPU, зменшуючи навантаження на CPU порівняно зі стандартним мережевим обміном на основі TCP.

Nvidia спочатку випустила NCCL на SC15 як універсальний прискорювач. Його прийняла команда Facebook, коли вперше створювала PyTorch у 2016 році, з метою побудувати версію бібліотеки машинного навчання Torch, заснованої на Lua, на основі Python. Вілл Стюарт, співзасновник постачальника програмного забезпечення ШІ Northflank, написав у блог-пості: "Кожна велика лабораторія ML (OpenAI, DeepMind, Meta, Nvidia) використовує PyTorch. Він забезпечує роботу всього: від дифузійних моделей і LLM до рекомендаційних систем і робототехніки. Це широке використання не є випадковим."

Інші можливості 2.15 і розгортання

Інші нові можливості включають Python transport API для асинхронного одностороннього переміщення даних, придатний для завдань навчання, де ваги синхронізуються між тренерами та генераторами, а також покращення паралельного оброблення для пристроїв Apple і підтримку GPU Blackwell наступного покоління від Nvidia. Застарілий ProcessGroupNCCL залишається у пакеті 2.15 як варіант відкату. Якщо новий бекенд NCCL працюватиме належним чином, старішу версію буде видалено у випуску 2.16, запланованому на початок наступного року.

Джерела: The Register

Поділитися цифровим досвідом

SiTech

SiTech — веброзробка з підтримкою AI

Створюємо швидкі та сучасні сайти й інтегруємо AI у бізнес-процеси. Маєте проєкт чи запитання? Із задоволенням допоможемо.