Щербинка тпу схема: Утвержден проект планировки территории ТПУ «Щербинка» — Комплекс градостроительной политики и строительства города Москвы

Содержание

фотолента от stroi.mos.ru — Комплекс градостроительной политики и строительства города Москвы

ТПУ – транспортно-пересадочный узел, который объединяет в единую систему все виды общественного транспорта: метро, железную дорогу, Московское центральное кольцо (МЦК) и наземный городской транспорт. Чаще всего пересадка с одного вида транспорта на другой осуществляется по приницпу «сухие ноги», то есть по крытому надземному или подземному переходам. Они защищают от дождя и холода и сокращают пассажирам время в пути.

 

Назад

Это многофункциональное здание, которое предназначено не только для пересадок, но и для организации торговли, досуга, точек питания. Также в ТПУ размещают коммерческие, социальные, спортивные объекты и создают рабочие места.

Для комфортного пребывания ТПУ оснащено лифтами, подъемниками и специализированными кассами для маломобильных людей.

Автомобилисты могут оставить машину на перехватывающей парковке и пересесть на общественный транспорт.

 

Назад

Перехватывающие парковки расположены вблизи самых востребованных станций метрополитена, МЦК и МЦД. Они позволяют автомобилистам экономить время в пути: водитель может оставить здесь машину и пересесть на общественный транспорт.

В соответствии с условиями тарифа, парковками можно воспользоваться бесплатно с 05:30 до 02:00 при совершении не менее двух поездок на метро, МЦК или МЦД, первая из которых – от ближайшей к парковке станции.

Если автомобилист, припарковавшийся на перехватывающей парковке, не пользуется общественным транспортом, для него действует специальный тариф. 

Назад

На данный момент:

В Москве реализуется 96 ТПУ. Из них 26 строят на строящихся станциях метро (16 на БКЛ) и 30 на построенных.

 

Назад

В апреле 2019 года открылся один из крупных ТПУ – «Саларьево». Он находится в поселении Московский, на пересечении Киевского шоссе и строящейся магистрали Солнцево – Бутово – Варшавское шоссе.

Площадь ТПУ — 15,5 га, пассажиропоток — 115 тыс. человек в сутки. В состав узла вошли:

ТПУ включает торгово-развлекательный центр «Саларис».

В Северном округе ТПУ «Ховрино» объединил метро, международный автовокзал и новую станцию будущего третьего маршрута Московских центральных диаметров «Ленинградско-Казанский» (МЦД-3).

Назад

В 2016 году в Нью-Йорке открыли самый дорогой в мире ТПУ – World Trade Center. На его строительство ушло 12 лет и 4 млрд долларов. Сложный многоуровневый подземный комплекс объединяет между собой несколько линий метро и подземной

железной дороги (PATH).

Растянувшийся между небоскребами 100-метровый павильон из стальных криволинейных ребер задумывался архитектором как «белоснежный голубь, выпущенный на волю». На уровне хаба соединяются строящиеся башни на площадке Всемирного торгового центра, размещены магазины. Главный элемент проекта – световой фонарь, накрывающий собой площадь.

Назад

Пилотный участок скоростного трамвая «Южная хорда» свяжет аэропорт «Домодедово» и «Красногвардейскую»

В Минтрансе Московской области определен пилотный участок строительства линии скоростного пассажирского трамвая, который свяжет периферийные районы Москвы и Московскую область. Пилотный участок пройдет по линии «Аэропорт Домодедово – станция метрополитена «Красногвардейская» (еще один вариант «Аэропорт Домодедово – станция метро «Зябликово») в рамках реализации проекта Межмуниципальной сети скоростного пассажирского транспорта на базе технологии скоростного трамвая (МССПТ) «Южная Хорда», сообщает инвестор и разработчик проекта компания «Домодедово Транс Девелопмент».

В качестве пилотного участка «Домодедово Транс Девелопмент» предлагало также другие варианты: линию «Бутово — Щербинка – транспортно-пересадочный узел (ТПУ) «Западное Домодедово» – ТПУ «Авиационная» (планируемая) – с возможным продлением до автодороги «Подъезд к аэропорту Домодедово» и линию ТПУ «Кутузовская» – ТПУ «Западное Домодедово» — ТПУ «Авиационная» (планируемая) – с возможным продлением до автодороги «Подъезд к аэропорту Домодедово»». «Из представленных «Домодедово Транс Девелопмент» трех вариантов пилотного участка подмосковный Минтранс поддержал в качестве пилотной линию, соединяющую аэропорт Домодедово с Москвой, как соответствующую задачам совершенствования инфраструктуры подъездных путей к крупнейшему авиаузлу региона», – говорит Анна Краснова, директор по развитию «Домодедово Транс Девелопмент».

Общая протяженность линии составит 24,5 км, из них по территории Москвы пройдет тоннель неглубокого заложения протяженностью 1,6 км. Под размещение объекта потребуется земельный участок общей площадью 49 га. По расчетам ГУП МО НИиПи Градостроительства, к 2020 г. скоростной трамвай на линии «Красногвардейская» — аэропорт «Домосдедово» сможет перевозить 23 365 человек в сутки. Минимальная стоимость 1 км пути, по информации «Домодедово Транс Девелопмент», составит $23,5 млн. Линия будет построена за 2-3 года и сдана «под ключ». Средства, которые планируется использовать, будут как бюджетными, так и из внебюджетных источников.

МССПТ «Южная Хорда» — хордовое соединение юго-восточной, южной и юго–западной частей Московской области с радиальными выходами в соответствующие зоны г.Москвы. Проект направлен на обеспечение скоростных транспортных межмуниципальных связей в районах, не обслуженных железной дорогой. В соответствии с ранее выданным поручением министра транспорта Игоря Левитина проект пилотного участка МССПТ «Южная Хорда» включен в план работы Координационного совета по развитию транспортной системы г.Москвы и Московской области и планируется к рассмотрению в III квартале 2012 г. В настоящее время компания приступила к разработке технико-экономического обоснования пилотного участка.

Работа с инвестором: новые акценты

В столице будут проводить реконструкцию Государственного музея изобразительных искусств (ГМИИ) им. А. С. Пушкина и ряда промзон, строить крупные микрорайоны, развивать территорию Новой Москвы и сектор арендного жилья.

 

Такое заявление сделал председатель Москомстройинвеста Константин Тимофеев на встрече с журналистами, посвященной взаимодействию города и инвесторов. Многое из сказанного оказалось вполне ожидаемым. Например, то, что в русле выработанной политики приветствуется комплексная застройка и, наоборот, контракты на развитие точечных объектов расторгаются. Такова же судьба проектов, по которым истек срок реализации, а объект не построен.

 

Смена приоритетов

 


S. MIRATOV Однако многое в подходах определяется сменой приоритетов: после ревизии 2 тыс. проектов однозначно расторгались договоры на возведение офисов в центре и, наоборот, поддерживалось строительство жилья ближе к центральной части города. К строительству, предполагаемому дальше от центра, подход другой: власти выступают за создание рабочих мест и против застройки жилыми микрорайонами, особенно если проект не включает в себя объекты социального сектора, дорожной сети. Юридически условия работы в Москве не изменились, Градостроительный кодекс РФ никто не отменял, но стали другими приоритеты, особо подчеркнул К. Тимофеев. Смена ориентиров произошла и по объектам городского заказа: если еще недавно главным акцентом в адресной инвестиционной программе были детские сады, то теперь — поликлиники. Участки для возведения объектов медицинского назначения предоставляются застройщикам и на аукционах, и на условиях концессии.

 

Произошло некоторое смещение акцентов в отраслевых направлениях. Например, в сфере строительства гостиниц. Земельные участки для подобных объектов также реализуются на аукционах. Кроме того, отели возводят на территориях правообладателей. Причем не так давно власти в ряде случаев предлагали поменять функцию еще не построенного здания — например, с офисной на гостиничную. Сейчас же следят за тем, чтобы гостиницы по завершении строительства не превращались в апартаменты, увы, такая тенденция уже наметилась. Чтобы процесс развивался в нужном русле, будут использовать экономические меры воздействия для удержания от самовольного изменения цели использования земельного участка.

 

Вместе с тем даже при нехватке гостиниц власти не собираются стимулировать инвесторов идти в эту сферу, потому что заявок и так много, причем они поступают и от зарубежных участников гостиничного рынка. Иностранцы готовы заниматься даже памятниками, что важно, без увеличения их габаритов, то есть довольствуясь теми площадями, которые имеются.

 

Другое, относительно новое направление — арендное жилье. Для тех инвесторов, которые готовы включиться в создание фонда арендного жилья, мало выработать отдельные преференции, здесь нужны долгосрочные меры поддержки. И в то же время необходимы ограничения, чтобы арендный бизнес не превратился в скрытую форму продажи квартир. Один из способов — создание паевых инвестиционных фондов, с помощью которых в дальнейшем можно управлять таким жильем. При этом для нормальной экономики проекта, конечно, важны налоговые льготы, наличие у инвестора длинных денег. Вполне очевидно, что такой фонд арендного жилья будет создаваться на новых, присоединенных к Москве территориях.

 

Работа над промзонами

 

В городе пытаются осуществить уже третью попытку вывода и развития участков, занятых промышленными зонами. По оценкам главы Мосстройинвеста, неудачи прошлых лет связаны с тактикой собственников, их нежеланием проводить реорганизацию. Между тем это гигантский резерв — 17 тыс. га, на которых находятся 83 производственно-коммунальные зоны и 209 промышленных, которые можно рассматривать как перспективные. Владельцы промышленных объектов, якобы сохраняя прежнюю функцию производств, на самом деле повсеместно сдают недвижимость в аренду — под склады, торговлю, кафе, рестораны, автомойки и т.

д. Однако видимость прежней деятельности позволяет им платить минимальную ставку аренды, отчего экономика такого бизнеса выглядит весьма успешной. Сегодня власти намерены проводить рейды и устанавливать соответствие функционального назначения используемого объекта заявленному. Если в цехах нет производства, если они выполняют другие функции, то необходим пересмотр кадастровой стоимости, а следом — изменение налога на недвижимость в сторону повышения.

 

Однако у столичного правительства нет задачи закрыть все производства. Некоторые собственники готовы застроить часть своих территорий, сохранив производственные цеха. Но для этого нужно подготовить проект планировки участка. В этом году разрешили делать его за свои средства, что ускоряет процесс. Власти утверждают границы участка, анализируют технико-экономические показатели проекта, создают схему улично-дорожной сети. Такой подход, объяснил К. Тимофеев, возможен даже в том случае, когда одна территория принадлежит нескольким собственникам, которые, занимаясь реконструкцией площадки, могут объединяться в акционерные общества, ПИФы.

Разрабатывать и утверждать закон об изъятии промышленных земель под реконструкцию — таких целей у властей нет. Однако в случае строительства дорог, транспортно-пересадочных узлов (ТПУ) промышленные участки могут быть реорганизованы. Относительная ясность в отношении того, каких именно промзон это коснется, уже существует, перечень ТПУ утвержден. В него попали Некрасовка, Румянцево, Руднево, Саларьево. Есть интересный проект реновации промзоны «Грайвороново», где будут строить и жилье, и деловую часть в соотношении 50 на 50. Участниками проектов реконструкции выступят банк «ВТБ», компании «Дон-Строй», «Интеко», «Пионер», MR-Group.

 

Развитие старых территорий

 

Сложности вызывает процесс развития застроенных городских территорий, который в прошлые годы осуществлялся в рамках инвестконтрактов. Схема выглядела таким образом: инвестор при взаимодействии с городом расселял старые дома волновым методом, сносил их, получал территорию и застраивал ее более комфортабельными жилыми и административными объектами. Таких контрактов в городе было реализовано несколько десятков. С введением Земельного кодекса РФ получить район под новое развитие можно только по результатам аукциона. В итоге по ряду контрактов сложилась такая ситуация: инвестор людей отселил, а землю под снесенными домами не получил, продлить инвестконтракт с ним по правовым причинам стало невозможно. Два года положение дел было патовым, проекты пришлось заморозить. Сейчас Градостроительно-земельная комиссия (ГЗК) Москвы изучает целесообразность каждого из них, в том случае, если объект востребован, если жители поддерживают инвестора, то проект получает участок от города в судебном порядке. Однако в ряде случаев инвестор добивается площадки только после выкупа жилья у собственников старых домов. Получив участок, компания с помощью города меняет его назначение, и контракт на развитие территории все-таки осуществляется. Как правило, происходит уплотнение застройки, а москвичи остаются жить в этом же районе. Хуже, когда жителями старого фонда являются не собственники, а наниматели, когда на этих территориях есть общежития. Такие контракты, как выразился К. Тимофеев, серьезно «споткнулись».

 

Способы развития застроенных территорий существуют. Но согласно законодательству для этого требуется наличие утвержденных правил землепользования и застройки (ПЗЗ). В Москве есть отраслевые схемы, проекты планировок, которые сейчас являются нормативными документами, но нет утвержденных ПЗЗ, пока по ним были лишь проведены слушания в Мосгордуме. По этой причине в городе не проводятся аукционы на развитие застроенных территорий. А существующие ПЗЗ используются лишь как рабочие материалы. То есть пока для инвестора существует один механизм — выкупать жилье, расселять, сносить старые дома и строить новые.

 

Ранее в столице было проведено два аукциона на развитие территорий в Щербинке, но теперь их результаты будут пересмотрены. Во-первых, они нелегитимны в отсутствие ПЗЗ, а, во-вторых, планировка одного из участков была выполнена без учета размещения социальных объектов. Кроме того, Щербинка является проблемным для Новой Москвы районом и в другом смысле: 1,5 тыс. граждан считаются обманутыми дольщиками. Вопрос развития жилой застройки здесь придется решить так, чтобы интересы пострадавших горожан были удовлетворены.

 

Непростые отношения

 

«Избранных» компаний среди инвесторов нет, подчеркнул глава Москомстройинвеста. Сегодня для города наиболее важны порядка 60–70 фирм, работающих над значимыми проектами с объемом площадей 200 тыс. кв. м и более. Взаимоотношения с ними выстраиваются по-разному. Например, ряд инвесторов оказались перед фактом расторжения договоров — из-за срыва сроков, смены функционального назначения участка. Но возможно и такое, что один инвестор по объективным причинам лишается объекта, но получает право на реализацию другого. В качестве такого примера К. Тимофеев приводит компанию «АФИ Девелопмент», которая в свое время начинала проект на площади Белорусского вокзала. Сейчас ей дана возможность построить офисный центр. Компании, возводящие значимые объекты, власти считают системными городскими застройщиками. Им по возможности оказывают помощь при возникновении определенных сложностей. Если у инвестора были большие экономические потери, но он провел работу и готов выполнить свои обязательства, город идет ему навстречу. Кстати, весомым аргументом для властей являются общественные слушания при решении некоторых вопросов. Результатом этой процедуры может стать продление или, наоборот, расторжение контракта.

 

Однако часто случается и так, что после утверждения проекта правообладатель выставляет его на вторичном рынке и продает, соответственно, в полтора раза дороже. И затем новый собственник приходит за разрешением увеличить объемы строительства, а по сути — пересмотреть существующие договоренности. Именно по этой причине мэр Москвы Сергей Собянин проводил встречу с 20 участниками рынка, инвестирующими в городское строительство. Власти сделали предупреждение: пересмотра контрактов не будет.

 

 

 

К СВЕДЕНИЮ

 

За два с половиной года в Москве проведена ревизия 2 тыс. контрактов. Часть из них — на возведение 11,5 млн кв. м — ликвидирована, другая часть одобрена — на строительство 30 млн кв. м. На данный момент выдано разрешений на строительство общим объемом 42 млн кв. м. В активной фазе реализации находится около 30% площадей.

 

  

 

Большие планы

 

В целом в городе насчитывается 100 крупных проектов застройки и значимых объектов. В этой связи на встрече с прессой были названы следующие районы и улицы города — Левобережный, Хорошево-Мневники, Ростокино, улица 6-я Радиальная, Долгоруковская, Раменки. Для оперативного отслеживания процесса, стройкомплекс распределил крупные территории и закрепил за ними кураторов, чтобы те следили за сроками, подталкивали застройщиков к безукоснительному выполнению своих обязательств. Что же касается главного требования, то оно остается актуальным: если в течение шести лет застройщик не возвел объект, то договор аренды с ним будет расторгнут, земельный участок перейдет к городу и может быть вновь выставлен на торги.

 

В числе крупных объектов в планах Москвы значится реконструкция ГМИИ им. А. С. Пушкина, территория Тушинского аэродрома с организацией там спортивного кластера, район Левобережный, на территории Новой Москвы — ЖК «Татьянин парк» и др.

 

Что касается музея, то его ожидает и новое строительство — предполагается возвести объект музейного назначения с подземной и наземной частью в Знаменском переулке и выполнить реконструкцию двух уже относящихся к музейному комплексу старых зданий (ул. Волхонка, 8, стр. 11; ул. Волхонка, 7).

 

Через полтора месяца произойдет и судьбоносное событие для Новой Москвы — начнется обсуждение территориальных схем развития Новомосковского района, то есть документов, в которых подробно пропишут все наиболее важные показатели для этой местности — количество жителей, объемы жилья, обеспеченность рабочими местами и транспортом, плотность улично-дорожной сети и мн. др. Сейчас концепция уже активно обсуждается, затем будет рассмотрена на ГЗК, и в дальнейшем основное ляжет в основу территориальных схем. Но уже понятно, как пройдут трассы, где будет сформирована главная застройка. Изъятие земли могут проводить только при необходимости прокладки дорожных объектов, возведения ТПУ, на что потребуются десятки гектаров, подчеркнул К. Тимофеев. При этом он отметил: власти выступают за конструктивный диалог с собственниками и будут приветствовать добровольную передачу земли для совместной застройки территории.

МЦД-2. Битца, Бутово, Щербинка, Остафьево, Силикатная, Подольск: loader_blog — LiveJournal

Как и обещал, сегодня заключительный пост про планы по второму Московскому Центральному Диаметру (далее — МЦД). Поехали!

01. Фрагмент схемы переустройства путей в рамках проекта второго Московского Центрального Диаметра. 2018

Битца. Первый этап — навесы, второй — конкорс с двумя выходами: западным к торговому центру «Шёлковый путь» и восточный к улице Пушкина. Причём переход через вторую пару путей (для дальних поездов) останется наземным. А по схеме переустройства путей у конкорса восточного выхода вообще нет.

02. Проект реконструкции платформы Битца. План размещения. АО «Мосгипротранс». 2018 год 03. Проект реконструкции платформы Битца. Фотомонтаж. АО «Мосгипротранс». 2018 год

Судьба наземного пешеходного перехода рядом с путепроводом Варшавского шоссе через пути Курского направления (МЦД-2) мне неизвестна.

04. Проект реконструкции платформы Бутово. План размещения. АО «Мосгипротранс». 2018 год 05. Проект реконструкции платформы Бутово. Фотомонтаж. АО «Мосгипротранс». 2018 год

Бутово. Ситуация примерно такая же, только на первом этапе обозначены ещё и кассовые павильоны. Конкорс в двумя выходами: западным к Мценской улице и восточным к Вокзальной площади и Синельниковской улице. Судьба наземного пешеходного перехода между улицами Бутовский тупик и Садовой мне неизвестна.

06. Проект реконструкции платформы Щербинка. Вариант 1

 Щербинка. Первый проект реконструкции предусматривал одну островную платформу вместо двух береговых. Но это было ещё до проекта МЦД.

07. Проект реконструкции платформы Щербинка. Вариант 2. 2019 год 08. Проект реконструкции платформы Щербинка. Вариант 2. 2019 год

Современное решение говорит, что оставят западную береговую платформу, переделают восточную в островную и добавят ещё одну береговую на востоке, чтобы здесь останавливались все поезда.

09. Проект платформы Остафьево. Вариант 1. План размещения. ГУП «МосгортрансНИИпроект». 2018 год

Наземный пешеходный переход между домами №8 по Новостроевской и Железнодорожной улицами будет заменён на надземный или подземный. Про переход между Южной и Овражной улицами мне ничего не известно.

10. Проект платформы Остафьево. Вариант 2. План размещения. 2018 год

Остафьево. По первому варианту планировали построить одну островную платформу, но в итоге выбрали вариант с двумя, чтобы останавливать здесь все поезда.

11. Проект платформы Остафьево. Вариант 3. Общий вид. 2019 год 12. Проект платформы Остафьево. Вариант 3. Общий вид. 2019 год 13. Проект платформы Остафьево. Вариант 3. Платформа. 2019 год

Во втором варианте уже виден конкорс, и его западный выход дотягивается до выхода через проектируемую автодорогу. В третьем варианте конфигурация конкорса была изменена, по этому проекту его и построили. Имеется два выхода: западный к перспективной многоэтажной застройке и восточный к промзоне. Четвёртый вариант показывали в павильоне МЦД у Киевского вокзала, но внедрять не захотели или не успели. Сейчас это типовой вариант.

14. Проект платформы Остафьево. Вариант 4. Платформа. 2019 год

На данный момент открыта западная платформа и западный выход конкорса. Восточную платформу и восточный выход должны скоро открыть.

15. Платформа Остафьево. Фото — Alek Zander (форум roads.ru). 2020 год 16. Платформа Остафьево. Фото — Alek Zander (форум roads.ru). 2020 год

Наземного пешеходного перехода в створе Рязановского шоссе также нет в планах на переустройство, что странно.

17. Проект реконструкции платформы Силикатная. План размещения. АО «Мосгипротранс». 2018 год 18. Проект реконструкции платформы Силикатная. Фотомонтаж. АО «Мосгипротранс». 2018 год

Силикатная. Тут ситуация схожа с Битцей и Бутово. Со второй её сближают кассовые павильоны на первом этапе реконструкции, с первой — конкорс только с одним западным выходом на втором этапе. В отличие от ситуации Битцы, где восточный выход ведёт на территорию области, а область могла быть не заинтересована в нём, здесь вся платформа на территории области, так что территориальных споров быть не должно. Видимо, хотят сэкономить. Западный выход ведёт на Тепличную улицу.

19. Подольск. Строительство платформы №2. Фото — yapet.livejournal.com. 2020 год 20. Подольск. Строительство платформы №2. Фото — Леонид Галин, РИАМО. 2020 год 21. Подольск. Строительство платформы №1. Фото — Леонид Галин, РИАМО. 2020 год

Прежде чем мы перейдём к конечной точке нашего путешествия, отметим, что наземный пешеходный переход через пути Курского направления (МЦД-2) между улицей Ульяновых и Домодедовским шоссе тоже никак не отражён в списке заменяемых. Может, существует список таких переходов Московской области. Например, здесь есть перечень каких-то переходов, фиг поймёшь…

22. Подольск. Строительство платформы №2. Фото — Леонид Галин, РИАМО. 2020 год 23. Подольск. Строительство платформы №2. Фото — Леонид Галин, РИАМО. 2020 год 24. Подольск. Строительство платформы №2. Фото — Леонид Галин, РИАМО. 2020 год

Насколько я понял, сейчас здесь строится второй пешеходный тоннель между тремя платформами (№1 — береговая в область, №2 — островная на Москву, №3 — островная для поездов дальнего следования), плюс реконструируется платформа №2, а к №1 пристраивается часть со входами в новый подземный вестибюль («нижний»). Довольно интересная здесь форма сходов, на которые опирается типовой навес-«грибок».

24. Подольск. Реконструкция пешеходного тоннеля. Фото — Антон Сабреков. 2020 год

Также, как я понял, идёт реконструкция существующего тоннеля подземного перехода и «верхнего» вестибюля. По фото здесь не всё так очевидно, а я был в Подольске всего пару раз, с тех пор тут, похоже, всё перелопатили. Поэтому ограничусь цитатой из пресс-релиза:

12 июня на станции МЦД-2 Подольск откроется после реконструкции платформа №1 (из Москвы). Новая платформа оборудована навесом на всю длину для защиты от осадков, динамическими и статическими информационными табло, современной системой освещения. Для посадки и высадки пассажиров здесь станут останавливаться поезда МЦД-2 и пригородные электрички. В настоящее время в стадии завершения находится строительство островной платформы №2 (в Москву), а также нижнего вестибюля, который обеспечит выход пассажиров на платформу №2. Для удобства пассажиров вестибюль будет оборудован тремя эскалаторами и двумя лифтами. Кроме того, на станции возводится верхний вестибюль для выхода в город на привокзальную площадь. Он также будет оборудован двумя эскалаторами и лифтом для подъема и спуска. Завершить реконструкцию станции планируется осенью 2020 года.

На этом мы заканчиваем своё путешествие по МЦД-2 и скоро познакомимся с другими направлениями МЦД. Не переключайтесь!

Что внутри ТПУ?. Мощный чип, предназначенный для… | Антон Пакуин

Мощный чип, предназначенный для машинного обучения

TPUv2 с впечатляющими радиаторами. Source

TL; DR это ускоритель, разработанный на основе 128×128 16-битной матрицы систолического массива с умножением и накоплением («MXU»). Если вам этого достаточно, отлично! Если нет, читайте дальше…

Возможно, вы слышали, что у Google есть специальный чип для машинного обучения. Он называется TPU («Tensor Processing Unit»), и Google прилагает все усилия, чтобы вложить в один чип как можно больше возможностей машинного обучения.Google Cloud дает разработчикам возможность использовать эту силу, но сам чип в основном представляет собой черный ящик… или нет? Давайте отодвинем несколько слоев назад, чтобы посмотреть, сможем ли мы увидеть, что внутри волшебства.

В этой статье я попытаюсь рассмотреть системную архитектуру TPU, оставаясь при этом достаточно простым, чтобы разработчик программного обеспечения с минимальным опытом работы с аппаратным обеспечением мог понять. Тем не менее, я не скуплюсь на технические детали. Я собираюсь сделать максимально полный обзор высокого уровня.

— — —

Я не аффилирован с Google, я просто инженер-компьютерщик, который пытается объединить и объяснить, какая документация существует.

Вот почему у нас есть хорошие вещи. Источник

Обучение и запуск нейронных сетей требуют больших вычислительных мощностей. Еще в 2013 году компания Google¹ провела расчеты с обратной стороны салфетки, чтобы понять, что им потребуется для голосового поиска, и результаты оказались неожиданными:

минут в день, и мы запускали глубокие нейронные сети для нашей системы распознавания речи на процессорах, которые мы использовали, нам пришлось бы удвоить количество центров обработки данных Google!

— Norm Jouppi

ASIC

Нейронные сети — мощные инструменты, но они будут стоить слишком дорого (даже для Google), чтобы работать везде на стандартных компьютерах.

К счастью, вам не нужен стандартный компьютер, чтобы выполнять тяжелую работу. В какой-то момент становится экономически выгодно разработать собственный чип, способный выдержать такой вес. Этот специальный чип представляет собой специализированную интегральную схему (ASIC).

Обычно от ASIC больше проблем, чем пользы. Их разработка занимает много времени: Google потратил 15 месяцев на разработку TPUv1, и это было удивительно быстро. Изначально они дороги, требуют специализированных инженеров и производственных затрат, которые начинаются примерно с миллиона долларов.И они негибкие: нет возможности заменить чип, когда он будет готов.

Но если вы знаете, что будете выполнять одну конкретную работу в достаточном объеме, повторяющиеся преимущества могут компенсировать первоначальные недостатки. Как правило, ASIC — это самый быстрый и энергоэффективный способ выполнения задачи. Google хотел, чтобы эта производительность позволяла запускать нейронные сети, и результатом стал TPU.

Скаляр, Вектор, Матрица

Нейронная сеть требует много математики, но большая часть математики довольно проста: умножить набор чисел и сложить результаты.Вы можете соединить эти два вместе в одной операции, называемой умножение-накопление (MAC). И если нам больше ничего не нужно делать, мы можем умножать-накапливать очень, очень быстро.

Без нового чипа мы бы сделали это либо с процессором, либо с графическим процессором. ЦП — это скалярная машина , что означает, что он обрабатывает инструкции шаг за шагом. Это отлично подходит для приложений общего назначения, таких как ваш ноутбук или сервер, но мы можем выжать больше производительности за счет специализации.

Измерения данных. SourceУпрощенная векторная архитектура. Источник

GPU — это векторная машина . Вы можете дать ему длинный список данных — одномерный вектор — и запустить вычисления для всего списка одновременно. Таким образом, мы можем выполнять больше вычислений в секунду, но мы должны выполнять те же вычисления с вектором данных параллельно. Этот вид вычислений хорошо подходит для графики или крипто-майнинга, где одно задание должно выполняться много раз.

Но мы все еще можем добиться большего.Данные нейронной сети располагаются в виде матрицы, двумерного вектора. Итак, мы построим матричную машину . И нас действительно интересует только умножение-накопление, поэтому мы отдадим ему приоритет над другими инструкциями, которые процессор обычно поддерживает. Мы посвятим большую часть нашего чипа MAC, выполняющим матричное умножение, и по большей части игнорируем другие операции.²

Повторите это 16 384 раза, и вы получите картину. Источник

Достичь такой производительности матрицы можно с помощью элемента архитектуры, называемого систолическим массивом .Это интересно, и именно поэтому TPU так эффективен. Систолический массив — это своего рода аппаратный алгоритм, описывающий структуру ячеек на микросхеме, которая вычисляет матричное умножение. «Систолическое» описывает, как данные перемещаются по чипу волнами, подобно биению человеческого сердца³.

Внимание: подробности впереди. Если вас не волнует, как работает систолический массив, прокрутите вниз, пока не увидите цветок.

Существует несколько вариантов конструкции систолической решетки; здесь я говорю о версии, реализованной в ТПУ.

Рассмотрим операцию умножения матриц:

перемножение матриц 2×2. Источник

Для входных данных 2×2 каждое слагаемое в выходных данных является суммой двух произведений. Ни один продукт не используется повторно, но используются отдельные термины.

Мы реализуем это, построив сетку 2×2. (На самом деле представляет собой сетку, а не просто абстракцию — аппаратное обеспечение — это весело). Учтите, что 2х2 — это игрушечный пример, а полноразмерный MXU — чудовищные 128х128.

Допустим, AB/CD представляет наши активаций , а EF/GH наши веса .Для нашего массива мы сначала загружаем веса вот так:

Я расскажу, как мы это делаем позже. Источник: я + GIMP

Наши активации помещаются в очередь ввода, которая для нашего примера будет располагаться слева от каждой строки.

Обратите внимание на заполнение нулями: это гарантирует, что данные попадут в наш массив в нужный момент. Источник: me + GIMP

Каждые цикл часов каждая ячейка будет выполнять следующие шаги, все параллельно:

  1. Умножаем наш вес и активацию, поступающую слева.Если ячейки слева нет, берем из входной очереди.
  2. Добавьте этот продукт к частичной сумме, полученной сверху. Если выше нет ячейки, частичная сумма сверху равна нулю.
  3. Передайте активацию в ячейку справа. Если ячейки справа нет, сбросьте активацию.
  4. Передайте частичную сумму в ячейку внизу. Если в нижней части нет ячейки, соберите частичную сумму в качестве вывода.

(Мокет этих правил на Python можно найти здесь .)

По этим правилам вы можете видеть, что активации будут начинаться слева и перемещаться на одну ячейку вправо за цикл, а частичные суммы будут начинаться сверху и перемещаться на одну ячейку вниз за цикл.

Поток данных будет выглядеть следующим образом:

Макет систолического массива. Источник: я + GIMP

И это наш массив! Давайте рассмотрим выполнение первого вывода:

Цикл 1

  1. Верхний левый считывает A из входной очереди, умножает на вес E для получения продукта AE.
  2. AE, добавленное к частичной сумме 0 сверху, дает частичную сумму AE.
  3. Активация А передана ячейке вверху справа.
  4. Частичная сумма AE передана в ячейку слева внизу.

Цикл 2

  1. Внизу слева считывает B из очереди ввода, умножает на вес G для получения продукта BG ячейка внизу справа
  2. Частичная сумма AE + BG является выходом.

И вы можете видеть, что мы правильно вычислили первый член нашей выходной матрицы. Между тем, в цикле 2 мы также вычисляем CE в верхнем левом углу и AF в верхнем правом углу. Они будут распространяться по ячейкам, и к циклу 4 мы получим весь вывод 2×2.

Циклы 3 и 4 оставлены в качестве упражнения для читателя.

Вот несколько диаграмм от Google, которые дают немного больше визуальной картины.

Анимация данных, проходящих через массив.По сравнению с остальными изображениями в этой статье, этот gif транспонирован — поверните его на 90 градусов по часовой стрелке, а затем переверните по горизонтали. Источник

Вы увидите, что входные активации расположены в шахматном порядке с нулями, чтобы гарантировать, что они входят в массив в нужный момент, и что выходы, которые покидают массив, также расположены в шахматном порядке. Для полного вычисления результирующей матрицы требуется 3n-2 такта, в то время как стандартное последовательное решение равно n³. Неплохо!

Диаграмма MXU от Google. Источник

Мы можем это сделать, потому что мы выполняем операции MAC 128×128 параллельно.Множители обычно большие и дорогие для аппаратной реализации, но высокая плотность систолических массивов позволяет Google упаковать 16 384 из них в MXU. Это напрямую связано с тренировкой скорости и запуском вашей сети.

Веса загружаются примерно так же, как и активации — через очередь ввода. Мы просто отправляем специальный управляющий сигнал (красный на приведенной выше диаграмме), чтобы указать массиву сохранять веса по мере их прохождения вместо выполнения операций MAC. Веса остаются в тех же элементах обработки, поэтому мы можем отправить всю партию перед загрузкой нового набора, что снижает накладные расходы.

Вот оно! Остальная часть чипа важна и заслуживает внимания, но основным преимуществом TPU является его MXU — блок умножения матрицы систолического массива.

Давайте на минуту подумаем о чем-нибудь приятном, например, о тосте с авокадо или о солнечной улыбке Эндрю Нг.

Намасте. Источник

Остальная часть этой статьи будет посвящена реализации TPU, и я не буду вдаваться в подробности, как в случае с ситолическим массивом. Если вы готовы, мы продолжим.

Мы разработали нашу замечательную систолическую решетку, но осталось еще много работы, чтобы построить поддержку и инфраструктуру, чтобы заставить ее работать.Во-первых, нам нужен способ передачи данных в сам чип и из него. Затем нам нужно получить его в массив и из него в нужное время. И, наконец, нам нужен какой-то способ обрабатывать в нейронной сети все, что не является умножением матриц на . Давайте посмотрим, как все это происходит на аппаратном уровне.

Полная система

Ниже вы найдете схему системы и макет для более старой версии TPUv1. Это не обязательно относится к более новым TPUv2 и TPUv3 — Google внесла некоторые архитектурные изменения с момента выхода этой документации.Тем не менее, я не знаю более новых справочных материалов или документации для более новых чипов, поэтому мы будем придерживаться TPUv1. Позже я расскажу о наиболее заметных различиях между версиями.

На самом высоком уровне TPU разработан как ускоритель. Это означает, что он подключится к хост-системе, и хост будет разгружать данные и инструкции, которые будут вычисляться на ускорителе. Результаты возвращаются на хост через тот же интерфейс. По этой модели ускоритель может ускорить длительные и дорогостоящие матричные операции, в то время как хост может справиться со всем остальным.

Давайте посмотрим, что внутри ускорителя с помощью нескольких блок-схем⁴. Мы рассмотрим их шаг за шагом.

Самая последняя общедоступная информация, о которой я знаю — дайте мне знать, если у вас есть что-то новое. Источник

Хост-интерфейс будет подключаться к нашей управляющей машине через PCIe. Мы видим, что через этот интерфейс проходят 3 формы данных: веса (в DDR3 ), активации (в Unified Buffer ) и управляющие инструкции (в красный путь Control ).

Веса одинаковы для всех входных данных в пакете, поэтому они будут загружены один раз для каждого пакета. Это происходит нечасто по сравнению с активациями, поэтому веса могут храниться в медленной внешней памяти DDR3 DRAM . Мы можем подключить хост-интерфейс для записи в эту DDR3, и мы поместим туда все наши веса, когда загрузим модель. Перед вычислением веса считываются из памяти DDR3 в Weight FIFO , что означает, что мы можем предварительно выбрать следующий набор весов, пока мы вычисляем текущую партию.

Единый буфер содержит наши активации. Во время работы хосту необходимо быстро получить доступ к этому буферу, чтобы прочитать результаты и записать новые входные данные. Унифицированный буфер напрямую подключен к MXU , и эти два компонента занимают львиную долю площади чипа (53%). Буфер вмещает до 384 матриц активации размером 256×256, что является самой большой партией, поддерживаемой чипом. Эти активации считываются и записываются в очень часто, , поэтому мы выделяем 30% нашего макета на встроенную память и шину 167 ГиБ/с вокруг пути MXU и унифицированного буфера.

MXU выполняет обратную запись в унифицированный буфер через аккумуляторов , а затем через конвейер активации . Сначала аккумуляторы собирают данные из MXU. Затем конвейер активации применяет стандартные функции нейронной сети (такие как ReLU и Maxpool⁵), которые не так требовательны к вычислительным ресурсам, как умножение матриц. Когда это будет сделано, мы можем поместить вывод обратно в унифицированный буфер, готовый к следующему этапу обработки.

А еще есть поток управления: красный путь, который получает инструкции от хоста.Этот путь будет выполнять такие действия, как управление, когда MXU будет умножаться, или какие веса будут загружаться в FIFO, или какие операции будет выполнять конвейер активации. Думайте об этом как о капитане, который говорит остальной части чипа, что делать.

Вот полная картина выполнения:

  1. Чип запускается, буферы и DDR3 пусты
  2. Пользователь загружает модель, скомпилированную TPU, помещая веса в память DDR3
  3. Хост заполняет буфер активации входными значениями
  4. Отправляется управляющий сигнал для загрузки слоя весов в MXU (через FIFO весов)
  5. Хост инициирует выполнение, и активации распространяются через MXU и в аккумуляторы
  6. конвейер активации, и новые слои заменяют старые в буфере
  7. Мы повторяем с 4 по 6, пока не достигнем последнего уровня
  8. Активации последнего уровня отправляются обратно на хост-компьютер

Вот оно! Полная картина выводов на TPUv1.Что-то примерно похожее происходит в новом TPUv2…

Мы обновились до оранжевого. Источник

… но у нас нет подробностей об этом. (Если вы тренируетесь на облачном TPU, вы работаете на TPUv2.) Одно можно сказать: TPU нового поколения позволяют тренироваться (т. е. обновлять веса), поэтому должен быть путь данных от MXU к хранение веса. На блок-схеме TPUv1 это не так.

Однако, просто зная, что может делать TPUv2, мы можем предположить несколько отличий:

  1. MXU в TPUv1 представлял собой 8-битный целочисленный массив 256×256, больший и менее точный, чем 16-битный массив bfloat16 128×128 в ТПУv2.
  2. Конвейер активации в TPUv1 был заменен полными векторными и скалярными модулями в TPUv2. Это дает ему гораздо более широкий спектр доступных функций, чем ограниченные «Активация» и «Нормализовать / Пул» из TPUv1.
  3. Похоже, что унифицированный буфер заменен памятью с высокой пропускной способностью. Это освободит место для остальной части чипа за счет задержки.

Эти различия в первую очередь связаны с тем, что TPUv1 был разработан для логического вывода, а не для обучения, поэтому были приемлемы низкоточные арифметические операции и меньшее количество операций.Обновления означают, что TPU нового поколения намного более гибкие — достаточно, чтобы Google было удобно размещать их в своем облаке.

Еще тост с авокадо. Еще Эндрю Нг.

Он хочет помочь тебе стать умнее. Источник

В оставшейся части этой статьи рассматриваются еще несколько концепций, важных для работы TPU, но не критических для архитектуры. Осталось не так много!

bfloat16

Большинство вычислений машинного обучения CPU/GPU выполняется с 32-битными числами с плавающей запятой.Когда мы опускаемся до 16 бит, инженеры машинного обучения, как правило, больше беспокоятся о диапазоне своих чисел, чем о точности . Можно округлить несколько долей десятичной точки, но выйти за пределы максимума или минимума числового представления — головная боль. Традиционные float16 обладают высокой точностью и недостаточной дальностью. Ответом Google на это является формат bfloat16, в котором больше битов посвящено экспоненте, а меньше — мантиссе.

Для сравнения, биты в числе с плавающей запятой:

  • float32: 1 бит знака, 8 бит экспоненты, 23 бита мантиссы
  • float16: 1 бит знака, 5 бит экспоненты, 10 бит мантиссы
  • bfloat16: 1 битовый знак, 8 бит экспоненты, 7 бит мантиссы
bfloat16.Источник

Поскольку число битов экспоненты одинаково, bfloat16 — это всего лишь два старших байта числа float32. Это означает, что он имеет примерно тот же диапазон, что и float32, но меньшую точность. На практике эта стратегия работает хорошо. В TPU большая часть данных по-прежнему хранится в формате float32. Однако MXU имеет множители bfloat16 и аккумуляторы float32. Меньшие множители сокращают требования к мощности и площади чипа, оставляя место для большего количества множителей, работающих на более высоких тактовых частотах. Это улучшает производительность чипа, не сильно снижая точность.

(TPUv1 использовал 8-битные целочисленные операции, что , а не , на которые легко перенести предварительно обученную модель.)

XLA

Граница между синим и розовым — загадка. Source

XLA — это экспериментальный JIT-компилятор для серверной части Tensorflow. Он превращает ваш график TF в линейную алгебру, и у него есть собственные серверные части для работы на процессорах, графических процессорах или TPU. Чтобы запустить модель в облачном TPU, вы настраиваете ее с помощью tf.contrib.tpu.TPUEstimator, а затем… позволяете Google перенести ее на волшебную землю TPU для вас.

Похоже, что набор инструкций, драйверы и серверная часть XLA TPU пока остаются только для внутреннего использования. Это понятно, но это означает, что мы не можем оглянуться, чтобы увидеть, как выглядит интерфейс CPU/TPU. Надеюсь, эта секретность не приведет к проблемам совместимости, поскольку другие компании разрабатывают свои собственные ускорители машинного обучения.

Pods

TPU в производственной среде размещаются в «pods», которые представляют собой большие стойки с большим количеством вычислительной мощности. Каждый модуль содержит 64 платы TPUv2, то есть 11.5 петафлопс.

Сейчас они просто хвастаются. Источники

TPU организованы в модули для поддержки обучения. Одного TPU часто недостаточно для обучения большой модели с желаемой скоростью, но обучение включает в себя частые обновления веса, которые необходимо распределить между всеми задействованными чипами. Модули поддерживают тесную сетевую связь TPU, поэтому обучение, распределяемое между всеми чипами модуля, масштабируется почти линейно.

Все за одного и один за всех. Источник

Линейное масштабирование является важным принципом.Если специалисту по обработке и анализу данных требуется больше возможностей, он добавляет больше микросхем, не задавая вопросов. Аппаратное обеспечение прозрачно для пользователя, поэтому он может сосредоточиться на текущей работе.

В этой статье больше говорится о самих стойках и о роли чипа в бизнесе.

Это вся информация, которую я смог найти о работе чипа. Это, конечно, не полное, но вы поняли идею.

TPU — действительно хорошая аппаратная часть, но она могла существовать за годы до выхода первой версии.В основном из-за того, что Google так много занимается линейной алгеброй (управляемой машинным обучением), этот тип чипов стал коммерчески жизнеспособным. Эту тенденцию подхватили и другие компании: Groq является дочерним предприятием проекта TPU, Intel надеется вскоре начать продавать чипы Nervana, и многие другие надеются принять участие в гонке. Выделенное оборудование обещает снизить затраты на обучение и эксплуатацию моделей; надеюсь, это ускорит темпы наших инноваций.

Это только начало.Источник

Дополнительная информация:

Сноски:

  1. Возможно, конкретно Джефф Дин.
  2. Тензор TensorFlow — это следующий шаг размерности матрицы. Мы обрабатываем тензоры, повторяя матричные операции пакетами.
  3. Если вы посмотрите систолические массивы, вы, вероятно, получите диаграммы массива, реализующего алгоритм Кэннона, но схема здесь немного отличается. В стандартной реализации частичные суммы остаются статичными, а веса перемещаются вниз; в TPU веса остаются статичными, а частичные суммы движутся вниз.Обычно мы хотим вычислять результаты пакетами, и если мы сохраняем веса там, где они есть, нам нужно загрузить их только один раз для каждого пакета.
  4. Многие объяснения, которые я даю для этой системы, являются спекулятивными. Google прямо не говорит, что происходит, поэтому я не могу быть уверен ни в чем, но это довольно простая система, и я уверен, что достаточно точен в своем чтении.
  5. Мне неизвестен полный список функций, поддерживаемых TPUv1. Google по-прежнему использует их для своих выводов, поэтому я предполагаю, что список не слишком ограничен.

Антон — новоиспеченный инженер-электрик, увлекающийся машинным обучением и компьютерной архитектурой. Если вам нравится моя работа, я сейчас ищу свой следующий проект .

Чипы AI: Google TPU. Разработчики чипов Google утверждают, что… | by Jonathan Hui

Источник: Google

Разработчики чипов Google утверждают, что если закон Мура больше не работает, то будущее за доменно-ориентированными архитектурами. Вместо того, чтобы разрабатывать стандартное оборудование для ML (машинного обучения), Google специализируется на Tensor Processing Unit (TPU) как на ускорителе ASIC (специализированных интегральных схем) для ИИ.Целью TPU является оптимизация операций, наиболее важных для его проблемной области — в верхней части списка находится глубокая нейронная сеть (DNN). Вот некоторые другие целевые домены DL, на которые ориентируется TPU:

Источник: Google

TPU представляет 128×128 16-битные матричные умножители (MXU) для умножения матриц для ускорения машинного обучения. PageRank, используемый в ранжировании поиска Google, включает в себя огромное матричное умножение. Поэтому Google использует TPU для многих операций в Google, которые в значительной степени связаны с матричным умножением, включая вывод в AlphaGo и PageRank.

Источник

При сильно сфокусированной проблемной области многие возможности становятся некритичными и исключаются для простоты. Графический процессор Nvidia устраняет прогнозирование ветвлений и спекулятивное выполнение в ЦП, чтобы высвободить ценное пространство на кристалле. TPU еще больше упрощает обработку инструкций и зависит от хост-сервера, который отправляет инструкции TPU для выполнения (а не извлекает их сам). Для быстрой разработки и снижения проектных рисков инженеры Google разработали TPU как сопроцессор на шине ввода-вывода, подключаемый к существующим серверам точно так же, как видеокарта.

На приведенной ниже схеме показано устройство TPU v3. Версия v3 содержит 4 чипа, каждый из которых содержит 2 ядра и в общей сложности 32 ГБ памяти HBM. Каждое ядро ​​содержит блоки векторной обработки (VPU), скалярные блоки и два блока матричного умножения 128 × 128 (MXU) (TPUv1 — 256 × 256).

Источник 420 терафлопс, 128 ГБ HBM

Каждый MXU выполняет 16 КБ операций умножения-накопления в каждом цикле с точностью BF16 (16 бит со значением покрывают диапазон FP32, но с более низкой точностью) для внутреннего умножения и FP32 для накопления.

Источник: Google

Коды ML обычно записываются в FP32, но преобразование в BF16 будет выполняться TPU автоматически. MXU будет выполнять полносвязные уровни и слои свертки в DNN. VPU выполняет векторные операции, включая ReLU, функции активации, softmax, пакетную нормализацию, отсев, объединение и градиентные обновления с использованием INT32 и FP32. Скалярный модуль выполняет управление TPU, поток данных и адресацию памяти.

Операция MXU выполняется в конвейерной концепции с систолическими массивами.Вот высокоуровневая анимация работы систолического массива.

Первоисточник

Вот еще один детальный взгляд на устройство TPU с 4 чипами.

Источник

Облако Google

Устройства TPU недоступны для публичной покупки. Но широкая публика может получить доступ к TPU через облако Google. Облако Google предоставляет различные варианты конфигурации (например, v2–8, v3–8, где 8 — количество ядер) для одного устройства TPU.

Источник

Модуль TPU

Несколько устройств TPU также могут быть сконфигурированы с высокоскоростными соединениями для формирования модуля TPU.Модуль v3 может иметь максимум 256 устройств с 2048 ядрами TPU v3 и 32 ТиБ памяти.

Источник (срез 16 × 16 содержит 8 × 8 устройств TPU)

Многие модели глубокого обучения производственного качества обучаются с помощью кластера устройств. При параллелизме данных каждый узел отвечает за подмножество данных. Для линейного масштабирования необходима сверхбыстрая связь между узлами, а устройства TPU подключены к двухмерной тороидальной ячеистой сети.

Источник изображения: Википедия. Топология двумерной тороидальной сетки

Эта высокоскоростная сеть передает обновления параметров (веса) на все устройства TPU в операции All Reduce — все рабочие тренируются на подмножестве входных данных и агрегируют градиенты на каждом этапе.

Первоисточник

Диаграмма справа ниже представляет собой более продвинутый метод обновления веса.

Он распределяет вычисление обновления веса по ядрам TPU-v3, а затем использует оптимизированный сбор всех данных для передачи новых весов всем ядрам TPU-v3.

Source

TPU реализует умножение матрицы на систолический массив конвейерным способом.

MAC Unit

Сначала загрузите веса w модели в массив. Активация x будет сдвинута вниз по одной строке за раз.Мы инициализируем частичную сумму для каждой ячейки массива равной нулю. Мы умножаем вес ячейки на скользящее значение x и добавляем его к соответствующей частичной сумме. Затем сдвигаем все частичные суммы на одну ячейку вправо. Мы повторяем шаги, пока не будут вычислены все значения. Диаграмма ниже наглядно демонстрирует эту идею.

Изменено из исходного кода

Как показано, TPU обрабатывает умножение матриц как поток данных без необходимости использования внешней памяти DRAM. Зная шаблон доступа к данным задачи целевой области, мы можем использовать локальную память для хранения промежуточных вычислений.Это позволяет избежать необходимости сложного кэширования при оптимизации доступа к внешней памяти. Это хороший пример того, что если мы сможем лучше использовать знания предметной области, мы сможем отказаться от многих оптимизаций, таких как кэширование, которые увеличивают размер кристалла.

TPU запускает всю модель логического вывода, чтобы уменьшить взаимодействие с ЦП. Ниже приведена системная диаграмма устройства TPU.

Блок-схема TPU

Приведенное ниже описание взято из Norman Jouppi на TPUv1.

Инструкции TPU отправляются с хоста по шине периферийных компонентов Express Interconnect Express (PCIe) Gen3 x16 в буфер инструкций.Внутренние блоки обычно соединяются между собой путями шириной 256 байт. Начиная с правого верхнего угла, блок матричного умножения является сердцем TPU с MAC-адресами 256 × 256, которые могут выполнять восьмибитное умножение и сложение целых чисел со знаком или без знака. 16-битные продукты собираются в четырех мегабайтах 32-битных аккумуляторов под матричным блоком. Четыре мегабайта представляют собой 4096 256-элементных 32-разрядных аккумуляторов. Матричный блок производит одну частичную сумму из 256 элементов за цикл.

Веса для матричного блока распределяются через встроенный в чип «Весовой FIFO», который считывается из внешней восьмигигабайтной DRAM, которую мы называем «памятью веса»; для логического вывода веса доступны только для чтения; восемь гигабайт поддерживает множество одновременно активных моделей.Весовой FIFO имеет глубину в четыре тайла. Промежуточные результаты хранятся во встроенном «унифицированном буфере» объемом 24 МБ, который может служить входными данными для матричного модуля. Программируемый контроллер прямого доступа к памяти передает данные в память хоста ЦП и в унифицированный буфер или из них. Чтобы иметь возможность надежного развертывания в масштабе Google, внутренняя и внешняя память включает встроенное оборудование для обнаружения и исправления ошибок.

Как показано ниже, большая часть пространства на кристалле отвечает за арифметические вычисления в TPU.Это не относится к процессору. Этот тип анализа часто используется исследователями, чтобы проиллюстрировать накладные расходы проекта.

Источник

Некоторые более подробные решения по проектированию оборудования можно найти в разделе 2 здесь (это будет слишком подробно для нашего обсуждения здесь).

Следующей, но еще не выпущенной версией для TPU является v4. Для результатов MLPerf v0.7 Google сравнил как v3, так и v4 TPU. По данным Google,

TPU ASIC четвертого поколения Google предлагает более чем в два раза больше TFLOP матричного умножения по сравнению с TPU v3, значительное увеличение пропускной способности памяти и достижения в технологии межсоединений.Представленные Google TPU v4 MLPerf используют преимущества этих новых аппаратных функций с дополнительными улучшениями компилятора и моделирования. Результаты демонстрируют среднее улучшение производительности TPU v3 в 2,7 раза в аналогичном масштабе на последнем соревновании MLPerf Training.

TPU v4 удваивает количество TFLOP с матричным умножением и обеспечивает значительное увеличение пропускной способности памяти благодаря новой технологии межсоединений.

Google подвергается определенным рискам, если алгоритмы DL меняются. Но экономия затрат на центр обработки данных Google может быть огромной и не иметь значения даже в краткосрочной перспективе.Но позже в этой серии мы рассмотрим стартапы, которые не согласны с этим направлением.

Вот статья о GPU, если вас интересуют другие подходы.

Системная архитектура Google Cloud TPU

Cloud TPU: совместное проектирование архитектуры и инфраструктуры

Быстрая и экономичная обработка данных с помощью TPU (Cloud Next ‘19)

Что делает TPU идеально настроенными для глубокого обучения?

Предметная архитектура для глубоких нейронных сетей

Анализ производительности тензорного процессора в центре обработки данных

Сравнительный анализ платформ TPU, GPU и CPU для глубокого обучения

MLPerf Training v0.7 результатов

Масштабирование моделей MLPerf-0.6 на Google TPU-v3 Pods

Вот как ИИ-чип Google TPU v4 показал себя в обучающих тестах

Хотя машинное обучение существует уже давно, в последнее время глубокое обучение обрело собственную жизнь. Причина этого в основном связана с растущим объемом вычислительной мощности, которая стала широко доступной, а также с растущим объемом данных, которые можно легко собрать и использовать для обучения нейронных сетей.

Объем вычислительной мощности, доступной людям, начал стремительно расти на рубеже тысячелетий, когда графические процессоры (GPU) стали используется для неграфических вычислений, тенденция, которая становится все более распространенной за последнее десятилетие.Но вычислительные потребности глубокого обучения растут еще быстрее. Эта динамика подтолкнула инженеров к разработке электронных аппаратных ускорителей, специально предназначенных для глубокого обучения, ярким примером которых является тензорный процессор Google (TPU).

Здесь я опишу совсем другой подход к этой проблеме — использование оптических процессоров для выполнения вычислений нейронной сети с фотонами вместо электронов. Чтобы понять, как здесь может служить оптика, нужно немного узнать о том, как в настоящее время компьютеры выполняют нейросетевые вычисления.Так что терпите меня, пока я обрисовываю в общих чертах, что происходит под капотом.

Почти всегда искусственные нейроны создаются с использованием специального программного обеспечения, работающего на каких-либо цифровых электронных компьютерах. Это программное обеспечение предоставляет данному нейрону несколько входов и один выход. Состояние каждого нейрона зависит от взвешенной суммы его входов, к которым применяется нелинейная функция, называемая функцией активации. Результат, выход этого нейрона, затем становится входом для различных других нейронов.

Снижение энергетических потребностей нейронных сетей может потребовать вычислений со светом

Для вычислительной эффективности эти нейроны сгруппированы в слои, при этом нейроны связаны только с нейронами в соседних слоях. Преимущество такой организации вещей, в отличие от возможности соединения между любыми двумя нейронами, заключается в том, что она позволяет использовать определенные математические приемы линейной алгебры для ускорения вычислений.

Хотя это еще не все, эти вычисления линейной алгебры являются наиболее требовательной к вычислительным ресурсам частью глубокого обучения, особенно по мере роста размера сети.Это верно как для обучения (процесс определения того, какие веса применять к входным данным для каждого нейрона), так и для логического вывода (когда нейронная сеть дает желаемые результаты).

Что это за загадочные вычисления линейной алгебры? Они не такие сложные на самом деле. Они включают операции на матрицы, которые представляют собой просто прямоугольные массивы чисел — электронные таблицы, если хотите, за вычетом описательных заголовков столбцов, которые вы можете найти в типичном файле Excel.

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

За прошедшие годы глубокое обучение потребовало постоянно растущего числа этих операций умножения и накопления. Рассмотреть возможность LeNet, новаторская глубокая нейронная сеть, предназначенная для классификации изображений. В 1998 году было показано, что он превосходит другие машинные методы распознавания рукописных букв и цифр.Но к 2012 году AlexNet, нейронная сеть, выполнявшая примерно в 1600 раз больше операций умножения и накопления, чем LeNet, смогла распознавать тысячи различных типов объектов на изображениях.

Для перехода от первоначального успеха LeNet к AlexNet потребовалось почти 11-кратное удвоение вычислительной производительности. В течение 14 лет закон Мура обеспечил большую часть этого роста. Задача состояла в том, чтобы сохранить эту тенденцию сейчас, когда закон Мура выдыхается. Обычное решение состоит в том, чтобы просто бросить больше вычислительных ресурсов — вместе с временем, деньгами и энергией — на решение проблемы.

В результате обучение современных крупных нейронных сетей часто оказывает значительное воздействие на окружающую среду. Один Исследование, проведенное в 2019 году, показало, например, что обучение определенной глубокой нейронной сети для обработки естественного языка привело к выбросу CO 2 в пять раз больше, чем обычно связано с вождением автомобиля в течение его срока службы.

Улучшения в цифровых электронных компьютерах, безусловно, позволили глубокому обучению расцвести. Но это не означает, что единственный способ выполнять вычисления с помощью нейронных сетей — это использовать такие машины.Десятилетия назад, когда цифровые компьютеры были еще относительно примитивными, некоторые инженеры занимались сложными вычислениями, используя вместо этого аналоговые компьютеры. По мере совершенствования цифровой электроники эти аналоговые компьютеры отошли на второй план. Но, возможно, пришло время снова следовать этой стратегии, особенно когда аналоговые вычисления можно будет выполнять оптическим способом.

Давно известно, что оптические волокна могут поддерживать гораздо более высокие скорости передачи данных, чем электрические провода. Вот почему все линии дальней связи, начиная с конца 1970-х годов, стали оптическими.С тех пор оптические каналы передачи данных заменили медные провода для все более коротких пролетов, вплоть до связи между стойками в центрах обработки данных. Оптическая передача данных быстрее и потребляет меньше энергии. Оптические вычисления обещают те же преимущества.

Но есть большая разница между передачей данных и вычислениями с ними. И именно здесь аналогово-оптические подходы сталкиваются с препятствиями. Обычные компьютеры основаны на транзисторах, которые представляют собой крайне нелинейные элементы схемы, а это означает, что их выходы не просто пропорциональны их входам, по крайней мере, при использовании для вычислений.Нелинейность — это то, что позволяет транзисторам включаться и выключаться, превращая их в логические вентили. Это переключение легко осуществить с помощью электроники, для которой нелинейностей пруд пруди. Но фотоны следуют уравнениям Максвелла, которые раздражающе линейны, а это означает, что выход оптического устройства обычно пропорционален его входам.

Хитрость заключается в том, чтобы использовать линейность оптических устройств для того, от чего больше всего зависит глубокое обучение: линейной алгебры.

Чтобы проиллюстрировать, как это можно сделать, я опишу здесь фотонное устройство, которое при соединении с какой-нибудь простой аналоговой электроникой может перемножать две матрицы вместе. Такое умножение объединяет строки одной матрицы со столбцами другой. Точнее, он умножает пары чисел из этих строк и столбцов и складывает их произведения — операции умножения и накопления, которые я описал ранее. Мои коллеги из Массачусетского технологического института и я опубликовали статью о том, как это можно сделать. в 2019 году.Сейчас мы работаем над созданием такого умножителя оптической матрицы.

Оптическая передача данных быстрее и потребляет меньше энергии. Оптические вычисления обещают те же преимущества.

Основным вычислительным блоком в этом устройстве является оптический элемент, называемый Светоделитель. Хотя его состав на самом деле более сложен, вы можете думать о нем как о наполовину посеребренном зеркале, установленном под углом 45 градусов. Если вы направите в него луч света сбоку, светоделитель позволит половине этого света пройти прямо через него, а другая половина отразится от наклонного зеркала, заставляя его отражаться под углом 90 градусов от входящего луча. .

Теперь направьте второй луч света, перпендикулярный первому, в этот светоделитель так, чтобы он падал на другую сторону наклонного зеркала. Половина этого второго луча будет точно так же передана, а половина отражена под углом 90 градусов. Два выходных луча будут объединены с двумя выходами первого луча. Таким образом, этот светоделитель имеет два входа и два выхода.

Чтобы использовать это устройство для умножения матриц, вы генерируете два световых луча с напряженностью электрического поля, которая пропорциональна двум числам, которые вы хотите перемножить.Назовем эти напряженности поля х и у . Направьте эти два луча в светоделитель, который объединит эти два луча. Этот конкретный светоделитель делает это таким образом, что дает два выхода, электрические поля которых имеют значения ( x + y )/√2 и ( x y )/√2.

Помимо светоделителя, этот аналоговый умножитель требует двух простых электронных компонентов — фотодетекторов — для измерения двух выходных лучей.Однако они не измеряют напряженность электрического поля этих лучей. Они измеряют мощность луча, которая пропорциональна квадрату напряженности его электрического поля.

Почему это отношение важно? Чтобы понять это, требуется немного алгебры, но ничего, кроме того, чему вы научились в старшей школе. Вспомните, что когда вы возводите в квадрат ( x + y )/√2 получается ( x 2 + 2 xy + y 2 )/2. А возведя в квадрат ( x y )/√2, вы получите ( x 2 − 2 xy + y 2 )/2.Вычитание последнего из первого дает 2 xy .

Сделайте паузу, чтобы обдумать значение этой простой математики. Это означает, что если вы кодируете число как луч света определенной интенсивности, а другое число как луч света другой интенсивности, пропускаете их через такой светоделитель, измеряете два выхода с помощью фотодетекторов и отрицаете один из результирующих электрических сигналов. прежде чем суммировать их вместе, у вас будет сигнал, пропорциональный произведению ваших двух чисел.

Моделирование интегрированного интерферометра Маха-Цендера, установленного в ускорителе нейронной сети компании Lightmatter, показывает три различных условия, при которых свет, проходящий по двум ветвям интерферометра, претерпевает различные относительные фазовые сдвиги (0 градусов в a, 45 градусов в b и 90 градусов в в). Лайтматтер

Мое описание звучит так, как будто каждый из этих световых лучей должен удерживаться неподвижно. Фактически, вы можете кратковременно пульсировать светом в двух входных лучах и измерять выходной импульс.Более того, вы можете подавать выходной сигнал на конденсатор, который затем будет накапливать заряд, пока длится импульс. Затем вы можете снова ввести импульсы на ту же продолжительность, на этот раз закодировав два новых числа, которые нужно перемножить. Их продукт добавляет еще немного заряда конденсатору. Вы можете повторить этот процесс столько раз, сколько захотите, каждый раз выполняя другую операцию умножения и накопления.

Таким образом, использование импульсного света позволяет выполнять множество таких операций в быстрой последовательности.Наиболее энергоемкой частью всего этого является считывание напряжения на этом конденсаторе, для чего требуется аналого-цифровой преобразователь. Но вам не обязательно делать это после каждого импульса — вы можете дождаться окончания последовательности, скажем, Н импульсов. Это означает, что устройство может выполнять N операций умножения и накопления, используя одинаковое количество энергии для считывания ответа независимо от того, является ли N маленьким или большим. Здесь N соответствует количеству нейронов на слой в вашей нейронной сети, которое легко может исчисляться тысячами.Таким образом, эта стратегия использует очень мало энергии.

Иногда вы можете сэкономить энергию и на входе. Это связано с тем, что одно и то же значение часто используется в качестве входных данных для нескольких нейронов. Вместо того, чтобы многократно преобразовывать это число в свет, потребляя каждый раз энергию, его можно преобразовать только один раз, а созданный световой луч можно разделить на множество каналов. Таким образом, затраты энергии на преобразование входных данных амортизируются в течение многих операций.

Для разделения одного луча на множество каналов не требуется ничего более сложного, чем линза, но поставить линзы на чип бывает непросто.Таким образом, устройство, которое мы разрабатываем для выполнения расчетов нейронной сети оптическим путем, вполне может оказаться гибридом, сочетающим высокоинтегрированные фотонные чипы с отдельными оптическими элементами.

Я изложил здесь стратегию, которой мы с коллегами следуем, но есть и другие способы снять шкуру с оптического кота. Другая многообещающая схема основана на так называемом интерферометре Маха-Цендера, который сочетает в себе два светоделителя и два полностью отражающих зеркала. Его также можно использовать для оптического умножения матриц.Два стартапа из Массачусетского технологического института, Lightmatter и Lightelligence, разрабатывают ускорители оптических нейронных сетей на основе этого подхода. Компания Lightmatter уже построила прототип, в котором используется изготовленный ею оптический чип. И компания рассчитывает начать продажу платы оптического ускорителя, использующей этот чип, в конце этого года.

Еще один стартап, использующий оптику для вычислений, — Optalysis, которая надеется возродить довольно старую концепцию. Одним из первых применений оптических вычислений в 1960-х годах была обработка данных радаров с синтезированной апертурой.Ключевой частью задачи было применение к измеренным данным математической операции, называемой преобразованием Фурье. Цифровые компьютеры того времени боролись с такими вещами. Даже сейчас применение преобразования Фурье к большим объемам данных может потребовать значительных вычислительных ресурсов. Но преобразование Фурье можно выполнить оптически, используя только линзу, как в течение нескольких лет инженеры обрабатывали данные с синтетической апертурой. Optalysis надеется обновить этот подход и применить его более широко.

Теоретически фотоника может ускорить глубокое обучение на несколько порядков.

Так же есть компания под названием Luminous, созданный Принстонским университетом, который работает над созданием импульсных нейронных сетей на основе чего-то, что он называет лазерным нейроном. Спайковые нейронные сети более точно имитируют работу биологических нейронных сетей и, подобно нашему собственному мозгу, способны выполнять вычисления, используя очень мало энергии. Аппаратное обеспечение Luminous все еще находится на ранней стадии разработки, но перспектива объединения двух энергосберегающих подходов — импульсного и оптического — весьма интересна.

Конечно, предстоит решить еще много технических проблем. Один из них заключается в повышении точности и динамического диапазона аналоговых оптических вычислений, которые далеко не так хороши, как то, что может быть достигнуто с помощью цифровой электроники. Это связано с тем, что эти оптические процессоры страдают от различных источников шума, а цифро-аналоговые и аналого-цифровые преобразователи, используемые для ввода и вывода данных, имеют ограниченную точность. Действительно, трудно представить оптическую нейронную сеть, работающую с точностью более 8–10 бит.Хотя существует 8-битное электронное оборудование для глубокого обучения (хорошим примером является Google TPU), эта отрасль требует более высокой точности, особенно для обучения нейронных сетей.

Также существует сложность с интеграцией оптических компонентов в чип. Поскольку эти компоненты имеют размеры в десятки микрометров, их нельзя упаковать почти так же плотно, как транзисторы, поэтому требуемая площадь чипа быстро увеличивается. Демонстрация этого подхода в 2017 году исследователями Массачусетского технологического института включала чип с номером 1.5 миллиметров по бокам. Размер даже самых больших чипов не превышает нескольких квадратных сантиметров, что накладывает ограничения на размеры матриц, которые можно обрабатывать параллельно таким образом.

Есть много дополнительных вопросов, связанных с компьютерной архитектурой, которые исследователи фотоники склонны заметать под ковер. Однако ясно, что, по крайней мере теоретически, фотоника может ускорить глубокое обучение на несколько порядков.

Основываясь на технологии, доступной в настоящее время для различных компонентов (оптические модуляторы, детекторы, усилители, аналого-цифровые преобразователи), разумно предположить, что энергоэффективность вычислений на основе нейронных сетей может быть в 1000 раз выше, чем у современных электронных процессоров. .Делая более агрессивные предположения о новых оптических технологиях, этот фактор может достигать миллиона. А поскольку электронные процессоры ограничены по мощности, эти улучшения энергоэффективности, скорее всего, приведут к соответствующим улучшениям скорости.

Многим концепциям аналоговых оптических вычислений уже десятки лет. Некоторые даже предшествовали кремниевым компьютерам. Схемы оптического матричного умножения и даже для оптических нейронных сетей были впервые продемонстрированы в 1970-х годах.Но этот подход не прижился. Будет ли на этот раз все иначе? Возможно, по трем причинам.

Во-первых, сейчас глубокое обучение действительно полезно, а не просто академическое любопытство. Второй, мы не можем полагаться только на закон Мура, чтобы продолжать совершенствовать электронику. И, наконец, у нас есть новая технология, недоступная предыдущим поколениям: интегрированная фотоника. Эти факторы говорят о том, что на этот раз оптические нейронные сети появятся в реальности — и будущее таких вычислений действительно может быть фотонным.

Google использует ИИ для разработки чипов следующего поколения быстрее, чем люди

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

Компания Google годами работала над тем, как использовать машинное обучение для создания чипов, но эта недавняя попытка, описанная на этой неделе в статье в журнале Nature , похоже, является первым случаем, когда ее исследование было применено к коммерческий продукт: грядущая версия собственных чипов Google TPU (блок тензорной обработки), которые оптимизированы для вычислений ИИ.

«Наш метод использовался в производстве для разработки Google TPU следующего поколения», — пишут авторы статьи под руководством ученых-исследователей Google Азалии Мирхосейни и Анны Голди.

Иными словами, ИИ

помогает ускорить развитие ИИ в будущем.

В документе инженеры Google отмечают, что эта работа имеет «большие последствия» для индустрии чипов. Это должно позволить компаниям быстрее изучить возможное архитектурное пространство для будущих проектов и упростить настройку чипов для конкретных рабочих нагрузок.

Редакционная статья журнала Nature называет исследование «важным достижением» и отмечает, что такая работа может помочь компенсировать предсказанный конец закона Мура — аксиомы дизайна микросхем 1970-х годов, которая гласит, что количество транзисторов на чип удваивается каждые два года. ИИ не обязательно решит физические проблемы, связанные с размещением все большего количества транзисторов на чипах, но он может помочь найти другие пути повышения производительности с той же скоростью.

Чипы TPU от Google предлагаются как часть облачных сервисов и используются внутри компании для исследований в области искусственного интеллекта. Фото: Google

Конкретная задача, которую решают алгоритмы Google, известна как «планировка этажа». Обычно для этого требуются дизайнеры-люди, которые работают с помощью компьютерных инструментов, чтобы найти оптимальную компоновку на кремниевой матрице для подсистем чипа. Эти компоненты включают в себя такие вещи, как процессоры, графические процессоры и ядра памяти, которые соединены друг с другом с помощью десятков километров крошечной проводки. Решение о том, где разместить каждый компонент на кристалле, влияет на конечную скорость и эффективность чипа.И, учитывая как масштабы производства чипов, так и вычислительные циклы, нанометровые изменения в размещении могут иметь огромные последствия.

Google сравнил разработку микросхемы с настольной игрой

Инженеры Google отмечают, что проектирование планов этажей требует «месяцев интенсивных усилий» для людей, но с точки зрения машинного обучения существует знакомый способ решения этой проблемы: игра.

ИИ

снова и снова доказывает, что он может превзойти людей в настольных играх, таких как шахматы и го, и инженеры Google отмечают, что планирование этажей аналогично таким задачам.Вместо игровой доски у вас есть силиконовый кубик. Вместо таких фигур, как кони и ладьи, у вас есть такие компоненты, как процессоры и графические процессоры. Таким образом, задача состоит в том, чтобы просто найти «условия выигрыша» для каждой доски. В шахматах это может быть мат, а в дизайне микросхем — вычислительная эффективность.

Инженеры Google обучили алгоритм обучения с подкреплением на наборе данных из 10 000 планов этажей разного качества, некоторые из которых были сгенерированы случайным образом. Каждый проект был помечен определенной функцией «вознаграждения» в зависимости от его успеха по различным показателям, таким как требуемая длина провода и энергопотребление.Затем алгоритм использовал эти данные, чтобы различать хорошие и плохие планы этажей и, в свою очередь, создавать свои собственные проекты.

Как мы видели, когда системы ИИ сражались с людьми в настольных играх, машины не обязательно думали как люди и часто находили неожиданные решения знакомых проблем. Когда AlphaGo от DeepMind играла в го с чемпионом среди людей Ли Седолем, эта динамика привела к печально известному «ходу 37» — кажущемуся нелогичным размещению фигуры ИИ, которое, тем не менее, привело к победе.

Ничего столь драматического не произошло с алгоритмом проектирования чипов Google, но его планы этажей, тем не менее, сильно отличаются от тех, которые были созданы человеком.Вместо аккуратных рядов компонентов, разложенных на кристалле, подсистемы выглядят так, как будто они разбросаны по кремнию случайным образом. Иллюстрация из Nature показывает разницу: дизайн человека слева и дизайн машинного обучения справа. Вы также можете увидеть общее отличие изображения ниже от документа Google (организованные люди слева; беспорядочный ИИ справа), хотя макет был размыт, поскольку он конфиденциальный:

План этажа, разработанный человеком, находится слева, а план этажа, разработанный ИИ, справа.Изображения были размыты авторами статьи, поскольку они представляют собой конфиденциальный дизайн. Изображение: Mirhoseini, A. et al

Эта статья заслуживает внимания, особенно потому, что ее исследование теперь используется Google в коммерческих целях. Но это далеко не единственный аспект разработки микросхем с помощью ИИ. Сам Google исследовал использование ИИ в других частях процесса, таких как «исследование архитектуры», а конкуренты, такие как Nvidia, изучают другие методы ускорения рабочего процесса.Благотворный цикл разработки ИИ чипов для ИИ, похоже, только начинается.

Обновление, четверг, 10 июня, 15:17 по восточноевропейскому времени: Обновлено, чтобы уточнить, что Азалия Мирхосейни из Google и Анна Голди являются соавторами статьи.

ТПУ Обучение. Использование возможностей выделенной DNN… | by Chaim Rand

Использование возможностей специализированных обучающих чипов DNN

Фото Фердинанда Штёра на Unsplash

Одной из движущих сил успеха глубокого обучения за последнее десятилетие была огромная вычислительная мощность, предлагаемая графическими процессорами ( графические процессоры).Хотя изначально они были предназначены для рендеринга изображений на устройства отображения, их высокопараллельная структура позволила ускорить обучение на несколько порядков. Со временем графические процессоры были усовершенствованы, чтобы соответствовать постоянно растущим требованиям обучения DNN. Сегодня они являются доминирующим методом обучения крупномасштабного ИИ. Однако за последние несколько лет появились потенциальные соперники в виде новых чипов, специально разработанных для обучения DNN. Эти чипы (или ASIC — специализированная интегральная схема, как их более точно называют) потенциально могут обеспечить ускоренное обучение за небольшую часть стоимости.Несмотря на то, что на рынке уже имеется ряд специализированных ASIC для ИИ (см., например, здесь) и многие другие находятся в разработке (например, см. здесь), на момент написания этой статьи лишь немногие избранные доступны для широкой публики через облачные сервисы. Ожидается, что эта ситуация изменится в ближайшем будущем с недавними объявлениями, такими как предстоящая доступность Habana Gaudi на AWS и долгожданный AWS Trainium.

Чтобы современные группы разработчиков машинного обучения оставались конкурентоспособными, им необходимо постоянно держать руку на пульсе новых достижений.Это включает в себя развитие высокого уровня мастерства, когда дело доходит до оценки новых чипов ИИ и их потенциального применения в их собственных проектах. К сожалению, адаптация тренировочной нагрузки к новому чипу иногда может быть сложной задачей. Цель этой записи в блоге — дать небольшое руководство о том, как решить эту проблему, а также предложить эмоциональную поддержку на этом пути. Этот пост ни в коем случае не предназначен для замены официальной документации и руководств, обычно доступных в Интернете.

Я хотел бы поблагодарить Аллена Вана и Ицхака Леви за их вклад в этот пост.

В этом посте мы рекомендуем разбить задачу адаптации вашей модели к новому чипу ИИ на четыре этапа:

  1. Высокоуровневый анализ совместимости : Получите раннюю оценку того, соответствуют ли свойства вашей рабочей нагрузки спецификациям чипа. .
  2. Настройка модели для работы на новом чипе : Возможно, вам потребуется внести некоторые коррективы в модель, например заменить операции, которые не поддерживаются выделенным чипом ИИ.
  3. Оптимизация производительности нового чипа : Вот здесь и начинается самое интересное… Чтобы в полной мере воспользоваться преимуществами чипа, вам необходимо проанализировать и максимально увеличить его использование.
  4. (Повторная) настройка модели для сходимости : есть вероятность, что изменения, которые требовались на предыдущих шагах (например, увеличение размера обучающей партии), могут потребовать настройки гиперпараметров модели (например, скорости обучения) для того, чтобы обеспечить своевременную конвергенцию.

Очевидно, что эта разбивка является некоторым упрощением.В действительности вы можете обнаружить, что выполняете некоторые из этих шагов итеративно и/или параллельно. Например, вы можете передать задачу по оптимизации времени выполнения экспертам по анализу производительности, в то время как отдельная группа специалистов по данным работает над настройкой вашего алгоритма обучения для сходимости на больших обучающих пакетах (например, используя моделирование больших пакетов на графических процессорах для минимизации затрат). .

В следующих нескольких разделах мы более подробно продемонстрируем эти четыре шага, применив их к ускорителю Google Cloud TPU DNN.В частности, мы обсудим некоторые проблемы, с которыми вы можете столкнуться при попытке преобразовать свою модель для работы в Cloud TPUv3–8 (содержащем 8 ядер TPU) с использованием TensorFlow версии 2.6. Хотя мы рассматриваем конкретный чип ИИ и конкретную структуру обучения, многие из обсуждаемых нами соображений применимы и к другим чипам ИИ и другим платформам обучения.

Вы можете запустить Cloud TPU на вычислительном движке (как описано здесь) или с помощью управляемой службы, такой как AI Platform.Для шагов, описанных в этом посте, мы настоятельно рекомендуем запускать Cloud TPU на вычислительном движке. Это обеспечит большую гибкость при отладке и анализе производительности. На момент написания этой статьи управляемый API не обеспечивает такого же обзора системных журналов TPU и производительности системы TPU, не позволяет собирать профили производительности и не поддерживает разгрузку предварительной обработки данных с помощью tf.data.service. При запуске вашего TPU неукоснительно следуйте инструкциям, так как есть несколько тонкостей, которые являются уникальными для настройки TPU (например,грамм. выделенная учетная запись службы TPU).

Важно помнить, что ландшафт развития DNN остается чрезвычайно динамичным. Некоторые из пунктов, которые мы делаем, могут устареть к тому времени, когда вы прочитаете этот пост. Обязательно следите за объявлениями о новых версиях и новых инструментах и ​​обязательно принимайте свои дизайнерские решения на основе самой последней доступной информации.

Пожалуйста, простите меня за неточности, с которыми вы можете столкнуться, или, что еще лучше, напишите мне с вашими исправлениями.

Естественно, первое, что вы захотите сделать, это попытаться разработать раннюю оценку того, имеет ли интерес интересующий чип ИИ вообще отношение к вашему варианту использования. Усилия, затраченные на адаптацию вашей модели к новому чипу, могут быть значительными, и чем раньше вы сможете исключить определенный тупик, тем лучше. Эта первоначальная оценка обычно может быть получена на основе ресурсов, доступных в Интернете, включая спецификации системы и тесты производительности:

Описание ASIC

Начать следует с опубликованного описания выделенного оборудования.Как правило, это включает в себя возможности обучающего чипа: какие уровни модели и архитектуры поддерживаются, какие типы с плавающей запятой используются, какой программный стек требуется, как чип взаимодействует с ЦП и хранилищем данных, выполняются ли вычисления и каким образом между ядрами, в какой степени аппаратное обеспечение масштабируется для многоядерного обучения и т. д. Это описание можно использовать для выявления потенциальных несовместимостей с вашей моделью. Вы можете обнаружить, что доступная память не соответствует размеру вашей модели или не поддерживает ваши потребности в масштабируемости обучения.В таких случаях не идите дальше.

Документация Cloud TPU содержит обширную информацию об использовании TPU, включая модель программирования TPU и типы рабочих нагрузок, наиболее подходящие для TPU. Из этих ресурсов вы можете прийти к выводу, что TPU не подходят для вашей модели, например, из-за их зависимости от пользовательских операций, высокоточной арифметики или большого количества поэлементных операций.

Остерегайтесь эталонных показателей

Еще один ресурс, на который вы, возможно, захотите взглянуть, — это онлайн-сравнения эталонных показателей производительности.Вам не составит труда найти сравнение производительности TPU и GPU на различных распространенных архитектурах, включая ResNet, MaskRCNN, Bert и другие. К сожалению, выяснить, как применить эти результаты к вашему собственному варианту использования, может быть довольно сложно.

Во-первых, само собой разумеется, что к бенчмаркам, предоставляемым производителем чипов, следует подходить со здоровой долей скептицизма. Но даже анализ, который вы считаете беспристрастным, может быть чрезвычайно трудно интерпретировать.В какой-то степени это можно сказать о сравнении эталонных показателей в любой дисциплине, но особенно это касается области глубокого обучения, где существует множество факторов, которые могут оказать существенное влияние на производительность. Во-первых, это среда выполнения — количество ядер ЦП и их тип, операционная система, версии драйверов, операционная система, тип и версия платформы ПО — каждый из этих отдельных элементов может влиять на производительность в десятки раз. проценты.Затем следует модель: даже малейшие различия между архитектурой вашей собственной модели и наиболее похожей моделью в бенчмарке, будь то в архитектуре графа, формате входных данных, конвейере предварительной обработки, функции потерь или оптимизаторе, могут , еще раз, имеют большое влияние на производительность. Сравнение контрольных показателей качества будет включать подробную информацию о точных свойствах проведенных оценок. Но вряд ли они охватывают все многочисленные параметры, которые могут повлиять на производительность.

MLPerf : MLPerf — это часто цитируемый набор эталонных тестов для обучения ИИ и логических выводов, который в настоящее время администрируется консорциумом MLCommons. Обоснование создания эталонного теста обучения, а также правила участия подробно описаны в этом техническом документе. Даже из беглого обзора результатов теста становится очевидным, что тест имеет далеко идущие последствия, охватывая широкий спектр обучающих сред и архитектур моделей. Однако, как упоминалось выше, учитывая множество различных параметров для каждого тестового примера, вам может быть сложно провести четкое сравнение между чипами ИИ, не говоря уже о том, чтобы применить эти результаты к вашему конкретному варианту использования.Я обнаружил, что результаты подлежат интерпретации (см., например, этот обзор), особенно если принять во внимание потенциальную разницу в цене между ASIC (которая не включена в необработанные результаты сравнения).

Например, все данные теста MLPerf наводят на мысль, что 8 ядер графического процессора NVIDIA A100 значительно превзойдут TPUv3–8 (содержащий 8 ядер TPU). Однако недавно мы работали над моделью, мало чем отличающейся от моделей, рассмотренных в обзоре, на которой прогон TPU фактически соответствовал и даже немного превосходил нашу самую известную конфигурацию для прогона графического процессора A100.Эта модель, казалось бы, идеально соответствовала спецификациям TPU. В то же время небольшие изменения в этой модели резко изменили бы ее совместимость с TPU и существенно увеличили бы время шага. Отчет MLPerf не дает никаких указаний на эти два экстремальных результата.

Хотя мы признаем важность и ценность обзоров эталонных показателей обучения ИИ, мы считаем важным признать их ограничения в прогнозировании производительности за пределами конкретных тестовых случаев, включенных в обзор.

Спецификация архитектуры системы

Если доступны полные спецификации системы, у вас есть еще один вариант — попытаться спроецировать время выполнения вашего шага обучения, проведя автономное моделирование того, как ваша модель будет работать на выделенном оборудовании. Такой анализ требует глубокого знания как архитектуры системы, так и модели DNN. Я знаю многих людей, которые хорошо зарабатывали на создании электронных таблиц с точными прогнозами производительности, основанными на размерах матрицы параметров, количестве FLOPS, объеме памяти, задержке кэша L2 и т. д.По моему опыту, такие прогнозы, как правило, очень «попадали или не попадали» и чаще «промахивались» в случае сложных рабочих нагрузок машинного обучения.

Jump In The Deep End

Когда все сказано и сделано, действительно нет альтернативы тому, чтобы спуститься и испачкаться. Хотя я понимаю, что некоторые могут устать идти по пути потенциального тупика, я считаю, что даже если вы в конечном итоге не тренируете свою текущую модель на TPU, опыт, который вы приобретете на этом пути, будет полезен. почти наверняка хорошо послужит вам и вашей команде по мере развития ваших проектов и появления дополнительных ASIC.

Скорее всего, вам потребуется внести изменения в ваше приложение ИИ, чтобы успешно запустить его на специальном ASIC. Масштабы изменений, которые потребуются, будут зависеть от ряда факторов, включая зрелость программного стека ASIC и объем поддерживаемых операций. Пользовательские ASIC могут налагать строгие ограничения на платформу или версию программного обеспечения для ИИ, что может потребовать значительной адаптации. Вы всегда должны стремиться использовать самые последние пакеты программного обеспечения, поскольку они, вероятно, содержат наиболее обширную и оптимальную поддержку API.TPU пользуются преимуществами относительно здорового стека ПО и большого сообщества разработчиков (которые часто коррелируют друг с другом). Однако они могут по-прежнему требовать адаптации как вашего конвейера ввода данных, так и графа вычислений. Мы продемонстрируем несколько примеров в подразделах ниже. Сначала мы укажем на потенциальные сложности, связанные с отладкой пользовательских ASIC.

Отладка для TPU

Существенным преимуществом обучения на GPU является то, что значительная часть проектирования и отладки модели может выполняться на CPU.Если вы можете скомпилировать свою модель на ЦП, то в 99 случаях из 100 ваша модель будет действительна на графическом процессоре (с достаточным объемом памяти). Это то, что современные разработчики ИИ часто считают само собой разумеющимся. Это не обязательно относится к кастомным ASIC. Последствия этого заключаются в том, что часто отладку необходимо выполнять непосредственно на пользовательской ASIC, что может повлиять на стоимость и/или продолжительность. В качестве альтернативы производители ASIC могут предоставить платформу моделирования для выявления и устранения потенциальных проблем, которые могут выполняться на ЦП.В идеале такая среда моделирования должна также давать указания о том, как максимизировать использование ASIC. К сожалению, на момент написания этой статьи официальной среды моделирования TPU не существует. И хотя доступная документация и инструменты могут быть полезны при создании модели, совместимой с TPU, вы не узнаете наверняка, пока не запустите ее на TPU.

Дополнительная трудность, с которой вы можете столкнуться, связана с пониманием сообщений об ошибках, о которых сообщает TPU. Как мы уже отмечали ранее, расшифровка сообщений об ошибках TensorFlow может быть затруднена.Сообщения об ошибках в TPU, как те, которые сообщаются на консоль, так и те, которые доступны через облачный мониторинг, имеют тенденцию быть особенно загадочными (на момент написания этой статьи). Мы приведем несколько примеров в разделах ниже.

Обновление конвейера ввода данных

Несмотря на то, что конвейер ввода данных работает на хост-процессоре TPU, а не на самом TPU, системная архитектура TPU накладывает определенные ограничения на операции, которые могут выполняться. Стандартный способ запуска TPU основан на выделенной виртуальной машине, которая взаимодействует с узлом TPU через gRPC.Одним из следствий этой архитектуры является то, что любые пользовательские операторы или любые функции обработки данных на основе Python запрещены. Это запрещает использование tf.py_function и tf.numpy_function, которые обычно используются для обхода ограничений, налагаемых собственным API TensorFlow. Он также запрещает использование API tf.data.Dataset.from_generator, который часто используется как способ повысить гибкость создания входного набора данных.

К сожалению, на момент написания этой статьи, в случае, если граф входного конвейера недействителен, вы, вероятно, получите двусмысленное сообщение об ошибке gRPC, подобное приведенному в блоке ниже, и вам останется найти виновного самостоятельно.

 W ./tensorflow/core/distributed_runtime/eager/destroy_tensor_handle_node.h:57] Игнорирование ошибки, возникшей при удалении дескрипторов удаленных тензоров: недопустимый аргумент: невозможно найти соответствующий тензор remote_handle: идентификатор операции: 22643, выходной номер: 7Additional GRPC информация об ошибке от удаленной цели /job:worker/replica:0/task:0::{"created":"@1632916556.697142899","description":"Ошибка получена от однорангового узла ipv4:10.11.250.138:8470","file" :"external/com_github_grpc_grpc/src/core/lib/surface/call.cc","file_line":1056,"grpc_message":"Не удалось найти соответствующий тензор remote_handle: идентификатор операции: 22643, выходной номер: 7","grpc_status":3} 

Другой распространенный тип ошибки входного конвейера с TPU, и это приведет к одинаково неоднозначному сообщению, связано с размером входных данных. Как мы увидим ниже, эффективное использование TPU может потребовать гораздо больших размеров пакетов, чем вы привыкли ранее. конвейера входных данных, вы можете столкнуться с проблемами памяти процессора.Например, если размер каждой входной выборки составляет 1 МБ, а глобальный размер пакета равен 4096, размер пакета будет равен 4 ГБ. Один из способов решить эту проблему — модифицировать конвейер данных для создания «локальных» пакетов, а не «глобальных» пакетов; то есть для создания пакетов размера пакета на ядро. Это можно сделать с помощью API tf.distribute.strategy.distribute_datasets_from_function. В нашем примере размер пакета будет гораздо более управляемым — 0,5 ГБ.

TPU-VM — спасение уже в пути :

В июне этого года Google анонсировала новую архитектуру Cloud TPU под названием Cloud TPU VM.В отличие от исходной архитектуры, известной как узлы TPU, виртуальные машины TPU разрешают прямой доступ SSH к хосту TPU и не требуют промежуточной виртуальной машины. Последствия глубоки. Это не только снимает ограничения на создание конвейера ввода данных, но также значительно увеличивает наши возможности по отладке и анализу производительности конвейера ввода. Кроме того, удаление промежуточной виртуальной машины потенциально может снизить нагрузку на сеть и повысить производительность.

Новая архитектура уже доступна в режиме «предварительного просмотра».По нашему опыту, он еще не полностью созрел. Но будущее выглядит светлым.

Обновление графа модели

Для обучения модели на TPU также могут потребоваться изменения графа вычислений, работающего на ядре TPU. В этом разделе мы продемонстрируем изменения, которые могут быть введены для соответствия ограничениям API или ограничениям памяти TPU.

Ограничения операций TensorFlow :
ASIC нередко налагают ограничения на поддерживаемые операции. Эти ограничения могут быть связаны с ограничениями в аппаратной реализации или в поддерживающем программном стеке.Документация TPU включает список поддерживаемых (и неподдерживаемых) операций TensorFlow. К сожалению, (на момент написания этой статьи) этот список не является исчерпывающим. Инструмент визуализации графиков TensorBoard включает параметр TPU_compatibility, как показано на изображении ниже, но, по нашему опыту, этот тест не является полностью надежным. Вы можете получить первое указание на недопустимость графа только тогда, когда попытаетесь запустить его.

График совместимости TPU (изображение из онлайн-документации GCP)

Ограничения TPU включают ограничения на использование пользовательских операторов и операций, которые могут привести к неопределенной форме тензора:

Пользовательские операции — Одним из преимуществ обучения на GPU является то, что он позволяет выполнять настройку на различных уровнях стека ПО.Вы можете создать свою собственную операцию на основе Python (например, используя tf.numpy_function) или создать собственное ядро ​​графического процессора в CUDA. Эта степень гибкости может быть чрезвычайно полезна при реализации: операций, которые изначально не поддерживаются TensorFlow, или ядер графического процессора, которые специально оптимизированы для вашего варианта использования. Эти возможности отсутствуют в TPU (на момент написания этой статьи). Если ваш график включает такие настройки, вам нужно будет заменить их собственными операциями. Блок ниже содержит выдержку из типа сообщения об ошибке, которое вы можете ожидать в случае, если ваш граф включает tf.вызов numpy_function.

 (0) Неверный аргумент: {{{function_node __inference_train_function_117771}} Обнаружены неподдерживаемые операции При попытке компилировать график cluster_train_function_10723335222471149816 [] на xla_tpu_jit:  pyfunc  (без зарегистрированного ' pyfunc ' Opkernel для устройств xla_tpu_jit, совместимый с узлом {{модель узла /segLoss/PyFunc}}){{node model/loss/PyFunc}} 

Операции, приводящие к тензорам неопределенной формы — В отличие от графических процессоров, TPU запрещают использование некоторых API из-за использования ими тензоров нестатической формы.Стоит отметить, что в последних версиях TensorFlow расширена поддержка некоторых операций этого типа. Однако, несмотря на поддержку, многие из них довольно плохо работают с TPU, и вам следует избегать их.

Вот пример фрагмента кода (взято из предыдущего сообщения в блоге), который не работает на TPU:
# инициализировать с размером пакета 1, поскольку размер пакета
# неизвестен, и установить validate_shape=False

initial_value=tf.нули (форма = [1] + форма [1:],
dtype = dtype),
validate_shape = False,
dtype = dtype,
trainable = False)

Чтобы изменить его для TPU, нам нужно исправить размер партии. и измените validate_shape на True . В этой ситуации возникает следующая ошибка:

 tensorflow.python.framework.errors_impl.InvalidArgumentError: узел Dst должен быть назначен разрешенному устройству. 

Классическим примером API, результатом которого является тензор неопределенной формы, является tf.логическое_маска. Предположим, мы работаем над моделью сегментации, которая принимает изображение в качестве входных данных и создает метку для каждого пикселя. Мы можем захотеть замаскировать определенные области изображения из нашего расчета потерь (либо из-за их неоднозначности, либо из-за низкого уровня интереса). На графическом процессоре tf.boolean_mask удаляет все операции, связанные с расчетом потерь в этих областях, и может значительно повысить производительность. Хотя поддержка TPU для tf.boolean_mask была недавно добавлена ​​в TensorFlow, вы, скорее всего, получите лучшую производительность, вычислив потери для всех пикселей и просто обнулив результирующее значение в замаскированных областях, как показано в блоке кода ниже:

 # заданы входные логиты, метки, маска и loss_fn  
if tpu:
# обнулить пиксели в соответствии с маской
mask = tf.cast(mask, logits.dtype)
logits = logits * mask
labels = labels * mask
else:
# уменьшить количество операций loss_fn с помощью tf.boolean_mask
logits = tf.boolean_mask(logits, mask)
labels = tf. boolean_mask(метки, маска)
sumLoss = tf.reduce_sum(loss_fn(логиты, метки))

Ограничения памяти TPU :
Когда вы загружаете свою модель в TPU, вы можете быть удивлены, обнаружив, что объем памяти, необходимый для ваша модель значительно превышает объем памяти, необходимый для графического процессора.Причиной этого может быть, скорее всего, заполнение памяти. Мы обсудим тему заполнения подробнее в следующем разделе. В блоке кода ниже мы демонстрируем тип ошибки, ожидаемый в случае, если наши требования к памяти превышают доступную память TPUv3 (16 ГБ на ядро). Мы выбрали крайний случай, когда заполнение увеличивает использование памяти примерно в 3 раза, с 6,4 ГБ до более чем 19 ГБ.

 (0) Ресурс исчерпан: {{function_node __inference_train_function_80576}} Недостаточно памяти в области памяти hbm. Б/у 19,46G из 15,48G HBM. Превышена емкость hbm на 3,98 ГБ . 
Общее использование hbm >= 19.98G:
зарезервировано 530.00M
программа 19.46G
аргументов 0BВыходной размер 0B; разделяет 0B с аргументами. Требование к программе hbm 19.46G:
global 276.0K
scoped 173.0K
HLO temp 19.46G (использование 33,1%: Unpadded (6.40G) Padded (19.32G) , фрагментация 0,7% (147,91M)) Крупнейшие выделенные программы в hbm :

1. Размер: 14.00G
Оператор: op_type="OneHot" op_name="model/loss/one_hot"
Форма: s32[29360128,10]{1,0:T(8,128) }
Незаполненный размер: 1.09G
Дополнительная память из-за заполнения: 12,91G (расширение 12,8x)
Метка XLA: %iota.2 = s32[29360128,10]{1,0:T(8,128)} iota(), iota_dimension=1, metadata= {op_type="OneHot" op_name="model/loss/one_hot"}
Тип распределения: HLO temp
=========================

2. Размер: 2,62 ГБ
Оператор: op_name="model/layer_1/Conv2D"
Форма: f32[128,256,896,18]{0,3,2,1:T(8,128)}
Незаполненный размер: 1,97 ГБ
Дополнительная память из-за заполнения: 672.00M (расширение в 1,3 раза)
Метка XLA: %fusion.9.remat.1.remat = f32[128,256,896,18]{0,3,2,1:T(8,128)} fusion(f32[1,1,8,18]{3,2,1,0:T (8,128)} %get-tuple-element.4316, f32[18]{0:T(256)} %get-tuple-element.4085, f32[128,256,896,8]{0,3,2,1:T (8,128)} %get-tuple-element.3899, f32[8]{0:T(256)} %rsqrt...
Тип распределения: HLO temp
============= =============

Сообщение об ошибке содержит список самых больших выделений памяти. В этом случае мы видим, что одна операция вызывает дополнительные 12,91 ГБ заполнения.

Кроме перепроектирования Чтобы ваша модель соответствовала требованиям к памяти, у вас есть один убедительный вариант — скомпилировать модель со смешанной точностью и установить для политики смешанной точности значение mixed_bfloat16 .По умолчанию все переменные хранятся как tf.float32, 32-битное представление с плавающей запятой. Bfloat16 — это 16-битное представление с плавающей запятой, созданное Google. Подробнее о формате и его динамическом диапазоне см. здесь. Когда вы изменяете свою модель для использования смешанной точности, активации и градиенты сохраняются как tf.bfloat16, а веса остаются в tf.float32. Это может значительно снизить требования к памяти вашей модели и одновременно повысить производительность во время выполнения.

Согласно исследованию Google, использование tf не влияет на сходимость большинства моделей.бплавать. Однако вы должны знать об этой возможности, если выберете этот вариант. Мы обсудим это далее в шаге 4 этого поста.

На этом этапе вы сможете успешно запустить цикл обучения на TPU. Далее следует важный этап анализа и оптимизации производительности. Ускоритель ИИ хорош настолько, насколько хороши инструменты, которые он предоставляет для анализа производительности. Если вы не умеете анализировать производительность, вы не сможете максимально использовать чип AI.

В предыдущем сообщении в блоге мы подробно рассказали о важности профилирования производительности и продемонстрировали использование профилировщика TensorFlow и TensorBoard.Те же методы можно использовать для анализа производительности TPU. Документация TPU включает подробное руководство по захвату профиля на TPU и анализу результатов в TensorBoard. Документация также включает руководство по проектированию модели для оптимизации использования TPU. В этом разделе мы выделим лишь несколько советов по повышению производительности, основанных на нашем собственном опыте. Для получения более подробной информации вы должны вернуться к этим двум важным руководствам.

Уменьшение накладных расходов на заполнение

Одним из наиболее важных свойств TPU, которое необходимо понять, является то, как тензоры хранятся в памяти.Неспособность настроить вашу модель в соответствии со схемой листов памяти TPU может привести к значительным накладным расходам на заполнение памяти, что приводит к нереализованному потенциалу. Самый важный ресурс, когда дело доходит до оценки накладных расходов, — это вкладка memory_viewer на странице профиля TensorBoard . На изображении ниже мы показываем пример этой страницы. Красная кривая показывает использование незаполненной памяти, а синяя кривая показывает использование дополненной памяти. В этом примере заполнение приводит к объему памяти, который примерно в 4 раза превышает размер фактически используемой памяти.

Захвачено с TensorBoard (автор)

Документация TPU содержит рекомендации о том, как минимизировать накладные расходы. Упрощенная версия такова:

  1. Используйте размер пакета (на ядро), кратный 128, и
  2. Установите размер выходных объектов каждого из ваших слоев кратным 8.

Конечно это может быть невозможно для всех моделей, и в этом случае есть дополнительные рекомендации, как описано в документации. Не забывайте, что, как мы видели выше, у вас есть возможность включить смешанную точность, чтобы увеличить вероятность размещения пакета размером 128 в памяти TPU.

Оптимизация конвейера входных данных

Одним из параметров, по которым можно измерить совместимость обучающей системы с заданной моделью, является соотношение между способностью хоста подавать обучающие пакеты в ускоритель (измеряется, например, , по партиям в секунду) и производительность ускорителя для обработки входных пакетов. На это соотношение могут влиять пропускная способность ввода-вывода, количество операций обработки данных во входном конвейере, количество и тип ядер ЦП, а также скорость ускорителей.Если отношение меньше единицы, вы, вероятно, столкнетесь с узким местом входного конвейера. В этом случае ускоритель будет простаивать, ожидая ввода данных, и драгоценные вычислительные циклы будут потрачены впустую. Это нежелательная ситуация, о которой мы подробно рассказали в предыдущем посте.

Вероятность того, что вы столкнетесь с узким местом в конвейере подготовки данных, может увеличиться при обучении на TPU из-за высокой скорости, с которой он потребляет данные. Даже если ваш входной конвейер не включает интенсивную обработку, огромный объем данных, которые анализируются, перемешиваются и группируются, может легко задушить ресурсы ЦП.Разгрузка на вспомогательные процессоры с помощью tf.data.service может дать некоторое облегчение. (См. этот пример для использования с TPU). Однако это не поможет во всех ситуациях, и вам, возможно, придется прибегнуть к более творческим решениям, включая: настройку количества процессов, назначенных различным частям конвейера, изменение формата и/или точности ваших данных или перенос вычислений на ТПУ.

Увеличение steps_per_exec

Недавно TensorFlow добавил флаг steps_per_exec в файл tf.Входные параметры keras.Model.compile. Этот параметр управляет количеством шагов обучения, выполняемых при каждом вызове внутренней функции обучения. Увеличение этого числа может уменьшить накладные расходы на связь между TPU и хостом и в конечном итоге привести к повышению производительности. Однако следует иметь в виду, что это повлияет на интервалы, с которыми вы вводите свои обучающие функции обратного вызова. Например, если ваш класс обратного вызова отслеживает количество пакетов, переданных во время обучения, то это значение должно увеличиваться на steps_per_exec , а не на 1 при каждом вызове функции on_batch .См. документацию для более подробной информации.

Значение, которое вы найдете в пользовательском ИИ, во многом будет определяться вашим успехом в оптимизации модели для ее эффективного использования. Такая оптимизация может потребовать времени и усилий и должна быть соответствующим образом спланирована.

Если вы дошли до этого шага, значит, вам уже удалось запустить свою модель на выделенной AI ASIC со скоростью, которую вы считаете удовлетворительной. Вероятно, вы внесли некоторые изменения в свою модель, чтобы перейти к этому шагу.Возможно, вы заменили несколько операторов, переформатировали данные, увеличили размер пакета или применили смешанную точность. Последний шаг — убедиться, что ваша модель успешно сходится. Для этого может потребоваться настройка гиперпараметров вашей модели, корректировка скорости обучения или замена оптимизатора.

Этот последний шаг обязателен, даже если вы вообще не вносили никаких изменений. Это связано с тем, что разные аппаратные ускорители реализованы по-разному, что потенциально может привести к числовым различиям в их поведении.Конвергенция на одном ASIC не гарантирует сходимости на другом. Например, высокая производительность TPU связана с использованием типа с плавающей запятой более низкой точности, bfloat16 (см. здесь). Ваша модель может быть чувствительна к этому падению точности, и в этом случае вам нужно будет перенастроить ее для сходимости.

Увеличение размера пакета

Для того, чтобы максимально эффективно использовать TPU, возможно, вам потребуется увеличить размер пакета больше, чем вы привыкли. Ваша модель может быть чувствительна к размеру обучающего пакета, и ее настройка для сходимости (при одном и том же количестве обходов данных) может представлять серьезную проблему.Ознакомьтесь с предыдущим сообщением в нашем блоге для получения более подробной информации по этой теме.

Преобразование вашей модели для работы на специализированном чипе ИИ может привести к значительной экономии затрат на обучение. Однако для этого могут потребоваться нетривиальные усилия. В этом посте мы сосредоточились на обучении в ТПУ. Во время этой работы вы можете столкнуться с множеством проблем. Мы рассмотрели лишь несколько примеров. Не забудьте обратиться к огромному количеству онлайн-документации для получения дополнительной информации.

Дизайн чипа с глубоким обучением с подкреплением

Авторы: Анна Голди, старший инженер-программист, и Азалия Мирхосейни, старший научный сотрудник, Google Research, Brain Team

Обновление, 9 июня 2021 г.: Сегодня в Nature мы опубликовали методы, улучшающие то, что обсуждается ниже, и которые использовались в производстве для разработки следующего поколения Google TPU.

Революция в области современных вычислений во многом стала возможной благодаря значительным достижениям в области компьютерных систем и аппаратного обеспечения. С замедлением действия закона Мура и масштабирования Деннарда мир движется к специализированному оборудованию, чтобы удовлетворить экспоненциально растущий спрос на вычисления. Однако на разработку современных чипов уходят годы, что приводит к необходимости размышлять о том, как оптимизировать чипы следующего поколения для моделей машинного обучения (ML) через 2–5 лет. Значительное сокращение цикла проектирования чипа позволит аппаратному обеспечению адаптироваться к быстро развивающейся области машинного обучения.Что, если бы машинное обучение само по себе могло обеспечить средства для сокращения цикла проектирования микросхемы, создавая более интегрированные отношения между аппаратным обеспечением и машинным обучением, когда каждое из них способствует развитию другого?

В разделе «Размещение чипов с помощью глубокого обучения с подкреплением» мы представляем размещение чипов как проблему обучения с подкреплением (RL), где мы обучаем агента (то есть политику RL) для оптимизации качества размещения чипов. В отличие от предыдущих методов, наш подход позволяет учиться на прошлом опыте и со временем совершенствоваться.В частности, по мере того, как мы тренируемся на большем количестве блоков микросхем, наш метод становится лучше для быстрого создания оптимизированных мест размещения ранее невидимых блоков микросхем. В то время как для существующих базовых показателей требуются специалисты-люди, а их создание занимает несколько недель, наш метод может создать места размещения менее чем за шесть часов, которые превосходят или соответствуют своим аналогам, созданным вручную. Хотя мы показываем, что можем создавать оптимизированные места размещения для чипов-ускорителей Google (TPU), наши методы применимы к любому типу чипов (ASIC).

Задача планирования этажа микросхемы
Компьютерная микросхема разделена на десятки блоков, каждый из которых представляет собой отдельный модуль, например, подсистему памяти, вычислительный блок или систему управляющей логики. Эти блоки можно описать с помощью списка соединений , графа компонентов схемы, таких как макросы (компоненты памяти) и стандартных ячеек (логические элементы, такие как NAND, NOR и XOR), все из которых соединены проводами. . Определение компоновки блока микросхемы, процесс, называемый планировкой микросхемы, является одним из наиболее сложных и трудоемких этапов процесса проектирования микросхемы и включает в себя размещение списка соединений на холсте микросхемы (двухмерную сетку), чтобы мощность, производительность , и площадь (PPA) сведены к минимуму при соблюдении ограничений по плотности и перегрузке маршрутизации.Несмотря на десятилетия исследований по этой теме, специалистам по-прежнему необходимо неделями проводить итерации для создания решений, отвечающих многогранным критериям проектирования. Сложность этой проблемы возникает из-за размера графа списка соединений (от миллионов до миллиардов узлов), гранулярности сетки, на которую должен быть помещен этот граф, и непомерной стоимости вычисления истинных целевых показателей, которые могут занять много часов (иногда в течение дня) с использованием стандартных инструментов автоматизации электронного проектирования.

Модель глубокого обучения с подкреплением
Входными данными для нашей модели является список соединений микросхемы (типы узлов и информация о смежности графа), идентификатор текущего узла, который необходимо разместить, и некоторые метаданные списка соединений, такие как общее количество проводов. , макросы и стандартные кластеры ячеек. Граф списка соединений и текущий узел передаются через нейронную сеть графа на основе ребер, которую мы разработали для кодирования входного состояния. Это генерирует вложения частично размещенного графа и узла-кандидата.

Нейронная сеть графа генерирует вложения, которые объединяются с вложениями метаданных для формирования входных данных для политик и сетей ценности.
Затем встраивания метаданных ребра, макроса и списка соединений объединяются для формирования встраивания одного состояния, которое передается в нейронную сеть с прямой связью. Результатом сети прямой связи является изученное представление, которое фиксирует полезные функции и служит входными данными для политик и сетей создания стоимости.Сеть политик генерирует распределение вероятностей по всем возможным ячейкам сетки, на которые может быть помещен текущий узел.

В каждой итерации обучения макросы последовательно размещаются агентом RL, после чего стандартные кластеры ячеек размещаются силовым методом, который моделирует схему как систему пружин для минимизации длины провода. Обучение RL основано на быстром, но приблизительном сигнале вознаграждения, рассчитанном для каждого размещения чипа агента с использованием средневзвешенного значения приблизительной длины провода (т.т. е. длина провода половины периметра, HPWL) и приблизительная перегрузка (доля ресурсов маршрутизации, потребляемая размещенным списком соединений).

Во время каждой обучающей итерации макросы размещаются политикой по одному, а стандартные кластеры ячеек размещаются принудительно направленным методом. Вознаграждение рассчитывается на основе взвешенной комбинации приблизительной длины провода и перегрузки.
Результаты
Насколько нам известно, этот метод является первым подходом к размещению чипов, который имеет возможность обобщать, а это означает, что он может использовать то, что он узнал при размещении предыдущих списков соединений, для создания лучших размещений для новых невидимых списков соединений.Мы показываем, что по мере увеличения числа списков соединений микросхем, для которых мы проводим предварительное обучение (т. е. по мере того, как наш метод становится более опытным в оптимизации размещения), наша политика лучше обобщается на новые списки соединений.

Например, предварительно обученная политика органично идентифицирует расположение, при котором макросы размещаются у краев чипа с выпуклым пространством в центре, в котором размещаются стандартные ячейки. Это приводит к меньшей длине провода между макросами и стандартными ячейками без чрезмерной перегрузки маршрутизации.Напротив, политика, обученная с нуля, начинается со случайного размещения и требует гораздо больше времени, чтобы прийти к высококачественному решению, заново обнаруживая необходимость оставлять отверстие в центре холста чипа. Это показано на анимации ниже.

Макроразмещение Ariane, процессора RISC-V с открытым исходным кодом, по мере обучения. Слева политика обучается с нуля, а справа предварительно обученная политика дорабатывается под этот чип.Каждый прямоугольник представляет отдельное размещение макроса. Обратите внимание, что полость, обнаруженная политикой с нуля, уже присутствует с самого начала в размещении предварительно обученной политики.
Мы наблюдаем, что предварительное обучение повышает эффективность выборки и качество размещения. Мы сравниваем качество мест размещения, созданных с использованием предварительно обученных политик, с теми, которые были созданы путем обучения политики с нуля. Чтобы создать размещение для ранее невиданных блоков микросхем, мы используем метод с нулевым выстрелом , что означает, что мы просто используем предварительно обученную политику (без точной настройки) для размещения нового блока, что дает размещение менее чем за секунду. .Результаты могут быть дополнительно улучшены путем точной настройки политики на новом блоке. Политика, обученная с нуля, требует гораздо больше времени для сходимости, и даже через 24 часа ее размещение чипов хуже, чем то, что достигается с помощью тонко настроенной политики через 12 часов.
Графики конвергенции для двух политик на блоках Ариан. Один занимается обучением с нуля, а другой — тонкой настройкой предварительно обученной политики.
Производительность нашего подхода улучшается по мере того, как мы тренируемся на большем наборе данных.Мы заметили, что по мере того, как мы увеличиваем тренировочный набор с двух блоков до пяти, а затем до 20 блоков, политика обеспечивает лучшее размещение как при нулевом выстреле, так и после точной настройки для одного и того же времени обучения на настенных часах.
Объем обучающих данных и производительность тонкой настройки.
Способность нашего подхода учиться на собственном опыте и со временем совершенствоваться открывает новые возможности для разработчиков микросхем. Поскольку агент подвергается воздействию большего объема и разнообразия чипов, он становится быстрее и лучше в создании оптимизированных мест размещения для новых блоков чипов.Быстрый, высококачественный, автоматический метод размещения чипа может значительно ускорить проектирование чипа и обеспечить совместную оптимизацию с более ранними этапами процесса проектирования чипа. Хотя мы оцениваем в первую очередь микросхемы ускорителей, предлагаемый нами метод широко применим к любой проблеме размещения микросхем. После всего, что аппаратное обеспечение сделало для машинного обучения, мы считаем, что машинному обучению пора вернуть должок.

Благодарности
Этот проект был результатом сотрудничества команд Google Research и Google Hardware and Architecture.Мы хотели бы поблагодарить наших соавторов: Мустафу Язгана, Джо Цзяна, Эбрахима Сонгхори, Шен Вана, Ён-Джун Ли, Эрика Джонсона, Омкара Патхака, Сунгмин Бэ, Азаде Нази, Джиу Пак, Энди Тонга, Кавью Сриниваса, Уильяма Ханга, Эмре. Tuncer, Anand Babu, Quoc Le, James Laudon, Roger Carpenter, Richard Ho и Jeff Dean за их поддержку и вклад в эту работу.

Чип ТПУ компании Google помог избежать строительства десятков новых центров обработки данных

Компания Google управляет, несомненно, крупнейшей компьютерной сетью на Земле, системой, состоящей из специально построенных центров обработки данных размером со склад, охватывающих 15 мест на четырех континентах.Но около шести лет назад, когда компания внедрила новую форму распознавания голоса на телефонах Android, ее инженеры забеспокоились, что эта сеть недостаточно велика. Эти инженеры поняли, что если бы каждый Android-телефон в мире использовал новый голосовой поиск Google всего по три минуты в день, компании потребовалось бы в раз больше центров обработки данных, чем в раз.

В то время Google только начинал развивать свои службы распознавания голоса с помощью глубоких нейронных сетей, сложных математических систем, которые могут изучать конкретные задачи, анализируя огромные объемы данных.В последние годы эта форма машинного обучения быстро изменила не только распознавание голоса, но и распознавание изображений, машинный перевод, поиск в Интернете и многое другое. При переходе на этот метод Google увидел, что количество ошибок снизилось на добрых 25 процентов. Но переключение требовало много дополнительных лошадиных сил.

Вместо того, чтобы удвоить площадь центра обработки данных, Google создала собственный компьютерный чип специально для работы с глубокими нейронными сетями, который называется Tensor Processing Unit или TPU. «Имеет смысл иметь решение, которое будет гораздо более энергоэффективным», — говорит Норм Юппи, один из более чем 70 инженеров, работавших над этим чипом.Фактически, TPU превосходит стандартные процессоры в 30-80 раз по показателю TOPS/Ватт, показателю эффективности.

Google

Ниша нейронной сети

Компания Google впервые представила этот специализированный процессор в мае прошлого года, но не сообщила подробностей. Теперь Юппи и остальная часть его команды выпустили документ с подробным описанием проекта, объясняя, как работает чип и какие конкретные проблемы он решает. Google использует этот чип исключительно для , выполняющего нейронных сетей, запуская их в тот момент, когда, скажем, кто-то вводит команду в свой Android-телефон.Он не используется для обучения нейронной сети заранее. Но, как объясняет Юппи, даже это все равно существенно экономит компанию. Не нужно было строить, скажем, дополнительно 15 дата-центров.

Чип также представляет собой гораздо больший сдвиг в мире компьютерных процессоров. Поскольку Google, Facebook, Microsoft и другие интернет-гиганты создают все больше и больше сервисов с использованием глубоких нейронных сетей, им всем нужны специализированные чипы как для обучения, так и для выполнения этих моделей ИИ. Большинство компаний обучают свои модели с помощью графических процессоров, чипов, которые изначально были разработаны для рендеринга графики для игр и других визуальных приложений, но также подходят для математики, лежащей в основе нейронных сетей.А некоторые, в том числе Microsoft и китайский интернет-гигант Baidu, также используют альтернативные чипы при выполнении этих моделей, как это делает Google с TPU.

Разница в том, что Google построил свой собственный чип с нуля. Чтобы сократить расходы и повысить эффективность своей огромной онлайн-империи, компания создает большую часть собственного оборудования для центров обработки данных, включая серверы и сетевое оборудование. Теперь эта работа перенесена на отдельные процессоры.

В процессе это также изменило более крупный рынок чипов.Так как Google разрабатывает, например, свои собственные процессоры, они не покупают другие процессоры, чтобы справиться с дополнительной нагрузкой от нейронных сетей. Использование Google собственными силами даже для специализированных задач имеет широкие последствия; подобно Facebook, Amazon и Microsoft, она входит в число крупнейших покупателей чипов на Земле. Тем временем крупные производители чипов, включая, в первую очередь, Intel, создают новое поколение процессоров, пытаясь вернуть рынок в нужное русло.

Целеустремленный, но универсальный

Юппи присоединился к Google в конце 2013 года, чтобы работать над тем, что впоследствии стало TPU, после работы исследователем аппаратного обеспечения в таких компаниях, как HP и DEC, своего рода питательной среде для многих ведущих разработчиков аппаратного обеспечения Google.Он говорит, что компания рассматривала возможность переноса своих нейронных сетей на FPGA, тип программируемого чипа, который использует Microsoft. Этот путь не занял бы так много времени, а адаптируемость FPGA означает, что компания может перепрограммировать чипы для других задач по мере необходимости. Но тесты показали, что эти чипы не обеспечивают необходимого прироста скорости. «С программируемыми микросхемами связано много накладных расходов, — объясняет он. «Наш анализ показал, что FPGA не будет быстрее, чем GPU».

В конце концов, команда остановилась на ASIC, микросхеме, созданной с нуля для решения конкретной задачи.По словам Юппи, поскольку Google разработала чип специально для нейронных сетей, он может работать с ними в 15–30 раз быстрее, чем чипы общего назначения, созданные с использованием аналогичных производственных технологий. Тем не менее, чип подходит для любой разновидности нейронных сетей — по крайней мере, в том виде, в котором они существуют сегодня, — включая все, от сверточных нейронных сетей, используемых в распознавании изображений, до сети с долговременной кратковременной памятью, используемой для распознавать голосовые команды. «Это не связано с одной моделью», — говорит он.

Google использует TPU в течение добрых двух лет, применяя его ко всему, от распознавания изображений до машинного перевода и до AlphaGo, машины, которая взломала древнюю игру Го прошлой весной.

Добавить комментарий

Ваш адрес email не будет опубликован.