前两天一个朋友问我,为啥大模型要按照token计费?token是啥?
今天我们就来聊聊token~!
像DeepSeek、ChatGPT这样的大语言模型,都有一个叫分词器的模块。
当大模型接收到一段文字,会让分词器把它切成很多个小块,这切出来的每个小块就叫做一个token,类似于大模型世界里的一块块积木。
大模型之所以可以理解和生成文字,就是靠计算这些token之间的关系,来推算出下一个token最有可能是哪一个。
所以简单理解token就是分词器分成的若干积木。这个积木可以是一个字,两个字或者多个字,也可以是一个标点符号,也可以是一个字母或多个字母。
我们来举个例子:
(阿里云有个token计算器,部分开源模型可以用这个做参考。https://dashscope.console.aliyun.com/tokenizer)
你输入“关羽”,就是1个token;你输入“张飞”,就是2个tokens。
同样输入一句话,可能各家模型token数也可能不一样,比如百川的这个模型,输入“张飞”,token数就是3。
你在使用大模型的时候,看到大模型一个个字往蹦,看起来像打字一样,其实就是大模型按照token在输出。
那为什么token又可以是一个字,又可以是两个字,还可以是三个字,又可以是一个单词或者半个单词,这token到底是怎么定出来的?
我们先说说我们大脑的运作逻辑。我们的大脑在日常生活中喜欢把有含义的词语或者短语优先作为一个整体来对待,不到万不得已不会去一个字一个字的抠,这就导致我们对词语比较熟悉,但有时候看单字却有点陌生。大脑之所以要这么做,是因为这样可以节省脑力,咱们的大脑还是非常懂得偷懒的。
比如“今天天气不错”,这句话如果1个个字处理一共需要有6个部分,但如果划分成3个常见且有意义的词“今天”、“天气”、“不错”,就只需要处理3个部分之间的关系,从而提高效率,节省脑力。既然人脑可以这么做,大模型当然也可以这么做,所以就有了分词器,专门帮大模型把大段的文字拆解成大小合适的一个个token。
不同的分词器分词方法和结果存在不一样。分的越合理大模型就越轻松,这就好比餐厅里负责切菜的切配工,他的刀工越好,主厨做起菜来就越省事。
分词器究竟是怎么分的词呢?
机器只能读懂0和1,所以需要把常用的大量的词组,组成一张编码表。比如“关羽”对应编码为“007”;“张飞”对应编码为“008”等等。
经过大量统计和收集,分词器就可以得到一个庞大的token表,可能有几十万上百万,甚至更多token,可以囊括我们日常见到的各种字词、符号等等。
这样一来,大模型在输入和输出的时候,都只需要面对一堆数字编号就可以了,再由分词器按照token表转换成人类可以看懂的文字和符号,这样一分工工作效率就非常的高。
目前市面上,几乎所有大模型公司都是按照token的数量来计费,因为token的数量对应了背后的计算量。
为了简单估算,可以按照下面做参照:
在英文中,一个 Token 大约对应0.75个单词或3-4个字母。
在中文中,一个 Token 通常对应1到1.8个汉字。
是不是又学到了?你在用大模型的时候,输入输出的一个个文字,脑子里是不是就有画面了,白花花的money在流动~~~。
给个DeepSeek的价格参考: