СледваСледващо ръководство
Изчезващи и експлодиращи градиенти
технически
Техническо РЪКОВОДСТВО
Натрупването на градиенти ви позволява да симулирате голям размер на партида върху ограничена GPU памет чрез сумиране на градиенти за няколко малки мини-партиди, преди да актуализирате теглата.
Чуйте това ръководствоAI-разказан · ~2 min
It is the standard workaround for training big models when memory is the bottleneck.
Обикновено една стъпка на обучение обработва една партида, изчислява градиенти и незабавно актуализира параметрите. С натрупването на градиенти изпълнявате няколко преминавания напред и назад на по-малки микропартиди, като добавяте техните градиенти заедно в буферите на параметрите и извиквате само стъпката на оптимизатора (и нулирате градиентите) след N микропартиди. Ефективният размер на партидата става размер на микропартида, умножен по N, въпреки че пиковата памет винаги съдържа само една микропартида активации. Това има значение, защото много рецепти за обучение предполагат големи партиди за стабилна статистика и защото модели като големи трансформатори не могат да поберат пълна целева партида на едно устройство. Уловката: статистическите данни за нормализация на партида се изчисляват за микропартида, така че нормата на слоя или нормата на групата се съчетават по-добре с натрупването и трябва правилно да мащабирате загубата, за да поддържате правилната ефективна скорост на обучение.
Фина настройка на голям езиков модел на един потребителски графичен процесор чрез натрупване на над 8 или 16 микропартиди, за да се достигне ефективна партида от стотици.
Обучение на визия с висока разделителна способност или сегментиране на модели, където дори партида от 2 пасва, но рецептата се нуждае от ефективна партида от 32.
Hugging Face Trainer и PyTorch Lightning разкриват настройка gradient_accumulation_steps, използвана рутинно при настройки с ограничен VRAM.
Възпроизвеждане на резултати от голяма партида на хартия на по-малък хардуер чрез съпоставяне на ефективния размер на партида чрез натрупване.
Градиентното натрупване ще остане лост по подразбиране, тъй като размерите на моделите изпреварват паметта на едно устройство. Той все повече се комбинира със смесена прецизност, контролни точки за активиране, ZeRO шардинг и паралелизъм на тръбопроводи в рамки като DeepSpeed и FSDP. Очаквайте по-строга автоматизация, при която библиотеките автоматично настройват стъпките за натрупване към бюджета на паметта, и продължаващо значение за фина настройка на големи модели на скромен хардуер, включително потребителски GPU, където отключва обучение, което иначе би било невъзможно.
Безплатен бюлетин
Три проверени AI истории всяка делнична сутрин, написани на достъпен език. Безплатно завинаги, без реклами.
Един имейл всеки делничен ден. Отписване с едно кликване. Никога не продаваме и не споделяме вашия имейл адрес.
Тествайте себе си
Незабавна обратна връзка за всеки отговор и сертификат за споделяне с подлежащ на проверка идентификационен номер, след като преминете курс.
Подкрепете безплатното AI образование. AI Understanding е 501(c)(3) с нестопанска цел — без реклами, без платен достъп, никога. Направете дарение
Натрупването на градиенти ви позволява да симулирате голям размер на партида върху ограничена GPU памет чрез сумиране на градиенти за няколко малки мини-партиди, преди да актуализирате теглата. Това е стандартното решение за обучение на големи модели, когато паметта е тясното място.
Чрез сумиране на градиенти за няколко микропартиди преди актуализиране, вие имитирате голяма партида, без да държите цялата в паметта наведнъж.
Accumulate gradients across N micro-batches, call optimizer.step() once for the effective batch, then clear gradients before the next window; begin training with cleared buffers.
Batch-norm изчислява статистика за микропартида, така че нормата за слой или група избягва несъответствието с малки микропартиди.
Batch-dependent forward computations break exact equivalence.
Продължавай да учиш
Още ръководства, избрани за тази тема
СледваСледващо ръководство
Изчезващи и експлодиращи градиенти
технически