开源一个 DCA 推理引擎:用整数/定点路径跑通 LLM 推理,给国产 AI 加速卡留一个可验证靶场
7月11日更新最新引擎目前以 Qwen3.5/Qwen3-Next 风格的 GGUF 模型为目标能够实现从模型加载、分词、24层整数/定点数推理到流式输出的完整流程并支持多轮对话的会话状态复用。它是 DCA 理论仓库 的工程实践伴侣旨在将DCA的数学概念转化为可检验的代码作为一个探索整数优先LLM推理的“实验室”而非用于生产环境https://github.com/superalp1985/DCA-Inference-Engine-V1以下为正文最近整理并开源了两个仓库。DCA 主仓库https://github.com/superalp1985/DCA-Discrete-Computer-ArithmeticDCA 推理引擎仓库https://github.com/superalp1985/DCA-Inference-Engine这篇主要介绍第二个DCA Inference Engine。它不是新的大模型也不是成熟推理框架。目前更准确地说它是一个 C17 写的 DCA 推理实验台用来验证一件事LLM 推理能不能按“离散计算机算术”的方式跑通也就是尽量把推理过程里的 token、权重、激活、KV cache、采样、会话状态都放回明确的整数/定点表示里而不是只把它看成一堆浮点矩阵运算。1. DCA 是什么DCA 是 Discrete Computer Arithmetic可以粗略理解为面向计算机实际运算的离散算术视角。它不把机器整数、定点数、量化张量、有限状态这些东西临时当成“数学实数的近似”而是先承认它们本来就是有限对象。所以在 DCA 里很多问题会被明确问出来字长是多少有无符号scale 是多少溢出是回绕还是饱和舍入规则是什么状态如何保存采样能不能复现同一个输入能不能 replayDCA 主仓库主要放理论整理、定义、范围、参考资料https://github.com/superalp1985/DCA-Discrete-Computer-Arithmetic而这个推理引擎仓库就是把 DCA 的想法落到一个具体 LLM 推理路径上https://github.com/superalp1985/DCA-Inference-Engine2. 当前项目做到了什么DCA Inference Engine 当前目标不是性能而是先验证路线能否跑通。目前已经支持GGUF v3 metadata / tensor-info / tensor-data 读取Qwen 风格 tokenizerbyte-level BPEspecial token 处理整数/定点推理路径Q8.8 activationQ16 weight / nonlinear function整数 RMSNorm整数 RoPEfinite-table softmax整数 top-k / top-p / temperature samplertoken 级流式输出多轮对话跨轮 session state 复用冷启动 replay 对比合成 GGUF fixtureGitHub Actions CIApache-2.0 开源协议换句话说它已经不是一个文档概念而是能跑测试、能生成 token、能做多轮对话的原型。3. 为什么要这样做现在 LLM 推理工程已经很成熟llama.cpp、vLLM、TensorRT-LLM、MLC 等项目都非常强。但 DCA 关注的是另一个角度推理过程能不能更可检查、更可复现、更适合硬件算子逐步对齐例如一个 token 生成出来我们希望能追问它经过了哪些有限状态每一步的 scale 是多少哪里发生了舍入哪里发生了饱和采样的随机数状态是什么多轮对话复用 cache 后是否等价于完整 replay很多推理引擎当然也能调试这些问题但 DCA 的做法是把这些约束放到一开始的设计里。先不追求快先追求表示明确路径跑通测试可复现状态可检查行为可对比4. 代码里的 DCA 表示当前实现里推理路径尽量使用明确的整数/定点格式Q8.8中间 activationQ16权重、非线性函数、部分状态int8量化 activationuint64_t采样随机数状态整数 token id会话历史Q16 KV cache多轮状态Q16 recurrent state线性注意力状态非线性函数也尽量避免直接用浮点数学函数而是使用有限表sigmoid: Q16 lookup tableexp: Q16 lookup tablesoftplus: Q16 lookup tableSiLU: x * sigmoid(x)采样也不是“随手 float softmax 一下”而是显式做Q16 logitsinteger top-kQ16 temperaturefinite exp tableinteger top-puint64_t xorshift RNG这些设计不是为了显得复杂而是为了让每个计算边界都能被说清楚。5. 多轮对话和 session reuse当前已经支持多轮对话.\build_codex\dca_transformer.exe--model model.gguf–chat--max-tokens 64 也支持脚本式测试 .\build_codex\dca_transformer.exe–model ‘model.gguf’--chat-script .\chat_turns.txt–max-tokens 16 –compare-session–compare-session 会比较两种方式方式一复用已有 session state方式二冷启动重新 replay 完整上下文这样可以检查跨轮状态复用是否和完整 replay 保持一致。示例测试结果turn 1: reused prefix tokens 0, reuse time 25.0864s, cold replay 23.7718s, output match yesturn 2: reused prefix tokens 16, reuse time 20.2476s, cold replay 48.9397s, output match yes第一轮没有可复用前缀所以不占优势。第二轮开始session reuse 已经能明显减少重复计算。6. 为什么这可能适合国产 AI 加速卡这里要先说清楚当前项目没有做硬件优化也没有实现昇腾/CANN 后端。现在只是 CPU reference。但 DCA 这种形式非常适合后续硬件适配尤其是国产 AI 加速卡场景。原因是它天然把推理过程拆成很多边界清楚的有限算子Q4_K / Q5_K / Q6_K packed-weight matvecQ8.8 activation packinginteger RMSNormfinite-table nonlinearitiesfinite softmaxQ16 KV cache updateQ16 recurrent state updatesession reuse decode loop如果后续要做昇腾 Ascend C / CANN 自定义算子或者其他 NPU 后端这些 CPU reference 就可以作为逐算子对齐的靶子。硬件优化最难的地方往往不是写 kernel而是回答这个 kernel 应该和谁对齐输入输出格式是什么误差边界是什么什么时候算一致DCA 的好处是这些东西一开始就要求写清楚。所以后续路线可以是先 CPU reference 跑通再固定小输入输出 fixture再逐算子对齐再单层对齐再 decode 对齐最后做硬件 backend这对昇腾、国产 NPU、自定义 AI Core 算子可能是一个比较稳的实验路线。7. 怎么运行Windows MSVC 环境下git clone https://github.com/superalp1985/DCA-Inference-Engine.gitcd DCA-Inference-Enginecmake -S . -B build_codex -G Ninja -DCMAKE_BUILD_TYPERelease -DCA_BUILD_TESTSONcmake --build build_codex --config Releasectest --test-dir build_codex --output-on-failure公开测试不依赖本地模型文件。测试会自动创建一个合成 GGUF fixture用来验证GGUF parsertokenizertensor loadingDCA arithmeticstreamingsession reuse如果有本地兼容 GGUF 模型可以设置$env:DCA_TEST_MODEL ‘path-to-model.gguf’.\build_codex\dca_test_e2e.exe8. 当前限制必须强调当前项目还很早期。它不是生产级推理框架高性能 runtimellama.cpp 替代品昇腾适配版GPU/NPU backend完整模型生态当前它只是DCA 推理路径验证原型CPU reference整数/定点推理实验台可复现测试框架代码优化和硬件优化都还没有开始。现在的目标就是先证明这条路能跑通这条路能测试这条路能对比这条路能被别人复现9. 希望谁来看如果你关注下面这些方向欢迎来看看LLM inferenceGGUFQwen tokenizerinteger inferencefixed-point arithmeticquantizationKV cachesession reuseformal verification国产 AI 加速卡昇腾 / CANN / Ascend CNPU 自定义算子尤其是做硬件和算子的朋友欢迎从“CPU reference 是否适合做硬件对齐靶场”这个角度拍砖。项目地址https://github.com/superalp1985/DCA-Inference-EngineDCA 主仓库https://github.com/superalp1985/DCA-Discrete-Computer-Arithmetic目前还只是第一步但这一步已经从文档走到了可运行代码。下一步就是继续把测试做扎实再谈优化和硬件适配。