- BrainTools - https://www.braintools.ru -

ИИ и развёртка в фотонику

Всем очевидно: индустрия ИИ стремительно развивается. Но здесь появляется одно гигантское слоноподобное НО. В последнее десятилетие лидеры ИИ предпочли развиваться экстенсивно – то есть, например, ЛЛМ максимизируют объём моделей. Это в свою очередь тянет за собой целую цепочку гигантских затрат: от электростанций до передовых числодробилок. Из последнего – xAI готовится запустить [1] вычислительную фабрику мощностью 1 ГВт с 500-ми тысячами видеоускорителей! Можно по разному относиться к хайпу вокруг ИИ, но очевидно одно – есть много желающих вкладываться по полной программе в эти технологии. И, возможно, впоследствии экстенсивный рост перейдёт в интенсивный, то есть количество перейдёт в качество. Проблема только в том, что на низком уровне – уровне железа – техника подходит к физическим пределам. И если не сменить парадигму и физическую основу, то поддерживать развитие индустрии никакими средствами кроме масштабирования не получится.

Стена проблем.

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

Индустрия чипов переключилась на проталкивание многоядерных решений в массы. Но выигрыш достигается не всегда. В частности отдельное приложение с отдельным потоком далеко не всегда способно использовать возможности многопоточности. Здесь есть теоретический предел – закон Амдала [2]. К тому же, написание многопоточных приложений разительно (в 5-7 раз) сложнее линейных.

Физические ограничения транзисторных чипов также порождают такие проблемы:

СБИС

СБИС

Использование ASIC – это на самом деле другой подход к развёртке вычислений – в длину. То есть мы здесь конвертируем исполнение программы из временного измерения в протяжку тех же вычислений по всей цепочке специальной схемы ASIC-а, то есть по длине схемы, последовательности вентилей. Длинная цепочка вентилей позволяет нам экономить время, потому что за один такт выполняется гораздо больше операций, возможно даже получается конечный результат. При этом цепочка в итоге может всё же не укладываться в один такт, но конвейерное её применение позволяет добиться высокого throughput.

  1. Перегрев. И как следствие необходимость отвода большого количества тепла.

  2. Высокое энергопотребление, которое перестало снижаться достаточными темпами после 2006 года. Что выливается в гигантские затраты на электроэнергии в вычислительных центрах.

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

    frac{1}{text{3 ГГц}}

  4. Ограничения на длину электронных цепей, обусловленные всеми перечисленными факторами, вносят дополнительные сложности с разработкой сложных вычислительных схем. По этой причине в своё время было решено отказаться от архитектуры CISC. По этой же причине массовое использование функций наподобие логарифма (а иногда даже простого целочисленного деления) дорого и нецелесообразно в массово-параллельных схемах.

  5. Указанные факторы снижают пропускную способность устройств (throughput), не позволяя ВЦ эффективно масштабировать нагрузку.

Пространство-время в информатике

Для специализированных применений, наподобие блокчейна или специальных типов ИИ, возможно создавать заказные решения в виде ASIC-ов. Но что-то покупка крупнейшего их производителя – Altera – не помогла Intel.

Нужно заметить, что самые продвинутые ИИ-технологии основаны на вычислениях матриц, то есть использовании SIMD [3]-подхода. Это вполне понятный и очевидный метод масштабирования вычислений “вширь” – операции проводятся широким фронтом с использованием разных SSEx, AVX или GPGPU, обрабатывая, например, сразу всю строку матрицы. Это увеличивает пропускную способность, но недостаточно, и узкое место в виде медленного доступа к памяти [4] здесь усугубляет ситуацию.

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

О преобразовании пространства во время и обратно есть фантастический рассказ-хоррор [5].

Развёртка в длину

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

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

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

Предвычисления

Чуть позже у меня возникала идея свести исполнение программы к вычислению некой обобщённой функции. В этом случае вся программы представляется как некая функция-отображение из пространства входных данных (параметров) в пространство выходных данных – некий результирующий агрегат. В чём-то это похоже на функциональщину, но здесь выходная функция не задаётся кодом алгоритма, она как бы уже предварительно вычислена на этапе компиляции, и нужно лишь подставить параметры – входные данные программы. Пространство параметров при этом понимается в самом общем виде, мы учитываем все возможные интервалы значений по всем измерениям и рассматриваем их декартово произведение. Какие именно интервалы значений учитывать – задаёт исходный код алгоритма, а именно каждое условное ветвление разбивает интервал соответствующего параметра на части. Таким образом реализуется итоговая предвычисленная функция, значение которой зависит только от входных данных. С идеей такого подхода к компиляции я в своё время даже обратился к известному в узких кругах специалисту – Голосову И.С [6]., бывшему тогда моим шефом, в надежде получить совет или критику. В итоге директор, опытный в таких вопросах – разборе разных идей и предложений – за 30 секунд накидал мне 4 или 5 критических замечаний, которые я даже запомнить все не успел. Помню лишь самое серьёзное – проблемы синхронизации и в целом многопоточности, о том как оно будет ложиться на такой подход. И проблема вполне понятная – в функциональном программировании, например, всё хорошо работает только в случае чистых функций.

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

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

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

Всё довольно просто

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

Фотоника

Ну и вот, наконец, мы добрались до самого главного. Причём здесь фотоника?

ИИ и развёртка в фотонику - 3

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

ИИ и развёртка в фотонику - 4

Конечно же главным преимуществом фотоники (в чистом виде) является молниеносная скорость – как скорость распространения сигнала, так и скорость переключения (по сути тоже скорость света). Состояние чистой фотонной системы меняется не в конце такта, а моментально, реагирование [8] на изменение сигнала происходит мгновенно. Наверняка, это может найти применение в системах реального времени.

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

Ограниченное хранение данных налагает особые свойства на вычислительную систему на основе фотоники. В этом смысле они будут больше похожи на ASIC-и или в лучшем случае на ПЛИСы. И соответственно программирование такой системы осуществляется наподобие проектирования ПЛИС схемы, алгоритмы преобразуются в нечто наподобие кода на Verilog или VHDL, и в итоге код будет зашит в схему. То есть фотоника – это пока оперирование на уровне железа, с предопределёнными параметрами. Тем не менее, такой режим вполне подходит для режима инференса ИИ, причём с гигантской пропускной способностью. Многие проблемы ИИ таким образом это даже может решить.

ИИ и развёртка в фотонику - 5

Есть некоторые компании, пытающиеся развивать фотонику – Lightelligence, Light Matter. Ну и конечно направление Photonics в компании NVidia, которая купила Mellanox, уже применяет фотонику не только для сетевых интерконнектов, но и внутри своих стоек.

Автор: mahairod

Источник [9]


Сайт-источник BrainTools: https://www.braintools.ru

Путь до страницы источника: https://www.braintools.ru/article/20282

URLs in this post:

[1] запустить: https://www.youtube.com/watch?v=RxuSvyOwVCI

[2] закон Амдала: https://ru.wikipedia.org/wiki/%D0%97%D0%B0%D0%BA%D0%BE%D0%BD_%D0%90%D0%BC%D0%B4%D0%B0%D0%BB%D0%B0

[3] SIMD: https://ru.wikipedia.org/wiki/%D0%A2%D0%B0%D0%BA%D1%81%D0%BE%D0%BD%D0%BE%D0%BC%D0%B8%D1%8F_%D0%A4%D0%BB%D0%B8%D0%BD%D0%BD%D0%B0

[4] памяти: http://www.braintools.ru/article/4140

[5] фантастический рассказ-хоррор: https://www.braintools.ru/ru/articles/944000/

[6] Голосову И.С: https://www.youtube.com/watch?v=Sw7BzjSmuqg

[7] может применяться: https://www.youtube.com/watch?v=b_PS8o8pi9A

[8] реагирование: http://www.braintools.ru/article/1549

[9] Источник: https://habr.com/ru/articles/953310/?utm_source=habrahabr&utm_medium=rss&utm_campaign=953310

www.BrainTools.ru

Rambler's Top100