Безумцы реализовали MicroGPT от Andrej Karpathy полностью на ПЛИС-логике.
Без графического процессора.
Без PyTorch.
Без циклов инференса на центральном процессоре.
Только трансформер, «зашитый» в железо, генерирующий 50 000+ токенов в секунду.
Модель небольшая, но идея не в этом: инференс не обязан существовать только в программной среде.
Целью было не сделать максимально большую модель.
Целью было представить весь путь инференса трансформера в виде, читаемом для железа: память, счётчики, состояния конечных автоматов, аккумуляторы, таблицы поиска и многотактные арифметические блоки.
Базовая схема использует фиксированную арифметику Q4.12 и веса, хранящиеся в ПЗУ.
Большая часть модели сводится к одной повторяющейся операции: матрично-векторному умножению. Поэтому был реализован переиспользуемый 16-канальный потоковый блок матрично-векторных вычислений и затем он временно мультиплексируется на Q/K/V, MLP и выходной слой языковой модели.
Самым интересным оказался механизм внимания.
В Python это одно аккуратное уравнение.
В RTL это превращается в расписание: генерация Q/K/V, проход по скалярным произведениям, отслеживание максимума, приближённое вычисление экспоненты, накопление, деление, смешивание V, затем обратная проекция.
https://github.com/Luthiraa/TALOS-V2
👉 @PythonPortal
Post #5751
6.61K
- 👍 11
- ❤ 3
- 🔥 2