1. 三条推理路线到底怎么选:先算清你的 GPU 到底能跑多满
大模型推理选型这件事,绕来绕去其实就三条路:无服务器 API、专用推理端点、GPU 实例自建 vLLM。无服务器 API 是按 Token 计费、即用即付,适合流量不稳定、不想碰运维的团队;专用推理是独占算力、平台托管,适合要物理隔离但不想管机器底座;GPU 实例自建则是租裸机自己部署 vLLM,控制权最大、单 Token 成本最低,但运维全扛。适合谁?一句话:早期流量尖刺选无服务器,有稳定基载且能跑满 25% 以上负载率再考虑自建。
我试过把同一个 Qwen3-32B 模型在三条路线上各跑一轮,结论和大多数人直觉相反——自建单 Token 确实便宜,但前提是那块 GPU 真的在满载工作。现实里早期项目 GPU 日常负载率往往只有 5% 到 10%,这个区间自建成本反而是无服务器的 2 到 4 倍,还得搭上人力。所以核心问题从来不是"无服务器还是自建",而是你的 GPU 能有多稳定地跑满。
这篇不堆概念,直接给可复制的配置骨架和一次真实请求验证,帮你按量快速判断该走哪条。同时把 TaoToken 统一 Key 接入的 config.toml 和 settings.json 骨架放出来,三条路线都能用同一套 Key 通道切换,省得每换一个后端就重写一遍应用层。
2. TaoToken 前置:统一 Key 通道解决什么问题
三条路线最大的坑不是算钱,是每换一个后端就要改一遍代码里的 base_url、鉴权头、模型名映射。无服务器 API 一套、专用端点一套、自建 vLLM 又一套,应用层被绑死在某一个供应商上,迁移成本极高。
TaoToken 在这里的角色是一个统一入口:你拿一个 Key,通过它的 API 通道去访问不同后端,应用层只认一个 base_url 和一套鉴权格式。这样当你要把热路径从无服务器迁到自建 vLLM 时,改的是网关配置而不是业务代码。
先拿 Key。打开 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api_keys&utm_campaign=rewrite 生成一个 API Key,记下来。接入文档在 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite ,里面有完整的端点说明和参数表。API 基址统一用 https://taotoken.net/api ,注意这个地址不带任何查询参数。
注意:Key 只生成一次可见,丢了只能重新建。别把它硬编码进前端或提交到仓库,用环境变量或本地配置文件。
拿到 Key 之后,下面三套配置骨架可以直接抄,分别对应命令行工具、编辑器插件和 vLLM 自建场景。
3. 可复制配置:config.toml 与 settings.json 骨架
3.1 config.toml 骨架(命令行 / CLI 工具通用)
很多 CLI 类工具用 TOML 做配置。下面这份骨架把 provider 指向 TaoToken 通道,模型名按你实际要调的填:
# ~/.config/taotoken/config.toml [provider] name = "taotoken" base_url = "https://taotoken.net/api" api_key = "sk-你的Key" timeout_seconds = 120 [model] # 无服务器阶段先用平台默认模型名 default = "qwen3-32b" # 自建 vLLM 时改成你本地起的模型名,例如 qwen3-32b-local fallback = "qwen3-32b" [request] max_tokens = 2048 temperature = 0.7 stream = true [retry] max_attempts = 3 backoff_seconds = 2关键点:base_url 只写 https://taotoken.net/api ,不要在后面拼 /v1 之类的路径,具体路径由工具自己补。timeout 给足,自建 vLLM 冷启动或长上下文时首 Token 可能慢。
3.2 settings.json 骨架(编辑器插件 / 类 IDE 场景)
编辑器插件一般吃 JSON。这份骨架把模型对话和补全分开配:
{ "taotoken": { "baseUrl": "https://taotoken.net/api", "apiKey": "sk-你的Key", "models": { "chat": "qwen3-32b", "completion": "qwen3-32b" }, "request": { "maxTokens": 2048, "temperature": 0.7, "stream": true }, "retry": { "maxAttempts": 3, "backoffMs": 2000 } } }如果你走的是长期编码或 Agent 场景,建议直接上 Coding Plan,配置更省心:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding_plan&utm_campaign=rewrite 。它把编码类请求的模型路由和额度都预设好了,你只需要填 Key。
3.3 vLLM 自建场景的对接配置
自建这块,vLLM 起服务本身不复杂,难的是把它接到统一通道上。先起 vLLM:
python -m vllm.entrypoints.openai.api_server \ --model Qwen/Qwen3-32B \ --served-model-name qwen3-32b-local \ --host 0.0.0.0 \ --port 8000 \ --tensor-parallel-size 1 \ --max-model-len 8192 \ --gpu-memory-utilization 0.90起好之后本地验证一下:
curl http://localhost:8000/v1/models返回模型列表就说明 vLLM 活着。然后你要做的是在 TaoToken 通道侧把后端指向这个自建端点(具体后端绑定方式见接入文档),应用层仍然只认 https://taotoken.net/api 。这样迁移时业务代码零改动。
注意:vLLM 默认不带防火墙规则,如果你在云主机上起,安全组要手动放行端口。我踩过一次坑,端口被静默拦了,本地 curl 通、外部死活连不上,排查了半天才发现是安全组。
4. 验证请求:一次调用确认通道打通
配置写完别急着上量,先发一次最小请求确认链路通。用 curl 直接打:
curl -X POST https://taotoken.net/api/v1/chat/completions \ -H "Authorization: Bearer sk-你的Key" \ -H "Content-Type: application/json" \ -d '{ "model": "qwen3-32b", "messages": [ {"role": "user", "content": "用一句话说明什么是推理负载率"} ], "max_tokens": 128, "stream": false }'成功的话你会拿到一个 JSON,choices[0].message.content 里有模型回答,usage 字段里能看到 prompt_tokens 和 completion_tokens。这两个数就是你后面算成本的分子。
如果你想在网页里直接对比不同模型的表现,可以用模型对话页面快速试:https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_content=models&utm_campaign=rewrite 。同一个 prompt 换不同模型跑一遍,心里对延迟和输出质量有个底,再决定生产用哪个。
验证通过后,把这次请求的 usage 记下来。假设一次对话是 1000 输入 + 500 输出,无服务器按 Token 计费的成本是固定的;自建则要拿这块 GPU 的小时费除以它一小时能处理的请求数。这两个数对齐了,盈亏平衡点才算得准。
5. 本篇常见错排查
5.1 401 / 403:Key 或鉴权头写错
最常见的是 Authorization 头格式不对。必须是Bearer sk-xxx,中间一个空格,别漏了 Bearer。另外确认 Key 没有多余空格或换行,从网页复制时容易带上尾部空白。
5.2 404:base_url 拼错路径
base_url 只写 https://taotoken.net/api ,路径部分(/v1/chat/completions)由请求自己带。如果你在 base_url 里又拼了一遍 /v1,就会变成 /api/v1/v1/... 直接 404。检查配置文件里有没有重复拼接。
5.3 超时:自建 vLLM 冷启动或上下文太长
自建 vLLM 首次加载模型权重可能要几分钟,这期间请求会挂起。把 timeout 设到 120 秒以上。另外 max-model-len 设太大而显存不够时,vLLM 会启动失败或推理极慢,按实际显存调,别硬拉满。
5.4 成本算错:拿输出 Token 比全量 Token
这是最容易踩的坑。无服务器 API 的价目表输入和输出分开算,而自建 GPU 只给你一张按小时计费的账单。如果你只按输出 Token 折算自建成本,分母就少了一大块,自建会显得比实际贵。正确做法是每次完整回答(输入+输出)算总价,两边数同一笔账。
5.5 孤儿资源:以为关了其实还在计费
专用端点或 GPU 实例从控制台"删除"后,后端机器不一定同步释放。我遇到过端点从 API 列表消失了,但底层实例还在跑、还在计费,直到手动去实例列表里删掉才停。每次下线后去资源列表确认一遍,别只看端点状态。
6. 按量选型:把 Key 通道先搭好,再决定后端
回到选型本身。产品没找到 PMF 之前,流量是尖刺和突发的,无服务器 API 最省钱也最省心,空闲时几乎不花钱。当监控数据显示你的基载流量能让至少一块 GPU 全天保持 25% 到 50% 忙碌时,自建 vLLM 才开始真正比无服务器便宜。专用推理因为平台托管溢价约 30%,盈亏平衡点会上移到 29% 左右。
策略上"先租后买"更聪明:云端租 GPU 实例的推理速度和买断硬件一致,但省掉重资产开支。架构最前端放一个轻量网关,未来把热路径迁到自建服务时只改几行配置,应用层不动。
现在就可以动手:先去 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api_keys&utm_campaign=rewrite 拿一个 Key,把上面的 config.toml 或 settings.json 填好,发一次验证请求。通道打通之后,你换后端就是改配置的事,选型决策可以慢慢用真实数据来定。