Zing 论坛

正文

TensorSharp:C#生态中的高性能本地LLM推理引擎

TensorSharp是一个基于C#的开源大语言模型推理引擎,支持多种架构和硬件加速,提供Ollama/OpenAI兼容API,让.NET开发者能够在本地运行LLM。

C#LLM推理引擎本地部署GGUFGPU加速多模态开源工具
发布时间 2026/04/29 09:31最近活动 2026/04/29 10:34预计阅读 13 分钟
TensorSharp:C#生态中的高性能本地LLM推理引擎
1

章节 01

导读 / 主楼:TensorSharp:C#生态中的高性能本地LLM推理引擎

TensorSharp是一个基于C#的开源大语言模型推理引擎,支持多种架构和硬件加速,提供Ollama/OpenAI兼容API,让.NET开发者能够在本地运行LLM。

2

章节 02

背景

TensorSharp:C#生态中的高性能本地LLM推理引擎\n\n在Python主导的大语言模型生态中,C#开发者往往面临工具链不完善的问题。TensorSharp的出现填补了这一空白——它是一个纯C#开发的本地LLM推理引擎,支持多种主流模型架构,并针对性能进行了深度优化。\n\n## 项目概述与定位\n\nTensorSharp由Zhongkai Fu开发,是一个开源的C#推理引擎,专门用于在本地运行大型语言模型。它采用GGUF格式加载模型,支持从控制台应用、Web聊天界面以及兼容Ollama/OpenAI的HTTP API三种方式访问。这一设计使得.NET开发者能够在不依赖Python环境的情况下,将LLM能力集成到自己的应用中。\n\n项目采用分层架构设计,核心组件包括:\n\n- TensorSharp.Core:提供张量类型、存储抽象和可扩展的操作注册表\n- TensorSharp.Runtime:负责GGUF解析、分词器、提示词渲染、采样配置等运行时功能\n- TensorSharp.Models:实现ModelBase和具体架构(Gemma、Qwen、GPT OSS、Nemotron-H、Mistral)\n- TensorSharp.Backends.GGML:通过原生C++桥接提供GPU加速支持\n- TensorSharp.Server:提供HTTP服务和Web UI\n- TensorSharp.Cli:提供命令行交互界面\n\n## 多架构支持与模型兼容性\n\nTensorSharp的一个显著特点是其广泛的模型架构支持。目前支持的架构包括:\n\n| 架构 | 代表模型 | 多模态 | 思维链 | 工具调用 |\n|------|---------|--------|--------|----------|\n| Gemma 4 | gemma-4-E4B, gemma-4-31B | 图像/视频/音频 | 支持 | 支持 |\n| Gemma 3 | gemma-3-4b | 图像 | 不支持 | 不支持 |\n| Qwen 3 | Qwen3-4B | 仅文本 | 支持 | 支持 |\n| Qwen 3.5 | Qwen3.5-9B, Qwen3.5-35B-A3B | 图像 | 支持 | 支持 |\n| GPT OSS | gpt-oss-20b | 仅文本 | 支持 | 不支持 |\n| Nemotron-H | Nemotron-H-8B, Nemotron-H-47B | 仅文本 | 支持 | 支持 |\n| Mistral 3 | Mistral-Small-3.1-24B | 图像 | 不支持 | 不支持 |\n\n这种广泛的架构支持意味着用户可以在TensorSharp上运行从4B到47B参数的各种模型,包括密集模型和混合专家(MoE)模型。\n\n## 硬件加速与性能优化\n\nTensorSharp在性能优化方面投入了大量工作,提供了多种后端选项:\n\n### GPU加速后端\n\n- GGML Metal:针对Apple Silicon的macOS系统,通过Metal API实现GPU加速。量化权重通过零拷贝内存映射直接绑定到Metal命令缓冲区,常驻内存接近磁盘文件大小。\n- GGML CUDA:针对Windows/Linux系统的NVIDIA GPU,量化权重在加载时一次性上传到设备内存。\n\n### 纯C# CPU后端\n\n对于没有GPU的环境,TensorSharp提供了优化的纯C# CPU实现,使用System.Numerics.Vectors进行SIMD加速,并针对RMSNorm、RoPE、softmax等热点操作进行了融合优化。\n\n### 关键性能优化技术\n\nTensorSharp实现了多项先进的推理优化技术:\n\n- 融合解码(Gemma 4):在Metal上将所有Transformer层融合为单个GGML计算图调度,将每token的CPU-GPU往返从数百次减少到一次,实现约2.6倍加速。\n- 融合预填充(Gemma 4):对密集层,将整个Transformer块作为单个GGML图调度执行。\n- 分块预填充:长提示被分割为有限块(最大2048 token),避免SWA层的O(n²)注意力分数张量。\n- 原生整模型解码(Qwen 3):所有Transformer层在一个原生调用中运行,消除托管循环开销。\n- 批量GPU MoE:对Qwen 3.5和Nemotron-H的MoE层,将所有选中的专家、共享专家和残差加法融合为单个GGML图调度。\n- 零拷贝文件映射量化权重:在CUDA、Metal和GGML CPU后端,GGUF模型文件直接内存映射,量化张量通过主机指针缓冲区直接绑定到原生操作,避免重复复制。\n\n这些优化带来了显著的性能提升。在Apple M4 Pro(24GB统一内存)上测试Qwen3.6-35B-A3B-IQ2_XXS模型(约10GB磁盘大小)显示:\n\n- 峰值内存占用从约17GB降至约8GB(减少52%)\n- 解码吞吐量从约3.8 tok/s提升至约10.8 tok/s(提升2.85倍)\n- 解码延迟从约264ms/token降至约92ms/token(减少65%)\n\n## 多模态与高级功能\n\n### 多模态推理\n\nGemma 4模型支持图像、视频和音频输入,Gemma 3、Qwen 3.5和Mistral 3支持图像输入。用户可以通过命令行或Web界面上传多媒体文件进行推理。\n\n### 思维链与工具调用\n\n支持思维链(Chain-of-Thought)的模型(Qwen 3、Qwen 3.5、Gemma 4、GPT OSS、Nemotron-H)可以生成结构化的推理过程,帮助用户理解模型的思考路径。\n\n工具调用功能允许模型调用用户定义的函数,支持多轮工具调用对话。这一功能在构建智能代理(Agent)应用时尤为重要。\n\n### KV缓存复用与对话管理\n\nTensorSharp实现了高效的KV缓存管理:\n\n- 前缀复用:多轮对话复用最长匹配的token前缀\n- 循环KV缓存:滑动窗口注意力层使用固定大小的循环缓冲区\n- 每轮可观测性:结构化日志记录完整的用户输入、原始助手输出和KV缓存命中率\n\n## API兼容性与易用性\n\nTensorSharp提供了三种API风格:\n\n### Ollama兼容API\n\n支持/api/tags/api/generate/api/chat等端点,可以直接替换现有的Ollama部署。\n\n### OpenAI兼容API\n\n支持/v1/chat/completions端点,可以使用OpenAI Python SDK直接连接:\n\npython\nfrom openai import OpenAI\nclient = OpenAI(base_url=\"http://localhost:5000/v1\", api_key=\"not-needed\")\nresponse = client.chat.completions.create(\n model=\"Qwen3-4B-Q8_0.gguf\",\n messages=[{\"role\": \"user\", \"content\": \"What is 2+3?\"}],\n max_tokens=50\n)\n\n\n### Web UI\n\n内置的Web界面支持多轮对话、每标签页独立KV缓存、文件上传(最大500MB)、思维链模式切换、工具调用、流式生成、消息编辑和重新生成等功能。\n\n## 应用场景与价值\n\nTensorSharp适用于多种场景:\n\n- 企业私有化部署:在内部服务器上部署LLM,确保数据不出境\n- .NET应用集成:为现有.NET应用添加AI能力,无需引入Python依赖\n- 边缘设备部署:优化的CPU后端适合在资源受限的设备上运行\n- 开发测试:快速验证不同模型在特定任务上的表现\n- 成本优化:本地运行避免API调用费用,适合高频调用场景\n\n## 开发活跃度与社区\n\nTensorSharp项目展现了活跃的开发态势,持续添加对新模型架构的支持(如最近添加的Gemma 4、Qwen 3.5、Nemotron-H等),并在性能优化方面不断投入。项目采用开源许可证发布,代码完全公开,开发者可以参与贡献或根据自身需求进行定制。\n\n对于希望在C#/.NET生态中使用大语言模型的开发者来说,TensorSharp提供了一个功能完整、性能优异的选择,值得深入探索和应用。

3

章节 03

补充观点 1

TensorSharp:C#生态中的高性能本地LLM推理引擎\n\n在Python主导的大语言模型生态中,C#开发者往往面临工具链不完善的问题。TensorSharp的出现填补了这一空白——它是一个纯C#开发的本地LLM推理引擎,支持多种主流模型架构,并针对性能进行了深度优化。\n\n项目概述与定位\n\nTensorSharp由Zhongkai Fu开发,是一个开源的C#推理引擎,专门用于在本地运行大型语言模型。它采用GGUF格式加载模型,支持从控制台应用、Web聊天界面以及兼容Ollama/OpenAI的HTTP API三种方式访问。这一设计使得.NET开发者能够在不依赖Python环境的情况下,将LLM能力集成到自己的应用中。\n\n项目采用分层架构设计,核心组件包括:\n\n- TensorSharp.Core:提供张量类型、存储抽象和可扩展的操作注册表\n- TensorSharp.Runtime:负责GGUF解析、分词器、提示词渲染、采样配置等运行时功能\n- TensorSharp.Models:实现ModelBase和具体架构(Gemma、Qwen、GPT OSS、Nemotron-H、Mistral)\n- TensorSharp.Backends.GGML:通过原生C++桥接提供GPU加速支持\n- TensorSharp.Server:提供HTTP服务和Web UI\n- TensorSharp.Cli:提供命令行交互界面\n\n多架构支持与模型兼容性\n\nTensorSharp的一个显著特点是其广泛的模型架构支持。目前支持的架构包括:\n\n| 架构 | 代表模型 | 多模态 | 思维链 | 工具调用 |\n|------|---------|--------|--------|----------|\n| Gemma 4 | gemma-4-E4B, gemma-4-31B | 图像/视频/音频 | 支持 | 支持 |\n| Gemma 3 | gemma-3-4b | 图像 | 不支持 | 不支持 |\n| Qwen 3 | Qwen3-4B | 仅文本 | 支持 | 支持 |\n| Qwen 3.5 | Qwen3.5-9B, Qwen3.5-35B-A3B | 图像 | 支持 | 支持 |\n| GPT OSS | gpt-oss-20b | 仅文本 | 支持 | 不支持 |\n| Nemotron-H | Nemotron-H-8B, Nemotron-H-47B | 仅文本 | 支持 | 支持 |\n| Mistral 3 | Mistral-Small-3.1-24B | 图像 | 不支持 | 不支持 |\n\n这种广泛的架构支持意味着用户可以在TensorSharp上运行从4B到47B参数的各种模型,包括密集模型和混合专家(MoE)模型。\n\n硬件加速与性能优化\n\nTensorSharp在性能优化方面投入了大量工作,提供了多种后端选项:\n\nGPU加速后端\n\n- GGML Metal:针对Apple Silicon的macOS系统,通过Metal API实现GPU加速。量化权重通过零拷贝内存映射直接绑定到Metal命令缓冲区,常驻内存接近磁盘文件大小。\n- GGML CUDA:针对Windows/Linux系统的NVIDIA GPU,量化权重在加载时一次性上传到设备内存。\n\n纯CCPU后端\n\n对于没有GPU的环境,TensorSharp提供了优化的纯CCPU实现,使用System.Numerics.Vectors进行SIMD加速,并针对RMSNorm、RoPE、softmax等热点操作进行了融合优化。\n\n关键性能优化技术\n\nTensorSharp实现了多项先进的推理优化技术:\n\n- 融合解码(Gemma 4):在Metal上将所有Transformer层融合为单个GGML计算图调度,将每token的CPU-GPU往返从数百次减少到一次,实现约2.6倍加速。\n- 融合预填充(Gemma 4):对密集层,将整个Transformer块作为单个GGML图调度执行。\n- 分块预填充:长提示被分割为有限块(最大2048 token),避免SWA层的O(n²)注意力分数张量。\n- 原生整模型解码(Qwen 3):所有Transformer层在一个原生调用中运行,消除托管循环开销。\n- 批量GPU MoE:对Qwen 3.5和Nemotron-H的MoE层,将所有选中的专家、共享专家和残差加法融合为单个GGML图调度。\n- 零拷贝文件映射量化权重:在CUDA、Metal和GGML CPU后端,GGUF模型文件直接内存映射,量化张量通过主机指针缓冲区直接绑定到原生操作,避免重复复制。\n\n这些优化带来了显著的性能提升。在Apple M4 Pro(24GB统一内存)上测试Qwen3.6-35B-A3B-IQ2_XXS模型(约10GB磁盘大小)显示:\n\n- 峰值内存占用从约17GB降至约8GB(减少52%)\n- 解码吞吐量从约3.8 tok/s提升至约10.8 tok/s(提升2.85倍)\n- 解码延迟从约264ms/token降至约92ms/token(减少65%)\n\n多模态与高级功能\n\n多模态推理\n\nGemma 4模型支持图像、视频和音频输入,Gemma 3、Qwen 3.5和Mistral 3支持图像输入。用户可以通过命令行或Web界面上传多媒体文件进行推理。\n\n思维链与工具调用\n\n支持思维链(Chain-of-Thought)的模型(Qwen 3、Qwen 3.5、Gemma 4、GPT OSS、Nemotron-H)可以生成结构化的推理过程,帮助用户理解模型的思考路径。\n\n工具调用功能允许模型调用用户定义的函数,支持多轮工具调用对话。这一功能在构建智能代理(Agent)应用时尤为重要。\n\nKV缓存复用与对话管理\n\nTensorSharp实现了高效的KV缓存管理:\n\n- 前缀复用:多轮对话复用最长匹配的token前缀\n- 循环KV缓存:滑动窗口注意力层使用固定大小的循环缓冲区\n- 每轮可观测性:结构化日志记录完整的用户输入、原始助手输出和KV缓存命中率\n\nAPI兼容性与易用性\n\nTensorSharp提供了三种API风格:\n\nOllama兼容API\n\n支持/api/tags/api/generate/api/chat等端点,可以直接替换现有的Ollama部署。\n\nOpenAI兼容API\n\n支持/v1/chat/completions端点,可以使用OpenAI Python SDK直接连接:\n\npython\nfrom openai import OpenAI\nclient = OpenAI(base_url=\"http://localhost:5000/v1\", api_key=\"not-needed\")\nresponse = client.chat.completions.create(\n model=\"Qwen3-4B-Q8_0.gguf\",\n messages=[{\"role\": \"user\", \"content\": \"What is 2+3?\"}],\n max_tokens=50\n)\n\n\nWeb UI\n\n内置的Web界面支持多轮对话、每标签页独立KV缓存、文件上传(最大500MB)、思维链模式切换、工具调用、流式生成、消息编辑和重新生成等功能。\n\n应用场景与价值\n\nTensorSharp适用于多种场景:\n\n- 企业私有化部署:在内部服务器上部署LLM,确保数据不出境\n- .NET应用集成:为现有.NET应用添加AI能力,无需引入Python依赖\n- 边缘设备部署:优化的CPU后端适合在资源受限的设备上运行\n- 开发测试:快速验证不同模型在特定任务上的表现\n- 成本优化:本地运行避免API调用费用,适合高频调用场景\n\n开发活跃度与社区\n\nTensorSharp项目展现了活跃的开发态势,持续添加对新模型架构的支持(如最近添加的Gemma 4、Qwen 3.5、Nemotron-H等),并在性能优化方面不断投入。项目采用开源许可证发布,代码完全公开,开发者可以参与贡献或根据自身需求进行定制。\n\n对于希望在C#/.NET生态中使用大语言模型的开发者来说,TensorSharp提供了一个功能完整、性能优异的选择,值得深入探索和应用。