Ежесуточно современный городской житель потребляет с пищей около 2 тыс. килокалорий — если не переедает и не страдает от голода — и расходует приблизительно столько же. В пересчёте на мощность это соответствует в среднем примерно 100 Вт, из которых не менее 20 Вт уходит на обеспечение функционирования мозга: во время активного бодрствования побольше, во сне поменьше.
Для сравнения: энергопотребление вполне современного серверного процессора (только ЦП, без учёта питания подсистемы памяти, внутренней шины данных и т. п.) вроде EPYC 7551P под предельной нагрузкой переваливает за 300 Вт. Но для того чтобы решать задачи, с которыми человеческий мозг без труда справляется едва ли не каждую секунду (скажем, уверенное распознавание образов в режиме реального времени), необходимы обширные дата-центры с десятками стоек, заполненных серверами с такими ЦП. Разница в энергоэффективности очевидна — и она не в пользу умных машин.
Продвигаясь в развитии систем искусственного интеллекта (ИИ) на актуальной аппаратной базе, программисты, учёные и инженеры всё чаще замечают: привычные для нас вычислительные системы, в основе которых лежит архитектура фон Неймана, в принципе не способны достичь такой же, как у биологического мозга, энергоэффективности. Выходов из этого тупика может быть несколько, включая чрезвычайно перспективные квантовые компьютеры — разработка которых, впрочем, сама по себе сталкивается с целым рядом сложностей.
Гораздо более достижимой представляется цель построения ИИ на базе — точнее, с активным использованием — аналоговых вычислителей.
Не только люди, но и животные, располагающие сколько-нибудь развитой нервной системой, способны проводить параллели между формально не связанными между собой событиями — именно этот феномен известен со времён Павлова как условный рефлекс. У какого-нибудь червя или моллюска нейробиологи успешно формируют, а затем исследуют поведенческие стереотипы — проявления того, как животное по аналогии, типовым образом реагирует на уже пережитую ранее ситуацию.
Люди сплошь и рядом используют аналогии в ходе постижения объективной реальности — взять хотя бы символические изображения охоты, зафиксированные ещё в наскальных росписях. На основании изучения современных племён, не затронутых влиянием цивилизации (вот — опять аналогия!), антропологи утверждают, что древние предки изображали многие сцены охоты не постфактум, а как раз непосредственно перед тем, как отправиться за добычей. Полагая, что пронзённому нарисованным копьём нарисованному же оленю будет соответствовать не менее удачный охотничий трофей в реальности.
Более сложные способы формирования искусственных аналогий реальным событиям относятся к последним столетиям до нашей эры, когда в древнегреческих полисах начали появляться первые известные нам аналоговые компьютеры. Единственный дошедший до наших дней представитель этого класса устройств, антикитерский механизм, датирован II в. до н. э. Но в античных текстах упоминания о подобных системах шестерён встречаются и в более ранние времена.
⇡#Не подскажете, который сейчас сарос?
На рубеже XIX и XX веков у острова Антикитера в Эгейском море были обнаружены остатки древнеримского корабля, затонувшего две с лишним тысячи лет назад. Судно перевозило (вероятнее всего, для демонстрации в ходе триумфа Цезаря по случаю взятия о. Родос) обширную коллекцию предметов искусства и прочих редкостей: греческие водолазы подняли на поверхность несколько мраморных и бронзовых статуй, остатки роскошной мебели, керамические и стеклянные изделия, монеты.
Неудивительно, что сотрудники Археологического музея Афин, куда были перемещены находки, в первую очередь занялись восстановлением наиболее броских и привлекательных артефактов, — не обращая особого внимания на добытые вместе с теми со дна невнятные бронзовые обломки, сильно корродированные и обильно покрытые морскими отложениями. Лишь пару лет спустя археолог Валериос Стаис заметил, что в одном из таких обломков под известковыми наслоениями явно просматривается крупное, около 13 см в диаметре, бронзовое колесо со многими десятками зубцов. Более детальный осмотр артефакта выявил и другие элементы конструкции, напоминающей часовой механизм.
Учёный предположил, что сделанная у Антикитеры находка являет собой самый ранний из обнаруженных пример механического устройства для предсказания движений небесных тел, — но тут же был поднят на смех своими более скептическими коллегами. Маститые археологи авторитетно заявляли, что необходимые для производства столь тонких работ технологии не были доступны в античное время и что, скорее всего, здесь имеет место прохронизм — разновидность анахронизма, когда некое явление датируется более ранним временем, чем то, когда оно на деле произошло. Мол, над местом древнего кораблекрушения с борта проходящего мимо судна уронили более или менее современный морской хронометр — всего-то.
Авторитет недоверчивых светил решился подвергнуть сомнению — лишь полвека спустя — британский историк Дерек Дж. де Солла Прайс. Ещё более двадцати лет ушло у учёного на то, чтобы в сотрудничестве со специалистами по ядерной физике скрупулёзно рентгенографировать во всевозможных проекциях 82 сохранившихся фрагмента неведомого устройства из антикитерского клада. Венцом их трудов стала первая публикация об античном аналоговом компьютере — механизме для предвычисления сароса и движений планет.
Саросом астрономы называют период длиной чуть более 18 лет, за который в системе Солнце — Земля — Луна повторяется взаимное расположение её непрерывно движущихся элементов. Для наземного наблюдателя это проявляется в том, что ровно через сарос в данной местности воспроизводится в прежнем порядке, с теми же интервалами, что и прежде, полный цикл затмений: 41 солнечное (из которых около 10 могут быть полными) и 29 лунных.
Закономерность эта стала известна ещё древним вавилонянам, и именно она была воплощена в главных зубчатых колёсах антикитерского механизма. Строго говоря, сарос (как и астрономический год) составляет нецелое число суток, а именно 6585 и ⅓. Поэтому ради удобства древние астрономы предпочитали рассчитывать экселигмос — период, равный трём саросам. В начале 2000-х исследователи показали, что именно экселигмос и воспроизводился 37 главными колёсами антикитекрского механизма.
Позднее учёные стали утверждать, что 82 обнаруженные на дне детали представляют собой лишь около трети от общего числа элементов исходного механизма — и что тот, помимо предсказания солнечных и лунных затмений в определённой точке земной поверхности (скорее всего, именно на Родосе), позволял воспроизводить перемещения по небесной сфере всех пяти известных древним планет: Меркурия, Венеры, Марса, Юпитера и Сатурна.
Интересно, что идеологическими наследниками, пусть не прямыми, антикитерского механизма можно считать активно применявшиеся в XX веке приборы управления артиллерийским зенитным огнём (ПУАЗО) — электромеханические вычислители, дающие возможность предсказать положение движущейся цели в пространстве, пока наводчик удерживает её в перекрестье визира, и соответствующим образом нацелить зенитное орудие.
Чуть ближе к настоящему моменту, в 1936 г., советский инженер Владимир Лукьянов создал гидравлический интегратор — первую в мире вычислительную машину для решения уравнений в частных производных. Сделал он это вовсе не из любви к чистой науке: гигантские стройки первых пятилеток требовали возведения огромных и долговечных конструкций из железобетона — что диктовало необходимость с высокой надёжностью прогнозировать их прочностные характеристики.
Лукьянов высказал предположение о том, что появление трещин в бетоне в первую очередь связано не с происками врагов социалистического отечества или с нерадивостью рабочих, а с особенностями распространения тепла в бетонной кладке. А вот уже характер тепловых переходов внутри бетонного блока может зависеть и от температурного режима (день — ночь, время года, влажность, сила и скорость ветра и т. п.), и от качества и состава смеси, и от технологии исполнения работ.
Теоретически выписать уравнения для всех этих зависимостей возможно, но они — дифференциальные, в частных производных — выходят достаточно сложными для прямого аналитического решения (тем более в условиях отсутствия под рукой цифровых ЭВМ). Лукьянов обратился к трудам предшественников: ранее уже была доказана возможность замены одного физического процесса другим в ходе моделирования по аналогии, если описывающие их системы уравнений тождественны. Инженер увидел прямое соответствие между закономерностями распространения тепла в заведомо неоднородном бетонном блоке — и физическими процессами движения воды по сложной системе взаимосвязанных трубок с изменяемыми гидравлическими сопротивлениями.
Предложенный Лукьяновым метод гидравлических аналогий свёл чрезвычайно непростую с математической точки зрения задачу к необходимости построения системы сосудов, соединённых трубками различных диаметров, и последующим наблюдениям за тем, как по этой системе проходит ламинарный поток воды. Понять, как именно это реализуется, поможет рассмотрение самого простого случая — одномерного рассеяния тепла в плотной стенке, одна из сторон которой равномерно нагрета.
Стенка разбивается на слои (допустим, три: наружный, средний и внутренний), каждый из которых моделируется трубкой с налитой в неё жидкостью и запирающим вентилем снизу: чем выше столб жидкости, тем выше температура (точнее, количество тепловой энергии в данном слое). Если слои моделируемой по аналогии стенки имеют различную теплоёмкость — допустим, облицовка, утеплитель, несущая стена — подбираются трубки с соответствующим соотношением диаметров. Ширина выходного канала каждой трубки (строго говоря, его полное гидравлическое сопротивление) соответствует термическому сопротивлению данного слоя.
После того как исходные условия заданы (сосуды соединены должным образом трубками с корректными гидравлическими сопротивлениями и заполнены требуемыми объёмами воды), достаточно открыть одновременно все краны — и просто наблюдать за тем, как быстро и где именно меняются уровни жидкости. В любой момент краны можно перекрыть, чтобы изучить ситуацию на определённом этапе. Для объективной фиксации результатов к конструкции позже были добавлены барабанные самописцы, а в 1941 г. Лукьянов предложил и двумерный гидравлический интегратор, состоящий из отдельных секций.
⇡#Цифра бьёт аналог, аналог бьёт цифру
Инженерная находка, действующая по аналогии, оказалась настолько удачной, что цифровые универсальные ЭВМ смогли составить конкуренцию серийным гидравлическим аналоговым вычислителям в области решения дифференциальных уравнений в частных производных не ранее чем в начале 1980-х.
Поскольку законы изменения функций многих переменных во множестве областей описываются уравнениями, тождественными гидродинамическим, вычислители на базе гидравлических элементов стали появляться по всему миру — достаточно вспомнить новозеландский MONIAC, применявшийся для моделирования экономических процессов на страновых рынках. Да, всё верно: целый ряд моделей важнейших макроэкономических процессов строится с использованием дифференциальных уравнений в частных производных.
Сегодня вычислительная мощь компьютеров фон-неймановской архитектуры на много порядков превосходит возможности тех ЭВМ почти полувековой давности — однако и задачи им приходится решать принципиально иные. А именно те, на которых за миллиарды лет эволюции специализировались биологические нейронные структуры: распознавание образов, операции в рамках нечёткой логики, принятие критически важных решений на основе неполных данных.
Попытки создать прямые искусственные аналоги биологических «думательных» структур пока далеки от реального воплощения. Логичным представляется смоделировать особенности работы живых нейронов в оперативной памяти фон неймановских систем, и это уже с успехом делается. Но главным препятствием здесь становится уже упомянутая в самом начале чрезмерно высокая энергоёмкость вычислений, производимых классическими полупроводниковыми устройствами.
И вот как раз для повышения энергоэффективности цифровых машин, занятых моделированием работы нейронов, предлагается применять аналоговые вычислители. Но теперь это будут — и уже есть — не механические (как антикитерский механизм) либо гидравлические (как интегратор Лукьянова) агрегаты, а устройства, полагающиеся, как и привычные всем процессоры в ПК или смартфонах, на полупроводниковую память. Вот только на полупостоянную, энергонезависимую, — а не на оперативную, информация из которой исчезает почти мгновенно после отключения питающего напряжения.
Традиционная на сегодня схема организации вычислительного полупроводникового устройства подразумевает физическое отделение процессора от памяти. Программы и данные, в соответствии с принципами фон Неймана, размещаются как раз в памяти (обычно это именно энергозависимое высокоскоростное ОЗУ), а процессор обращается к ней по сопрягающей эти два узла шине данных как за исходной информацией для расчётов, так и для выдачи результатов своих вычислений.
Очевидно, что узким местом, которое иногда упоминают даже как «теснину фон Неймана», здесь оказывается пропускная способность внутрикомпьютерной шины данных. Ставший для ИТ-индустрии за десятилетия привычным путь преодоления этой теснины — за счёт неуклонного роста тактовой частоты работы процессора и распараллеливания выполняемых им операций, а также наращивания разрядности и скорости работы самой шины — прекрасно подходит для уверенного решения огромного круга задач. Но машинное обучение, на котором строится вся нынешняя концепция ИИ, в круг этот, к несчастью, целиком не вмещается.
Суть в том, что основной принцип организации машинного обучения — это моделирование биологической нейросети, которое по сути своей сводится к взвешенному суммированию. В памяти компьютера формируются виртуальные нейроны со множеством входов. Входные сигналы поступают на каждый нейрон по различным входам с разными весами — т. е. с разной значимостью. Грубо говоря, если требуется определить, кошка ли изображена на картинке, веса признаков «есть хвост», «есть усы», «есть лапки с втяжными когтями» будут умеренно положительным, тогда как признак «есть рога», бесспорно, окажется обладающим огромным отрицательным весом.
Рассмотрим процесс работы малого участка нейросети подробнее. В теории (и в цифровой модели) такой участок действует по аналогии с тем, как функционирует сеть нейронов в биологическом мозге. Здесь речь идёт именно о подобии, не о точном копировании (в частности, игнорируются химические коммуникации между нервными клетками, к рассмотрению принимаются только электрические), но по уровню развития даже нынешних лучших образцов ИИ уже очевидно, насколько этот путь продуктивен.
Итак, грубо можно считать, что от рецепторов (органов чувств) электрические сигналы поступают в многослойную сеть нейронов, а после обработки последней выдаются на эффекторы — преобразователи сигналов в физические действия. То бишь зрительные рецепторы зафиксировали переключение светофора на красный — нейронная сеть сопоставила риски потери времени из-за минутной задержки и травмы в результате ДТП — эффекторы выдали двигательной системе команду притормозить у перехода.
Нейронная сеть представлена в рассматриваемой модели структурой, состоящей из одномерных нейронных слоёв; каждый слой — набор независимых нейронов. У нейрона есть множество рецепторов (приёмников) сигнала, называемых дендритами, и единственный аксон — канал выдачи результирующего импульса. Участок контакта двух нейронов называется синапсом, причём проходящий через данный синапс сигнал определённым образом модулируется на основе обучения — усиливается или, наоборот, ослабевает.
Описанная модель синаптических связей представляет, таким образом, каждый нейрон как вычислитель взвешенных сумм сигналов, поступающих к нему от других нейронов. Биологический мозг устроен заметно сложнее, но в математической модели эта сложность компенсируется важной модификацией базового нейрона: у того вместо строго одного аксона допускается несколько выходов. В результате открывается возможность комбинировать слой за слоем, в каждом из которых ряд сумматоров складывает взвешенные (с приписанными синаптическими весами) сигналы, полученные от каждого из нейронов предыдущего слоя, а затем передаёт результаты этого суммирования — тоже с весами, но уже другими — последующему слою.
Модель для обучения с одним слоем виртуальных нейронов — это фактически чек-лист со списком ключевых признаков. Просуммировав в столбик все указанные критерии, помноженные на соответствующие им веса, система получит в численном виде вероятность того, кошка изображена на рассматриваемом изображении или нет. Но на практике одним слоем дело не ограничивается: чем сложнее требуемый результат, тем больше необходимо промежуточных итераций.
Обучение такой нейронной сети производится путём последовательного подбора синаптических весов для каждого слоя нейронов. Даже для базовой однослойной сети очевидно, насколько трудоёмка эта задача: изначально веса выставляются в некое стартовое значение, сигналы проходят по всей сети, она формирует на эффекторах некий результат — и тот сопоставляется с шаблоном. Если отличие есть (а оно изначально непременно будет), меняются значения весов и полный цикл взвешенных суммирований повторяется. По какому принципу менять веса в каждом слое для новой итерации — вопрос отдельный; главное, что каждый такой шаг требует проведения значительного числа операций умножения и сложения.
В итоге глубоко проработанная система ИИ оперирует сотнями взаимоувязанных слоёв, причём по каждой комбинации связей производит раз за разом взвешенное суммирование. И всё это — путём непрерывной перекачки гигантских потоков данных по внутренней шине: из ОЗУ в ЦП и обратно. Подлинно «умные» компьютеры вроде Deep Blue, впервые обыгравшего человека в шахматы, или AlphaGo, одержавшего победу над чемпионом мира по игре го, потребляют по 200-300 кВт, тогда как их оппоненты пользуются всё тем же старым добрым биологическим 20-Вт мозгом. Если человечество в самом деле планирует всё шире применять искусственный интеллект для решения своих повседневных задач, придётся изобрести значительно менее энергоёмкие методики взвешенного суммирования.
Строго говоря, современные (и даже не самые современные) процессоры уже располагают прямым, не задействующим внутреннюю шину данных доступом к ограниченным объёмам памяти. Речь идёт о процессорном кеше — на данный момент уже многоуровневом и довольно обширном. Кстати, графические адаптеры потому так хорошо подходят для решения задач ИИ, что в их составе и вычислительных ядер великое множество, и сопряжены они практически напрямую с внушительным объёмом оперативной памяти. Правда, на практике для машинного обучения с прицелом на действительно сложные задачи и этого оказывается недостаточно.
Сегодня наиболее адекватным способом преодолеть «теснину фон Неймана» целому ряду практикующих ИТ-инженеров представляется проведение вычислений непосредственно в памяти (compute in-memory, CIM), без необходимости гонять потоки данных между ЦП и ОЗУ через внутреннюю шину. Речь при этом идёт об энергонезависимой памяти (non-volatile memory, NVM), а не о различных разновидностях DRAM — в немалой мере как раз потому, что на хранение промежуточных данных в NVM не будет расходоваться энергия. То есть фактически CIM в этом случае реализуются на аппаратной базе специализированного процессора с гипертрофированным кешем первого уровня.
Хорошо; но причём тут, собственно, аналоговые вычисления, если речь идёт всего лишь о перемещении обрабатываемых данных из DRAM в энергонезависимую память? Всё дело в том, что модуль NVM представляет собой в общем случае прямоугольную матрицу ячеек — хранилищ электрического заряда, позволяющую напрямую смоделировать узлы, соединения и, самое главное, веса для взвешенного суммирования. И операции, производимые над этой матрицей, на деле представляют собой подобие — аналог — работы биологической нейронной сети. Не виртуальное её моделирование на программном уровне, а прямую физическую аналогию — это чрезвычайно важно.
Одна из уже сегодня реализующих подобный подходкомпаний, Mythic, использует модуль NVM, непосредственно объединённый с вычислительным ядром процессора, для хранения матрицы весов текущего слоя производимых в рамках машинного обучения операций — или нескольких слоёв, если доступная ёмкость это позволяет. IBM делает ставку на ячейки памяти с фазовым переходом (из кристаллического состояния в аморфное и обратно). Но в любом случае подсчёт взвешенной суммы для CIM с NVM производится прямым умножением вектора входных возмущений (набора данных по каждому из параметров) на матрицу весов.
На предметном уровне CIM может реализовываться на различной элементной базе, включая магниторезистивную (MRAM) и резистивную (RRAM) память, память на основе эффекта фазового перехода (PCM) и даже флеш-память (NAND). Высокая производительность аналоговой структуры позволяет реализовывать сложные задачи ИИ, такие как распознавание образов, буквально в реальном масштабе времени и с минимальными (если сравнивать с фон неймановскими компьютерами) энергозатратами — что особенно важно для приложений активно развивающегося сегодня Интернета вещей.
А теперь — самое главное: как именно реализуется это умножение. Если коротко, то вектор входных возмущений задаётся набором уровней напряжения по каждому из входных каналов. Матрица же весов представляет собой электротехническую микроструктуру с соответствующим распределением сопротивлений по узлам-ячейкам. И вот теперь-то совершенно естественным образом, как и свойственно аналоговому компьютеру, вычисление сводится к реализации объективных закономерностей — в данном случае закона Ома (сила тока = напряжение * сопротивление) для каждого из возмущений, проходящих через матричную структуру резисторов. Суммирование же взвешенных сигналов происходит в соответствии с правилами Кирхгофа для сложения токов в сложных цепях.
Слева на рисунке показан первый этап обработки: передача сигналов от каждого рецептора на нейроны представляется подачей напряжения на соответствующую горизонтальную шину модуля NVM. Веса x1, x2 и т. д. для каждого синапса кодируются величиной сопротивления отдельного PCM-элемента в составе матрицы (отмечены квадратами; такие же квадраты располагаются и в прочих ячейках матрицы — на рисунке они не показаны). Результирующие токи по вертикальным шинам приходят, складываясь в соответствии с правилами Кирхгофа, на приёмные ячейки — это соответствует взвешенному суммированию на нейронах.
Величины полученных зарядов фиксируются на конденсаторах (на схеме не показаны), после чего соседняя или та же NVM-матрица может быть использована для второго этапа нейроморфных вычислений (правая часть рисунка). Теперь на входы слева подаются из упомянутых конденсаторов синаптические сигналы от нейронов, а PCM-элементам приписываются новые значения сопротивлений, соответствующие весам y1, y2 и т. д. В результате всё тем же методом взвешенного суммирования — опять-таки по полностью аналоговой схеме, без каких бы то ни было численных операций — получаются финальные величины зарядов для эффекторов.
С технической точки зрения NVM-вычислитель представляет собой промежуточное по сложности устройство между модулем памяти и универсальным процессором. Так, аналоговый матричный процессор M1076 разработки Mythic, созданный по 40-нм производственным нормам, содержит 76 матриц на основе КМОП (комплементарной логики с транзисторами на металл-оксид-полупроводнике), что позволяет ему производить нейроморфные вычисления с использованием до 80 млн весов при типичном энергопотреблении на уровне 3 Вт, выполняя до 35 трлн операций в секунду (TOPS) — причём всё это великолепие умещается в формат карты расширения M.2.
Применение такого чипа совместно с модулем NVIDIA Jetson Xavier NX, типичным выбором при построении современной цифровой неройсети, даёт возможность, по словам представителей компании-разработчика, поднять эффективную производительность вычислительного блока NVIDIAв 2-3 раза. Полноразмерная плата с разъёмом PCIe и 15 аналоговыми матричными процессорами на борту обещает производительность до 400 TOPS с возможностью назначать до 1,28 млрд синаптических весов и потребляет при этом не более 75 Вт. Схожим курсом движется IBM: она уже испытывает аналоговый NVM-вычислитель на основе элементов памяти с фазовым переходом, размеры рабочей матрицы которого составляют 784 × 250 элементов, — причём запустить свою ИИ-задачу на этом устройстве уже можно прямо онлайн.
Энергоэффективный ИИ на аналоговой аппаратной базе сумеет в прямом смысле слова оживить множество элементов Интернета вещей, индустриального и домашнего, которым остро необходима способность в реальном масштабе времени анализировать происходящее и формировать адекватную реакцию: от камер видеонаблюдения до автономного транспорта и дронов. По оценкам экспертов, доступные уже в ближайшее время аналоговые вычислители позволят десятикратно снизить потребление энергии в ходе нейроморфных расчётов. Особенно привлекательна в них с точки зрения нынешнего состояния ИТ-индустрии ориентация на зрелые (около 40 нм) технологические процессы, что даёт возможность не сворачивать ради них выпуск привычных микропроцессоров на булевой логике — и в итоге создавать выдающиеся по широкому спектру параметров цифроаналоговые вычислительные комплексы.