每个大模型开发者都应该知道的数字

news2024/11/15 23:42:43

GitHub - ray-project/llm-numbers: Numbers every LLM developer should know

谷歌内部流传了一份由传奇工程师 Jeff Dean 整理的文档,名为《每个工程师都应该知道的数字》。大语言模型(LLM)开发人员们同样需要一组类似的数字为粗略计算做参考。我们在此分享 Anyscale 使用的一组数字、并介绍为什么这些数字很重要、以及如何利用这些数字。

提示词

40-90%:通过在prompt中添加“请简要回答”可节省的金额

大模型服务通常按照返回结果中的词元数来收费,因此要求大模型精简回复能为你省下很多钱。除了在提示词中添加“简要回答”这样简单的做法,还有很多做法可以尝试,比如:GPT-4为你的提问自动生成了 10 条答案,如果明确要求它只生成 5 条,就可以节省一半的费用。

1.3:1 -- 每个单词的平均词元数

大模型通过词元(tokens)来处理和生成文本。词元是单词或单词的子部分,例如 “eating” 可能会分为两个词元 “eat” 和 “ing”。一份 750 字的英文文档大约需要 1000 个词元。对于非英语的语言,单词被切分成的词元数量可能会增加,这具体取决于该语言在大型模型 embedding 语料库中出现的频率。

了解这个数字很重要,因为大部分大模型计费都是以词元数为依据,并且大模型的上下文窗口大小也是根据词元数定义的。

价格

尽管大模型服务的价格有所波动,但考虑到大模型的运行成本普遍较高,本节所提供的数据显得尤为关键。此处的数据以 OpenAI 为参考,其他提供商(Anthropic、Cohere)的价格也大致在这个范围里。

50:1 -- GPT-4 与 GPT-3.5 Turbo的成本比

对于很多应用场景,这个数字意味着使用GPT-4来执行那些只需执行一次、不需要在推理时频繁执行的任务更为合适,例如生成高质量的微调数据或自动评估其他模型的效果;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 生成文本的成本比

该数字表明在向量数据库中查找信息要比使用大模型便宜得多。例如,在神经信息检索系统(neural information retrieval system)中查找“特拉华州的首府是哪里?”的成本比 GPT-3.5-Turbo 便宜约5倍,比 GPT-4 更是便宜高达 250 倍!

10:1 -- OpenAI embedding 与私有化部署 embedding 服务的成本比

注意:这个数值会受到负载和嵌入批量大小的影响,所以请将其看作是一个近似估计。

在我们的博客中,我们在 g4dn.4xlarge 实例(按需价格:1.20美元/小时)上使用 Hugging Face 的 SentenceTransformers 进行推理,每秒可以输出约 9000 个词元(其质量与 OpenAI embedding 没什么区别)。根据这个速率和实例类型进行一些简单计算,可知私有化部署的 embedding 服务比 OpenAI 便宜 10 倍左右(此处未考虑网络数据传输的成本)。

6:1 -- 调用 OpenAI 微调模型与基础模型的成本比

OpenAI 运行微调模型的成本是基础模型的 6 倍。尽管这听起来价格不菲,但实际上是合理的,因为基础模型可以同时服务多个用户、而微调模型只能服务单一用户。这也意味着通过提示词工程来改善基础模型的输出结果,要比微调模型性价比高的多。

1:1 -- 调用私有化部署的基础模型与微调模型的成本比

如果你私有化部署一个模型,那么为微调模型提供服务的成本与为基础模型提供服务的成本基本上是相同的,因为这些模型具有相同数量的参数量。

训练和微调

100万美元: 在 1.4 万亿词元上训练 130 亿个参数模型的成本

LLaMa论文提到,其使用 2048 个 A100 80GB GPU 训练了 21 天才完成LLaMa的训练。我们假设在Red Pajama训练集上训练自己的模型,并估算成本。上述数字是在假设一切顺利(没有崩溃,训练一次性成功等等)的情况下得出。此外,这还需要 2048 个 GPU。大多数公司无法做到这一点(这在Anyscale可以轻松做到——这是我们的核心业务)。训练自己的大模型(LLM)是可行的,但成本不低,而且每次运行实际上需要花费数天的时间才能完成。直接使用预训练模型要便宜得多。

< 0.001: 微调与从头开始训练的成本比

虽然这个数字有点笼统,但微调的成本几乎可以忽略不计。例如,我们展示了可以花费大约 7 美元微调 6B 参数模型。即使按 OpenAI 最昂贵的可微调模型 Davinci 的价格计算,每 1000 个词元的成本也是 3 美分。这意味着对莎士比亚的全部作品(约100万字)进行微调,大约仅仅需要40美元。

GPU 显存

如果您正在进行模型的私有部署,了解GPU的显存尤为关键,因为大型模型会大量消耗GPU显存。以下的数据主要针对推理阶段;而对于训练或微调,显存需求将会更高。

V100: 16GB, A10G: 24GB, A100: 40/80GB: GPU 显存容量

这可能看起来令人费解,但了解不同类型 GPU 的显存非常重要。GPU 的显存大小会限制你的大模型的最大参数量。一般来说,A10G更受欢迎:按照 AWS 按需价格,它的价格为每小时 1.50 至 2 美元,并且具有 24G GPU 显存;而 A100 按 AWS 按需价格,每台价格约为 5 美元。

2x 模型参数量: 大语言模型(LLM)推理的典型GPU内存要求

举个例子,一个 70 亿参数的模型大约需要 14GB 的 GPU 显存空间。这是因为,每个参数通常需要一个 16 比特浮点数(2 字节)来保存。模型通常情况下不需要超过 16 比特的精度,然而当精度降低到 8 比特时,模型的生成质量开始下降(在某些情况下还是可以接受的)。当然,有很多可以减少显存需求的方法,例如项目 llama.cpp 大胆地使用 4 比特量化实现在 6GB 的 GPU 上运行一个 130 亿参数的模型(或 8 比特以保证生成质量),但这仅仅是个例。

1GB: embedding 模型的典型 GPU 显存要求

每当进行句子 embedding(这是一种用于聚类、语义搜索和分类任务的非常典型的操作)时,您需要一个类似sentence transformers的 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)的显存。尽管有些正在研究中的技术可以应对此问题,但目前这依然是个挑战。

这篇文章讨论了大型语言模型(LLM)开发者应该知道的几个关键数字和概念。文章强调了在使用LLM时,如何通过优化提示词来减少成本,例如,通过要求模型“简要回答”来减少返回的词元数。文章还介绍了词元的概念,即模型处理和生成文本的基本单位,并指出不同语言的词元数量可能会有所不同。
开发者需要了解的数字包括:
1. 每个单词的平均词元数(1.3:1)
2. GPT-4与GPT-3.5 Turbo的成本比(50:1)
3. 使用GPT-3.5-Turbo与OpenAI embedding生成文本的成本比(5:1)
4. OpenAI embedding与私有化部署embedding服务的成本比(10:1)
5. 调用OpenAI微调模型与基础模型的成本比(6:1)
6. 训练和微调大型模型的成本(~100万美元)
7. 微调与从头开始训练的成本比(< 0.001)
8. GPU显存需求,包括不同类型GPU的显存容量和典型的大模型推理显存要求(例如,2x模型参数量: 大语言模型(LLM)推理的典型GPU内存要求)
9. 通过批处理LLM请求的吞吐量提升(>10x)
10. 13B参数模型的1个输出词元所需的GPU显存(~1 MB)

速查表

4dbe44b9656b5fc7299d37dde478973

专有名称中英文对照表

中文英文
大模型LLM
提示词prompt
词元token
微调fine-tune

下一步

关于构建生成式 AI 基础设施以及将 LangChain 与 Ray 结合使用的系列博客。

了解有关 Ray 的更多信息,请参阅Ray 项目主页以及Ray 官方文档。

关于开展LLM 微调与推理实战训练。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1486072.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

steam++加速问题:出现显示443端口被 vmware-hostd(9860)占用的错误。

目录 前言&#xff1a; 正文&#xff1a; 前言&#xff1a; 使用Steam对GitHub进行加速处理时&#xff0c;建议使用2.8.6版本。 下载地址如下&#xff1a;Release 2.8.6 BeyondDimension/SteamTools GitHub 下载时注意自己的系统位数 正文&#xff1a; 使用GitHub时会使…

Spring重点记录

文章目录 1.Spring的组成2.Spring优点3.IOC理论推导4.IOC本质5.IOC实现&#xff1a;xml或者注解或者自动装配&#xff08;零配置&#xff09;。6.hellospring6.1beans.xml的结构为&#xff1a;6.2.Spring容器6.3对象的创建和控制反转 7.IOC创建对象方式7.1以有参构造的方式创建…

WPF应用程序使用MVVM模式

文章目录 一、前言二、正文&#xff1a;模式 - WPF应用程序使用MVVM设计模式2.0 一些术语2.1 秩序与混乱2.2 MVVM模式的演变2.3 为何WPF开发者喜爱MVVM2.4 Demo应用程序2.5 路由命令逻辑2.6 ViewModel类层次结构2.7 ViewModelBase类2.8 CommandViewModel类2.9 MainWindowViewMo…

spring注解驱动系列--自动装配

Spring利用依赖注入&#xff08;DI&#xff09;&#xff0c;完成对IOC容器中中各个组件的依赖关系赋值&#xff1b;依赖注入是spring ioc的具体体现&#xff0c;主要是通过各种注解进行属性的自动注入。 一、Autowired&#xff1a;自动注入 一、注解介绍 1、默认优先按照类型去…

MySQL进阶:InnoDB引擎(逻辑存储结构、架构、事务原理、MVCC(面试高频))

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位大四、研0学生&#xff0c;正在努力准备大四暑假的实习 &#x1f30c;上期文章&#xff1a;MySQL进阶&#xff1a;全局锁、表级锁、行级锁总结 &#x1f4da;订阅专栏&#xff1a;MySQL进阶 希望文章对你们有所帮助 MVCC很…

jenkins实战(1)

一, Jenkins官网介绍: Jenkins 持续集成、持续部署 下载地址:Jenkins download and deployment 提供两种类型: LTS(长期版)和Weekly(最近一周的版本) 注: 必须是Java8及以上版本(官网针对这一点有做说明) 二, 安装 下载war包,java -jar XXX --httpPort8081 或 下载war包…

为什么说 TiDB 在线扩容对业务几乎没有影响

本文讨论了分布式数据库在在线扩容方面的挑战&#xff0c; 详细解释了一般分布式数据库和 TiDB 在扩容机制上的不同。 一般分布式数据库在进行在线扩容时&#xff0c;需要重新平衡数据分布&#xff0c;可能会影响系统的可用性和 IO 消耗。 相比之下&#xff0c;TiDB 的存算分离…

五、西瓜书——集成学习

1.个体与集成 集成学习通过将多个学习器进行结合,常可获得比单一学习器显著优越的泛化性能&#xff0c;这对“弱学习器”(weak learner)尤为明显因此集成学习的很多理论研究都是针对弱学习器进行的而基学习器有时也被直接称为弱学习器。 要获得好的集成个体学习器应“好而不同”…

mybatis开发一个分页插件、mybatis实现分页、mybatis拦截器

mybatis开发一个分页插件、mybatis实现分页、mybatis拦截器 通过官网的mybatis插件说明可知&#xff0c;我们可以通过拦截器进行开发一个插件。 例如这样的&#xff1a; UserMapper mapper sqlSession.getMapper(UserMapper.class);// 开始分页MagicPage.startPage(1, 3);//…

八. 实战:CUDA-BEVFusion部署分析-分析BEVFusion中各个ONNX

目录 前言0. 简述1. camera.backbone.onnx(fp16)2. camera.backbone.onnx(int8)3. camera.vtransform.onnx(fp16)4. fuser.onnx(fp16)5. fuser.onnx(int8)6. lidar.backbone.xyz.onnx7. head.bbox.onnx(fp16)总结下载链接参考 前言 自动驾驶之心推出的《CUDA与TensorRT部署实战…

【C++】vector的使用和模拟实现(超级详解!!!!)

文章目录 前言1.vector的介绍及使用1.1 vector的介绍1.2 vector的使用1.2.1 vector的定义1.2.2 vector iterator 的使用1.2.3 vector 空间增长问题1.2.3 vector 增删查改1.2.4 vector 迭代器失效问题。&#xff08;重点!!!!!!&#xff09;1.2.5 vector 在OJ中有关的练习题 2.ve…

蓝桥杯倒计时 41天 - KMP 算法

KMP算法 KMP算法是一种字符串匹配算法&#xff0c;用于匹配模式串P在文本串S中出现的所有位置。 例如S“ababac&#xff0c;P“aba”&#xff0c;那么出现的所有位置是13。 在初学KMP时&#xff0c;我们只需要记住和学会使用模板即可&#xff0c;对其原理只需简单理解&#xff…

WiFi模块引领智能家居革命:连接未来的生活

随着科技的快速发展&#xff0c;智能家居正成为现代生活的一部分&#xff0c;极大地改变了我们与家庭环境互动的方式。其中&#xff0c;WiFi模块作为关键的连接技术&#xff0c;在推动智能家居革命中发挥着不可忽视的作用。本文将深入探讨WiFi模块如何驱动智能家居革命。 设备互…

Maven实战(2)之搭建maven私服

一, 背景: 如果使用国外镜像,下载速度比较慢; 如果使用阿里云镜像,速度还算OK,但是假如网速不好的时候,其实也是比较慢的; 如果没有网的情况下更加下载不了. 二, 本地仓库、个人/公司私服、远程仓库关系如下: 三, 下载安装nexus私服 略

如何在Window系统部署VisualSVN服务并结合cpolar实现无公网ip远程访问

文章目录 前言1. VisualSVN安装与配置2. VisualSVN Server管理界面配置3. 安装cpolar内网穿透3.1 注册账号3.2 下载cpolar客户端3.3 登录cpolar web ui管理界面3.4 创建公网地址 4. 固定公网地址访问 前言 SVN 是 subversion 的缩写&#xff0c;是一个开放源代码的版本控制系统…

Mixtral模型解读

Mixtral 8x7B(Mistral MoE) 1.Mistral 7B模型 Mistral 7B模型与Llama2 7B模型结构整体上是相似的&#xff0c;其结构参数如下所示。 细节上来说&#xff0c;他有两点不同。 1.1SWA(Sliding Window Attention) ​ 一般的Attention来说&#xff0c;是Q与KV-Cache做内积&#…

23端口登录的Telnet命令+传输协议FTP命令

一、23端口登录的Telnet命令 Telnet是传输控制协议/互联网协议&#xff08;TCP/IP&#xff09;网络&#xff08;如Internet&#xff09;的登录和仿真程序&#xff0c;主要用于Internet会话。基本功能是允许用户登录进入远程主机程序。 常用的Telnet命令 Telnet命令的格式为&…

基础算法(四)(递归)

1.递归算法的介绍&#xff1a; 概念&#xff1a;递归是指函数直接或间接调用自身的过程。 解释递归的两个关键要素&#xff1a; 基本情况&#xff08;递归终止条件&#xff09;&#xff1a;递归函数中的一个条件&#xff0c;当满足该条件时&#xff0c;递归终止&#xff0c;避…

C++11中的auto、基于范围的for循环、指针空值nullptr

目录 auto关键字 使用原因 历史背景 C11中的auto auto的使用案例 auto 指针/引用 同一行定义多个变量 typeid关键字 基于范围的for循环 范围for的语法 范围for的使用条件 指针空值nullptr C98中的指针空值 C11中的指针空值 auto关键字 使用原因 随着程序越…

Decoupled Knowledge Distillation解耦知识蒸馏

Decoupled Knowledge Distillation解耦知识蒸馏 现有的蒸馏方法主要是基于从中间层提取深层特征&#xff0c;而忽略了Logit蒸馏的重要性。为了给logit蒸馏研究提供一个新的视角&#xff0c;我们将经典的KD损失重新表述为两部分&#xff0c;即目标类知识蒸馏&#xff08;TCKD&a…