TPU на FPGA размером с M.2 SSD : 48 ГБ памяти и до 62 токенов/с на FPGA?
После экспериментов с openTPU и запуска BitNet на старой Kintex-7 за $50 задумался: а что, если сделать собственный TPU в формфакторе M.2 ?
AMD недавно представила Kintex UltraScale+ Gen 2. У старшей 2KU050P довольно интересные характеристики:
1 872 DSP
50,9 Мбит внутренней памяти
6 контроллеров LPDDR5X
До 102,4 ГБ/с теоретической пропускной способности памяти
Последнее особенно интересно. При генерации LLM часто упираемся не в вычисления, а в скорость чтения весов из памяти.
Параллельно рассматриваю и другие варианты: Kintex UltraScale+ XCKU5P и Kintex UltraScale XCKU040/XCKU060. У них нет таких встроенных контроллеров LPDDR5X, поэтому придётся использовать DDR4 и отдельно рассчитывать пропускную способность.
Набросал концепт KEDR-M.2:
FPGA 2KU050P
Плата 31 × 80 мм с разъёмом M.2 M-key (ширина нестандартная)
3 × LPDDR5X x64 по 16 ГБ = 48 ГБ
6 каналов памяти x32
openTPU с целевой матрицей 64 × 48
PCIe Gen4 x4
Посчитал теоретический предел скорости генерации.
Если взять 102,4 ГБ/с и предположить 70% эффективности использования памяти, получим около 71,7 ГБ/с.
Например, для Bonsai 8B с размером весов 1,15 ГБ это даёт около 62 ток/с, а для Qwen3-8B Q4_K_M (5,03 ГБ) - около 14 ток/с.
Здесь только теоретические пределы по пропускной способности памяти при условных 70% эффективности, а не результаты измерений. Реальная скорость будет зависеть от вычислительного ядра, KV-cache и других накладных расходов.
Самой платы тоже пока нет - это концепт. Разводку LPDDR5X, питание, тепловой режим и размещение FPGA на такой площади ещё предстоит проверить.
FPGA позволяет адаптировать железо непосредственно под формат модели.
Что думаете на счет такой платы? Что я упустил в расчётах? - конечно же цена сие добра по сравнению с готовыми GPU)
Продолжу публиковать эксперименты с FPGA и собственными AI-ускорителями здесь, на Хабре.