Как стать автором
Обновить

Аналоговые вычисления для искусственного интеллекта: как делать MAC-операцию при помощи закона Ома

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров3.3K
Всего голосов 24: ↑24 и ↓0+31
Комментарии17

Комментарии 17

  1. Почему floating-point? Если у вас используются числа малой разрядности – хватает fixed-point, а то и вообще LUT.

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

  3. Использование транзистора (а без него вы вряд ли обойдётесь) в режиме ключа значительно "дешевле" энергетически, чем в линейном. Если для реализации понадобится линейный режим – получим повышенное энергопотребление.

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

  1. Так я говорю в тексте, что от floating point в цифре отказываются в пользу малых разрядностей, вплоть до 1.5 бит

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

  3. Во-первых, примерно вся статья - о том, что для MAC-операции не нужен транзистор. Во-вторых, вы не правы, потому что мы сравниваем не один транзистор и один транзистор, а сотни ключей против одного транзистора в линейном режиме. Да и в линейном ли? Транзисторы дступа в память - это ключи)

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

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

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

  2. На пятом рисунке ("Структурная схема вычислительного блока in-memory computing") показано, как оно выглядит на практике. Между слоями есть даже не единичные транзисторы, а усилители или АЦП-ЦАП. И даже в этом случае чипы получаются более энергоэффективными, чем цифровые аналоги.

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

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

Про функцию активации, кстати, все не так однозначно) В аналоговом виде удобно делать только RelU (и еще крайне неудобно делать обратные связи, то есть все LSTM и GRU сходу идут лесом). Поэтому типовоцй подход прямо сейчас - подавать входные сигналы на слой с ЦАП, получать результаты MAC, цифровать взвешенные суммы и делать активацию в цифровом виде.
Аналоговые активации и отказ от громоздких и прожордивых ЦАП и АЦП - это то, чего всем очень хочется, но пока что не очень получается. Скажем, на упомянутом в статье чипе Mythic стоят десятки тысяч ЦАП и АЦП.

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

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

Вот что, а интеграторы в каждой второй аналоговый микросхеме стоят)

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

Каждый раз, когда читаю про те уровни, где цифровая техника становится аналоговой, разрываюсь между желаниями громко воскликнуть что-то нецензурное и заорать "сжечь ведьму!"

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

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

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

С возвращением после долгой паузы

Идея очевидная уже лет 15 как, задолго до начала аи-хайпа.

Но есть одно «маленькое» «но»: воспроизводимость сетей будет в стиле «9 месяцев отладка, 7 лет учить говорить, 10 лет — думать, ещё пять лет учить что-то создавать и потом диплом» — и так с каждым экземпляром. Обучить один и распространить на все — не выйдет. Не тиражируемая в принципе вещица.

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

Обучить один и распространить на все — не выйдет.

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

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

Зачем? Можно просто АЦП поставить, если очень хочется точные уровни на выходе иметь.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории