Добавить в корзинуПозвонить
Найти в Дзене
Машинное обучение

📌 Студенты собрали GPT целиком в железе на учебной плате

Лютира Абейкун и Криш Чхаджер из Университета Торонто взяли microGPT Андрея Карпатого и переписали его на языке описания цифровых схем SystemVerilog. Так родился проект TALOS-V2, который работает на образовательной плате DE1-SoC с FPGA Cyclone V, которую обычно дают в вузах для лабораторных работ. Инференс на ней не выполняет ни GPU, ни PyTorch, ни даже CPU - каждый шаг трансформера, от эмбеддингов и самовнимания до нормализации, MLP и выбора следующего токена, превращён в физическую цепь из логических элементов. Сама модель - символьный microGPT, обученный на датасете имён Карпатого: символ за символом она генерирует новые имена. Маленькая по меркам индустрии, но устроенная как взрослые генеративные модели: те же блоки, те же связи. Внутри FPGA числа хранятся не как привычные дроби с плавающей точкой, а в формате Q4.12 - 16 бит, разделённые на целую и дробную часть. Это компромисс: точности хватает для такой модели, а схема получается компактной и предсказуемой по времени работы.

📌 Студенты собрали GPT целиком в железе на учебной плате

Лютира Абейкун и Криш Чхаджер из Университета Торонто взяли 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.

🟡Статья

🖥GitHub

@machinelearning

#AI #ML #FPGA #RTL #Transformer #TALOS