Смесена точност и мащабиране на загубата

Как моделите наистина се учат — от обикновено градиентно спускане до Adam

Обучението със смесена точност използва по-малки числови формати за скорост и памет. Вместо да съхранява всяко изчисление с пълна точност (стандартните 32-битови числа с плаваща запетая), много операции използват float16 или bfloat16: 16-битови формати, които заемат половин памет в замяна на по-малка точност и, за float16, по-тесен диапазон от представими стойности.

Рискът е в числовия диапазон. Някои градиенти са миниатюрни. Ако миниатюрно число бъде закръглено до нула, оптимизаторът губи информация. Мащабирането на загубата предпазва тези малки градиенти, като умножава загубата преди обратното разпространение, а после разделя градиентите обратно надолу.

Кухненска везна, която закръглява до цели грамове, може да пропусне мъничка щипка подправка. Ако претеглите десет еднакви щипки заедно, везната може да види сбора. После делите на десет, за да получите обратно една щипка. Мащабирането на загубата използва същия трик: направете малката стойност по-лесна за представяне, а после я мащабирайте обратно. Фигурата по-долу е напомняне за какво става дума. Спускането работи само ако градиентът на всяка стъпка оцелее през аритметиката; точността не променя цикъла, тя решава дали малките наклони близо до минимума все още са видими за него.

Къде се използва това в MLСмесената точност е една от причините големите невронни мрежи да се обучават бързо на съвременния хардуер. Оптимизаторите все още се нуждаят от същите концепции, но числовият мащаб се превръща в част от рецептата за обучение.
▶ Смесена точност и мащабиране на загубата
← Редуващи се най-малки квадратиМащабиране на размера на партидата →