主流的大型语言模型中,可以发现output token比input的价格更贵,例如gpt系列模型:
-
价格变化:
- 从2024年5月13日到2024年8月6日,gpt-40模型的input token价格从$5.00/1M降低到$2.50/1M,降价幅度为50%。
- 同时,output token的价格从$15.00/1M降低到$10.00/1M,降价幅度为33.33%。
-
价格比较:
- 在所有列出的时间点,output token的价格始终高于input token的价格。例如,在最早的时间点(未明确日期),1M output tokens的价格是$15.00,而1M input tokens的价格是$5.00。
在分析大型语言模型API的成本结构时,可以从几个关键的技术角度来探讨为什么输出token(output token)的成本比输入token(input token)更高。
-
计算量(FLOPs):对于输入和输出相同数量的token,模型的浮点运算次数(FLOPs)大致相同,大约是2ND,其中N代表模型的参数量。这个计算量是由模型的前向传播决定的,无论是处理输入还是输出。
-
内存使用:输入token和输出token在内存中的占用,例如QKV(Query, Key, Value)矩阵的大小,基本上是相似的。但是,输出token可能采用KV Cache的形式,这是一种优化技术,用于存储和重用之前计算的键值对,以减少重复计算。
-
资源利用率:尽管计算量和内存占用相近,但资源的利用率是影响成本的关键因素。GPU在执行运算时,涉及到计算操作和数据通信。存在一个理想的操作与数据比率(ops:bytes ratio),这决定了每读取一份数据(例如FP16/BF16格式)应该执行的FLOPs数量。
-
通信瓶颈:在大多数情况下,尤其是在大型模型训练中,数据通信是瓶颈。如果计算速度超过数据读取速度,GPU的流处理器(SM)就会处于等待状态。反之,如果计算速度慢于数据读取,通信就需要等待。经过长时间的优化,大型模型训练的MFU能达到50-60%已经非常出色。这意味着GPU的计算能力并没有被完全利用。
-
并行与序列化:对于输入token,模型可以执行一次完整的前向计算,充分利用并行计算的优势,使得计算过程的资源利用率接近训练时的最高水平。然而,对于输出token,模型必须逐个生成,这意味着需要执行多次前向操作,每次操作都可能加剧通信瓶颈,降低GPU的利用率。
-
成本差异:尽管输入和输出token在资源消耗上相似,但由于输出token的生成过程涉及到更多的序列化操作和通信开销,导致整体的资源利用率低于输入token的处理。