Перейти к содержанию
Публикация AiManual

Запуск Qwen3.5 на FPGA: 9B и 27B INT4 на дешёвых платах с eBay - реальные цифры и компромиссы

Две FPGA-платы SQRL FK33 за $280 запускают Qwen3.5-9B INT4: около 6 tok/s на prefill и 3,2 tok/s на генерации при 75 МГц. Разбираем измеренные цифры, расчётные

Коротко

Что будет в материале

  1. 01

    Что такое llm.vhdl и почему FPGA снова интересны для локального инференса

  2. 02

    Железо: SQRL FK33, Jungle Cat и Jungle Cat Lite - что покупать на eBay

  3. 03

    Qwen3.5-9B INT4 на двух FK33: измеренная производительность

  4. 04

    Qwen3.8-27B INT4: расчётные оценки и масштабирование

Инференс Qwen3.5-9B INT4 крутится на двух FPGA-платах SQRL FK33, купленных примерно за $280 каждая. Генерация идёт со скоростью около 3,2 токена в секунду, prefill - около 6 токенов в секунду. Автор проекта llm.vhdl выложил эти цифры вместе с результатами послойной сверки выхода модели с llama.cpp: исходный отчёт опубликован в r/LocalLLaMA.

Проект llm.vhdl открыт под MIT-лицензией. До него автор занимался инференсом llama.c на плате AXU3EG, для реализации в основном использовал Opus 4.8 (CC), а для версии Qwen - Fable, Opus 5.5 и Kimi K3 плюс собственный архитектурный вклад. Деталь важная для оценки порога входа: перед нами не готовая сборка, а RTL-разработка с открытым кодом.

FPGA привлекают по одной причине. На вторичном рынке появились платы с HBM2: FK33 несёт 8 ГБ HBM2 с пропускной способностью около 400 ГБ/с. Генерация токенов упирается в чтение весов из памяти, поэтому гигабайты в секунду здесь конвертируются в токены в секунду почти напрямую. За такие деньги полосу HBM2 больше нигде не получить.

Что такое llm.vhdl и почему FPGA снова интересны для локального инференса

llm.vhdl - открытый проект, в котором LLM-инференс реализован на FPGA вместо CUDA. Готового софта, который можно поставить одной командой, здесь нет по определению: вы работаете с RTL, синтезом и битстримами. Конечная цель автора - движок на 4 кристаллах XCVU35P с 32 ГБ HBM2 суммарно, но для этого нужна кастомная несущая плата, а не два купленных на eBay модуля.

Смысл затеи в экономике. Плата с HBM2 и полосой около 400 ГБ/с за $280 не имеет прямых аналогов среди GPU, а именно полоса памяти задаёт верхнюю границу скорости генерации. Отсюда и интерес: если модель влезает в 8 ГБ, то вы получаете HBM2 по цене оперативной памяти.

Об ограничениях стоит сказать сразу, чтобы не создавать ложных ожиданий. Это исследовательский проект: автор сам пишет, что идёт к идеальному FPGA-движку инференса и что для конфигурации на четырёх XCVU35P потребуется собственная плата-носитель. Повторить текущий результат без опыта в FPGA-тулчейне не выйдет.

Железо: SQRL FK33, Jungle Cat и Jungle Cat Lite - что покупать на eBay

Почему HBM2 и 400 ГБ/с важны для LLM

При генерации каждого токена модель прочитывает свои веса. Веса 9B в INT4 занимают порядка 4,5-5 ГБ, веса 27B в INT4 - около 14,5 ГБ. При полосе около 400 ГБ/с теоретический потолок для 9B лежит в районе нескольких десятков токенов в секунду, и реальные цифры всегда ниже из-за накладных расходов на вычисления и передачу данных между кристаллами.

Пропорция при этом сохраняется: полоса памяти задаёт верхнюю границу скорости, и никакая оптимизация RTL её не обходит. Именно поэтому старые FPGA-платы с HBM2 внезапно оказались интересны для локального инференса.

SQRL FK33: кристалл XCVU35P, 8 ГБ HBM2, полоса около 400 ГБ/с, цена около $280. Для INT4-модели весом 4,5-5 ГБ (это как раз 9B) памяти хватает с запасом.

SQRL Jungle Cat: ex-mining плата за $375, внутри которой стоят два FK33, соединённых 8 линиями GTY, а битстрим загружается по Ethernet. Покупатель сразу получает два кристалла и интерконнект между ними, что для конвейерной схемы важнее, чем звучит.

Jungle Cat Lite - более слабый вариант. Быстрой загрузки весов без доработки печатной платы у неё нет, генерация тактов для линий GTY тоже отсутствует. Второе автор называет легко исправимым: достаточно припаять несколько компонентов. Первое требует вмешательства в PCB.

Рядом с этим железом любопытно выглядит опыт с бывшими майнинговыми платами BC-250: две такие автор проекта купил за $60 и $75 и называет покупкой с невероятным соотношением производительности к цене, используя их, в частности, для программирования Jungle Cat. Похожий сценарий на пяти BC-250 разобран в материале про кластер из пяти BC-250 с 71 ГБ VRAM.

Qwen3.5-9B INT4 на двух FK33: измеренная производительность

Это единственная конфигурация, которая действительно запущена, а не посчитана на бумаге. Qwen3.5-9B INT4 работает на двух платах FK33 при частоте 75 МГц. Prefill: около 6 токенов в секунду на промпте из 256 токенов и примерно 5,5 токена в секунду на промпте в 2,3k токенов. Генерация: около 3,2 токена в секунду в начале и примерно 2,4 токена в секунду при контексте 2-3k. Все эти числа взяты из отчёта автора.

Отдельного внимания заслуживает способ проверки. Выход модели сопоставлен с llama.cpp послойно: сравниваются промежуточные результаты по слоям, а не только финальный текст. Для нестандартного железа такая сверка критична, потому что без неё отладка RTL превращается в гадание по обрывкам фраз.

Как устроен pipeline split между двумя платами

Веса 9B в INT4 занимают около 4,5-5 ГБ и помещаются в 8 ГБ HBM2 одной платы. Вторая плата нужна не ради объёма памяти, а ради скорости: слои делятся на две части, каждая плата считает свою половину, а промежуточные активации (residual) между картами проносит хост. Каждый такой перенос добавляет задержку, поэтому выигрыш от второй платы меньше двукратного.

Практический вывод по 9B простой: конфигурация работает и воспроизводима на уровне кода, но скорость генерации лежит в районе 2-3 токенов в секунду. Для интерактивной работы это мало, для фоновых задач и экспериментов - терпимо.

Qwen3.8-27B INT4: расчётные оценки и масштабирование

Здесь начинается самое важное для честного чтения: модель 27B INT4 на FPGA ещё не запускалась. Все числа ниже - расчётные, полученные экстраполяцией измеренного профиля 9B на большее количество операций и другие конфигурации кристаллов. Это модель, а не бенчмарк, и в отчёте это указано прямо.

КонфигурацияЧастотаPrefillГенерацияКонтекст 16k
Одна Jungle Cat (2x VU35P), дизайн FK33 как есть75 МГц~2 ток/с~1,1 ток/с~0,5 ток/с
Два кристалла, RTL увеличен под больший кристалл75 МГц~6 ток/с~3 ток/с (~5,5 ток/с с tensor parallelism)~1,1 ток/с
Два кристалла, RTL под больший кристалл200 МГц~16 ток/с~8 ток/с (~15 ток/с с tensor parallelism)~3 ток/с
4x VU35P, 4-way tensor parallelism200 МГц~25 ток/с~25 ток/с~10 ток/с, ~1 ток/с на 262k

Из таблицы видно, где спрятан основной резерв. Переход с 75 на 200 МГц даёт кратный рост, но требует оптимизации RTL и повышенного напряжения ядра, а это отдельная инженерная задача. Tensor parallelism добавляет ещё немного за счёт второго кристалла. Самый заметный скачок даёт увеличение RTL под большой кристалл: одна и та же физическая плата начинает считаться иначе.

Флагманский сценарий - четыре кристалла VU35P с 4-way tensor parallelism на 200 МГц: около 25 токенов в секунду на prefill и столько же на генерации при коротком контексте. На контексте 16k оценка падает до ~10 токенов в секунду, а на полных 262k - до ~1 токена в секунду.

Почему 27B не влезает в две платы по контексту

Веса 27B в INT4 занимают около 14,5 ГБ. Две платы дают 16 ГБ HBM2, то есть место под веса есть, а под KV-кэш почти ничего не остаётся. Отсюда жёсткий предел: две платы упираются примерно в 45k токенов контекста, дальше KV-кэш не помещается рядом с весами. Полные 262k токенов требуют четырёх кристаллов, то есть 32 ГБ HBM2 суммарно.

Для длинного контекста это граница архитектуры, а не вопрос настройки. Уменьшение точности KV-кэша в отчёте не рассматривается, так что рассчитывать на обход ограничения двумя платами не стоит.

FPGA vs GPU: где выигрывает подход и где проигрывает

Проигрыш очевиден и начинается со скорости. 3,2 токена в секунду на 9B - это медленно: текст печатается быстрее, чем модель его генерирует. Для сравнения полезны внутренние разборы. Материал о запуске Qwen 3.8 27B на одной RTX 5090 показывает методику честного сравнения prefill и decode на GPU-стенде, а сборка домашнего сервера на четырёх Radeon V620 даёт 128 ГБ VRAM примерно за $3000. Это другой ценовой уровень, но и другая скорость.

Выигрыш FPGA лежит в цене за полосу памяти и в доступности HBM2. $280 за 8 ГБ HBM2 с ~400 ГБ/с - предложение, которого нет на рынке GPU. Второй плюс - открытый код под MIT: можно разбираться, менять RTL и учиться на живом проекте.

Сложность настройки несопоставима с GPU. Нужны навыки схемотехники, работы с FPGA-тулчейном, а в отдельных случаях паяльник. Энергопотребление FK33 в отчёте не приводится, поэтому сравнивать по ваттам на токен здесь нечем: этот параметр придётся измерять самостоятельно.

Практические ограничения и подводные камни

Загрузка весов на Jungle Cat идёт медленно, и автор прямо пишет, что ищет способы это ускорить. Для модели на 14,5 ГБ это не мелочь: время старта влияет на то, насколько вообще удобно гонять эксперименты.

Jungle Cat Lite добавляет два собственных пункта. Генерацию тактов для линий GTY нужно восстанавливать пайкой компонентов, а быстрая загрузка весов без доработки печатной платы недоступна. Это уже уровень, на котором нужны не только софтверные навыки.

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

Порог входа в проект выглядит так: уверенное владение VHDL или Verilog, опыт синтеза и отладки на реальном железе, умение читать чужой RTL. Без этого MIT-лицензия мало помогает, потому что лицензия даёт права, а не навыки.

ASIC-перспектива: куда движется проект

Автор рассматривает перенос RTL в кремний. Оценка сделана для техпроцесса TSMC 2023 N3 с шестью стеками HBM3 того же года и полосой 4,9 ТБ/с. На 2 ГГц модель 27B работала бы примерно на 294 токена в секунду при коротком контексте, 106 токенов в секунду на 16k и 10 токенов в секунду на 262k при потреблении от 125 до 340 Вт.

Это гипотетический расчёт, а не продукт и не план производства. Процесс и память в оценке взяты из 2023 года, а не из доступного сегодня производства, поэтому воспринимать цифры стоит как демонстрацию потенциала архитектуры. Полезны они другим: они показывают, что тот же RTL при переходе в кремний выходит на уровень производительности, который FPGA на 75 МГц не даст никогда.

Кому это нужно и стоит ли повторять

FPGA-инференс на дешёвых платах с eBay - нишевое решение для тех, кто готов работать с RTL и паяльником. Критерий выбора простой. Если нужен работающий локальный инференс с приемлемой скоростью, разумнее смотреть на GPU-стенды и сборки вроде домашнего сервера на 128 ГБ VRAM. Если интересно разобраться, как LLM считает внутри, сколько реально даёт HBM2 и почему полоса памяти важнее тактовой частоты, проект llm.vhdl под MIT - редкая возможность потрогать это руками.

Начинать стоит с 9B на двух FK33: только эта конфигурация подтверждена измерениями и сверена с llama.cpp послойно. Оценки для 27B держите в голове как ориентир, но не как обещание. И перед покупкой Jungle Cat Lite проверьте, готовы ли вы паять компоненты для линий GTY и дорабатывать плату ради быстрой загрузки весов.

Подписаться на канал