
如果你所在的团队是 .NET 技术栈,又想把大模型推理收进自己的进程里,这篇文章值得你花五分钟。
8 月 26 日,智谱 GLM-5.3-Flash(MIT 许可,首日开源)和阿里 Qwen3.8-Flash-Next 同日发布。三天后,纯 .NET 推理引擎 TensorSharp 把两者都接进了主干------两个全新的 GGUF 架构 id(glm5next 和 qwen4exp),README 与架构卡片同步入库。
先给结论,再给细节。
背景:TensorSharp 是什么
TensorSharp 是一个原生 .NET LLM 推理引擎(.NET 10),直接读取 GGUF 权重,提供 CLI、交互式 REPL、ASP.NET Core Web UI,以及 Ollama / OpenAI 兼容的 HTTP API。
对 .NET 团队来说,它的意义在于:推理栈从"旁边起一个 Python/C++ 进程、HTTP 递请求"变成了进程内的一等公民。后端矩阵覆盖 GGML CUDA / Vulkan / Metal、直写 CUDA/cuBLAS、MLX,以及一条 100% 托管代码的纯 C# CPU 路径------零原生依赖,可单步调试、可审计。
一个月前它完成的两个动作已经说明了这个项目的坐标:7 月 31 日让 284B 的 DeepSeek V4 Flash 在纯 .NET 上服务化(OpenAI 兼容接口 + continuous batching),8 月 19 日合入 GLM-5.2(744B)支持,在 3× RTX PRO 6000 上长上下文 prefill 反超 llama.cpp 最高 1.5 倍。
GLM-5.3-Flash:decode 2.0× llama.cpp
先澄清一个容易误读的点:GLM-5.3-Flash 不是旗舰 5.3 的蒸馏版,而是重新训练的基座------GLM-5 系列首个原生多模态模型,320B 总参、18B 激活的 MoE,AA 综合智能指数 57 分,定价为旗舰的 1/10。
架构换得很彻底:45 层主干中 34 层用 KDA 线性注意力,11 层用 NoPE MLA + 稀疏注意力(pool 化的 lightning indexer),残差是 ×4 流形约束超连接。落到工程上的直接收益是 KV 缓存较 GLM-5.3 降约 4.4 倍。
TensorSharp 的实现方式是复用:与 GLM-5.2 共用同一个原生执行器、同一个 GlmDsaModel,架构差异(288 路由专家、KDA/MLA 层混合、池化 indexer)在模型层被抽象掉。
性能数据是同机同权重背靠背测的:2× RTX PRO 6000 Blackwell(96 GB)、UD-Q2_K_XL(101 GiB)、层切分、两侧 n_ubatch 均为 2048:
tg64 decode:73.5 tok/s vs llama.cpp 的 36.6 tok/s,2.0 倍。
prefill 互有胜负:pp2048 2014 vs 2070,pp16384 1692 vs 1690,pp32768 1446 vs 1483。
prefill 持平、decode 翻倍,符合"KV 缓存大幅缩小"的理论预期------这组数字自洽,可信度比单点宣传高得多。
工程边界也写得清楚,这点我个人很看重:--tp 张量并行被干净地拒绝 (该架构不切权重,请用层切分);NextN/MTP 投机解码尚未实现;层切分、--n-cpu-moe offload、per-sequence slot 并发均可用。多模态通过 GLM-OCR ViT 的 mmproj-BF16.gguf 接入,支持多图与多轮会话。
Qwen 3.8 Flash Next:一个 token,一张捕获图
Qwen3.8-Flash-Next 是 Qwen4 架构的先导预览:125B MoE(512 专家、激活约 6B)+ 51B N-gram 嵌入块,原生 262K 上下文。Gated DeltaNet 递归层与全注意力层交错(部分挂在 Qwen Sparse Attention 的 indexer 后面),外加 ×4 超连接残差流------对现有 GGUF 引擎来说,几乎处处都是非标件。
TensorSharp 的实现思路值得展开,因为它体现了这个项目的工程哲学:
融合到图级。 嵌入、图内 PLE、全部 48 层、最终 mixer、LM head------整 token 前向组成(几乎)一张 CUDA graph,按形状键控缓存、逐 token 重放。TS_Q4E_TOKEN_GRAPH=0 可逐级回落到逐层融合 kernel、再到逐算子路径,用于调试和 A/B。
并发不做假。 GDN 递归状态 + QSA indexer 缓存 + PLE 历史没有分页布局可言,所以走 per-sequence state holder:每个在途请求持有自己的全套状态,切换请求只是引用交换,不搬状态字节、不重建图。
多卡输出逐字节一致。 --tp N 在该架构上实际是层切分(容量特性,不是速度特性)。2× A100-80GB 实测:73.4 GiB 拆成 24.2 + 26.2 GB,prefill 约 1520--1550 tok/s、decode 约 56 tok/s,单双卡贪心输出 SHA-256 相同 。作为对照,llama.cpp 的 -sm row 直接拒绝加载这个架构,-sm layer 也只换来约 10% 的 prefill 提升。
为什么这对 .NET 团队重要
把这两次支持放在一起,我认为有三个信号值得 .NET 架构师注意。
第一,架构跟进速度。 GLM-5.3-Flash(KDA+DSA+mHC)和 Qwen3.8-Flash-Next(GDN+QSA+门控残差)高度同构------前沿模型正在集体转向"线性+稀疏注意力混合"范式。TensorSharp 三天内接入两个新架构 id,说明它的模型层抽象经受住了范式切换的考验,而不是为每个模型打补丁。
第二,正确性验收标准。 这个项目有个一以贯之的传统:用记录下来的 token id 做前向对比,与同后端 llama.cpp 逐 token 对齐;并发 slot 输出与单流温度 0 的结果逐字节一致;批量 decode 会改变 GEMM 形状、进而在 2-bit 权重上放大路由分歧------所以默认关闭。把"并发是否正确"变成可自动回归的精确断言,这是生产级软件的做法。
第三,部署形态。 全程不需要 Python 环境、不需要 WSL、不需要容器套娃。--cpu-moe 可以把占 checkpoint 92% 的路由专家放在系统内存,让显存不足的机器也能跑(GLM-5.2 上 pp2048 从 915.9 掉到 94.7 tok/s,是"能跑"和"跑得快"的取舍,文档写得很诚实)。对金融、政企这类有合规审计要求的场景,整条链路可读的托管代码比 10% 的性能差距值钱。
旗舰 GLM-5.3 本体的权重仍在安全评估流程中。以 5.3-Flash 复用 GlmDsaModel 的先例看,落地那天的适配成本大概率接近零。
如果你的 .NET 团队正在评估本地推理方案,现在可以把 TensorSharp 放进 PoC 清单了。
参考资料(截至 2026-08-29):
- TensorSharp 仓库与架构卡片(glm.md / qwen38-flash-next.md):https://github.com/zhongkaifu/TensorSharp
- GLM-5.3-Flash 官方文档:https://docs.bigmodel.cn
- Qwen3.8-Flash-Next:https://github.com/QwenLM/Qwen3.8-Flash-Next
- 把 284B 的 DeepSeek V4 Flash 装进纯 .NET》:https://www.cnblogs.com/shanyou/p/22138494