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

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

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

Нейронні мережі, на основі яких будуються сучасні системи глибинного машинного самонавчання і штучного інтелекту, в більшості випадків використовують стандартний 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.Штучний інтелект отримав свою власну систему числення - Фото 2.

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

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

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

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

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

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

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

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

Джерело матеріала
loader