⚡ C# · .NET 10 · GGUF · AgentHost · GPU 加速

TensorSharp

一个面向 GGUF 模型的原生 .NET 推理引擎 —— 提供 CLI、浏览器聊天、兼容 Ollama 与 OpenAI 的 API,以及可选的 AgentHost,用于渐进式技能加载与模型生成代码沙箱。

一切都运行在你自己的硬件上:你的笔记本、工作站或服务器。推理与智能体工作默认留在本机,没有按 token 计费,同一套引擎既能完成快速的命令行测试,也能支撑团队内部共享的聊天机器人和生产环境的 REST 接口。运维方明确授予任一执行面的网络权限,或接受 Windows 的非受限代码执行模式后,数据才可能离开本机。本维基是完整指南 —— 从下方选择一个起点,或按 / 进行搜索。

Zhongkai Fu 所著《Building Inference Engines and Agentic Runtimes from Scratch: Qwen Dense and MoE Models with TensorSharp and TensorAgent》封面

新书 · TensorSharp 与 TensorAgent

Building Inference Engines and Agentic Runtimes from Scratch

Qwen Dense and MoE Models with TensorSharp and TensorAgent

以 Qwen 稠密模型与混合专家(MoE)模型为例,探索如何使用 TensorSharp 和 TensorAgent 从零构建推理引擎与智能体运行时。配合源码阅读,将模型执行与支撑智能体应用的运行时联系起来。

Qwen 稠密模型混合专家(MoE)推理引擎智能体运行时

作者:Zhongkai Fu

浏览维基

🚀

快速开始

环境要求、构建、下载模型,并流式输出你的第一个回复。

⌨️

命令行

从 CLI 运行提示词、图像、音频、批处理与基准测试。

🌐

服务器与 Web UI

在本机托管浏览器聊天机器人和 HTTP 接口。

🛠️

智能体工作流

按需加载技能、运行沙箱代码工具、修复输出并下载生成产物。

📱

TensorAgent for iOS

使用 ggml_metal 在 iPhone 和 iPad 上运行本地聊天与有界智能体工作。

🔌

HTTP API

用 curl、Python 或任意 Ollama / OpenAI 客户端调用它。

🧩

C# 库

将引擎直接嵌入你的 .NET 应用。

📚

API 参考

可搜索的参数、环境变量、端点与类型表。

🧠

模型

全部十三种架构、下载方式、多模态与推理能力 —— 以及想要更快时该选哪个权重。

🔗

多 GPU 与多节点

跨 GPU(CUDA 与 GGML)、跨机器的张量并行。

📖

术语表与 FAQ

初识大模型?这里有通俗的定义和常见问题。

约 30 秒快速上手

按平台安装 .NET 10 SDKgitcurl 后,这条路径在原生 GGML 后端上运行经基准验证的 Gemma 4 E4B Q8_0 模型。复制命令约需 30 秒;7.48 GiB 的模型下载与首次 restore/构建耗时更久,取决于网络与机器。下面的代码块面向 Linux + NVIDIA —— 其他后端见下文。Windows PowerShell 请用 curl.exe

  1. 克隆

    下方第一次 dotnet run 会 restore 项目并编译原生 GGML CUDA 后端;首次构建可能需要数分钟。

    git clone https://github.com/zhongkaifu/TensorSharp.git
    cd TensorSharp
  2. 下载模型

    推荐文件是 gemma-4-E4B-it-Q8_0.gguf(7.48 GiB);同一仓库还提供更省内存的 gemma-4-E4B-it-Q4_K_M.gguf

    curl --create-dirs --fail -L "https://huggingface.co/ggml-org/gemma-4-E4B-it-GGUF/resolve/main/gemma-4-E4B-it-Q8_0.gguf?download=true" -o models/gemma-4-E4B-it-Q8_0.gguf
  3. 运行它

    环境变量赋值用于启用 CUDA 原生构建。E4B 还支持思考(--think)与工具调用(--tools)。

    echo "简短回答:TensorSharp 是什么?" > prompt.txt
    TENSORSHARP_GGML_NATIVE_ENABLE_CUDA=ON dotnet run --project TensorSharp.Cli -c Release -p:TensorSharpSkipMlxNative=true -- --model models/gemma-4-E4B-it-Q8_0.gguf --input prompt.txt --max-tokens 128 --backend ggml_cuda
  4. 想要 UI + API?

    用同一模型启动服务端。浏览器聊天位于 /;纯文本存活检查位于 /health

    TENSORSHARP_GGML_NATIVE_ENABLE_CUDA=ON dotnet run --project TensorSharp.Server.Host -c Release -p:TensorSharpSkipMlxNative=true -- --model models/gemma-4-E4B-it-Q8_0.gguf --backend ggml_cuda --max-tokens 128
    # 打开 http://localhost:5000/

其他后端与多模态

Apple Silicon 请省略 CUDA 环境变量并使用 ggml_metal;受支持的 Windows/Linux Vulkan GPU 请改为请求 TENSORSHARP_GGML_NATIVE_ENABLE_VULKAN=ON 并使用 ggml_vulkan;没有 GPU 时使用 ggml_cpu(原生 CPU 内核,无需 GPU 工具链)。纯文本推理只需要模型 GGUF;图像、视频或音频输入还需下载匹配的 mmproj-gemma-4-E4B-it-Q8_0.gguf,并通过 --mmproj 传入。Windows PowerShell 与完整平台语法见 E4B 快路径说明

为什么选择 TensorSharp?

🔒

默认私有

推理留在你的硬件上。命令与技能脚本默认不可联网;Windows 非受限代码执行是明确的例外。

🛠️

能完成工作的技能

AgentHost 预先只公布技能元数据,通过 skills_read 加载说明,并可选择开启五个受工作区约束的文件 / 代码工具,其中 shell 在沙箱内运行。

💸

没有按 token 账单

硬件允许多少就跑多少 —— 成本可预测,没有计量 API。

🔁

即插即用兼容

支持 Ollama 与 OpenAI 协议,现有工具与 SDK 直接可用。

🖥️

随处可运行

NVIDIA (CUDA)、AMD / Intel / NVIDIA (Vulkan)、Apple Silicon 和 iOS (Metal/MLX) 或纯 CPU —— 均带自动回退。

🧠

现代模型支持

十二个文本家族 —— DeepSeek V4 Flash、DeepSeek V4.1 Flash、GLM 5.2、GLM-5.3 与 GLM-5.3-Flash、Gemma 4、DiffusionGemma、Qwen 3.5 / 3.6、Qwen 3.8 Flash Next、GPT-OSS、Nemotron-H、Mistral 3、Hunyuan Dense、Muse-Glimmer —— 外加视觉、音频、PDF 文档、推理与工具调用。另有三个家族产出媒体而非文本:图像(Qwen-Image-Edit)、带原生立体声音轨的视频(MiniMax-H3),以及只有画面的视频(Wan 2.1 / 2.2)。

🎬

还能产出图像与视频

MiniMax-H3 在一份打包潜变量里同时生成视频与原生 32 kHz 立体声音频;Qwen-Image-Edit 按提示词改写图像;Wan 2.1 / 2.2 只生成 H.264 画面——同一个引擎、同一套 GGUF 管线。H3 出厂即经 CFG 蒸馏,工作点是 --cfg 1.0 下的 4–8 步;改用步数蒸馏(step-distilled)的 Wan 权重,同一段 5 秒 720p 视频只需 17 分钟,而不是 3 个半小时。

⚙️

用 .NET 构建

原生 C# 引擎,可嵌入你的应用,而不只是一个黑盒二进制。

🔗

不止一张 GPU

张量并行用 --tp N 把每层的权重切分到多张 GPU 上(Direct CUDA 与 GGML CUDA / Vulkan 均可);一台机器不够时,还可通过点对点 TCP 网格跨机器扩展。整模型执行器也支持分层切分(layer split) —— 每张 GPU 拿一段完整的层、没有集合通信:DeepSeek V4 Flash 与 GLM 5.x 不需任何参数,Qwen 3.8 Flash Next 则在 --tp N 下走这条路。GLM 5.x(GLM-5.2、GLM-5.3 与 GLM-5.3-Flash 相同)传入 --tp N 时都会在 GGML GPU 后端上选择仅支持本地单进程的原生 TP。Qwen 的切分买的是容量,不是速度。

🏁

对比 llama.cpp 的基准

GLM-5.3-Flash 的 decode 达到 llama.cpp 的 2.0× —— 在 2× RTX PRO 6000 Blackwell 上以 UD-Q2_K_XL 分层切分背靠背实测,tg64 为 73.5 vs 36.6 tok/s,prefill 两边相差均在几个百分点以内。GLM-5.3(非 Flash)则是 decode 打平:在 8× A40 46 GB 上以 UD-Q2_K_XL、10,531 token 提示实测 20.48 vs 20.28 tok/s,而它 236.4 GiB 的检查点加载快 2.9×(264 s vs 753 s),首 token 则晚约 1.4×(TTFT 41.9 s vs 29.0 s)。在相同 GGUF 文件与相同 GPU 上与 C++ 引擎互有胜负 —— 在当前的 CUDA + Vulkan 对比运行中(可通过 benchmarks/engine_comparison 复现):Gemma 4 E4B 与 2-bit 量化的 Qwen 3.6 35B-A3B MoE 在 CUDA 上 prefill 快 1.28×、首 token 早 1.27×,多轮提示的 prefill 在每个模型上都更快(最高 1.49×),Gemma 4 12B 在 Vulkan 上 decode 快 1.21×。

这是为谁准备的?

TensorSharp 面向各类访客。下面是每类人最快的上手路径。

初学者与学生

配套图书术语表与 FAQ开始,再动手完成快速开始

资深 / 首席工程师

阅读高级功能 —— 分页 KV、连续批处理、推测解码。

管理者、CTO 与 CEO

查看商业价值能力矩阵

销售与市场

使用功能目录基准测试做定位。

研究者与教授

探索模型架构基准对比