☰
英伟达为何不卖Token?从GPU算力到AI计费的生态逻辑
2026/10/11 14:31:42 网站建设 项目流程

英伟达(NVIDIA)和 token 是这两年 AI 开发中高频出现的两个词:前者代表 GPU 算力,后者代表大模型 API 的计费刻度。把这两个词放在一起,很多人会问同一个问题:英伟达明明掌握 AI 算力产业链上游,为什么不直接面向开发者按 token 售卖服务?

这个问题表面上是“英伟达为什么不做模型 API”,实际上涉及芯片厂商、云厂商、模型厂商和应用程序开发者之间的分工。英伟达卖的是 GPU、CUDA 生态和训练推理集群,token 则是模型服务输出的计量单位。直接卖 token,意味着英伟达要从“算力生产工具供应商”变成“模型服务平台运营方”,这会和它最大的客户群产生冲突,也会把它的商业重心从硬件和基础软件拉到应用层。

这篇文章会先用工程视角把 token 的概念、计算方式和计费逻辑讲清楚,再拆解英伟达的商业模式为什么停在算力层,然后给出开发者在实际项目中管理 token 用量、排查 token 失效和鉴权问题的方法。最后会对比自建 GPU 和购买 token API 的成本模型,作为选型参考。

1. Token 是模型服务的通用计量单位,先把它讲透

1.1 Token 是模型看文本的最小切片

大模型不会按“字”理解文本,而是先把文本拆成 token 序列,再把这些 token 映射成向量进行训练和推理。一个 token 不固定等于一个汉字,也不固定等于一个英文单词,它可能是单词的一部分、完整单词、标点或空格。

例如在常见英文 tokenizer 中,"developer"可能被拆成"de"和"veloper"两个 token,而"AI"可能被拆成两个字符级 token。中文字符在部分模型里一个字可能对应 1 到 2 个 token。所以不能通过统计字符串长度来精确预测 token 数,必须使用模型对应的 tokenizer。

从模型内部看,输入和输出都是 token 序列。模型一次推理会处理很多 token,显存占用、计算量、响应耗时都和 token 数量相关。这也是 API 服务方选择按 token 计费的根本原因:token 数量最能反映模型实际消耗的计算资源。

1.2 为什么按 Token 而不是按字数或请求次数计费

按请求次数计费不公平。一个“你好”的请求和一个“请分析这份一万字合同并逐条列出风险”的请求,计算成本差距巨大,但请求次数都是一次。

按字符或字数计费也不准确。不同模型用不同 tokenizer,同样一段中英文混杂的文本,在不同模型里的 token 数并不一致。而且 token 数和字符数之间没有稳定换算关系,尤其在中英文混合场景下,偏差会更大。

按 token 计费的优势在于:它能相对准确地反映模型注意力计算、KV Cache 占用和生成耗时。常见的计费方式会区分输入 token 和输出 token,因为输入可以并行编码,输出则需要逐 token 自回归生成,输出侧的算力成本和延迟成本通常更高。现在很多平台还会对缓存命中的输入 token 打折,原因也是这部分计算可以复用,不需要重新跑一遍完整推理。

1.3 Token 数量怎么估算:中英文差异和 Tokenizer 工具

项目里最稳妥的做法是使用模型官方 tokenizer 或与模型同源的 tokenizer 库做预计算。以 Hugging Face Transformers 为例,可以这样统计一段文本的 token 数:

from transformers import AutoTokenizer tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen2.5-7B-Instruct") text = "英伟达为什么不出售 token?这涉及产业链分工和商业模式问题。" tokens = tokenizer.encode(text) print("文本长度:", len(text)) print("Token 数量:", len(tokens)) print("Token 序列:", tokenizer.convert_ids_to_tokens(tokens))

这段代码先加载目标模型的 tokenizer,再把文本编码成 token id 列表,最后打印出 token 数量和分词结果。

实际项目中要注意几个问题。第一,不同模型的 tokenizer 不通用,不能用 A 模型的 tokenizer 去估算 B 模型的用量。第二,带对话模板的请求通常还会在消息前后插入系统角色、结束符等额外 token,真实请求的 token 数往往比纯文本统计更多。第三,部分平台会对输入自动截断或补全,最终费用要以服务端返回的 usage 字段为准。

一个实用的经验值是:英文中 1 个 token 大约对应 0.75 个单词;中文里 1 个汉字通常对应 1 到 2 个 token;100 个 token 大约能承载 50 到 100 个汉字。这个区间只能用于早期估算,不能作为成本核算依据。

2. 英伟达赚钱的环节在算力层,Token 只是模型层的出口价

2.1 英伟达的核心生意:GPU、CUDA 和整机系统

要理解英伟达为什么不卖 token,先要看它的收入来源。英伟达的商业模式核心是数据中心 GPU、CUDA 软件生态、网络设备以及 DGX 整机系统。它服务的主要对象是云厂商、大型互联网公司、科研机构和需要建设 AI 基础设施的企业。

这些客户买回 GPU 之后,会自己搭建推理平台,或者租给模型厂商和开发者使用。英伟达在这些交易里的角色是“卖铲子的人”:它不关心最终用户用模型生成的是代码、文章还是图片,只关心 GPU 卖了多少张、CUDA 生态是否让客户离不开。

如果英伟达亲自下场按 token 售卖模型 API,它就要同时扮演模型服务商、API 网关、计费平台和内容合规方,商业重心会从硬件和基础软件转移到应用平台运营,这和它现有的大客户关系是直接冲突的。

2.2 英伟达也有云服务和推理优化工具,但不以 Token 为主要计费

英伟达并不是完全没有云服务。它提供 DGX Cloud 这样的托管算力环境,也提供 NIM 这类经过优化的推理微服务。但需要注意,这些服务的计费思路仍然是“算力资源”,而不是“模型输出 token”。

DGX Cloud 更多是按托管的 GPU 实例和资源使用时长来计费。NIM 则是一套可以部署在自有或第三方云环境里的推理服务容器,用户在自己控制的基础设施里运行模型,按资源规模而不是按 token 数量付费。

这意味着英伟达允许客户在自己的生态里更容易地跑大模型,但它没有把公司变成 OpenAI、Anthropic 或国内大模型厂商那样的 API 供应商。它更希望更多的云厂商和模型厂商购买它的 GPU,然后各自按 token 去赚钱。

2.3 云厂商、模型厂商和 API 服务商各自从 Token 里分走什么

一条典型的 token 计费链路包含多个角色:

产业链角色核心产品主要计费方式典型成本
芯片厂商GPU、CUDA、网络设备按硬件售价或实例资源费芯片研发、制造、驱动适配
云厂商GPU 云服务器、容器实例按小时、按实例规格机房、网络、运维、电费
模型厂商大模型 API、私有化模型按输入和输出 token 数训练、推理优化、算法团队
应用开发者聊天机器人、AI 工具按订阅费或产品售价集成、业务逻辑、用户运营

在这个链条里,英伟达处于最上游,它先赚到硬件和基础软件的钱。云厂商买回 GPU 后按资源时长卖出,模型厂商再租用算力训练模型,最后按 token 把模型能力卖给开发者。

如果英伟达自己做 token 服务,它不是没有技术能力,而是会破坏这个分工。云厂商会担心英伟达既卖 GPU 给它,又通过自营 API 抢走它的最终客户,采购意愿会明显下降。

3. 如果英伟达亲自卖 Token,会碰到自己的客户和生态问题

3.1 从硬件供应商变成平台运营方,思维和成本结构都不同

做硬件供应商和做 API 平台是完全不同的生意。硬件供应商可以在产品交付后就把运维责任交给客户,但模型 API 平台必须持续保证服务可用性,处理请求限流、故障恢复、数据隔离、退款投诉和内容安全。

按 token 收费虽然看起来简单,但背后需要一整套配额系统。每个用户每秒能调用多少次,每次请求最多能传多少上下文,超额后是限流还是计费,不同模型是否需要单独定价,这些问题都需要大量产品化和运营投入。

英伟达如果不做充分准备就进入这个领域,不仅会分散研发精力,还会让自己的产品从“稳定的算力基础设施”变成“需要不断承诺 SLA 的在线服务”。这类业务在故障时承受的舆论压力也比单纯卖硬件大得多。

3.2 直接与云厂商客户形成竞争,影响显卡出货渠道

英伟达最大的客户之一是云厂商。云厂商大量采购 GPU,然后向模型厂商和开发者出租算力。如果英伟达自己推出一款按 token 收费的大模型 API,并且价格比云厂商生态里的模型服务更低,那么云厂商花巨资采购 GPU 的积极性就会下降。

英伟达更聪明的做法是保持中立,让云厂商、模型厂商和开源社区都在自己的硬件生态上赚钱。这样 GPU 销量越大,整个生态的供给越多,英伟达的反而不是某一个模型 API 的收益,而是整条产业链对算力需求的持续增长。

这也是为什么英伟达更愿意推出 NIM 这类工具:它帮助客户更快地部署模型,但计费仍然围绕资源,而不是模型输出语义。

3.3 GPU 按资源占用计费,Token 按语义处理量计费,后端逻辑差别很大

GPU 计费可以按实例规格、运行时长和资源利用率来设计,运维边界清晰。但 token 计费要复杂很多。

模型 API 返回给用户的 token 数取决于提示词、上下文长度、采样参数和模型词表。同一个问题,用不同模型回答,输出 token 数可能差很多。再加上缓存命中、并行生成、动态批处理等优化手段,服务方按 token 计价时必须设计更细的计费规则。

还有一类问题是估计成本。模型服务方通常会在响应里返回 usage 字段,里面包含输入 token、输出 token 和总 token。这要求平台能准确记录每个请求的 token 消耗,并把它与用户账户实时关联。对英伟达来说,这不是核心能力,短时间内建立这套系统也未必比现有模型厂商更有优势。

3.4 区域合规、数据出境、内容审核和支付结算会让问题更复杂

模型 API 服务比硬件销售更接近数据业务。数据出境、模型备案、内容审核、支付渠道、发票、退款、未成年人保护等合规要求,都会随业务规模扩大而越来越重。

硬件卖到不同地区,主要面对的是关税、供货和认证问题;模型 API 一旦面向全球开发者开放,就要处理不同国家和地区的服务条款、隐私政策和可用性差异。这也是为什么很多开发者会在登录或令牌交换阶段看到与“地区不支持”相关的报错。这类问题往往不是代码 bug,而是账号归属区域不在服务范围内。

英伟达不亲自做 token 业务,很大程度也是在规避这类重运营环节。它继续专注于 GPU、CUDA 和推理优化工具,把区域化服务交给更熟悉当地市场规则的云厂商和模型厂商。

4. 开发者真正要管理的 Token 用量、额度和免费额度

4.1 用 Tokenizer 在请求前和请求后分别计算用量

开发者在接入大模型 API 时,最需要养成的习惯是:请求前估算 token,请求后读取 usage。

请求前估算主要用于控制成本。例如在用户输入超长文本时,可以先截断到预设长度,再调用模型。请求后则必须读取服务端返回的 usage 字段,那才是计费依据。

下面是一个典型的请求后用量记录结构:

{ "usage": { "prompt_tokens": 325, "completion_tokens": 128, "total_tokens": 453 } }

不同平台的字段名可能不同,常见命名有prompt_tokens、completion_tokens、input_tokens、output_tokens、total_tokens。生产项目应该把每次请求的行model、input_tokens、output_tokens、timestamp、user_id落库,方便月底做成本归因。

即使是使用云 GPU 自建模型,也应该在推理服务端记录 token 数。很多推理框架会在响应中返回 token 统计,把这部分数据接入监控看板,可以发现异常请求、超长输出和资源浪费。

4.2 Credits 与 Token 的换算没有统一标准

很多平台不直接用 token 显示余额,而是使用 credits、积分或额度,例如“2500 credits 相当于多少 token”这类问题就没有固定答案。

原因是每个平台自己决定信用分与 token 的汇率。有的平台 1 credit 等于 1 token,有的平台则按模型不同设置不同汇率,还有的平台把输入和输出拆成不同扣费比例。甚至同一个平台的不同模型,credits 消耗速度也不同。

正确做法是查平台文档中的计费说明,然后发一个真实请求,查看返回的 usage 字段和账户余额变化,反推出实际兑换关系。不要凭其他平台的规则猜测。

实践中可以把单价和转化率配置到代码里,做成计费配置表。例如:

{ "model": "example-chat", "input_price_per_1k_tokens": 0.002, "output_price_per_1k_tokens": 0.006, "currency": "USD" }

这里的价格只是示例。实际生产环境应按模型、按地区、按计费周期维护配置,并定期核对账单。

4.3 免费 Token 的常见限制和正确用法

不少平台会提供免费 token 或免费额度,用于吸引开发者体验。免费 token 看起来很划算,但限制通常不少。

限制类型常见表现开发建议
有效期注册后 30 天或 90 天内有效先查看到期时间,不要囤积
速率限制每分钟最多几次请求做好退避重试,不能按生产峰值设计
模型范围只能使用某些轻量模型根据模型白名单设计功能
商业使用不允许用于生产或商用上线前必须切换正式计费
并发限制同一时间只能少量请求用队列或限流保护逻辑

把免费 token 直接写进生产环境、提交到 GitHub 或写在前端页面,是最容易出问题的行为。免费 token 一旦泄露,可能被他人刷爆,平台也会因为异常流量封禁账号。

生产项目应该把 token 统一放在环境变量或密钥管理系统里,并且保证免费 token 不进入任何正式链路。

5. Token 失效、鉴权失败和续签:最常见的线上问题

5.1 Token 失效的典型现象

在 AI 编程工具、API 网关和 OAuth 登录链路里,token 相关的报错非常典型:

  • 登录后提示sign-in could not be completed
  • 调用接口返回401 unauthorized: invalid token
  • 登录服务报token exchange failed
  • 系统提示your access token could not be refreshed

这些现象的共同点是:客户端持有某个 token,但服务端不认它。可能是 token 过期、被撤销、签名不匹配、权限不足,也可能是本地时间和服务端时间不一致。

遇到这类报错时,不要急着改代码。先把错误信息里的关键字拆出来,例如token exchange failed、401、invalid token、could not be refreshed,再决定排查方向。

5.2 Token Exchange 类报错的排查链路

token exchange是 OAuth 授权流程中的一个节点:客户端用授权码或旧 token 向认证服务换取新的访问令牌。失败时可能是一个授权码已经用过或过期,也可能是回调地址不一致,或者是账号本身没有权限。

推荐按以下顺序排查:

# 1. 确认本地能否访问认证服务 curl -I https://auth.example.com/health # 2. 带上 token 调用业务接口,观察返回状态码和错误体 curl -i https://api.example.com/v1/chat/completions \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{"model":"example-model","messages":[{"role":"user","content":"hi"}]}'

如果第一步失败,说明网络或服务地址有问题。如果第二步返回 401,则要检查 token 是否过期、是否传错 header、token 前缀是否正确。

这里要注意,403 forbidden并不一定代表 token 写错。很多平台的认证服务会返回“当前账号所属区域不在支持范围”或“账号没有使用该功能的权限”。这类问题不是本地代码能解决的,需要向平台确认账号状态和支持区域。

排查顺序建议是:网络可达性 -> 本机时间 -> 参数是否一致 -> 服务端日志 -> 账号权限。不要跳过前面的步骤直接改鉴权逻辑。

5.3 Access Token、Refresh Token 和 API Key 的职责边界

很多项目里 token 概念混在一起,实际它们并不一样。整理一个对比方便快速定位问题:

类型生命周期存放位置典型用途失效原因
Access Token短,通常几分钟到几小时内存或客户端变量每次请求的鉴权凭证过期、被撤销、权限被改
Refresh Token长,通常几天到几个月后端安全存储换取新的 Access Token被撤销、过期、设备变更
API Key长期,一般不会自动过期服务端环境变量识别调用方身份被手动撤销、权限被改

Access Token 放在前端内存或短存储里问题不大,但 Refresh Token 不能放进 localStorage 或普通 Cookie,否则一旦被脚本读取,攻击者就能长期维持登录状态。API Key 则不能出现在前端代码和公开仓库里。

如果项目里经常出现“登录后一段时间就 401”,多半是 Access Token 过期后客户端没有用 Refresh Token 续期。如果 Refresh Token 也失效,则通常需要让用户重新登录。

5.4 JWT 续签的两种实现思路

常见的 JWT 续签策略有两种。第一种是双 token 方案,Access Token 有效期短,Refresh Token 有效期长,客户端在收到 401 后主动用 Refresh Token 换取新的 Access Token。第二种是滑动过期方案,只要用户在一定时间内持续使用,Access Token 过期时间就不断往后推。

双 token 方案更通用。下面是一个简化后的续签流程:

def refresh_access_token(refresh_token): response = requests.post( "https://auth.example.com/oauth/token", json={ "grant_type": "refresh_token", "refresh_token": refresh_token, "client_id": CLIENT_ID, "client_secret": CLIENT_SECRET, }, timeout=5, ) if response.status_code != 200: raise AuthExpired("refresh token is invalid or expired") data = response.json() return data["access_token"], data.get("refresh_token")

拿到新的 Access Token 后,客户端应该先重试刚才失败的请求,而不是立刻让用户重新登录。如果 Refresh Token 也失效,再跳转登录页。

生产环境里不要频繁刷新 token。每个请求都刷新一次会放大认证服务压力,也容易触发风控。比较常见的做法是:在收到 401 或距离过期时间不足 10% 时才刷新,并且对刷新操作做并发去重。

6. 自建 GPU 和买 Token API,成本模型完全不同

6.1 一份可复用的成本对比框架

自建 GPU 看起来能降低单次推理成本,但它把成本从“按 token 付费”变成了“固定资源投入加运维投入”。两者并不是同一个维度。

对比维度购买 Token API自建或租用 GPU
初始投入低,充值即可使用高,需要购买或预付实例
成本结构按量付费,随调用量线性增长固定成本占比高,空闲也要付费
扩容速度快,平台自动扩容慢,需要申请资源和部署服务
运维范围小,平台负责推理和稳定性大,需要处理驱动、CUDA、推理框架
数据隐私数据经过第三方服务自托管更可控,但仍需安全配置
模型定制受限,只能用平台提供模型可以按业务微调和优化
适合阶段原型验证、小流量、快速上线高频推理、隐私敏感、长期稳定负载

如果业务还在验证阶段,直接买 token API 是最划算的。先用小成本验证产品价值,再根据调用量决定是否要自建。

6.2 选 Token API 的典型场景

适合购买 Token API 的场景包括:产品原型、工具型应用、低频辅助功能、需要快速接入多种模型能力的系统。

这类场景的共同特点是:调用量不稳定,团队没有太多推理优化精力,而且产品迭代很快。如果自己部署模型,很可能模型还没调优完,产品需求已经变了。

此时按 token 付费虽然单价看起来高,但总成本很低,因为不用支付空闲 GPU 费用,也不用养运维团队。

6.3 选 GPU 自建的典型场景

适合自建或租用 GPU 的场景有三个典型特征:调用量高且稳定、数据敏感、团队具备推理优化和运维能力。

例如企业内部知识库问答,如果每天要处理大量内部文档,经常把数据送入第三方 API 会带来隐私顾虑。另一个例子是面向高并发用户的产品,月调用量达到百万次级别,按 token 计费会变成很大一笔固定支出,这时自建或租用 GPU 可以在单位成本上更有优势。

但要注意,租 GPU 按小时计费也不能算完全自建。如果实例没有持续跑流量,空闲成本依然存在。比较好的中间路线是先上模型推理框架(如 vLLM、NIM),在同一个 GPU 实例里部署开源模型或自己的微调模型,并且做好自动伸缩。

6.4 生产环境 Token 成本控制清单

无论选择哪种方案,都应该建立成本控制机制。以下清单可以直接用于上线前检查:

  • 每个请求都要记录模型名、输入 token、输出 token、耗时和调用方。
  • 对单条请求设置max_tokens上限,避免模型无限生成长文。
  • 对缓存命中的提示词做复用,减少重复计算。
  • 批量任务要控制并发数,避免瞬时请求打满额度。
  • 设置日费用和月费用告警,异常时能及时定位是哪类调用导致。
  • 定期检查测试环境是否绑定了生产 API Key,防止测试流量计入生产账单。
  • 在代码评审时检查 token 是否会拼进日志,避免敏感信息落盘。

7. 常见坑和落地建议,判断这个问题的正确姿势

7.1 至少避开的六个常见坑

第一个坑是用字符长度估算 token。中英文混杂时,同一段文本在不同模型里的 token 数差异很大,最终账单出来往往会吓一跳。

第二个坑是把免费 token 直接用于生产。免费 token 通常有有效期和速率限制,流量一上来就会出现大面积报错。

第三个坑是不读取响应里的 usage 字段。费用已经产生了,但系统没有记录,月底只能看平台账单,无法定位是哪个用户或哪个功能消耗最多。

第四个坑是把 Access Token 和 API Key 放到前端代码或公开仓库。任何能访问前端代码的人都可以取走 token,随后账单被刷爆。

第五个坑是忽略 Access Token 的过期时间。客户端没有续签逻辑,用户操作一段时间后就会突然 401,体验很差。

第六个坑是看见 403 就认为是代码问题。很多 403 来自账号权限或服务区域限制,正确做法是先查账号状态,再确认平台支持范围。

7.2 上线前 Token 相关检查清单

可以把下面这份清单直接贴到项目发布检查项里:

  • [ ] 所有密钥都放在环境变量或密钥管理服务中,未出现在仓库里。
  • [ ] API Key 和 Access Token 已区分环境,生产环境不使用测试额度。
  • [ ] 请求前已对超长提示词做截断,并设置了max_tokens。
  • [ ] 响应中的 token 用量已记录,并接入日志或监控。
  • [ ] 已配置费用告警和调用量告警。
  • [ ] 对 OAuth 登录链路已做过期续签测试。
  • [ ] 服务区域限制、账号权限和模型白名单已提前确认。
  • [ ] 免费 token 没有出现在生产配置中。

7.3 核心结论:英伟达不卖 Token,是因为它更适合站在算力层

回到开头的问题,英伟达不亲自售卖 token,不是因为它做不了,而是这样做会改变产业链角色,还会和云厂商等核心客户正面竞争。它通过 GPU、CUDA 和推理优化工具赚取上游利润,然后让云厂商、模型厂商和应用开发者在自己生态里做 token 生意。对英伟达来说,卖更多 GPU 比亲自卖 token 更符合商业利益。

对开发者而言,这个问题的实际价值不是替英伟达操心商业策略,而是理解 token 是模型服务的基本计量单位。你在接入任何大模型 API 时,都要搞清楚 token 怎么计算、怎么计费、免费额度怎么限制、token 失效怎么排查、成本怎么控制。只有把这些工程细节管理好,才能在项目规模变大时不至于被账单和线上事故打乱节奏。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询