快速开始
从源码 checkout 到已验证的 CLI 回复或本地 API。快速上手在原生 GGML 后端上运行 Gemma 4 E4B;无法构建原生代码时,仍可使用托管 CPU 路径(无需 CMake 或 GPU 工具链)。
正在沿着 Gemma 4 E4B 路径动手实践?《From Tensors to Tokens》把这份快速开始扩展成一条从零出发的系统讲解,带你理解每一步背后的推理引擎。了解 TensorSharp 配套图书 →
1 · 环境要求
安装 .NET 10 SDK
TensorSharp 面向 net10.0,因此从源码构建必须安装完整的 .NET 10 SDK;只安装 .NET Runtime 或 ASP.NET Core Runtime 并不足够。SDK 已包含运行 CLI 与服务器所需的运行时。请先查看 Microsoft 的 .NET 跨平台安装指南,再按操作系统选择安装方式:
| 平台 | 安装 SDK | 官方说明 |
|---|---|---|
| Windows | 打开 PowerShell 或命令提示符,运行 winget install Microsoft.DotNet.SDK.10。 | 在 Windows 上安装 .NET |
| macOS | 下载与处理器匹配的 .NET 10 SDK 安装程序:Apple Silicon 选择 Arm64,Intel Mac 选择 x64。 | 在 macOS 上安装 .NET |
| Linux | 按对应发行版的说明配置软件源(若需要),再安装 dotnet-sdk-10.0。在 Ubuntu 上完成当前版本所需的软件源设置后,先运行 sudo apt-get update,再运行 sudo apt-get install -y dotnet-sdk-10.0。 | 选择 Linux 发行版(例如 Ubuntu) |
安装后请打开一个新终端,并确认列表中包含 10.0.x SDK:
dotnet --list-sdks
其他前置要求
git、curl与网络访问 —— 用于克隆 TensorSharp 与下载模型。完整原生构建还会把 ggml 克隆到ExternalProjects/ggml/;之后可设置TENSORSHARP_GGML_NO_UPDATE=1跳过网络更新。- 一个 GGUF 模型文件 —— 例如来自 Hugging Face。见模型下载。
各平台工具链(仅 GPU 加速需要)
| 平台 | 用于 | 安装 |
|---|---|---|
| macOS(Metal) | ggml_metal / mlx | CMake 3.20+ 与 Xcode 命令行工具。MLX 还会额外构建 libmlxc。 |
| Windows | ggml_cuda / cuda | CMake 3.20+、Visual Studio 2022 C++ 构建工具、NVIDIA 驱动 + CUDA Toolkit 12.x(含 cuBLAS)。 |
| Linux | ggml_cuda / cuda | CMake 3.20+、NVIDIA 驱动 + CUDA Toolkit 12.x(含 cuBLAS)。 |
| Windows / Linux(任何 Vulkan GPU) | ggml_vulkan | 当主机存在 Vulkan 运行时(loader 已安装)时自动启用;用 --no-vulkan(或 TENSORSHARP_GGML_NATIVE_ENABLE_VULKAN=OFF)退出。Windows 上未安装 SDK 时会自动准备便携 Vulkan 工具链;Linux 上请安装如 libvulkan-dev glslc spirv-headers。运行时需要 Vulkan 1.3 驱动。 |
| 任意(仅 CPU) | cpu | 除 .NET SDK 外无需任何东西。ggml_cpu 更快,但属于原生构建。 |
2 · 克隆并选择构建路径
git clone https://github.com/zhongkaifu/TensorSharp.git
cd TensorSharp
托管 CPU 路径(无需原生工具链)
若要跳过所有原生构建,请同时传入两个跳过属性并使用托管 cpu 后端;首次运行自动 restore 并构建托管项目。
-p:TensorSharpSkipGgmlNative=true -p:TensorSharpSkipMlxNative=true -- --backend cpu
完整原生 / GPU 路径
需要 GGML CPU、Metal、CUDA、Vulkan 或 MLX 时构建整个解决方案。首次构建会编译原生桥接,可能需要数分钟;后续为增量构建。
dotnet build TensorSharp.slnx -c Release
或只构建其中一个应用:
# 控制台应用
dotnet build TensorSharp.Cli/TensorSharp.Cli.csproj -c Release
# Web 应用
dotnet build TensorSharp.Server/TensorSharp.Server.csproj -c Release
CLI 二进制位于 TensorSharp.Cli/bin/...,服务器位于 TensorSharp.Server/bin/...。如需启用 CUDA 或 Vulkan 的原生构建、手动原生构建或 MLX,见构建原生库。
当前发行状态:v3.0.5.0 没有上传 CLI/server 应用归档,因此现在请从源码构建。仓库中虽有 Release Binaries 工作流,但不要自行拼接归档 URL;只有在 Releases 页面明确列出后才使用。
3 · 下载模型
快速上手请从公开的 ggml-org/gemma-4-E4B-it-GGUF 仓库下载推荐的、经基准验证的 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
多模态模型还需下载匹配的投影器(mmproj),并用 --mmproj 传入精确路径。服务端不会自动检测投影器,CLI 也只识别少数旧文件名;显式路径最可靠。
Gemma 4 E4B 后端与平台说明
下一节的首次运行命令面向 Linux + NVIDIA。Windows + NVIDIA 请先在 PowerShell 中设置 $env:TENSORSHARP_GGML_NATIVE_ENABLE_CUDA='ON',再运行不带 Bash 赋值前缀的相同命令。Apple Silicon 请省略 CUDA 环境变量并改用 ggml_metal。Windows/Linux 上使用 Vulkan 时,请设置 TENSORSHARP_GGML_NATIVE_ENABLE_VULKAN=ON(PowerShell:$env:TENSORSHARP_GGML_NATIVE_ENABLE_VULKAN='ON')并使用 ggml_vulkan。没有 GPU 时使用 ggml_cpu(原生 CPU 内核)。纯文本不需要投影器;图像、视频或音频输入需从同一仓库下载 mmproj-gemma-4-E4B-it-Q8_0.gguf,并添加 --mmproj models/mmproj-gemma-4-E4B-it-Q8_0.gguf。
4 · 首次运行
一次性提示词通过 --input 从文件读取;--prompt 仅用于 Qwen-Image-Edit。CLI 默认使用 ggml_cpu、贪心解码和 100 个生成 token。环境变量赋值用于启用 CUDA 原生构建;首次运行会编译它,可能需要数分钟,后续为增量构建。
方式 A —— 一次性生成(CLI)
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
方式 B —— 交互式聊天(REPL)
dotnet run --project TensorSharp.Cli -c Release --no-build -- --model models/gemma-4-E4B-it-Q8_0.gguf -i --max-tokens 128 --backend ggml_cuda
逐轮输入消息;用 斜杠命令(如 /reset、/think on 或 /image photo.png)控制会话。
方式 C —— 浏览器 UI + HTTP API(服务器)
TENSORSHARP_GGML_NATIVE_ENABLE_CUDA=ON dotnet run --project TensorSharp.Server -c Release -p:TensorSharpSkipMlxNative=true -- --model models/gemma-4-E4B-it-Q8_0.gguf --backend ggml_cuda --max-tokens 128
# 打开 http://localhost:5000/index.html
http://localhost:5000/ 返回健康状态;浏览器聊天位于 /index.html。兼容 Ollama 和 OpenAI 的端点使用同一个固定端口。
省去冗长的命令行。 把参数写进一个 JSON 文件,用 --config config/server-basic.json(或 config/cli-basic.json)传入。配置项甚至可以在首次运行时自动下载模型,因此全新机器无需手动下载。仓库的 config/ 目录提供了开箱即用的示例。→ 配置文件