Подробности о тензорном сопроцессоре Google TPU

 

Не столь давно мы рассказывали о том, что в гонке решений, призванных ускорить работу нейросетей и оптимизировать процесс машинного обучения, компания Google принимает самое непосредственное участие с чипом собственной разработки с незамысловатым названием TPU (Tensor Processor Unit). Генеральный директор компании Сундар Пичаи (Sundar Pichai) тогда заявил, что эти процессоры на порядок эффективнее менее специализированных решений, таких, как FPGA или GPU.

Архитектура и особенности Google TPU хранились в строжайшем секрете, но теперь мы, наконец, можем узнать об этих ускорителях много нового. Сама плата ускорителя выполнена в нестандартном форм-факторе, она имеет разъём, похожий на M.2, но на самом деле диаграммы указывают на использование интерфейса PCI Express 3.0 x16. В каждом сервере Google, рассчитанном на установку TPU, может устанавливаться четыре таких ускорителя, выполняющих операции с плавающей запятой.

Сам процессор имеет двухканальный контроллер памяти DDR3-2133 МГц и на его плате установлено 18 чипов DDR3 общим объёмом 8 Гбайт. Судя по количеству чипов, используется коррекция ошибок. Главной частью процессора является матрица, выполняющая операции умножения-сложения (multiply-accumulate). Размер этой матрицы составляет 256 × 256, работает она с 8-битными данными на частоте 700 МГц. Пиковая производительность при этом достигает почти 92 триллионов операций в секунду. Ничего удивительного, блоков MAC у TPU в 25 раз больше, нежели у современных GPU.

Имеется 4 Мбайт выделенной регистровой (accumulator) памяти и 24 Мбайт унифицированного буфера, это больше, чем у большинства графических процессоров; Google говорит о превосходстве в 3,5 раза. С внутренней пропускной способностью проблем нет. Пул результатов имеет доступ к буферу на скорости 167 Гбайт/с, тот связан с общим интерфейсом шиной 10 Гбайт/с. Производительность подсистемы памяти достигает 30 Гбайт/с, а с внешним миром сопроцессор общается на скорости, доступной интерфейсу PCIe 3.0 (8 гигатрансфер/с в каждом направлении).

C точки зрения программиста TPU очень прост и имеет всего 11 инструкций из которых 5 основных: read_host_memory, write_host_memory, read_weights, matrix_multiple/convolve и activate. Каждая инструкция выполняется не более, чем за 10 тактов, имеется четырёхстадийный параллельный конвейер, каждая стадия которого может выполнять независимо одну из инструкций. Пока блок матричного перемножения занят, процессор умеет выполнять другие инструкции. Ветвления отсутствуют, внеочередного исполнения нет, управление буферами и синхронизацией конвейера полностью прозрачно для программиста. Проблема с промежуточными обращениями в SRAM была решена методом «систолического исполнения».

Лучше всего этот процесс представлен на диаграмме, где потоки двигаются слева вниз, сначала происходят операции сложения, а потом аккумуляции. Архитектура такова, что задержки конвейера процессор может игнорировать. Впервые TPU появились в центрах обработки данных Google ещё в 2015 году, до Haswell и NVIDIA Tesla K80. В обоих случаях размер кристалла и уровень энергопотребления оказались меньше, нежели у конкурирующих решений. Компания признаёт, что основным лимитирующим производительность TPU фактором является пропускная способность памяти, а также считает, что обычные процессоры и GPU более универсальны и сбалансированы, но серьёзно уступают TPU в производительности. В новых версиях TPU память DDR3 уступит место более перспективной HBM, хотя исследования с GDDR5 показали хороший прирост производительности. Ситуация чем-то похожа на добычу биткоинов: сначала использовались универсальные ЦП, потом скорость удалось поднять за счёт параллелизма GPU, но узкоспециализированные ASIC, заточенные под одну задачу, превзошли все иные решения именно из-за своей простоты и экономичности.

Как именно Google использует TPU в машинном обучении, компания пока предпочитает хранить в тайне, что неудивительно — с 92 триллионами операций в секунду её решения просто не имеют достойных в плане производительности конкурентов. По крайней мере, пока. Да, точность вычислений невелика (int8), но для задач машинного обучения и натаскивания нейросетей этого в большинстве случаев вполне достаточно.

Если вы заметили ошибку — выделите ее мышью и нажмите CTRL+ENTER.

Источник:

Постоянный URL: http://servernews.ru/957543
Поделиться:  

Комментарии

Система Orphus