Паралелизъм на данните
Паралелизмът на данните обучава един модел по-бързо, като го репликира в много GPU, като всеки GPU обработва различен фрагмент от пакета данни.
Преглед
It is the workhorse technique that lets teams scale to dozens or thousands of accelerators.
Дълбоко гмуркане
При паралелизъм на данни всеки GPU съдържа идентично копие на теглата на модела, но обработва отделна мини-партида от примери за обучение. Всяко устройство изчислява преминаване напред и назад независимо, произвеждайки свой собствен набор от градиенти. Преди актуализиране на теглата градиентите се усредняват за всички графични процесори с помощта на комуникационна операция за цялостно намаляване, така че всяка реплика остава синхронизирана и се държи така, сякаш е обучена на една голяма комбинирана партида. Това ефективно умножава пропускателната способност: 8 графични процесора могат да дъвчат приблизително 8 пъти повече данни на стъпка. Уловката е, че всеки GPU трябва да пасва на целия модел, неговите градиенти и състоянието на оптимизатора в паметта, така че обикновеният паралелизъм на данните не помага, когато моделът е твърде голям за едно устройство.
Техническа информация
Ключовата операция е all-reduce, която сумира градиенти между устройства и преразпределя резултата. Ring all-reduce, използван от библиотеки като NCCL и Horovod, предава градиентни парчета около логически пръстен, така че общата комуникация не зависи от броя на GPU. DistributedDataParallel на PyTorch припокрива тази комуникация с обратния проход, като задейства градиентно синхронизиране за ранните слоеве, докато по-късните слоеве все още изчислят, скривайки голяма част от латентността на мрежата.
Стратегическо въздействие
Cost and budget
Архитектурните решения стимулират производителността и оперативните разходи в продължение на години.
Clearer decisions
Техническото образование помага на екипите да изберат правилния стек, а не само най-новия.
Quality control
По-добрият инженерен избор намалява инцидентите, свързани с надеждността в производството.
Бъдещето на паралелизма на данни
Чистият паралелизъм на данните все повече се комбинира с шардинг и паралелизъм на модели в хибридни стратегии за „nD паралелизъм“ за модели с трилиони параметри. Очаквайте по-интелигентна градиентна компресия, асинхронна и припокриваща се комуникация и топологично съобразено цялостно намаляване, което използва бърз NVLink в рамките на възел и по-бавен InfiniBand между възли. Тъй като клъстерите растат, намаляването на съотношението комуникация към изчисление остава основното инженерно предизвикателство за поддържане на работа на хиляди GPU.
Внедряване в реалния свят
Обучение на класификатор на изображения ResNet в 8 графични процесора в един сървър с помощта на PyTorch DistributedDataParallel, като всеки графичен процесор обработва 32 от партида от 256 изображения.
Мащабиране на предварително обучение на BERT в стотици графични процесори с Horovod, използване на ring all-reduce за синхронизиране на градиенти на всяка стъпка.
Фина настройка на препоръчителен модел на клъстер с множество възли, където всеки възел обработва различни фрагменти за взаимодействие с потребителя.
Използване на MirroredStrategy на TensorFlow за разпространение на обучението на визуален модел в множество GPU на една работна станция с минимални промени в кода.
Рискове и предпазни огради
Оптимизирането на един бенчмарк може да скрие по-широки системни слабости.
Разходите за инфраструктура и поддръжка често се подценяват.
Пропуските в сигурността и видимостта могат да нарастват, когато системите стават по-сложни.
Пътна карта за изпълнение
Определете целите за латентност, качество и разходи преди внедряването.
Бенчмарк при реалистични условия на натоварване и данни.
Мониторинг на инструмента за грешки, отклонение и въздействие върху потребителя.
Подгответе пътеките за връщане назад и реакция на инцидент преди мащабиране.
Продължете да изследвате
Free newsletter
Get the daily AI briefing
Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.
One email each weekday. Unsubscribe in one click. We never sell or share your address.
Test yourself
Take the Data Parallelism quiz
Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.
Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation
Next guide
AI Управление на данни
Frequently asked questions
What is Data Parallelism?
Паралелизмът на данните обучава един модел по-бързо, като го репликира в много GPU, като всеки GPU обработва различен фрагмент от пакета данни. Това е техниката на работния кон, която позволява на екипите да се мащабират до десетки или хиляди ускорители.
При стандартния паралелизъм на данните, какво съдържа всеки GPU?
Всеки GPU поддържа пълна реплика на модела и обработва отделна част от пакета данни, което го прави паралелизъм на „данни“, а не паралелизъм на модела.
Коя комуникационна операция поддържа репликите на модела в синхрон на всяка стъпка?
След всяко преминаване назад градиентите се комбинират между устройства чрез all-reduce (обикновено сумирани и след това усреднени), така че всяка реплика прилага една и съща актуализация.
Какво е основното ограничение на паралелизма на обикновените данни?
Тъй като всеки GPU съдържа пълно копие на всичко, паралелизмът на данните не помага с нищо, когато моделът е просто твърде голям, за да се побере на едно устройство.
Защо ring all-reduce е привлекателен за голям брой GPU?
Ring all-reduce пропуска градиентни парчета около логически пръстен, така че общата честотна лента, която всеки GPU изпраща, остава постоянна, независимо от това колко GPU участват.
Как PyTorch DistributedDataParallel скрива латентността на комуникацията?
DDP започва синхронизиране на градиенти за по-ранни слоеве, докато по-късните слоеве все още се изчисляват, припокривайки мрежовата комуникация с изчислението.