Компромиси при повторно изчисляване на активиране
Повторното изчисляване на активирането (градиент или контролна точка за активиране) спестява паметта на GPU по време на обучението, като отхвърля междинните активации при преминаването напред и ги изчислява повторно по време на преминаването назад.
Преглед
It trades extra compute for the ability to train larger models or longer sequences on the same hardware.
Дълбоко гмуркане
Обратното разпространение се нуждае от активации за предно преминаване, за да изчисли градиентите, така че по подразбиране резултатите от всеки слой се съхраняват — огромна цена на паметта, която расте с размера на модела, размера на партидата и дължината на последователността. Повторното изчисляване на активирането запазва само няколко тензора на „контролни точки“ (често само граници на слоя) и изхвърля останалите. По време на преминаването назад, той изпълнява повторно изчислението напред между контролните точки, за да регенерира отхвърлените активации при поискване. Класическият резултат е, че с контролни точки, поставени на всеки sqrt(N) слоеве, паметта пада до приблизително O(sqrt(N)), като същевременно се добавя около едно допълнително преминаване напред (~33% повече изчисления). Селективните варианти преизчисляват само евтини, но тежки за памет операции (като внимание или отпадане), докато кешират скъпите, като получават по-голямата част от спестяванията на памет за много по-малко разходи за преизчисляване.
Техническа информация
Основният компромис е памет срещу FLOP. Пълното преизчисляване грубо добавя едно допълнително преминаване напред на стъпка (~30-40% по-бавно), но може да намали паметта за активиране с порядък. Интелигентният ход е селективно контролно определяне: идентифицирайте операции, които са големи за памет, но евтини за изчисления (softmax, layernorm, GELU, оценки на вниманието) и преизчислете само тези, като същевременно запазите кеширани резултатите от скъпите GEMM - минимизирайки загубата на изчисления.
Стратегическо въздействие
Cost and budget
Архитектурните решения стимулират производителността и оперативните разходи в продължение на години.
Clearer decisions
Техническото образование помага на екипите да изберат правилния стек, а не само най-новия.
Quality control
По-добрият инженерен избор намалява инцидентите, свързани с надеждността в производството.
Бъдещето на компромисите с повторно изчисление на активирането
Преизчисляването става все по-автоматизирано и избирателно. Frameworks вече профилират паметта на всяка операция и разходите за FLOP, за да изберат оптимални контролни точки и комбинират повторно изчисляване с разтоварване на активиране към CPU/NVMe и със стратегии за паралелизъм. Тъй като дължините на контекста и размерите на модела продължават да растат, очаквайте политики, управлявани от компилатор (в PyTorch, JAX/XLA), които автоматично избират решения за преизчисляване за всяка операция, плюс по-тясно припокриване на повторното изчисление с комуникация, така че допълнителните FLOP са частично скрити.
Внедряване в реалния свят
Обучение на голям трансформатор, който иначе не би паснал, чрез контролна точка на всеки блок на слоя
Използване на torch.utils.checkpoint на PyTorch за обвиване на трансформаторни блокове и намаляване на паметта за активиране
Селективно повторно изчисляване на вниманието/softmax в Megatron-LM за пестене на памет с минимално забавяне
Активиране на по-дълги дължини на последователности при фиксиран 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 Activation Recomputation Tradeoffs 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
SmoothQuant и квантуване за активиране
Frequently asked questions
What is Activation Recomputation Tradeoffs?
Повторното изчисляване на активирането (градиент или контролна точка за активиране) спестява паметта на GPU по време на обучението, като отхвърля междинните активации при преминаването напред и ги изчислява повторно по време на преминаването назад. Той обменя допълнително изчисление за възможността да обучава по-големи модели или по-дълги последователности на същия хардуер.
Какво променя повторното изчисление на активирането, за да спести памет?
Повторното изчисление отхвърля съхранените активации и ги регенерира при преминаване назад, изразходвайки допълнително изчисление за намаляване на използването на паметта.
Защо активациите за прехвърляне напред обикновено се съхраняват изобщо?
Преминаването назад използва активациите напред за изчисляване на градиенти, така че по подразбиране те се съхраняват в паметта, докато преминаването назад не започне.
Приблизително колко допълнителни изчисления обикновено добавя повторното изчисление при пълно активиране?
Пълното повторно изчисление пуска отново изчислението напред по време на преминаването назад, добавяйки приблизително едно допълнително преминаване напред — от порядъка на 30-40% повече изчисления.
Каква е идеята зад селективното (не пълно) повторно изчисляване?
Селективното повторно изчисление е насочено към операции, които използват много памет, но малко изчисления (като softmax или layernorm), като същевременно кешира скъпи GEMM резултати, за да минимизира загубените FLOP.
Коя допълнителна техника често се комбинира с повторно изчисляване, за да се спести още повече памет?
Разтоварването на активирането премества някои активации в хранилището на CPU/NVMe и често се комбинира с повторно изчисление и паралелизъм за допълнително спестяване на памет.