19-1 LLM之野望 1 – 微软打开1-bit LLM时代

news2024/9/21 2:44:24

让我们面对现实吧,数字不会说谎。

尽管市场因人工智能而上涨,但其效应显然尚未转化为价值,因为只有不到4%的公司使用人工智能来生产商品和服务。

更糟糕的是,虽然一些大公司确实在拥抱人工智能,但高不可攀的成本阻碍了小公司效仿,讽刺的是,这项旨在使复杂任务民主化和促进竞争力的技术变成了一台巨大的不平等机器

然而,情况可能很快就会改变,因为微软已经悄然发布了 1.58 位大型语言模型 (LLM),其性能与 16 位模型相当,但价格便宜且速度快了一个数量级。

微软称之为1 位 LLM 时代,你将会爱上它的每一秒。

没有钱,没有派对

尽管人工智能在研究层面取得了令人瞩目的成果,但它也受到经济、环境影响和价值缺失等多种弊端的困扰,无法成为现任者所预测的那样。

数字不对

美国国家经济研究局最近的一项研究证实,即使到了今天,企业对人工智能的采用率仍未达到两位数,麻省理工学院也对此表示赞同。

19-1 LLM之野望 1 - 微软打开1-bit LLM时代

资料来源:麻省理工学院

但研究还显示出更令人担忧的迹象,即大公司与其他公司之间存在明显的不平衡。

更糟糕的是,它还表明不平衡不仅体现在规模上,还体现在行业甚至地理位置上。

多伦多大学的Kristina McElheran对此做出了最好的总结:

“数字时代已经到来,但它的到来并不平衡。”

但这远非唯一的问题。它对环境也有严重影响。

如果我们认为,根据马萨诸塞大学阿默斯特分校的数据,人工智能行业的碳足迹已经占全球排放量的 1% 左右,并且承认人工智能工作量将在未来几年大幅增加,那么我们都必须承认我们存在问题。

简而言之,除非我们找到一种方法使人工智能成为一种高效的技术,否则它的影响和价值创造将仅限于大公司,而我们其他人则只能制作有趣的玩具,用莎士比亚风格说唱德克萨斯烧烤。

然而,由于生成式人工智能给我们带来的范式转变,即“一对多”时代,价值机会仍然很残酷。

基础范式

当今人工智能成功的最大原因莫过于基础模型(FM),即可以执行各种不同下游任务的模型。

通过创建庞大的基础 AI 模型,我们获得了一系列好处,主要是泛化,使 AI 成为一种成功率更高的技术(此前 Gartner 指出 AI 的失败率为 90%)以及更具吸引力的回报。

最后,人工智能不需要训练来学习,因为你只需通过实时向模型提供必要的(通常是私人的)数据,将模型应用到每个用例中,这个过程正式称为提示词工程

但我们最大的成功也是我们最大的负担。

金钱约束

由于其并行化能力,前沿 AI 模型需要非常昂贵的硬件 GPU 才能运行。

尽管 GPU 是基础,但 LLM 与这些硬件之间的关系却远非理想。

首先,当今大多数型号的尺寸都无法装入单个 GPU。我们目前最好的 GPU,如NVIDIA 的 H100英特尔的 Gaudi 2,分别只有 80GB 和 96GB 的高内存带宽 (HBM)。

可能看起来很多,但我们正在讨论的模型在极端情况下(如 ChatGPT 或 Gemini Ultra)可能在 TeraByte 大小范围内

因此,我们必须使用FSDP等分布式计算方法将模型“分解”成各个部分,其中模型的层按组分成多个单元,每个单元分配给单个或一组 GPU。

我们不能将模型存储在 Flash 或 HDD 中吗?

理论上,我们不能。每个预测都要运行整个模型,这意味着权重需要可供 GPU 核心访问,否则检索过程会花费很长时间,并且延迟将令人难以忍受。

苹果公司正在推动一项有趣的研究,将“ Flash LLM ”存储在更加丰富的闪存中,其中加入一个预测器,对于每个输入数据,该预测器可以预测 LLM 的哪些部分需要存储在 RAM 内存中,从而使大规模模型能够适应 iPhone 等硬件。

FSDP 部分解决了分布问题,但由于 GPU 需要共享其计算以进行训练和推理,因此增加了通信开销。

如果事情还不够复杂的话,GPU 的排列也很重要。

目前,最令人兴奋的方法是Ring Attention,其中 GPU 设置在环上,以将单个 GPU 计算与 GPU 逐个通信开销重叠,这样全局预测时间就不会受到工作负载分布式特性的限制。

与此同时,Predibase 等公司正在提供简单的无服务器框架,您可以在其中将多个模型存储到单个 GPU 中,从而大幅降低成本,而Groq等其他组织甚至建议我们根本不应该使用 GPU 进行推理工作负载,他们提出了速度极快的语言处理单元 (LPU)。

然而,无论采用何种方法,关键问题仍然存在,LLM 比理想的要大得多,并且所有以前的创新都围绕着处理大模型尺寸的问题。

因此,考虑到内存要求是主要瓶颈,目前非常流行的解决方案是量化模型。

最后,这就是微软的 1 位 LLM 发挥作用的地方。

1.58 比特可能改变世界

首先,量化到底是什么?

精度问题

量化是降低模型参数(权重)的存储精度以缩小模型尺寸并节省内存的过程,正如我们之前讨论的那样,这是这些模型的主要瓶颈。

目前大多数 LLM 使用 16 位或 2 字节精度来训练模型。换句话说,模型中的每个权重在内存中恰好占用 2 个字节。

必须指出的是,模型的某些参数,例如训练期间使用的优化器状态,​​是以全精度(4 个字节)存储的,但绝大多数是以 2 个字节存储的。

有不同的方法,但是概念总是一样的,将权重的值压缩成更小的位大小

一种非常常见的方法是将 16 位权重转换为 4 位值。此时,似乎不清楚实际影响是什么,但请耐心听我举以下例子。

如果我们采用已经训练好的 500 亿参数的 LLM(按照今天的标准这是一个相当小的模型),以 2 字节精度,我们的模型重达 100 GB。

为了简化示例,我假设一个已经针对短序列进行训练的模型,因此 KV 缓存(对长序列有巨大影响的内存需求)可以忽略不计。

因此,您自动需要至少两个NVIDIA H100 GPU来存储模型。

但是如果将权重量化为 4 位,则实际上是将内存需求除以 4,因此模型突然“只有” 25GB,完美适合单个 GPU。

但如果这真的如此不可思议,为什么不一直这样做呢?

训练后的权衡

目前,大多数量化程序都是在训练后进行的。也就是说,以混合精度或全精度(2 或 4 个字节)训练模型,然后量化模型。

单是程序本身就已经是一个问题,因为它将不可逆转地对性能产生相当大的影响。

想象一下,你用一把巨大的网球拍训练了很长时间,突然,在比赛开始前,他们给你一把小得多的球拍。自然,你击球会很困难。

嗯,通过训练后量化,我们基本上对模型做同样的事情。

但是如果我们在量化模型的同时从头开始训练模型会怎么样?

这正是微软所推行的,但却走向了极端。

人工智能的未来?

简单来说,微软的论文提出了一种激进的方法,将每个权重的内存分配从 16 位减少到 1.58 位,内存需求减少了大约 16 倍。

换句话说,线性层中的所有权重都将具有值“1”,“-1”或“0”。

19-1 LLM之野望 1 - 微软打开1-bit LLM时代

来源:微软

它们仅关注前馈权重,同时将标准激活和注意力保持在 8 位,因为最大量的计算和内存需求积累在前馈层上,而不是注意力上。

但微软方法的关键点在于它是“量化感知”,这意味着他们从头开始训练模型,同时并行应用量化。

这样,您就不必以一定的精度训练模型,然后再剪辑其值,而是从头开始以量化形式训练模型。

另一个值得注意的因素是,通过将这些权重设为 +/- 1 或 0,您基本上可以避免矩阵乘法。

但为什么这如此相关?

由于乘以 1 或 -1 归结为对另一个数字应用符号函数,而 0 会从等式中消除该数字,因此矩阵乘法变成了矩阵加法(如上图所示),从而大大减少了计算要求。

与我们的预期相反,这种妥协并没有对性能产生影响,恰恰相反。

速度飙升,但质量并未下降

与具有相似权重的模型相比,该模型不仅表现良好,而且在大多数基准测试中都胜过其对手。

19-1 LLM之野望 1 - 微软打开1-bit LLM时代

PPL 代表困惑度,它是 LLM 质量的主要客观衡量标准,衡量模型的“困惑度”。换句话说,分配给正确 token 的概率越高,模型的困惑度就越低。

研究人员随后声称,这种方法的主要好处适用于任何其他规模,并且随着规模的扩大而变得更加明显,这意味着:

  • “在延迟、内存使用和能耗方面, 13B BitNet b1.58比3B FP16 LLM更高效。”
  • 在延迟、内存使用和能耗方面,30B BitNet b1.58比7B FP16 LLM更高效。”
  • “在延迟、内存使用和能耗方面, 70B BitNet b1.58比13B FP16 LLM更高效。”

如你所见,量化感知训练形成了自己的缩放规律,模型越大,影响越大。

并且在相同大小之间进行比较时,量化的 LLM 允许11 倍更大的批量大小(可以发送给模型的单个序列的数量),并且每秒生成的标记数增加 9 倍

19-1 LLM之野望 1 - 微软打开1-bit LLM时代

但这一切意味着什么呢?

简而言之,我们可能已经找到了一种更有效地训练前沿人工智能模型的方法,同时又不影响性能。

如果是这样,我们很快就会看到 1 位 LLM 成为常态,而需要巨额开支和庞大数据中心的工作负载最终可以在消费硬件上,甚至是在智能手机上运行。

例如,我们可以在你的 iPhone 中运行 +1000 亿个参数的模型,而对于最先进的笔记本电脑,这个数字将增长到 +300 的范围(当然,假设它们具有必要的 GPU,大多数高端消费端硬件已经具备这种情况)。

但我们甚至可以更进一步。

很快,你的数字产品(例如你的智能手机)就可以注入多个并行运行的不同 LLM,每个 LLM 都专门用于其下游任务,这将使 LLM 在我们的生活中更加普遍。

LLM 来处理您的电子邮件,LLM 来处理您的通知,LLM 来编辑您的照片……您说得出名字的。

如果这不能代表人工智能价值创造的本质,那我就不知道该告诉你什么了。

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

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

相关文章

Kafka Producer之数据重复和乱序问题

文章目录 1. 数据重复2. 数据乱序 为了可靠性,Kafka有消息重试机制,但是同时也带来了2大问题 1. 数据重复 消息发送到broker后,broker记录消息数据到log中,但是由于网络问题,producer没有收到acks,于是再次…

阿里云 申请免费ssl 证书

1控制台--数字证书管理服务 2 创建所需域名证书

Linux网络——套接字与UdpServer

目录 一、socket 编程接口 1.1 sockaddr 结构 1.2 socket 常见API 二、封装 InetAddr 三、网络字节序 四、封装通用 UdpServer 服务端 4.1 整体框架 4.2 类的初始化 4.2.1 socket 4.2.2 bind 4.2.3 创建流式套接字 4.2.4 填充结构体 4.3 服务器的运行 4.3.1 rec…

数据结构 day3

目录 思维导图: 学习内容: 1. 顺序表 1.1 概念 1.2 有关顺序表的操作 1.2.1 创建顺序表 1.2.2 顺序表判空和判断满 1.2.3 向顺序表中添加元素 1.2.4 遍历顺序表 1.2.5 顺序表按位置进行插入元素 1.2.6 顺序表任意位置删除元素 1.2.7 按值进…

C/C++ xml库

文章目录 一、介绍1.1 xml 介绍1.2 xml 标准1.3 xml 教程1.4 xml 构成 二、C/C xml 库选型2.1 选型范围2.2 RapidXML2.3 tinyxml22.4 pugixml2.5 libxml 五、性能比较5.1 C xml 相关的操作有哪些5.2 rapidxml、Pugixml、TinyXML2 文件读取性能比较 六、其他问题6.1 version和 e…

【ARMv8/v9 异常模型入门及渐进 9.1 - FIQ 和 IRQ 打开和关闭】

请阅读【ARMv8/v9 ARM64 System Exception】 文章目录 FIQ/IRQ Enable and Disable汇编指令详解功能解释使用场景和注意事项 FIQ/IRQ Enable and Disable 在ARMv8/v9架构中,可以使用下面汇编指令来打开FIQ和 IRQ,代码如下: asm volatile ("msr da…

国内从事双臂机器人的团队

一、背景 随着人形机器人的发展,双臂协同操作得到了越来越多研究人员的关注。我自己也是做双臂机器人方向的,虽然通过看论文或刷知乎了解到国内有许多团队在做双臂机器人方向,但还没有系统的整理过,因此趁这次机会,好…

利用patch-package补丁,解决H5预览PDF时电子签章不显示问题

利用patch-package补丁,解决H5预览PDF时电子签章不显示问题 一、问题描述 在生产环境中,遇到了一个紧急的技术问题:用户在移动端H5页面上查看电子票时,PDF文件预览功能正常,但其中的电子签章未能正常显示。这一问题直…

CentOS6minimal安装nginx-1.26.1.tar.gz 笔记240718

CentOS6安装新版nginx 240718, CentOS6.1-minimal 安装 nginx-1.26.1.tar.gz 下载 nginx-1.26.1.tar.gz 的页面 : https://nginx.org/en/download.html 下载 nginx-1.26.1.tar.gz : https://nginx.org/download/nginx-1.26.1.tar.gz CentOS6.1已过期, 给它更换yum源, 将下面…

设计分享—国外网站设计赏析

今天还是给大家分享一些国外的网站设计案例~ 蓝蓝设计是一家专注而深入的界面设计公司,为期望卓越的国内外企业提供卓越的大数据可视化界面设计、B端界面设计、桌面端界面设计、APP界面设计、图标定制、用户体验设计、交互设计、UI咨询、高端网站设计、平…

基于PHP+MYSQL开发制作的趣味测试网站源码

基于PHPMYSQL开发制作的趣味测试网站源码。可在后台提前设置好缘分, 自己手动在数据库里修改数据,数据库里有就会优先查询数据库的信息, 没设置的话第一次查询缘分都是非常好的 95-99,第二次查就比较差 , 所以如果要…

Redis 关于内存碎片的解决方法

今天生产机报内存爆满异常被叫过去查看问题,通过各种排除最终定位到了Redis的内存碎片的问题,这篇博客将详细介绍Redis内存碎片问题并给出最佳实践解决此问题。 Redis的内存碎片原理 先引用Redis官方的原话: 当键被删除时,Redis …

MYSQL中的库表建立基础操作

任务:新建产品库mydb6_product, 新建3张表如下: 一, employees表 (1):id,整型,主键 (2):name,字符串,最大长度50,不能为空 &#xff…

SQL每日一题:删除重复电子邮箱

题干 表: Person -------------------- | Column Name | Type | -------------------- | id | int | | email | varchar | -------------------- id 是该表的主键列(具有唯一值的列)。 该表的每一行包含一封电子邮件。电子邮件将不包含大写字母。 编写解决方案 删除 所有重复…

SpringBoot框架学习笔记(三):Lombok 和 Spring Initailizr

1 Lombok 1.1 Lombok 介绍 (1)Lombok 作用 简化JavaBean开发,可以使用Lombok的注解让代码更加简洁Java项目中,很多没有技术含量又必须存在的代码:POJO的getter/setter/toString;异常处理;I/O…

C语言学习笔记[25]:循环语句for

for循环 for循环的基本语法 for(表达式1;表达式2;表达式3)循环语句; 表达式1为初始化部分,用于初始化循环变量的。 表达式2为条件判断部分,用于判断循环何时终止。 表达式3为调整部分,用于循环条件的调整。 例如用for循环实现打印1~10的数字…

HarmonyOS根据官网写案列~ArkTs从简单地页面开始

Entry Component struct Index {State message: string 快速入门;build() {Column() {Text(this.message).fontSize(24).fontWeight(700).width(100%).textAlign(TextAlign.Start).padding({ left: 16 }).fontFamily(HarmonyHeiTi-Bold).lineHeight(33)Scroll() {Column() {Ba…

object-C 解答算法:移动零(leetCode-283)

移动零(leetCode-283) 题目如下图:(也可以到leetCode上看完整题目,题号283) 解题思路: 本质就是把非0的元素往前移动,接下来要考虑的是怎么移动,每次移动多少? 这里需要用到双指针,i 记录每次遍历的元素值, j 记录“非0元素值”需要移动到的位置; 当所有“非0元素值”都移…

解决TypeError: __init__() takes 1 positional argument but 2 were given

问题描述: 如下图,在使用torch.nn.Sigmoid非线性激活时报错 源代码: class testrelu(nn.Module):def __init__(self):super().__init__()self.sigmoid Sigmoid()def forward(self, input):output self.sigmoid(input)return outputwriter…

可视化剪辑,账号矩阵,视频分发,聚合私信一体化营销工具 源----代码开发部署方案

可视化剪辑: 为了实现可视化剪辑功能,可以使用流行的视频编辑软件或者开发自己的视频编辑工具。其中,通过设计用户友好的界面,用户可以简单地拖拽和放大缩小视频片段,剪辑出满足需求的视频。在开发过程中,可…