atpv

Навчальні матеріали з автоматизації технологічних процесів та виробництв, розроблені спільнотою

     
<— 2__Efficient_computation.md Зміст 2_2_Tensors.md —>

2.1 Графічні процесори (GPU), TPU та пакети

Графічні процесори (GPU) спочатку були розроблені для синтезу зображень у реальному часі, що вимагає високопаралельних архітектур, які, як виявилося, підходять для глибоких моделей. Зі збільшенням використання графічних процесорів для штучного інтелекту графічні процесори були оснащені спеціальними субкомпонентами, які називаються тензорними ядрами (tensor core), а також компанією Google були розроблені спеціалізовані чіпи для глибокого навчання - тензорні блоки обробки (Tensor Processing Units, TPU).

Графічний процесор має кілька тисяч паралельних блоків і власну швидку пам’ять. Обмежуючим фактором зазвичай є не кількість обчислювальних блоків, а операції читання-запису в пам’ять. Найповільнішим є зв’язок між пам’яттю процесора та пам’яттю графічного процесора, тому слід уникати копіювання даних між пристроями. Крім того, сама структура графічного процесора включає кілька рівнів кеш-пам’яті, які є меншими, але швидшими, тому обчислення мають бути організовані так, щоб уникнути копіювання між цими різними кешами.

Це досягається, зокрема, шляхом організації обчислень у вигляді пакетів вибірок (batches of samples), які можуть повністю поміститися в пам’ять GPU та обробляються паралельно. Коли оператор комбінує азмо параметри вибірки (sample) та моделі, обидва вони повинні бути переміщені в кеш-пам’ять поруч із фактичними обчислювальними блоками. Пакетна робота (proceeding by batches) дозволяє копіювати параметри моделі лише один раз, замість того, щоб робити це для кожної вибірки. На практиці графічний процесор обробляє пакет вибірок, який розміщується в пам’яті, майже так само швидко, як одну вибірку.

Стандартний графічний процесор має теоретичну пікову продуктивність $10^{13}-10^{14}$ операцій з плаваючою комою (FLOPs) за секунду, а його пам’ять зазвичай становить від 8 до 80 гігабайт. Стандартне кодування $FP_{32}$ чисел із плаваючою точкою має 32 біти, але емпіричні результати показують, що використання кодування на 16 біт або навіть менше для деяких операндів не погіршує продуктивність.

Ми повертаємось до великого розміру глибоких архітектур у § 3.6 .

en

Від перекладача