Охота на электроовец. Большая книга искусственного интеллекта
Шрифт:
5.3.3 Оборудование для нейронных сетей: GPU, TPU, FPGA
Но пока мы не достигли таких сияющих высот, не время пребывать в праздности, нужно искать пути дальнейшего развития. Брутто-быстродействие машин пока что растёт примерно теми же темпами, что и количество элементов интегральных схем. Если из написанной в 2005 г. книги Реймонда Курцвейла «Сингулярность близко» (The Singularity Is Near) взять график ожидаемого роста производительности вычислительных машин (на котором также приведена и оценка производительности, необходимой для симуляции работы человеческого мозга в реальном времени) и поместить на него точки, соответствующие двум самым быстрым суперкомпьютерам в мире на середину 2023 г., то они будут находиться почти внутри нарисованного Курцвейлом «коридора».
Пиковая производительность предыдущего лидера — компьютера, созданного при участии корпорации Fujitsu для использования в Центре вычислительных наук Института физико-химических исследований (яп. ?????? Rikagaku Kenkyusho, сокращенно RIKEN, яп. ??) и получившего название «Фугаку» (Fugaku), — достигает 537 Пфлопс, то есть 537 квадриллионов арифметических операций над числами
1554
Schneider D. (2021). Frontier supercomputer to usher in exascale computing / IEEE Spectrum, 23 Dec 2021 // https://spectrum.ieee.org/exascale-supercomputing
1555
TOP500 Release (2023). June 2023 / TOP500 The List // https://www.top500.org/lists/top500/2023/06/
Современные суперкомпьютеры состоят из множества вычислительных узлов, каждый из которых объединяет множество интегральных схем. И в отличие от аналогичных машин, создававшихся несколько десятилетий назад, эти схемы способны выполнять специфические операции, позволяющие более эффективно применять коннекционистские модели.
Такими схемами стали так называемые тензорные процессоры. Бум параллельных вычислений в 1980-е гг. совпал по времени с быстрым развитием технологий СБИС. Уже тогда исследователи осуществили первые опыты по созданию специализированных интегральных схем для искусственных нейронных сетей. Распространение сигнала в сети может быть описано в виде последовательных матричных операций: сложения, умножения, применения функции активации и так далее. Поэтому микросхема, реализующая такие операции на аппаратном уровне, может обеспечить существенный прирост скорости как при тренировке, так и при исполнении обученных нейронных сетей. Поскольку матричные операции в ряде случаев можно эффективно распараллелить (например, при сложении матриц суммирование элементов в различных областях можно осуществлять одновременно), можно добиться выполнения таких операций за гораздо меньшее число тактов, чем при последовательной обработке. Фактически речь идёт о многократном ускорении расчётов без замены элементной базы и технологии производства микросхем. Специализированные для решения тех или иных задач микросхемы сегодня принято называть интегральными схемами специального назначения (application-specific integrated circuit, ASIC).
Однако в 1980-е и 1990-е нейронные сети не были достаточно популярны, чтобы производители крупносерийных микросхем озаботились массовым выпуском ASIC’ов для нейросетевых моделей. К счастью, матричные операции оказались востребованы в области компьютерной графики — аппаратные графические ускорители, по сути дела, реализовывали изрядную долю необходимого набора инструкций. Ядра GPU изначально были предназначены для физических и графических вычислений, которые включают матричные операции.
В 2000-е и начале 2010-х видеокарты стали наиболее популярным видом оборудования, используемым для обучения искусственных нейронных сетей. По мере роста нейросетевых моделей производители GPU стали обращать больше внимания на нужды их разработчиков — архитектуры новых видеокарт учитывали требования, предъявляемые такими «нецелевыми» сценариями их применения. Более того, в середине 2010-х гг. стали появляться карты, для которых решение задач машинного обучения стало главной функцией устройства.
В мае 2016 г. компания Google представила устройство под названием Tensor processing unit (TPU) — тензорный процессор. Представители компании сообщили, что к этому моменту TPU уже использовался внутри дата-центров Google более года. Процессор был специально разработан для работы с фреймворком (программной платформой) Google TensorFlow, предназначенным для решения задач в области машинного обучения. В мае 2017 г. была выпущена вторая версия TPU, в мае 2018-го — третья, а в мае 2021-го — четвёртая [1556] .
1556
Weiss T. R. (2021). Google Launches TPU v4 AI Chips / HPC wire, May 20, 2021 // https://www.hpcwire.com/2021/05/20/google-launches-tpu-v4-ai-chips/
Устройства от Google нельзя приобрести, но можно арендовать через облачные сервисы компании. Поэтому на текущий момент наиболее популярным оборудованием для обучения нейронных сетей остаются GPU от компании Nvidia, которая собирает на их основе специализированные серверы линейки DGX (в
1557
Mayersen I. (2020). Intel is sacrificing previous AI acquisitions for Habana: They've traded one AI startup for another / TechSpot, February 2, 2020 // https://www.techspot.com/news/83826-intel-sacrificing-their-previous-ai-acquisitions-habana.html
В настоящее время более ста компаний по всему миру создают интегральные схемы специального назначения (ASIC) и однокристальные системы (System-on-a-Chip, SoC), предназначенные для применения в области глубокого обучения. Некоторые из этих чипов просто умеют быстро умножать и складывать векторы и матрицы, другие (такие как, например, прототипы устройств от английского стартапа Graphcore) претендуют на более тонкий учёт специфики нейросетевых вычислений [1558] . Американская компания Cerebras специализируется на изготовлении экспериментальных схем (язык не поворачивается сказать «микросхем») для тензорных вычислений размером с целую кремниевую пластину. Ещё в 2021 г. компания представила публике процессор под названием Wafer Scale Engine 2 (Машина масштаба кремниевой пластины 2, WSE-2), предназначенный для решения задач в области ИИ, выполненный на основе 7-нанометровой технологии и содержащий целых 2,6 трлн транзисторов и 850 000 вычислительных ядер [1559] . Практически все крупные высокотехнологические компании имеют свои проекты подобных устройств. Помимо Google, Nvidia и Intel, в их число входят Facebook, Amazon (Inferentia), AMD, Tesla и многие другие [1560] .
1558
Toon N. (2020). Intr?odu?cing? 2?nd? g??enera?tio?n IPU systems fo?r AI a?t sc?ale // https://www.graphcore.ai/posts/introducing-second-generation-ipu-systems-for-ai-at-scale
1559
Cerebras Systems Smashes the 2.5 Trillion Transistor Mark with New Second Generation Wafer Scale Engine (2021) // https://www.cerebras.net/press-release/cerebras-systems-smashes-the-2-5-trillion-transistor-mark-with-new-second-generation-wafer-scale-engine/
1560
Suryavansh M. (2019). How to make your own deep learning accelerator chip! / Towards Data Science, Sep 18, 2019 // https://towardsdatascience.com/how-to-make-your-own-deep-learning-accelerator-chip-1ff69b78ece4
Специализированные серверы, предназначенные для задач машинного обучения, обычно включают в себя несколько GPU или TPU, связанных специализированными быстрыми шинами для обмена данными. Например, сервер DGX-2 объединяет 16 GPU Tesla V100 и имеет суммарную заявленную производительность в 2 Пфлопс. Самый быстрый на данный момент российский суперкомпьютер «Кристофари», построенный Сбербанком совместно с Nvidia, включает в себя 75 узлов DGX-2, связанных сверхбыстрой шиной Infiniband. Именно скорость передачи данных между исполняющими ядрами и хранилищами данных является ахиллесовой пятой тензорных архитектур при решении ряда практических задач машинного обучения. Поэтому для GPU и TPU так важен объём оперативной памяти, доступной каждому из тензорных ядер. Выпустив свои тензорные процессоры третьей версии, компания Google удвоила объём памяти на одной плате TPU — с 64 до 128 GiB (в четвёртой версии предположительно увеличила до 256 GiB, однако на момент написания этих строк официальные данные ещё не были опубликованы). Но даже при таких объёмах обучение свёрточных нейронных сетей, предназначенных для обработки трёхмерных изображений или видео, — непростая задача. Обычно каждый GPU или TPU в таких случаях рассчитывает градиент параметров модели на небольшой порции данных, после чего полученные градиенты усредняются. При этом GPU/ TPU должны обменяться градиентами, а их размер при достаточно большом размере модели может быть весьма существенным.
Использование термина «тензорные процессоры» нередко вызывает нехилый баттхёрт у математиков, которые знают, что понятие тензора не эквивалентно понятию многомерного массива. Конечно, если вы не математик, то довольно удобно считать, что единичное число — это скаляр, одномерный массив — вектор, двумерный — матрица, а произвольный n– мерный массив — это тензор. Но всё-таки тензоры и многомерные массивы (они же многомерные таблицы) — это разные типы объектов. Тензор — это особый тип функции, а многомерный массив — структура данных, подходящая для представления тензора в системе координат, в таком случае отдельное число в таблице называют компонентом тензора. Математики обычно определяют тензор как полилинейную функцию, то есть функцию нескольких векторных переменных, которая линейна по каждому из аргументов. Тензор линейно преобразует элементы одного линейного пространства в элементы другого, что бы это ни значило. Частными случаями тензоров являются скаляры, векторы, билинейные формы и так далее. Число измерений таблицы, представляющей тензор, называют его валентностью или рангом тензора. Это была минутка полезных математических знаний.