本文目录 · 5 个章节

我原本想做一张能力比较表

我曾把 AI 能做的事情列在一起:语言、图像、视频、PPT、网页、代码、3D 建模。最初想问的是,这些能力分别达到了人类效果的多少,又要花多少 token 和时间。这样一张表看起来很方便:能力、成本、速度,似乎都能放进同一个坐标系。

但接着我又问了一次任务的 token 如何计算,最后追问:token 消耗能准确描述算力消耗吗?问题从“比较哪个工具更强”,变成了“拿来比较的尺子究竟量到了什么”。下面的区分,是沿着这次追问继续整理的结果,而不是当时已经完成的一组测量。

先弄清楚,数的是什么

对文本模型,token 是分词器把输入表示为序列时使用的单位。它不固定对应一个字、一个词或一个意思。不同算法与词表可能把同一段文本切成不同长度的序列;因此,跨模型比较 token 数之前,连计数口径都需要先对齐。[1]

即使两个请求恰好都有一万个 token,也只说明某个口径下的序列长度相同。它没有告诉我用了什么模型、采用什么数值精度、上下文是否被重复处理。Hugging Face 的推理优化说明把精度、注意力实现和内存使用分别讨论,正是因为这些因素会改变执行方式。[2]

这里最容易发生的跳跃,是把一个能读到的数字,当成所有看不到的资源消耗的代替品。Token 与计算有关,但“有关”不等于存在一个跨系统通用的换算率。

一个重复问题,为什么可能有不同成本

设想连续向同一个助手询问一份长文档。每次问题不同,前面的文档却相同。如果系统能复用已处理的上下文,就不必把所有工作原样重复一遍。Anthropic 的 prompt caching 是这类机制的公开实例:它允许复用重复上下文,并分别处理缓存写入与读取。这里用它说明机制,不比较供应商价格。[3]

从用户眼中看,发过去的内容可能差不多长;从系统眼中看,哪些部分可以复用已经变了。反过来,输出很短也不代表整项任务很轻:它可能先读取大量资料、调用外部工具,再把结果压缩成一句话。工具运行的开销也不能只凭最终回答长度估算。

几个容易混在一起的量
能帮助回答不能单独回答
Token 数模型接口处理了多长的序列实际运算量与能耗
账单按当前计费规则花了多少钱底层设备付出了多少资源
等待时间用户多久拿到结果其中多少时间属于模型计算
验收结果任务是否达到预定要求换一个任务是否仍然有效

这些量可以一起使用,但不应彼此冒充。计费是在特定服务规则下结算,运行时间还可能包含排队、网络和工具等待;判断价值则需要回到任务本身。

如果真的要比较,先固定终点

以一次说明性的网页修改为例:要求在手机上不溢出,保留键盘操作,并通过原有检查。比较两种方案时,应让它们面对相同的任务和验收条件,再记录完整账单、完成时间、失败重试以及人工修改。否则,一个方案只生成了草稿,另一个已经修到可交付,把二者直接比较就会奖励少做工作的一方。

同样,“达到人类百分之多少的效果”需要先说明是哪一类人、哪一种任务、怎样评分。生成一张看起来完整的建模图片,与交付能继续绑定和编辑的三维资产,是不同的终点。单个百分比很容易把任务中最难验收的部分藏起来。

一个更实用的记录单位,是完成一项达到要求的任务所需的全部投入。失败的尝试要算进去,人工接手也要算进去;样本少时就保留具体案例,不急着推成平均规律。这样的比较没有一张排行榜那么简洁,却更接近我实际要做的选择。

我想学会的,是检查尺子

回到最初的追问,我并不是不需要 token 统计。它适合帮助理解上下文、定位重复输入、观察某种工作流的变化。只是在把它拿来评价效率之前,需要先知道它遗漏了什么。

这次讨论可以提炼出一个更一般的提醒:越方便计数的东西,越容易代替真正想回答的问题。代码行数不等于软件价值,文章字数不等于思想深度,token 数也不等于智能完成了多少工作。我的目标不是找到一个能包办所有判断的数字,而是让每一种数字留在它能解释的范围里。

来源与延伸阅读

  1. Hugging Face · Tokenization algorithms

    依据 · 分词算法与词表怎样影响文本的 token 表示。

  2. Hugging Face · Optimizing LLMs for Speed and Memory

    依据 · 自回归推理、数值精度、注意力与内存的工程说明;不采用文中历史硬件排名。

  3. Anthropic · Prompt caching with Claude

    依据 · 上下文缓存作为重复输入可以具有不同处理成本的实例,不引用旧价格或宣传中的最大降幅。