1 提示词
40-90%:通过在prompt中添加“请简要回答”可节省的金额
- 大模型服务通常按照返回结果中的词元数来收费,因此要求大模型精简回复能为你省下很多钱。
- 除了在提示词中添加“简要回答”这样简单的做法,还有很多做法可以尝试,比如:GPT-4为你的提问自动生成了 10 条答案,如果明确要求它只生成 5 条,就可以节省一半的费用。
1.3:1 -- 每个单词的平均token数
- 大模型通过词元(tokens)来处理和生成文本。
- 词元是单词或单词的子部分,例如 “eating” 可能会分为两个词元 “eat” 和 “ing”。
- 对于非英语的语言,单词被切分成的词元数量可能会增加,这具体取决于该语言在大型模型 embedding 语料库中出现的频率。
- 了解这个数字很重要,因为大部分大模型计费都是以词元数为依据,并且大模型的上下文窗口大小也是根据词元数定义的。
2 价格
~50:1 -- GPT-4 与 GPT-3.5 Turbo的成本比
- GPT-3.5-Turbo 比 GPT-4 要便宜大约 50 倍(倍数不是固定的,因为 GPT-4 中提示词、输出词的价格不同)。
- 因此你有必要评估一下 GPT-3.5-Turbo 完成任务的效果,例如摘要任务使用 GPT-3.5-Turbo 已经绰绰有余。
5:1 -- 使用 GPT-3.5-Turbo 与 OpenAI embedding 生成文本的成本比
该数字表明在向量数据库中查找信息要比使用大模型便宜得多。
6:1 -- 调用 OpenAI 微调模型与基础模型的成本比
- OpenAI 运行微调模型的成本是基础模型的 6 倍。
- 尽管这听起来价格不菲,但实际上是合理的,因为基础模型可以同时服务多个用户、而微调模型只能服务单一用户。
- 这也意味着通过提示词工程来改善基础模型的输出结果,要比微调模型性价比高的多。
3 训练和微调
~100万美元: 在 1.4 万亿词元上训练 130 亿个参数模型的成本
- LLaMa论文提到,其使用 2048 个 A100 80GB GPU 训练了 21 天才完成LLaMa的训练。此外,这还需要 2048 个 GPU。
- 训练自己的大模型(LLM)是可行的,但成本不低,而且每次运行实际上需要花费数天的时间才能完成。直接使用预训练模型要便宜得多。
< 0.001: 微调与从头开始训练的成本比
- 虽然这个数字有点笼统,但微调的成本几乎可以忽略不计。
4 GPU显存
V100: 16GB, A10G: 24GB, A100: 40/80GB: GPU 显存容量
- GPU 的显存大小会限制你的大模型的最大参数量。
2x 模型参数量: 大语言模型(LLM)推理的典型GPU内存要求
- 举个例子,一个 70 亿参数的模型大约需要 14GB 的 GPU 显存空间。
- 这是因为,每个参数通常需要一个 16 比特浮点数(2 字节)来保存。
- 模型通常情况下不需要超过 16 比特的精度,然而当精度降低到 8 比特时,模型的生成质量开始下降(在某些情况下还是可以接受的)。
- 当然,有很多可以减少显存需求的方法,例如项目 llama.cpp 大胆地使用 4 比特量化实现在 6GB 的 GPU 上运行一个 130 亿参数的模型(或 8 比特以保证生成质量),但这仅仅是个例。
~1GB: embedding 模型的典型 GPU 显存要求
- 每当进行句子 embedding(这是一种用于聚类、语义搜索和分类任务的非常典型的操作),您需要一个类似sentence Transformer的 embedding 模型。
- OpenAI也提供了自己的商业化的 embedding 模型。
- 通常,我们无需过于担忧 embedding 在GPU上的显存占用,其需求非常有限。甚至可以将 embedding 模型和大型语言模型放在同一块GPU上运行。
>10x: 通过批处理LLM请求的吞吐量提升
- 通过 GPU 进行大模型推理的延迟非常高,例如,处理一条查询可能需要5秒钟,其吞吐量是每秒0.2个查询。
- 但有趣的现象是,如果你同时处理两个查询,可能只需5.2秒。这意味着,如果你能够将25个查询集中并行处理,它们总共可能只需要10秒,此时的吞吐量就提高到了每秒2.5个查询。
- 然而,你还需要考虑下面这个数据:
~1 MB: 13B 参数模型的 1 个输出词元所需的 GPU 显存
- 显存需求与生成的最大词元数成正比。
- 例如,你至少需要 512MB 的显存来生成 512 个词元(大约 380 个单词)。
- 相对于GPU的显存,512MB可能并不显得很大,但当你希望处理更大的批次时,显存的需求会逐渐增加。
- 例如,若要并行处理16个请求,你就需要8GB(16 * 512MB)的显存。尽管有些正在研究中的技术可以应对此问题,但目前这依然是个挑战。
参考内容:NascentCore/llm-numbers-cn: 中文版 llm-numbers (github.com)