vixhal-baraiya/qwenGPU
机器学习在 Qwen3.5-2B 权重中编译出 SIMT GPU,用模型自身执行真实 CUDA 内核的实验性合并模型。
项目介绍
qgpu 在 Qwen3.5-2B 的权重里加入了一块由编译器生成、而非训练得到的 SIMT GPU。它在 Qwen 原有 24 层之前增加 45 层作为 GPU,硬件包含每个 warp 4 个 lane、每 lane 15 个寄存器、4 级流水线、32 个程序块和 126 个全局内存字。寄存器和内存存放在 Qwen3.5 Gated DeltaNet 层的循环状态中,一次内核启动被表示为模型生成的 token 流(项目概述、GPU 状态设计)。
它面向研究模型内部计算、编译进权重的电路以及非常规推理实验的读者,不是通用 GPU 模拟器,也不能替代真实 CUDA 硬件。
启动方式
宿主机用 clang 把 CUDA 编译成 PTX,再将 PTX 降为 GPU 的机器块,并把程序镜像和输入数组作为 token 交给模型。随后由 Qwen 生成执行记录:哪个 warp 运行哪个块、寄存器值、分支和内存写入。宿主机只读取模型循环状态中的结果数组,不自行计算。普通模式把算术写成表达式并由现成内核执行;高级模式由 Qwen 参照 qgpu CUDA 参考文档自己编写 CUDA 内核。终端聊天界面会实时显示调度器、程序 ROM、流水线、寄存器文件和内存(工作原理、宿主机与权重分工)。
快速使用
需要 Python 3.11+、uv、just、约 16 GB 空闲内存,以及 Apple silicon、NVIDIA GPU 或 CPU。高级模式还需要带 NVPTX 后端的 clang,可执行 brew install llvm,或用 CLANG 环境变量指向其路径。
git clone https://github.com/vixhal-baraiya/qwenGPU && cd qwenGPU
just setup
just build
just chat
just build 会下载 Qwen3.5-2B 并把 GPU 编译进去。进入聊天后输入 / 查看命令。也可以用一次性 bridge、合并模型对比检查和聊天评测脚本(快速开始、其他入口):
uv run python -m qgpu.bridge build/merged-2b "What is the sum of 12, 7, 30 and 5?"
uv run python scripts/merged_check.py models/Qwen3.5-2B build/merged-2b
uv run python scripts/eval_chat.py build/merged-2b --samples 3
结果与限制
作者报告,在 Apple silicon 上使用 MPS 和 bf16 时,每次启动的模型 token 都与电路参考解释器逐 token 一致,而该解释器在 49 个测试内核上与 NVIDIA T4 一致。合并模型的下一个 token 分布与原模型的 KL 约为 7e-4。普通模式在 24 个抽样聊天问题中有 20 个给出由 GPU 计算出的数字;高级模式在 5 个简单向量和矩阵问题中首次写对 4 个内核。README 明确指出 2B 模型写的 CUDA 仍不可靠,依赖结果时应使用普通模式(结果)。
在 MPS 上,一次启动需要生成几十到几百个 token,速度约为每秒 10–15 个 token。项目依赖 just build 生成的合并检查点,不是原版 Qwen 模型的直接推理服务。代码采用 MIT 许可证;合并检查点因为拓宽了配置并增加了层,权重沿用 Qwen3.5 的 Apache-2.0 条款(许可证与检查点条款)。
HotRepo 点评
qgpu 在 HotRepo 的新项目记录中规模不大:108 Star、16 Fork,2026-11-04 的统计窗口内新增 7 Star。这些数字说明的是早期关注,而非采用情况。真正值得读的是演示背后的具体机制:编译器生成的 GPU 电路、PTX 降级、以 token 编码的执行日志,以及用参考解释器逐 token 复核。作者对高级模式 CUDA 正确性的保留,是把它当计算器使用前最应关注的边界。
本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。