Forwarded from Machinelearning
Лютира Абейкун и Криш Чхаджер из Университета Торонто взяли microGPT Андрея Карпатого и переписали его на языке описания цифровых схем SystemVerilog. Так родился проект TALOS-V2, который работает на образовательной плате DE1-SoC с FPGA Cyclone V, которую обычно дают в вузах для лабораторных работ.
Инференс на ней не выполняет ни GPU, ни PyTorch, ни даже CPU - каждый шаг трансформера, от эмбеддингов и самовнимания до нормализации, MLP и выбора следующего токена, превращён в физическую цепь из логических элементов.
Сама модель - символьный microGPT, обученный на датасете имён Карпатого: символ за символом она генерирует новые имена. Маленькая по меркам индустрии, но устроенная как взрослые генеративные модели: те же блоки, те же связи.
Внутри FPGA числа хранятся не как привычные дроби с плавающей точкой, а в формате Q4.12 - 16 бит, разделённые на целую и дробную часть.
Это компромисс: точности хватает для такой модели, а схема получается компактной и предсказуемой по времени работы.
Веса заранее переведены в шестнадцатеричные файлы и загружены прямо в постоянную память чипа.
Сердце схемы - один универсальный вычислительный блок на 16 параллельных каналов, который умеет умножать вектор на матрицу.
Он по очереди обслуживает все ключевые операции трансформера: проекции Q, K, V, выходную проекцию внимания, оба слоя MLP и LM-head.
Самый трудный для железа блок - softmax, нормирующая функция внутри механизма внимания. Экспоненту считает таблица заранее заготовленных значений, деление выполняет специальный многотактный модуль, заточенный под узкий диапазон входных чисел и потому быстрее универсального.
В механизме внимания деление - самая медленная операция и тормозит весь блок, поэтому таких делителей поставили сразу 2: они работают параллельно и снимают эту задержку. Поиск максимума совмещён с подсчётом скалярных произведений, чтобы не делать лишний проход по данным.
Даже выбор следующего токена происходит внутри чипа: алгоритм xorshift даёт случайность, а специальная схема сэмплирования бережёт распределение от перекоса в сторону младших символов. Хост-компьютер только запускает генерацию и забирает готовый результат.
В итоге плата устойчиво выдаёт больше 50 000 токенов в секунду, зафиксированный пик - около 53 000.
Проект открыт на GitHub: SystemVerilog-ядро, тестбенч под ModelSim, Python-утилиты для экспорта весов и запуска инференса через JTAG, скрипты под Quartus.
@ai_machinelearning_big_data
#AI #ML #FPGA #RTL #Transformer #TALOS
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍1