先这样答
模型不认识「字」和「词」,它处理的是 token:分词器先把文本切成一个个小单元,每个单元对应词表里的一个编号,模型读入和输出的都是这些编号序列。英文一个 token 大约对应半个到一个单词,中文大约一到两个汉字,具体比例取决于各家模型的分词器,没有统一标准。
为什么按 token 计费:模型的计算开销几乎全由 token 数决定。注意力计算量随序列长度增长,每生成一个 token 都要把整个模型过一遍;输入越长、输出越长,消耗的算力和显存就越多。API 按 token 收费,本质是按消耗的算力收费,token 就是那个可计量的单位。
收一句:token 是模型世界的基本单位,文本先切成 token 再进模型,算力花在 token 上,钱自然也按 token 算。
面试官会怎么追问
- 「为什么数字母这类题模型常答错?」 因为模型看到的单位是 token 不是字母。单词被切开后,字母级信息在内部表示里被压缩了,数字母要跨过分词这一层,天然吃亏。分词方式直接决定这类任务的难度。
- 「中英文的 token 效率差多少?」 取决于分词器对中文的支持程度。早期词表以英文为主,中文常被切成单字甚至字节,同样内容中文要花更多 token;现在主流模型都在扩充中文词表,差距在缩小,但同一模型内不同语言的效率仍不对等。
- 「token 数怎么估算?」 没有精确换算公式,和语言、内容、分词器都有关系,同样的字数在不同文本上切出来的 token 数不同。要估成本,用官方分词器跑一遍最可靠,凭字数乘系数只适合粗估。
回答的坑
- 把 token 等同于「一个词」。英文长词常被切成多个 token,中文一个词也可能拆成两个,按字数估 token 数经常估偏。
- 按「问答轮数」估成本。多轮对话里,历史消息每一轮都会作为输入重新计费,成本随上下文增长而上升,不是只按新问题算。
同系列的题
—— 本题完 ——