大模型Token
大语言模型 LLM 大型语言模型 在训练语料数量、上下文限制、生成速度都使用 Token
表示:
Token指语言模型中用来表示中文汉字、英文单词或者中英文短语的符号
Token可以是单个字符,也可以是多个字符组成的序列
ChatGPT模型使用 Byte Pair Encoding
(BPE),一种子词分词方法,可以将赐予进一步划分为更小的可重复部分,进行文本编码。这种编码方式在处理不同语言是的效率可能有所不同。
对于汉语等字形语言,一个token可能只包含一个字符,但是对于英文等语素语言,一个token可能包含一个或多个单词。
OpenAI官方文档介绍: 1000个token通常代表750个英文单词或者500个汉字。一个token大约为4个字符或0.75个单词。
一个Token有多少个汉字,具体取决于分词器的设计。目前各种tokenization技术,涉及到将文本分割为有意义的单元,以捕捉其中语义和句法结构,如字级、子字级或字符集。
大模型的输出速度
生成token的速度分为两个阶段:
prefill
: 预填充,并行处理输入的tokensdecoding
: 解码,逐个生成下一个token
评估方法:
首token延迟, Time To First Token (TTFT), prefill, Prefilling:
从输入到输出第一个token 的延迟
每个输出 token 的延迟(不含首个Token),Time Per Output Token (TPOT)
第二个token开始的吐出速度
延迟Lantency
理论上即从输入到输出最后一个 token 的时间,原则上的计算公式是:Latency = (TTFT) + (TPOT) * (the number of tokens to be generated)
Tokens Per Second (TPS)
(the number of tokens to be generated) / Latency
一种提升速度的方法:KV Cache
KV Cache 采用以空间换时间的思想,复用上次推理的 KV 缓存,可以极大降低内存压力、提高推理性能,而且不会影响任何计算精度。
decoder架构里面最主要的就是 transformer 中的 self-attention 结构的堆叠,KV-cache的实质是用之前计算过的 key-value 以及当前的 query 来生成下一个 token。