Штучний інтелект отримав свою власну систему числення
Штучний інтелект отримав свою власну систему числення

Штучний інтелект отримав свою власну систему числення

Нейронні мережі, на основі яких будуються сучасні системи глибинного машинного самонавчання і штучного інтелекту, в більшості випадків використовують стандартний 32-розрядний формат чисел з плаваючою комою IEEE FP32.

Це забезпечує високу точність обчислень і кінцевого результату, але вимагає використання великих обсягів пам’яті і високопродуктивних процесорів, які споживають значну кількість енергії.

У системах ж з високими вимогами до швидкодії і з обмеженими обчислювальними ресурсами використовуються 8-розрядні цілі числа зі знаком INT8.

Це дозволяє отримати високу продуктивність систем штучного інтелекту, принісши в жертву точність обчислень і кінцевого результату.

У чому ж різниця між форматами FP32 і BF16? Число з плаваючою комою в стандартному форматі FP32 складається з 1 знакового біта, що визначає знак числа (+ або -), після нього слід 8-бітна експонента (ступінь числа), після якої йде 23-бітна мантиса (саме число).

І в сумі набираються повні 32 розряду.

Такий вибір був зроблений далеко не випадково, проведені експерименти показали, що якість роботи нейронних мереж набагато чутливіше до розміру експоненти, ніж мантиси.

І варіант BF16 є самим прийнятним компромісом..

Таким чином, число в BF16 складається з одного знакового біта, 8-бітної експоненти і 7-бітної мантиси, що в сумі становить повні 16 біт.

Для проведення тензорних операцій з числами в форматі BF16 потрібні набагато менші обчислювальні потужності, обсяги пам’яті та енергетичні витрати.

Можна поставити запитання, а чому б не використовувати в системах штучного інтелекту стандартний усічений формат чисел з плаваючою комою IEEE FP16? Адже цей формат досить успішно використовується в багатьох додатках, пов’язаних з комп’ютерною графікою і комп’ютерними іграми.

Число у форматі FP16 виглядає наступним чином – один знаковий біт, 5-бітна експонента і 10-бітна мантиса, що в сумі становить повні 16 біт.

Відразу можна відзначити, що усічена експонента визначає набагато менший динамічний діапазон чисел, ніж діапазон формату BF16, який майже дорівнює діапазону FP32.

По-друге, для перетворення числа FP32 в формат FP16 потрібно досить складна процедура, ніж найпростіша операція по усіканню розрядності мантиси, необхідна для перетворення FP32 в BF16.

І, по-третє, усічена мантиса формату BF16 дозволяє зробити шину блоків апаратних умножителей менше, ніж необхідно для формату FP16.

В результаті цього самі блоки умножителей для формату BF16 у вісім разів менше за займаною на кристалі чіпа площі, ніж умножители для FP32, і в два рази менше, ніж умножители для FP16.

.

І на закінчення слід зауважити, що формат BF16 є не єдиним форматом, розробленим для систем штучного інтелекту.

У 2017 році компанія Nervana запропонувала формат під назвою Flexpoint, який повинен був об’єднати всі переваги цілих чисел з числами з плаваючою комою.

По суті, цей формат є модифікацією чисел з фіксованою комою, які складаються з двох цілих чисел.

Перше число являє собою цілу частину числа до коми, друге – дробову частину числа (після коми).

Фахівці компанії Nervana доповнили формат числа з фіксованою комою ще і експонентою, однак, для прискорення операцій експонента була одна для всіх чисел, з яких складається тензор.

При такому підході множення тензорів могло бути вироблено за допомогою математики на основі дуже швидких цілочисельних операцій.

Але тут же виникла і проблема, пов’язана з вузьким динамічним діапазоном чисел, що мають одну і ту ж саму експоненту.

Ця проблема унеможливила “зліт” формату Flexpoint і навіть в перших прискорювачах компанії Nervana вже використовувався формат BF16.

Источник материала
Поделиться сюжетом