text-generation-webui 是 oobabooga 维护的本地大模型工作台,仓库在 github.com/oobabooga/text-generation-webui,许可证是 AGPL-3.0。它和 Ollama、LM Studio 那一类「一个后端包打天下」的工具不是一回事:它把 llama.cpp、ik_llama.cpp、ExLlamaV3、Transformers、TensorRT-LLM 五条完全不同的推理路径塞进同一个 Model 标签页,你可以下午用 GGUF Q4 跑 32B,晚上切到 Transformers 加载一个 llama.cpp 还没支持的新架构,中间不用重启进程。代价就是你得自己搞清楚每条路径吃多少显存。
从 v4.7.3 开始,portable 版本直接打包了 Electron,解压双击 textgen 就是一个原生窗口,不再是「先启动服务再开浏览器」。发行资产按 textgen-portable-[ik-]4.9-[系统]-[后端].zip 的格式命名,Windows 与 Linux 各有 cuda12.4、cuda13.1、vulkan、rocm7.2、cpu 五档,Linux 还多一个 arm64-cuda13.1 给 DGX Spark,macOS 提供 arm64 与 x86_64(仅 llama.cpp)。v4.9 里内置的后端版本是写死的:llama.cpp 停在 commit e947228,ik_llama.cpp 是 40254a5,ExLlamaV3 是 0.0.34 —— 这一条后面会解释为什么重要。
功能层面它已经不只是个聊天框:多模态图片输入、txt/PDF/docx 附件解析、消息编辑与对话分叉、Notebook 自由续写、OpenAI 与 Anthropic 双兼容 API(含 tool calling)、MCP stdio 服务器、网页搜索工具、LoRA 微调,外加 v4.9 新加的 MTP 推测解码自动启用和实时 tokens/s 显示。全程零遥测、不联外部资源。这些功能全都跑在你自己的卡上——在 NexGPU 上,那张卡从 RTX 3090 24GB $0.193/卡·时 起步,按秒计费,停机即停算力费用。
01 —
五种加载器与量化格式:先搞清楚谁吃多少显存
text-generation-webui 本体几乎不占显存,占显存的是权重加上预分配的 KV cache。
| 版本 | 参数量 | 显存 | 上下文 | 说明 |
|---|---|---|---|---|
| llama.cpp(GGUF) | 1B–70B 单卡主力 | Q4_K_M ≈ 参数量 ×0.6GB:8B ≈ 5GB / 32B ≈ 20GB / 70B ≈ 43GB;Q8_0 ≈ ×1.06 | --ctx-size 默认 0,自动读 GGUF 元数据里的原生窗口 | v4.9 内置 commit e947228。--gpu-layers 默认 -1 自动分配,装不下会自动往内存溢;--cache-type 支持 fp16 / q8_0 / q4_0,KV 是预分配的,上下文开多大就先扣掉多少显存。 |
| ik_llama.cpp(ik- 独立包) | 大 MoE 与 CPU 混合卸载 | 与同名 GGUF 同量级,但 --cpu-moe / --n-cpu-moe 把专家层搬到系统内存后,显存占用可以压到权重的一小半 | 同 GGUF | v4.9 内置 commit 40254a5,单独打包成 textgen-portable-ik-4.9-* 资产。跑 100B+ 的稀疏 MoE 时比主线 llama.cpp 更省显存,代价是速度受内存带宽拖累。 |
| ExLlamaV3 / ExLlamav3_HF(EXL3) | 8B–70B 纯显存推理 | 按 bpw 直算:[email protected] ≈ 16GB,[email protected] ≈ 26GB,再加 KV | cache 支持 fp16 与 q2–q8,K/V 可分别指定位宽 | v4.9 内置 ExLlamaV3 0.0.34。纯 GPU 路线,没有 CPU 卸载这条后路,装不下就是加载失败。ExLlamav3(非 _HF)版本额外支持推测解码与多模态模型。 |
| Transformers(bf16 / bitsandbytes) | 1B–13B 全精度,或 4-bit / 8-bit 量化 | bf16 = 参数量 ×2GB(8B ≈ 16GB);load_in_4bit 后 8B ≈ 6GB,配合 use_double_quant 再降一点 | 受 --ctx-size 与模型原生窗口双重约束 | 唯一能接 LoRA 训练的路线,也是模型架构覆盖最广的一条。当 llama.cpp 还没合并某个新架构时,先用 Transformers 顶上,往往是唯一可行解。 |
| TensorRT-LLM | 预编译 engine | 取决于编译时选定的精度与 batch / seq 上限,编译完就固定了 | 在编译 engine 阶段写死 | NVIDIA 专用、单卡吞吐最高,但换模型、换上下文长度都要重新编译引擎。适合参数已经定死、准备长期常驻的服务,不适合边试边调。 |
02 —
按你要跑的模型选卡
价格为 NexGPU 每卡每小时刊例价,按秒计量、按小时计价,没有起租时长、没有开通费。
8B–14B GGUF,把 UI、API、工具调用、MCP 全流程跑通
RTX 3090 24GB$0.193/卡·时
14B Q4_K_M 只要 9GB 左右,24GB 剩下的空间够你把 --ctx-size 拉到 32K 还用 fp16 cache,是验证配置最便宜的一张卡。
32B Q4_K_M 常驻 + 32K 上下文
RTX 5090 32GB$0.723/卡·时
32B Q4_K_M 权重就吃掉约 20GB,24GB 卡加上预分配 KV 之后会被迫砍上下文;32GB 才有余量把 --cache-type 留在 q8_0 而不是降到 q4_0。
70B Q4_K_M 单卡跑,不想折腾 tensor-split
A100 PCIE 80GB$0.824/卡·时
70B Q4_K_M 约 43GB,塞进 RTX A6000 48GB($0.817/卡·时)后几乎不剩 KV 空间——多花 $0.007 换 80GB,是这张价目表上最划算的一次升级。
LoRA 微调,或用 Transformers 走 bf16 全精度
H100 SXM 80GB$3.582/卡·时
Training 标签页走的是 Transformers 路径,梯度与优化器状态是推理的数倍;bf16 训练还要 portable 版之外的完整安装,H100 的显存和带宽能让这一步一次过。
03 —
在 NexGPU 上部署 text-generation-webui
从开机到 OpenAI 兼容接口可调,四步。
- 01
开一台带 GPU 的实例
在 console.nexgpu.net 按上面的选型表挑卡,镜像直接选 PyTorch 或 Ubuntu CLI(2,000+ 预置镜像里都有)。整个网络有 1,175 个已验证可租节点、2,498 张 GPU、75 种型号,单节点最多 14 卡、最大节点显存 2,152GB。开好之后用 SSH、Jupyter 或网页终端进去都行。
ssh -p <port> root@<node-ip> - 02
装 text-generation-webui
最省事的是下 portable 包,依赖全都打好了,Python 3.9+ 即可。想要 LoRA 训练就别用 portable——它带 --portable 启动,训练功能是关掉的,那种情况改用仓库里的 start_linux.sh 一键安装(走 conda,Python 3.13)。
wget https://github.com/oobabooga/text-generation-webui/releases/download/v4.9/textgen-portable-4.9-linux-cuda13.1.tar.gz && tar -xzf textgen-portable-4.9-linux-cuda13.1.tar.gz - 03
把模型丢进 user_data/models/ 并带 API 启动
GGUF 是单文件,直接放 user_data/models/ 根目录;Transformers 和 EXL3 是多文件,必须各自建子目录保持原始结构。启动时 --api 才会拉起兼容接口,默认端口 5000,路径 /v1;--api-key 一定要设,别裸奔。
wget -P user_data/models/ https://huggingface.co/bartowski/Qwen2.5-32B-Instruct-GGUF/resolve/main/Qwen2.5-32B-Instruct-Q4_K_M.gguf && ./start_linux.sh --model Qwen2.5-32B-Instruct-Q4_K_M.gguf --gpu-layers -1 --ctx-size 32768 --cache-type q8_0 --api --api-key sk-your-own-key - 04
用 SSH 隧道访问,别开 --share
v4.9 起 CORS 默认只放行 localhost,这是好事。正确做法是本地起一条端口转发,把 7860(Web UI)和 5000(API)拉回本机,浏览器打开 127.0.0.1:7860 就是完整界面。确实要暴露给团队时,再加 --listen 配合 --gradio-auth 用户名:密码,而不是甩一个 --share 公网链接出去。
ssh -N -L 7860:127.0.0.1:7860 -L 5000:127.0.0.1:5000 -p <port> root@<node-ip>
一个月要花多少:算给你看
假设你用 RTX 5090 32GB($0.723/卡·时)常驻一个 32B Q4_K_M,做内部知识库问答的原型验证,每天真正开机 4 小时、一个月按 20 个工作日算,就是 80 小时 × $0.723 = $57.84。再留 60GB 存储放三四个不同量化的 GGUF:60 × $0.414 = $24.84;把结果导出去 20GB:20 × $0.0081 = $0.16。合计约 $82.84/月。同样的 80 小时如果只是拿 RTX 3090 24GB($0.193/卡·时)跑 8B Q4 调 prompt 和工具链,算力部分只要 $15.44。关键在于计费口径:实例一停,算力费用立刻停止;存储会一直计到你把它销毁为止,所以试完记得清掉不再需要的 GGUF。
04 —
