跳到主要内容

推理运行时

text-generation-webui 本地部署:五种后端、一个界面,显存到底该怎么算

oobabooga 的 text-generation-webui 已经走到 v4.9,llama.cpp、ik_llama.cpp、ExLlamaV3、Transformers、TensorRT-LLM 五个加载器可以在同一个窗口里热切换。真正决定你能跑多大模型的,从来不是这个界面,而是卡上那几十 GB 显存。

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 把专家层搬到系统内存后,显存占用可以压到权重的一小半同 GGUFv4.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,再加 KVcache 支持 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 兼容接口可调,四步。

  1. 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>
  2. 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
  3. 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
  4. 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 —

常见问题

text-generation-webui 到底需要多大显存?

界面本身几乎不占显存,占显存的是模型权重加上预分配的 KV cache。GGUF 的经验公式很好用:Q4_K_M 约等于参数量 ×0.6GB,Q8_0 约 ×1.06,bf16 是 ×2。所以 8B Q4_K_M 约 5GB、32B 约 20GB、70B 约 43GB。KV 那部分别忘了——文档明确写着 cache 是预分配的,--ctx-size 开多大就先扣多少,把 --cache-type 从 fp16 换成 q8_0 能直接省掉一半。照这个算完再选卡:NexGPU 上 24GB 到 141GB 一共 75 种型号,RTX 3090 $0.193、RTX 5090 32GB $0.723、A100 80GB $0.824、H200 141GB $6.660,按秒计费,选错了停掉换一张就行。

和 vLLM、Ollama 比,什么时候该用 text-generation-webui?

分工其实很清楚。vLLM 是给高并发线上服务用的,PagedAttention、连续批处理,一个后端做到极致;Ollama 胜在傻瓜化。text-generation-webui 的独门优势是五种后端共存、不重启热切换,加上 Notebook 续写、对话分叉、参数面板全暴露、LoRA 就在同一个界面里训——它是一台单人工作台,适合选型对比和调参阶段。NexGPU 的 2,000+ 预置镜像里 PyTorch 和 vLLM 都有,你完全可以先在 textgen 里把模型和量化档位比出来,再原地换个实例上 vLLM 做压测。

加载模型报 unknown model architecture 怎么办?

这是仓库 issue 区最常见的一类,比如有人反馈 'unknown model architecture: minimax-m3'。原因是每个 release 内置的 llama.cpp 是钉死在某个 commit 上的——v4.9 就是 e947228,新架构合并进上游之后,要等下一个 textgen 版本才会跟上。三条出路:等新 release、自己替换 llama.cpp 二进制、或者直接换 Transformers 加载器(它跟着 transformers 库走,通常最早支持新架构,但要按 bf16 或 4-bit 重新估显存)。后一条路显存需求会跳一个档,在 NexGPU 上临时换成 A100 PCIE 80GB $0.824/卡·时 顶一晚,比重装环境快得多。

能在里面训 LoRA 吗?需要什么卡?

能,Training 标签页支持多轮对话数据集和 raw text 两种格式,走 Transformers 路径。但要注意 portable 包是带 --portable 启动的,训练功能被显式关闭了,必须改用 start_linux.sh 那套完整安装(conda + Python 3.13)。显存上,训练要同时装下权重、梯度和优化器状态,通常是纯推理的三到四倍,7B 级别的 LoRA 建议直接上 80GB 卡。NexGPU 的 H100 SXM 80GB 是 $3.582/卡·时,A100 SXM4 80GB $1.088/卡·时,跑完就停,不用为了几个小时的微调去申请配额。

老教程里的 ExLlamaV2、AutoGPTQ 加载器怎么找不到了?

因为它们已经不在当前的加载器列表里了。v4.9 的 Model 标签页只有五个:llama.cpp、ik_llama.cpp、Transformers、ExLlamav3_HF / ExLlamav3、TensorRT-LLM。网上 2024 年那批 GPTQ 教程基本都过期了,EXL3 是 ExLlamaV3 的新格式,和 EXL2 权重不通用。如果你手里全是老量化文件,最稳的迁移路径是转去 GGUF 走 llama.cpp。这类试错在按秒计费的机器上做最合适——NexGPU Tesla T4 16GB 只要 $0.298/卡·时,够你把格式兼容性一个个验证过去。

部署在云上,怎么安全地远程访问 Web UI 和 API?

v4.9 已经把 CORS 默认收紧到只允许 localhost,并修掉了角色名路径穿越的问题,所以最佳实践就是不要对公网开放。用 SSH 端口转发把 7860 和 5000 拉回本地,是零配置又零暴露面的做法。团队共享的话,--listen 配 --gradio-auth 用户名:密码,API 侧配 --api-key,两层都别省。NexGPU 的实例默认提供 SSH、Jupyter、网页终端和 REST API 四种入口,51 个国家和地区可以就近选节点降低延迟,遇到打不通的情况在 Telegram 上找我们,中英文都行,没有工单排队。

开始使用 NexGPU

无论你是企业研发团队还是独立开发者,都可以在几分钟内跑起第一个任务。

注册即可浏览全网实时价格,无需绑定支付方式。