AIKraft Agents
Главная/Блог/Аналитика/qwenGPU: Встраиваем CUDA-процессор в…
Аналитика8 мин чтения · 2 ноября 2026 г.

qwenGPU: Встраиваем CUDA-процессор в веса LLM

Разбираем экспериментальный проект qwenGPU, где модель Qwen3.5-2B выполняет реальный CUDA-код внутри своих весов, используя архитектуру Gated DeltaNet.

Представьте себе ситуацию, когда вы не просто используете нейросеть для генерации текста или кода, а запускаете внутри неё полноценный процессор. Звучит как фантастика из научной фантастики, но именно это демонстрирует проект qwenGPU. Это не просто еще одна оптимизация или квантование модели. Это радикальный архитектурный эксперимент, в котором разработчик Vixhal (@TheVixhal) смог «вплавить» симуляцию графического процессора (GPU) прямо в веса языковой модели Qwen3.5-2B. Результат? Модель способна выполнять реальные вычисления CUDA, компилированные в PTX, непосредственно во время своих прямых проходов (forward passes).

Для разработчиков и исследователей это открывает совершенно новую парадигму: точные вычисления происходят не «рядом» с LLM, как это обычно бывает при использовании внешних библиотек, а «внутри» неё. В этой статье мы подробно разберем, как технически возможно поместить GPU в веса модели, какие ограничения это накладывает, как работает память и регистры, и что это значит для будущего гибридных систем искусственного интеллекта. Мы также сравним qwenGPU с другими подобными экспериментами, такими как Qwenputer и Percepta, чтобы понять место этого проекта в общей картине развития AI-инфраструктуры.

01Что такое qwenGPU и как устроена эта «матрешка»?

Суть проекта qwenGPU заключается в модификации базовой модели Qwen3.5-2B. Оригинальная модель состоит из 24 слоев трансформера. В экспериментальной версии qwenGPU перед этими 24 обученными слоями добавляются 45 дополнительных слоев. Важно подчеркнуть: эти 45 слоев не обучались. Их веса были вычислены компилятором, а не собраны из данных.

Эти дополнительные слои формируют виртуальную машину, которая имитирует работу SIMT (Single Instruction, Multiple Threads) GPU. Архитектура этого внутреннего «процессора» удивительно компактна, но функциональна. Он имеет 4-канальную структуру, 15 регистров на канал, 4-ступенчатый конвейер, 32-блочное ПЗУ (ROM) и 126 слов глобальной памяти. Вся эта сложность реализована исключительно с помощью типов слоев, уже существующих в Qwen3.5: линейной внимательности Gated DeltaNet и многослойных перцептронов SwiGLU.

Ключевым элементом, позволяющим это осуществить, является рекуррентное состояние Gated DeltaNet. В «головках» этой схемы затвор удерживается открытым, а сила записи равна 1. Каждое ключевое значение (key) является one-hot вектором. Каждое обновление перезаписывает ровно одну строку, а one-hot запрос читает её обратно. Таким образом, каждая строка состояния работает как ячейка памяти. Это состояние хранит программу (ROM), регистры и глобальную память. В документации указано 16 строк регистров на канал, одна из которых всегда читает ноль, что идеально соответствует 15 используемым регистрам в реальной архитектуре.

💡
Техническая деталь. Поддержка целочисленной арифметики, предикатов, ветвлений и циклов, а также разделяемой памяти, атомарных операций (atomicAdd) и синхронизации потоков (__syncthreads()) делает этот внутренний GPU способным выполнять полноценные CUDA-ядра, а не просто простейшие операции.

02Как происходит запуск CUDA-кода внутри модели?

Процесс выполнения кода в qwenGPU можно разделить на два этапа: подготовка хостом и выполнение самой моделью. Хост (ваш компьютер) берет на себя роль компилятора NVRTC и драйвера CUDA. Он компилирует CUDA-код в PTX (Parallel Thread Execution) с помощью clang, а затем понижает PTX до машинных блоков. Эти блоки, вместе с входными массивами данных, подаются модели в виде токенов.

После этого начинается магия. Модель сама «пишет» запуск. Каждый токен EXEC(b, w) запускает блок для варпа (warp) в рамках одного прямого прохода. Токены VAL, следующие за ними, несут результаты из регистров. Записи в память возвращаются в виде записей MEM. Хост лишь читает результаты из рекуррентного состояния и не выполняет никаких вычислений самостоятельно. Это пример того, как LLM становится вычислительным ядром, а не просто генератором текста.

Наглядный пример: в демонстрационном видео показано скалярное произведение векторов [1, 2, 3] и [4, 5, 6]. Результат — 32. Модель сгенерировала этот запуск всего за 47 токенов. Это демонстрирует, что модель не просто угадывает ответ, а симулирует пошаговый процесс вычисления.

03Влияние на языковые способности модели

Главный вопрос, который возникает у любого, кто видит подобный эксперимент: не сломает ли это способность модели к нормальному общению? Оказывается, нет. Разработчик применяет специфическую меру для оценки этого влияния. Цепочка вычислений (circuit) «заглушается» для текстовых токенов, а веса самого Qwen остаются неизменными.

Распределение следующего токена в объединенной модели остается в пределах расхождения Кульбака-Лейблера (KL) около 7e-4 от оригинальной модели. Это крайне малое значение, которое свидетельствует о том, что языковые способности модели практически не пострадали. Модель сохраняет свою способность генерировать связный текст, параллельно выполняя вычисления. Это критически важно для практического применения, так как позволяет использовать модель как универсальный инструмент, способный и говорить, и считать.

⚠️ Важно.
Точность вычислений. В тестах разработчика каждый запуск был точным при проверке с флагом --check replay. Это означает, что модель не просто аппроксимирует результат, а воспроизводит его с битовой точностью, характерной для цифровых вычислений.

04Точность и производительность: сравнение с реальным GPU

Все цифры в данном проекте являются самоотчетными и измерялись на оборудовании Apple Silicon с использованием MPS (Metal Performance Shaders) в формате bf16. Тем не менее, результаты впечатляют. Справочный интерпретатор совпал с реальным NVIDIA Tesla T4 в 49 из 49 тестовых ядер. Это доказывает, что архитектура способна эмулировать поведение реального железа.

В режиме «Normal» модель ответила 20 из 24 выбранных вопросов чата числами, вычисленными GPU. В режиме «Advanced» Qwen написала правильное ядро CUDA с первой попытки в 4 из 5 вопросов. Однако стоит отметить, что README предупреждает: CUDA-код для модели объемом 2B все еще ненадежен. Это скорее исследовательский прототип, чем готовое решение для продакшена.

Скорость работы — слабое место проекта. На Apple MPS производительность составляет всего 10-15 токенов в секунду. Для сравнения, Qwen-written CUDA прошел 4 из 5 тестов, но скорость остается ограничивающим фактором. Это не runtime для высокопроизводительных вычислений, а демонстрация концепции.

05Сравнение с Qwenputer и Percepta

qwenGPU не является первым проектом, пытающимся встроить вычислительные машины в трансформеры. Для понимания его места в экосистеме, полезно сравнить его с двумя другими известными проектами: Qwenputer и Percepta.

Qwenputer от Divyansh Agrawal компилирует 32-битный процессор RISC-V (RV32IM + Zba + bignum) в Qwen3.5-4B. В отличие от qwenGPU, который использует 45 слоев для GPU, Qwenputer использует 11 слоев для CPU. Qwenputer работает с C и MicroPython, а qwenGPU — с CUDA. Оба используют состояние Gated DeltaNet для хранения состояния, но архитектура вычислительного ядра различается.

Percepta построила интерпретатор WebAssembly внутри трансформера с 2D-головами внимания еще в марте 2026 года. Percepta работает с C, скомпилированным в WebAssembly, и заявляет о скорости более 30 000 токенов в секунду на CPU, что значительно быстрее qwenGPU. Однако Percepta не раскрывает детали лицензирования и точного количества слоев.

Функция qwenGPU Qwenputer (RISC-V) Percepta
Базовая модель Qwen3.5-2B, 24 слоя Qwen3.5-4B Кастомный трансформер с 2D-головами
Машина 4-канальный SIMT GPU 32-бит RISC-V Интерпретатор WebAssembly
Языки/Код CUDA (из PTX) C, MicroPython C (в WebAssembly)
Компилированные слои 45 11 Не раскрыто
Где хранится состояние Gated DeltaNet Gated DeltaNet Трассировка выполнения в контексте
Роль хоста Компилирует CUDA, загружает токены Загружает прошивку, не вычисляет Не раскрыто
Проверка корректности Совпадение с Tesla T4: 49/49 0 расхождений в ~230k позициях Миллионы надежных шагов
Скорость 10-15 токенов/с (Apple MPS) ~3,200 токенов/с (L4, Triton) 30,000+ токенов/с (CPU)
Сдвиг текста (KL) ~7e-4 6e-4 Не применимо
Лицензия MIT код; Apache-2.0 чекпоинт MIT код; Apache-2.0 веса Не раскрыто

Важно отметить, что показатели скорости используют разное оборудование и типы токенов, поэтому они не являются прямо сопоставимыми. Однако ясно, что qwenGPU жертвует скоростью ради возможности работы с CUDA, что делает его уникальным в нише GPU-эмуляции внутри LLM.

06Требования к системе и запуск

Для запуска qwenGPU вам потребуется достаточно мощное оборудование. Быстрый старт (quickstart) требует Python 3.11+, утилиты uv, команду just и около 16 ГБ свободной оперативной памяти. Для работы в режиме Advanced также необходим компилятор clang с бэкендом NVPTX.

Команда just build загружает Qwen3.5-2B и компилирует GPU в него. Важно: готовые пресобранные чекпоинты не публикуются. Вы должны собрать модель самостоятельно. Собранный чекпоинт подпадает под лицензию Apache-2.0 Qwen. Это означает, что вы можете использовать его в коммерческих целях, но должны соблюдать условия лицензии.

Для разработчиков, работающих в России, доступ к GitHub и Hugging Face может быть затруднен из-за санкций. Однако, поскольку проект открыт и использует стандартные инструменты (Python, clang), локальный запуск возможен при наличии доступа к исходному коду. Рекомендуется использовать зеркала или прокси для загрузки моделей, если прямой доступ недоступен. Также стоит учесть, что для компиляции CUDA-кода в PTX может потребоваться установка NVIDIA CUDA Toolkit, даже если вы запускаете модель на CPU или Apple Silicon, так как компиляция происходит на хосте.

📌 Факт.
Лицензирование. Код проекта распространяется под лицензией MIT, что позволяет свободное использование, модификацию и распространение. Чекпоинты моделей лицензированы Apache-2.0, что также является одной из самых открытых лицензий для коммерческого использования.

07Что это значит на практике?

Проект qwenGPU — это не готовый продукт для внедрения в промышленные системы. Это исследовательский прототип, демонстрирующий возможность точных вычислений внутри весов LLM. Однако он открывает несколько важных направлений для будущего:

  1. Гибридные вычисления: Возможность совмещать языковое понимание с точными математическими вычислениями без потери качества текста.
  2. Образование и исследования: Отличный инструмент для изучения того, как трансформеры могут эмулировать другие вычислительные архитектуры.
  3. Безопасность: Выполнение кода внутри модели может быть более контролируемым, чем выполнение внешнего скрипта, так как все вычисления происходят в рамках одного контекста.

Для разработчиков, интересующихся AI-инфраструктурой, qwenGPU является важным маркером того, что границы между «генеративным ИИ» и «вычислительным ИИ» начинают стираться. Хотя скорость и надежность пока не позволяют использовать это в продакшене, потенциал огромен. Следующим шагом может быть оптимизация этих архитектур для работы на более мощных моделях и с использованием более эффективных методов компиляции.

Если вы хотите углубиться в тему, рекомендуем изучить репозиторий GitHub, справочник qgpu CUDA, карточку модели Qwen3.5-2B и оригинальный пост в X. Также не забудьте подписаться на наши обновления в Telegram и Reddit, чтобы не пропустить новые материалы об AI-инновациях.

Источник: MarkTechPost ↗