Вычисления в памяти, или аналоговое снова в моде

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

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

Подход, используемый в нейронных сетях, называется коннективизм. Это значит, что нейронные сети “программируются” с помощью связей между нейронами (синапсы), а точнее силой этой связи. Сигнал, подаваемый на вход системы, проходя через синапс, умножается на его “вес”. К одному нейрону, как правило, подходит несколько синапсов, и значения их выходов суммируются, а к сумме применяется некоторая нелинейная функция. Таким образом, большая часть операций вычисления нейронной сети сводится к произведению и сложению (multiplication accumulation - MAC). Для нейронных процессоров MAC является одним из важнейших параметров для определения производительности.

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

Не слишком эффективны и тензорные процессоры. В 2016 году ИИ от Google DeepMind победил лучшего игрока китайской настольной игры Го, что на самом деле, стало значимым событием, так как считается, что данная игра требует более творческого подхода по сравнению с шахматами. Однако стоит обратить внимание на затрачиваемую энергию двух соперников. Человеческий мозг потребляет около 20 Ватт, в то время ИИ, работающий на тензорных процессорах, около 1 Мегаватта! Кроме того, для выполнения одного MAC в тензорном процессоре понадобится не менее сотни транзисторов, что не так мало, учитывая общее количество операций, и, как мы скоро убедимся, есть более компактные решения.

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

Достоинства и причины успеха цифровой электроники

В последние десятилетия цифровая электроника приобрела большую популярность благодаря многим её неоспоримым достоинствам. Так, например, данные, записанные в цифровом виде, удобно хранить, передавать и копировать без потери качества. Но, самое главное, цифровая электроника сильно выигрывала за счёт постоянной миниатюризации технологических процессов в микроэлектронике, то есть пресловутого “Закона Мура”. Уменьшение транзистора позволяло увеличивать рабочие частоты и повышать энергоэффективность. Аналоговая же электроника не получает подобного выигрыша от уменьшения размера транзистора. Поэтому для аналоговых чипов, как правило, и не используют новейшие технологические нормы, достаточно ~180-22нм.

К сожалению, реальное уменьшение транзистора давно начало замедляться и упираться в физический потолок.  В связи чем уже и сами производители начали отказываться от нанометров в названиях техпроцессов. Делать прорывы каждый год всё сложнее, а покупать устройства на чипах, произведенных по «старым» технологиям, люди «почему-то» не хотят.

Другой проблемой стало то, что при уменьшении транзистора растет влияние токов утечек. Подавляющее большинство современных интегральных микросхем сделаны по технологии КМОП (комплементарная структура металл-оксид-полупроводник). Одной из ключевых особенностей, позволивших ей завоевать рынок, является то, что ток в структуре должен протекать только при переключении. Например, при переключении из логического ‘0’ в ‘1’. В реальности же на сегодняшний день картина совершенно другая: токи утечек в современных процессах уже превосходят ток переключения. Тенденцию можно видеть на графике ниже

Рост тока утечки при уменьшении размера транзистора [1]
Рост тока утечки при уменьшении размера транзистора [1]

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

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

Таким образом, в индустрии микроэлектроники давно возник запрос на новые пути развития, и аналоговые решения, долгое время находившиеся в тени, могут оказаться одним из них.

Некоторые подходы в Analog In-Memory Computing

RRAM

Появление мемристоров (от англ. memory и resistor) стало значимым событием для развития нейроморфных процессоров и искусственных нейросетей. Сам элемент, грубо говоря, является резистором с эффектом памяти. Обладая гистерезисом, он способен изменять сопротивление в зависимости от протекающего заряда. Чем интенсивнее входной сигнал, тем выше его проводимость. Подобное поведение напоминает работу биологического синапса, что делает его отличным кандидатом для применения в нейроморфных системах вроде Analog In-Memory Computing (AiMC).

Изменяя сопротивление мемристора, мы можем записывать в него значение «веса» синапса. Обычно с точностью около 6 бит, чего, как правило, достаточно. Хранение целого веса всего в одном элементе позволяет достигать достаточно высокой плотности записи. Кроме того, в отличии от DRAM, этот тип памяти является энергонезависимым.

На примере мемристорной памяти достаточно удобно рассматривать концепцию AiMC. Как уже отмечалось, большая часть вычисления нейронных сетей сводится к произведению матрицы «весов» и вектора входных сигналов. Для решения задачи в аналоговом виде представим входные сигналы в виде напряжения, а матрицу «весов» в виде матрицы мемристоров. Типичное исполнение можно видеть на рисунке ниже.   Здесь цифровой код сперва подается на цифро-аналоговый преобразователь (DAC на рисунке). Напряжение с него подается на горизонтальные линии (WordLine). Так как каждый мемристор подключен одним концом к одной из WordLine, а другим к вертикальной (BitLine), то ток, протекающий через него, равен произведению входного напряжения V на проводимость элемента (G=1/R). Результирующий ток, протекающий по BitLine, по закону Кирхгофа, равен сумме всех токов подключенных мемристоров. Таким образом, токи, полученные во всех BitLine, являются результатом умножения входного вектора на матрицу «весов». Далее токи, как правило, преобразуются обратно в цифровое значение с помощью аналого-цифрового преобразователя (ADC). Примечательно, что для операции суммирования, грубо говоря, требуется только микроскопическая металлическая дорожка. Для сравнения, для сложения 4096 двухбитных чисел потребовалось бы 8168 полных сумматоров объединенных в 15 уровневое дерево [6].  Также стоит заметить, что вычисление происходит в максимально параллельном виде. Данная особенность позволяет сильно увеличить пропускную способность даже при небольшой рабочей частоте.

Типичное исполнение мемристорной матрицы [5]
Типичное исполнение мемристорной матрицы [5]

SRAM

Интересно, что SRAM может показаться примером цифрового in-memory computing, Однако даже здесь приходится иметь дело с аналоговыми сигналами. Так, для считывания бита SRAM требуется дифференциальный (аналоговый) усилитель. Тем не менее, сейчас нас интересует применение в нестандартной роли, а именно в AiMC.

Здесь, как и в предыдущем примере, сперва потребуется преобразовать цифровой сигнал в аналоговый с помощью ЦАП (WLDAC).  Полученное напряжение подаётся на Word Line (WL). Ячейка SRAM хранит в себе бинарный «вес» ±1, а ток IBC является произведением бинарного «веса» и входного напряжения.

Ячейка SRAM [2]
Ячейка SRAM [2]

Данный подход позволяет повысить энергоэффективность в 12 раз [3]

Легко заметить, что величина «веса» при таком подходе ограничена одним битом, что заметно сужает спектр его применения. 

Обозначим достоинства и недостатки использования SRAM

Достоинства

  • Совместимо со всеми современными технологическими процессами, а значит не удорожает производства

Недостатки

  • Невысокая плотность по сравнению с другими типами

  • Желательно использовать модифицированную 8т ячейку, что делает её ещё более громоздкой 

  • Ограниченное применение типов NN. В основном применима для BNN

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

Помимо описанных существуют также подходы, основанные на ячейках Flash памяти, MRAM, FRAM, и даже ёмкостных ПЗУ [7]. Они не менее интересны, но принцип, лежащий в основе работы, схож с вышеописанным.

Что уже имеется

На сегодняшний день готовых продуктов ещё немного. Тем не менее, есть решения от MYTHIC с довольно впечатляющей энергоэффективностью. При производительности, сопоставимой с GPU, заявлено энергопотребление на порядки ниже [6]. Кроме того, существует несколько десятков стартапов, также работающих в данном направлении и использующих разные типы памяти. Например, SEMRON разрабатывает ускоритель на основе собственной ёмкостной энергонезависимой памяти. Использование ёмкостной ячейки теоретически может позволить достичь ещё большей энергоэффективности. Так, они заявляют о производительности 3,500 TOPS/s/W, что может сделать возможным создание устройств, потребляющих всего несколько микроватт [8].

Заключение

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

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

Источники

  1. https://semiengineering.com/knowledge_centers/low-power/low-power-design/power-consumption/

  2. Efficient Processing of Deep Neural Networks: A Tutorial and Survey

  3. J. Zhang, Z. Wang, and N. Verma, “A machine-learning classifier implemented in a standard 6T SRAM array,” in Proc. Symp. VLSI, 2016, pp. 1–2.

  4. https://neuronus.com/theory/nn/nn/38-theory/150-ins-osnovnie-terminy.html

  5. https://www.youtube.com/watch?v=dr0DxW0hqGU

  6. https://www.youtube.com/watch?v=PsYTQhN_n7M&list=PLSPiCIG-UhDi7pdkSv9cHpTan5nyu4SAQ&index=9

  7. https://www.nature.com/articles/s41928-021-00649-y

  8. https://techxplore.com/news/2021-10-memcapacitor-devices-neuromorphic-applications.html

Источник: https://habr.com/ru/post/590017/


Интересные статьи

Интересные статьи

Многие из нас начинают и бросают много самых разных дел. В этом плане онлайн-обучение — не исключение, а один из самых частых примеров. По данным исследования, проведённо...
Последние годы удалось поработать над несколькими большими и не очень проектами с использованием разных back-end и front-end фреймворков. Сталкивался с разными проблемами, возника...
Доброго дня! Речь пойдет о решении такой проблемы, как полимеризация готовых 3D моделей после печати на LCD 3D принтерах, например как на нашем — Anycubic Photon S. Этот принтер печатает на базе...
В этом посте мы постараемся вывести наших читателей из распространённых заблуждений относительно безопасности виртуальных серверов и рассказать, как надо правильно защищать свои арендованные обла...
Вычисление логарифмов довольно распространённая операция в цифровой обработке сигналов. Чаще пожалуй приходится считать только свёртки (умножение с накоплением) и амплитуды с фазами. Как правило ...