在大模型中,tokens的计算主要通过模型的分词器将文本分割成基本单元后进行统计,不同语言和模型的分词规则会影响计算结果。具体计算方法如下:

  • 输入tokens计算:将用户输入的文本通过模型的分词器进行分割,分割后的单元数量即为输入tokens数。中文通常一个汉字或一个标点符号算作一个token,如“你好,世界!”会被分割为(“你”,“好”,“,”,“世”,“界”,“!”),共6个token。英文则一个单词、标点符号或子词算作一个token,如“Hello, world!”会被分割为(“Hello”,“,”,“world”,“!”),共4个token。
  • 输出tokens计算:输出tokens的数量取决于模型的生成策略和设置的最大生成长度(max_tokens或max_new_tokens)。简单任务如问答,输出tokens数量可能与输入相近;复杂任务如长文本生成,输出tokens数量可能远大于输入。例如输入“Write a story about a hero who saves the world.”,假设最大生成长度为50个tokens,则输出tokens数可能为50,总tokens数为输入tokens数(11)加上输出tokens数(50),共61个。
  • 总tokens计算:总tokens数为输入tokens数与输出tokens数之和。在多轮对话中,总tokens数还包括系统提示和对话历史中的tokens数,计算公式为:当前轮总tokens数=系统提示tokens数+对话历史tokens数+当前用户输入tokens数+当前模型输出tokens数。

此外,也可以根据经验公式进行大致估算。一般来说,1个英文字符约等于0.3个token,1个中文字符约等于0.6个token,但具体换算比例因模型分词策略而异。若要精确计算,可使用模型提供的分词工具,如OpenAI的tiktoken库。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐