赞
踩
随着深度学习大语言模型的越来越火爆,大语言模型越做越大,使得其推理成本也水涨船高。模型量化,成为一个热门的研究课题。字节开源大模型量化新思路,2-bit量化模型精度齐平fp16
近日,字节跳动语音团队推出一个全新的量化思路,抛弃传统的量化范式,从数学优化的角度来对量化任务建模。文章放在了 arXiv,代码已经开源,可以一键复现文中的所有结果:
论文链接:https://arxiv.org/abs/2404.12759
项目链接:https://github.com/bytedance/decoupleQ
W2 算子:https://github.com/NVIDIA/TensorRT-LLM/pull/1568
1. 背景
大模型的迅速发展,使得推理成本越来越高。模型量化,作为一个降低推理成本的技术方案,得到了越来越多的关注与研究。然而,在传统的量化范式下,模型的精度在极低比特下会迅速下降。基于此,作者们提出了一种新的量化思路,将模型参数解耦为整数部分和浮点部分,从数学优化的角度来对量化任务建模,使得在极低比特下,模型依然能保持较高的精度。这样做的优势是明显的,我们不再需要关注量化特有的问题,比如如何处理敏感通道,如何处理 outlier 等等,而是只需要将量化问题进行数学建模,找到一个合适的优化目标函数,然后去求解该函数。
2. 传统量化
传统上,我们对一个模型的量化思路是:
在这种传统的量化方案中,我们需要关注很多量化特有的细枝末节问题,比如针对敏感通道,我们有敏感通道的处理方式;针对 outlier,我们有 outlier 的处理方式。这种头痛医头脚痛医脚的处理范式,难以应付复杂多变的业务场景。字节跳动的研究者们试图把这些问题都抽象出来,从一个宏观的视角来看待量化问题。我们只需要建立一个抽象的优化目标函数,再去求解这个目标函数即可。
3. decoupleQ
至此,优化目标可以写作如下:(为了符号简洁,文章中重新定义符号):
将一个量化问题转化为形如(5)式的数学优化问题,正是 decoupleQ 区别于传统量化论文的关键所在。这种转化,使得我们只需要专注于求解 (5) 式即可,不再需要处理关于量化本身的细枝末节的问题,比如 outlier,等等。
4. W2 算子实现
要对量化后的模型进行推理,需要量化算子的支持,在业界没有现成的 w2a16 的算子可用,作者们基于 Tensorrt-LLM 中的 w4 算子开发了 w2 的 Gemm cuda kernel, 实现了 w2a16 模型的高效推理。
量化模型本身是以 2bit weight 的形式加载和存储在显存中,因此会占用比较小的显存。我们的 cuda kernel 通过在运行时将 2bit 的 weight 加载到寄存器中,再利用硬件指令高效转换成 bf16 的形式与 activation 进行 gemm 运算。因为我们的场景受限于 latency, generation 阶段的 batchsize 比较小,此时矩阵乘受限于 weight 的访存,这种实现会大大减少访存量,提升模型的性能。在实现过程中,结合了算法搜索以及 SpiltK Parallel Reduce,进一步能提升模型的性能,实测在 batchsize=1 的情况下,在 L 卡上 w2a16 Gemm 性能相比 w4a16 能提升 1.4x-1.7x 不等。
算子链接:https://github.com/NVIDIA/TensorRT-LLM/pull/1568
w2 cuda kernel的实现原理
5. 实验
作者在文章给出了字节跳动内部的 ASR 实验结果,和开源的实验对比结果:
其中内部实验结果是:
该表格中,作者用 word err rate (WER) 来衡量 ASR 的准确率。作者尝试使用不同的方法将模型量化为 W2A16g64。量化前的浮点模型的 wer 是 6.68%,使用 GPTQ【1】量化以后是 6.83%,带有 block 最小化的 decoupleQ 量化以后的 wer 是 6.70%,该结果与量化前的浮点模型的 wer 很接近。同时也 report 了量化所需要的耗时。量化高精度的代价,是量化耗时较长。在实际业务中,在使用 decoupleQ 对模型量化完毕以后,固定整数部分,使用有标签数据集微调 scale 和 zero,模模型精度有进一步的提升。
开源对比实验结果是:
该表格是 decoupleQ 和其他方法在 Llama-1/2 上的量化结果比较。以 perplexity (PPL) 作为评价指标。可以看出,在同样的量化配置下,deoucpleQ 的 PPL 在绝大多数时候会低于其他方法。
6. 业务收益
decoupleQ 量化技术在字节跳动语音部门现在被广泛使用。已经上线于语音生成模型(Text-to-Speech),语音识别模型(automic speech recognition)等等,落地于豆包、飞书、抖音等产品中。大量上线业务表明,基于 decoupleQ 的量化,W4A16 的推理精度已经完全能和 fp16/bf16 推理持平;W2A16 的精度只略差于 fp16/bf16 精度(对浮点部分 sft 以后,精度能和 fp16/bf16 持平)。尽管论文中只介绍了 weight-only 的量化,但是在实际业务中,在 weight 获得良好的量化以后,对 activation 的量化也便能简单许多。
在硬件加速上相比 fp16、w8fp16、w4fp16 获得了不错的加速效果,在小 batch 下 w2 矩阵乘的性能相比 fp16 提升 5-6 倍,相比 w4 提升 1.5-1.7 倍。在内部业务模型上,w2fp16 相比 fp16 性能有 3-5 倍的提升, 相比 w4fp16 性能有 1.25-1.4 倍的性能提升,同时也会使得模型 weight 占用显存大幅下降,为 runtime 的显存利用提供更多空间。
7. 总结与讨论
在总结与讨论部分,作者也指出了 decoupleQ 目前存在的两个风险:
1. decoupleQ 旨在使用数学优化的手段,将量化前后的 L2 loss 最小化。然而,layer 层面或者 block 层面的 L2 loss 最小化,未必能够代表最终模型精度的最优;
引领学术视听研究,上海交大、清华大学、剑桥大学、上海AILAB联合发布学术视听数据集M3AV
本文作者来自上海交通大学,清华大学,剑桥大学和上海人工智能实验室。一作陈哲为上海交通大学博一学生,师从上海交通大学人工智能学院王钰教授。通讯作者为王钰教授(主页:https://yuwangsjtu.github.io/)与清华大学电子工程系张超教授(主页:https://mi.eng.cam.ac.uk/~cz277)。
论文链接:https://arxiv.org/abs/2403.14168
项目主页:https://jack-zc8.github.io/M3AV-dataset-page/
论文标题:M3AV: A Multimodal, Multigenre, and Multipurpose Audio-Visual Academic Lecture Dataset
摘要
开源学术演讲录像是一种普遍流行的在线分享学术知识的方法。这些视频包含丰富的多模态信息,包括演讲者的语音、面部表情和身体动作,幻灯片中的文本和图片,和对应的论文文本信息。目前很少有数据集能够同时支持多模态内容识别和理解任务,部分原因是缺乏高质量的人工标注。
该工作提出了一个新的多模态、多类型、多用途的视听学术演讲数据集(M3AV),它包含来自五个来源的近 367 小时的视频,涵盖计算机科学、数学、医学和生物学主题。凭借高质量的人工标注,特别是高价值的命名实体,数据集可以用于多种视听识别和理解任务。在上下文语音识别、语音合成以及幻灯片和脚本生成任务上进行的评估表明,M3AV 的多样性使其成为一个具有挑战性的数据集。目前该工作已被 ACL 2024 主会接收。
数据集信息
M3AV 数据集主要由以下几个部分组成:
1. 带有复杂块的幻灯片,它们将会被按照空间位置关系进行合并。
2. 口语和书面形式的,包含特殊词汇以及单词级时间戳的语音转写文本。
3. 视频对应的论文文本。
从下表可以看出,M3AV 数据集包含最多人工标注的幻灯片、语音和论文资源,因此不仅支持多模态内容的识别任务,还支持高级学术知识的理解任务。
同时,M3AV 数据集在各方面与其他学术数据集相比,内容较为丰富,同时也是可访问的资源。
实验任务
M3AV 数据集在多模态感知与理解方面设计了三个任务,分别是基于上下文的语音识别、自发风格的语音合成、幻灯片与脚本生成。
任务一:基于上下文的语音识别
一般的端到端模型在稀有词识别上存在问题。从下表的 AED 和 RNN-T 模型可以看出,稀有词词错率(BWER)与全部词错率(WER)相比,增加了两倍以上。通过使用 TCPGen 利用 OCR 信息来进行基于上下文的语音识别,RNN-T 模型在开发和测试集上的 BWER 分别有相对 37.8% 和 34.2% 的降低。
任务二:自发风格的语音合成
自发风格的语音合成系统迫切地需求真实场景下的语音数据,以产生更接近自然会话模式的语音。论文作者引入了 MQTTS 作为实验模型,可以发现与各个预训练模型相比,MQTTS 的各项评估指标最佳。这表明 M3AV 数据集中的真实语音可以驱动 AI 系统模拟出更自然的语音。
任务三:幻灯片与脚本生成
幻灯片和脚本生成(SSG)任务旨在促进 AI 模型理解和重建先进的学术知识,从而帮助研究人员处理快速更新迭代的学术资料,有效地开展学术研究。
从下表可以看出,开源模型(LLaMA-2, InstructBLIP)在从 7B 提升到 13B 时,性能提升有限,落后于闭源模型(GPT-4 和 GPT-4V)。因此,除了提升模型尺寸,论文作者认为还需要有高质量的多模态预训练数据。值得注意的是,先进的多模态大模型(GPT-4V)已经超过了由多个单模态模型组成的级联模型。
此外,检索增强生成(RAG)有效提升了模型性能:下表显示,引入的论文文本同时提升了生成的幻灯片与脚本的质量。
结论
这篇工作发布了涵盖多个学术领域的多模态、多类型、多用途视听数据集(M3AV)。该数据集包含人工标注的语音转录、幻灯片和额外提取的论文文本,为评估 AI 模型识别多模态内容和理解学术知识的能力提供了基础。论文作者详细介绍了创建流程,并对该数据集进行了各种分析。此外,他们构建了基准并围绕数据集进行了多项实验。最终,论文作者发现现有的模型在感知和理解学术演讲视频方面仍有较大的提升空间。
部分标注界面
WAIC上,高通这一波生成式AI创新,让我们看到了未来 , 做最有挑战的事:把生成式 AI 送到每个人手上。
没想到,生成式 AI 爆发后,产业格局的变化居然这么快。
一个月前,微软向全世界介绍了专为 AI 设计的「Copilot + PC」,AI PC 这个新品类突然有了标准款。
这是迄今为止速度最快、最智能化的 Windows 个人电脑。凭借搭载的新型芯片,它能够实现超过 40 TOPS(每秒万亿次操作)AI 算力、电池续航时间长达一整天,而且无缝接入了世界最先进的人工智能模型。其发布之时,只有骁龙 X 系列的 45TOPS 能够满足这样的 Windows 11 AI PC 新品类。
目前基于骁龙 X 系列平台的各品牌 Windows 11 AI PC 已经开始在国内陆续开卖,拥有很多独特的 AI 能力,例如通过回顾功能对浏览过的内部存储资料进行 AI 搜索,设备端的 AI 图像生成与优化,给视频和在线会议加实时翻译字幕、背景滤镜等等。
结合终端侧最先进的大模型技术,人们可以在新型设备上与 AI 轻松地进行交互。AI 大模型可以实时看到、听到系统内外的信息,并给与有效回应,大幅提升你的工作效率。
还记得 OpenAI CEO 山姆・奥特曼发布 GPT-4o 的时候曾经说过「与电脑交互从来都不是很自然的事情」,似乎话音未落,变革已经来到了。
在兴奋于人机交互方式的颠覆之后,人们发现,这些新形态设备的内在也有些许不同之处:常年由 X86 架构主导的 Windows 笔记本,到了 AI PC 时代却是一水的高通骁龙 X 系列芯片。
而且,这还不是简单的替换。微软官方后续进行了说明:Windows 11 中的部分生成式 AI 能力,只有在搭载骁龙芯片上才能正常运行。
为什么到了生成式 AI 时代,计算机内部的「C 位」忽然换了人?
7 月 4 日,世界人工智能大会暨人工智能全球治理高级别会议 WAIC 2024 正式召开,在这次大会上,高通展示的一系列终端侧生成式 AI 能力给了我们答案。
芯片 AI 能力,带动设备形态变革
自 ChatGPT 问世以来,人们就一直在期待大模型等新技术带来的变革。
不过这条道路异常艰难,在技术进步的过程中,人们面临着数据、算法和算力的三重挑战。生成式 AI 极度消耗算力,用于计算大模型的 GPU 都成了稀缺品。面向 AI 计算的芯片迅速成为各家硬件公司的探索方向。
在终端侧算力上,动作最快的就是高通。
去年 10 月,高通在骁龙峰会上推出了第三代骁龙 8 移动平台(骁龙 8Gen3),这块 SoC 在多核跑分中跑赢了苹果 A17 Pro,由于 CPU 和 GPU 性能的大幅提升,NPU 性能直接翻倍,它成为了旗舰 AI 手机芯片的首选。
如今,搭载新一代芯片的 AI 手机已经大卖,AI 手机很大程度上已经是「现在式」,与此同时还有一个「未来式」—— 同在骁龙大会上,我们看到高通花费大量篇幅,介绍了全新设计的高性能 PC 芯片骁龙 X 系列平台。
它的旗舰产品就是「骁龙 X Elite」,大幅提升了移动 PC 能力的上限。
这款芯片采用 4nm 制程打造,搭载了 12 大核的 Oryon CPU,。与英特尔 Ultra 7 155H 相比,Oryon CPU 的单核同功耗性能领先 54%,同性能水平的能耗可以降低 65%。在苹果 M3 芯片推出以后,骁龙 X Elite CPU 在 Geekbench 多线程中的测试结果要比苹果新品好上 28%。
GPU 方面,骁龙 X Elite 采用的 Adreno GPU 与 Ultra 7 155H 相比同功耗性能高出 36%,达到相同性能时,功耗只有竞品的一半。
这款芯片最突出的亮点是其面向下一代设备形态的 AI 算力。骁龙 X Elite 仅依靠 NPU 就可以实现 45TOPS 算力,结合 CPU、GPU、NPU 的异构计算可以输出更高算力。
根据测算,在骁龙 X Elite 的支持下,新一代 AI PC 可以在终端侧运行超过 130 亿参数的生成式 AI 模型。
这就让新一代笔记本电脑,拥有了跑大模型的底气。
骁龙峰会上,高通 CEO 克里斯蒂亚诺・安蒙与微软 CEO 萨提亚・纳德拉进行了面对面对话。两人展望了基于新硬件和大模型算法所能催生出的未来产品形态。
安蒙与纳德拉提到,新一代的 AI PC 就是要把只有新形态系统架构才能实现的体验统统结合在一起。在 AI 算力和大模型结合之后,我们使用 Windows 的体验就仿佛在 Windows 初生时遇见「开始」按钮一样 —— 所有的应用程序、体验都会有机地整合到一键之上。
几个月后,当初的预告就落地成为了现实。现在,我们可以使用 AI PC 快速直观地检索想要寻找的内容,亦或是借助实时字幕突破语言障碍,还可以使用 AI 的图像生成能力进行创作。
未来,AI PC 的能力还将覆盖人们的学习、搜索与创作,我们使用电脑的方式或许会被彻底改变。
在芯片突破的同时,在这几个月里,大模型技术的发展同样突飞猛进。
模型优化,完成最后一块拼图
最近一段时间,不论科技大厂还是创业公司都在加速研发「轻量级」AI 模型。
去年 7 月,Meta 的开源模型 LLaMA-2 70B 模型性能已接近于 GPT-3.5,到今年 4 月,LLaMA-3 8B 做到了在 80 亿参数的体量上性能与 ChatGPT 3.5 基本相当。
上个星期,谷歌开源的 Gemma 2,已经可以使用单块 GPU 进行推理,性能还超过了体量大于自身两倍的竞品。
而在手机、电脑等常规终端设备上,现在我们也已经可以运行起与大型云端模型水平相当的 AI 模型了。
在世界人工智能大会 WAIC 2024 上,高通展示了首个在 Android 智能手机上运行的大语言和视觉助理大模型(LLaVA),拥有超过 70 亿参数,可以接收文字和图像内容的输入,并生成关于图像的多轮对话。LLaVA 在由骁龙 8 Gen 3 移动平台支持的工程机上运行,通过全栈的 AI 优化,实现了极高的响应速度。
加入视觉理解能力的大模型可以为 AI 手机带来很多新的用法。在 WAIC 人工智能赋能新型工业化主题论坛上,高通公司中国区研发负责人徐晧分享了多模态终端侧 AI 的应用前景。
高通公司中国区研发负责人徐晧在 WAIC 上。
比如你可以给冰箱里的食材拍一张照片,然后问大语言模型「你看到了什么?」,AI 可以很快地识别所有物体;在此基础上还可以接着问「基于这些食材,请给我推荐一个菜谱」,让 AI 进行菜式和做法的推荐。这比以前的 AI 助手,只能问「今天天气怎么样」或者「给我讲一个笑话」要有用的多。
在搭载骁龙 X Elite 的 Windows PC 上,高通此前还展示过全球首个超过 70 亿参数的 LMM 设备端推理,它可以接受文本和环境音频输入(如音乐、交通声音等),然后生成关于音频的多轮对话。
能够终端侧处理音频内容的方法,可以帮助 AI PC 更好地回答用户给出的指令。
为了把大模型微调的成本「打下来」,AI 学界提出的低秩自适应(LoRA)技术已经成为了先进大模型的主流方法,它能够在保证模型输出内容质量的前提下,大幅降低 AI 模型的可训练参数量。高通率先在安卓手机上实现了 LoRA 模型的终端侧运行,降低了大模型的训练成本,并演示了手机端运行支持 LoRA 适配器的图像生成模型 Stable Diffusion。
在 WAIC 现场,高通展示了骁龙生态的更多可能性。抖音集团在骁龙 X Elite 平台的 AI PC 上跑起了自家的机器学习框架 ByteNN,对剪映客户端进行 AI 适配优化。通过 NPU 加速,剪映的智能抠像功能可以实现快速、轻松的一键移除视频背景,测试对两分钟时长的视频进行智能抠像,比使用 CPU 耗时降低 92%,完成抠像任务所消耗电量减少 85%。
另外,在剪映的美颜美体匀肤功能中,我们同样可以在本地 NPU 的加速下实现快速祛斑祛痘能力。
高通还展示了高度智能的 AI 服务机器人。告诉机器人「我想喝水」或是「我口渴」,机器人会提供不同的饮料选择。用户选择之后,机器人可以走到房间另一侧,识别饮料然后拿给用户。这样由人工智能驱动的机器人,已经可以在日常生活中提供帮助了。
有了多模态、LoRA 和能够支撑第三方应用的软件栈,高通可谓已经完成了终端侧生成式 AI 的全部拼图。
用「小模型」撬动大生态
上述这些研究、实践的共同目的,是为了让 AI 大模型更加轻量化,让终端侧设备承担起更多的计算任务。大模型虽然可以在云端运行,但在终端侧设备上运行生成式 AI 的推理可以带来很多好处。
从技术角度来看,终端侧处理 AI 任务具有保护隐私、个性化、降低成本、可靠性和快速响应的优势,每个方面对于大规模、常态化的部署都至关重要。
从实用角度来看,作为「通用化」的人工智能技术,在拥有更完善的能力后,终端侧大模型可以让手机等设备更全面地了解世界,AI 助理实现真正的智能化,把我们从很多繁杂的任务中解放出来。
不过,能做到从软到硬,布局完整体系,又有大规模生态的玩家并不多。
在国内,除了各家大厂打造的旗舰 AI 手机,部分玩家在 AI PC 上的角力才刚刚展开。把视线往远看,生成式 AI 的应用还要扩展到汽车、XR 设备和物联网上。
这其中,很多应用落地的背后都可以看见高通的身影。
WAIC 大会上,高通中国区董事长孟樸在产业发展主论坛上介绍了高通为推动终终端侧 AI 发展所做的努力。
高通中国区董事长孟樸在 WAIC 大会现场。
高通拥有超过 15 年的 AI 技术研发经验,凭借长期不懈的技术探索与实践,已经打造出了端云结合的混合 AI 能力。在生成式 AI 时代,高通充分发挥技术优势,为终端设备提供了性能领先的硬件,其可扩展的软硬件技术架构可以对多种 AI 算法实现性能、能效的极致优化,并快速部署到不同终端上。
在去年骁龙峰会上,高通便表示全球搭载骁龙芯片的设备已经超过了 30 亿台。背靠庞大的设备基数,先进的软硬件全栈优化体系,以及全球协作的生态系统,高通在生成式 AI 技术爆发的过程中,进一步扩展了对于前沿技术方向的探索,站在了引领潮流的高度。
现在,高通的生成式 AI 能力已经覆盖了开发的全流程:高通提供面向生成式 AI 设计的全新计算架构,可以实现 CPU、NPU、GPU 结合的异构计算;高通 AI 引擎能够横跨不同设备类型,帮助人们把业界领先的 AI 模型快速落地;最后,使用这套软件和硬件,大模型应用对接的还是用户面积最大、品类最为繁多的生态。
高通的终端侧生成式 AI 布局,已经在收获成果:
智能手机是生成式 AI 发展最快的领域之一,已有超过 20 款搭载第三代骁龙 8 的旗舰手机产品发布。这些 AI 手机支持的应用针对人们的需求进行了大量优化,大幅提升了实用性,让生成式 AI 越来越贴近我们的生活。
个人电脑方面,高通的骁龙 X Elite 和骁龙 X Plus 平台凭借专用的 AI 算力实现了一系列独有功能。联手微软等生态伙伴,已有超过 20 款基于骁龙 X 系列的 Windows 11 AI PC 上市。新形态的硬件为人们带来了更多可能性。
在汽车领域,「AI 上车」正在成为现实。包括理想、小鹏、极越等多家汽车厂商,已经在搭载第四代至尊级骁龙座舱平台(骁龙8295)的汽车上部署了车端大模型;随着多模态技术的发展,生成式 AI 有望为智能座舱、自动驾驶等领域打开全新的应用空间。
有高通这样提供完整技术栈的存在,生成式 AI 的大规模落地已经按下了加速键。由此带动,变革正逐渐显现,这不由得让人想起 NPU 刚刚诞生时,上一波 AI 技术爆发的前夜。
很快,终端侧生成式 AI 带来的智能化将会无处不在。
Adam有了mini版:内存占用少一半,吞吐量提升50%
在训练大型语言模型(LLM)时,Adam(W) 基本上已经成为了人们默认使用的优化器。
Adam 尽管性能优异,但使用成本很高。具体来说,Adam 需要内存来保存其优化器状态:一阶动量 m 和二阶动量 v^2。这总共需要模型大小至少 2 倍的内存。这样的内存消耗已经成为了 LLM 训练的一大主要负担。
举个例子,要训练一个 7B 模型,只是 Adam 就需要每张卡有大约 56 GB 来保存 m 和 v;而如果再加上梯度,则总共需要 86 GB。即使使用最先进的 A100-80GB,成本也过高了。
为了支持这样的高内存算法,实践中必须要使用 CPU 卸载与分片,但这又会增加延迟,减慢训练速度。在训练 PaLM (有 5400 亿参数)这样的更大型模型时,情况还会更糟。在这种情况下,Adam 自身就要占用超过 50 GB,并且这也是预训练阶段的一大主要开销。
因此,人们希望设计出内存需求更少又有效的优化器。首先,减少内存可以减轻 CPU 卸载的负担并能减轻对模型参数执行分片的需求。这些都能减少 GPU 和 CPU 之间的通信量,并进一步提升训练过程的吞吐量和速度。其次,这允许实践者使用更少的 GPU 来训练所需大小的模型,从而极大地节省成本和能源。第三,这能降低训练 LLM 的门槛并鼓励更多 GPU 资源有限的研究者参与进来。
但是,修改 Adam 但不影响其性能的难度非常大。其中一个主要原因是我们仍然不太理解 Adam 的 m 和 v 的作用。我们还不清楚 Adam 的哪些组件对其卓越性能而言必不可少,也就更不知道可以重新设计和改进哪些组件了。
Adafactor 是一个颇受欢迎的尝试,其能降低在 v 上低秩分解所用的内存。但是,很多研究发现 Adafactor 训练 LLM 的性能不佳。可能的原因有两个。第一,当前 Adam 中的 v 可能对有效性来说非常关键,已经没有缩减空间。第二,v 是有可能缩减的,只是 Adafactor 使用的方法并不是最合适的:矩阵分解是一种可以广泛应用的通用方法,但它没有利用太多特定于问题的结构,因此它在特定的神经网络任务上效果不佳。
近日,香港中文大学(深圳)、深圳市大数据研究院、杜克大学和斯坦福大学的一个联合研究团队发现:可以通过一个简单技巧来降低 v 的使用量。
为了找到性能足以比肩甚至优于 Adam 的优良学习率,该团队提出了一种低成本的简单方法 Adam-mini。另外,该团队也发布了 Adam-mini 的一种实现。
论文标题:Adam-mini: Use Fewer Learning Rates To Gain More
论文地址:https://arxiv.org/pdf/2406.16793
实现代码:https://github.com/zyushun/Adam-mini
在实验中,Adam-mini 的表现非常优秀。如图 1 所示, 在预训练 Llama2-7B 时,Adam-mini 的内存占用可以大幅降低,同时吞吐量也有明显提升。在保证性能与 Adam 相当的同时,其能带来 33% 的速度提升。
图 2 展示了 Adam-mini 的大致图示和学习率使用情况。可以看到,Adam-mini 是根据 Hessian 结构来分配学习率,因此其使用的学习率比 SGD 多,但远少于 Adam。
本研究的通讯作者,香港中文大学(深圳)数据科学学院副教授孙若愚(Ruoyu Sun)表示:「如果你喜欢 Adam(W),那 Adam-mini 就是你的不二之选!」
方法
动机和观察
为了应对特征值的异构性,Transformer 的每一参数块都需要不同的学习率。Adam 的 v 可以提供这一点。
论文《Why Transformers Need Adam: A Hessian Perspective》发现:必须为每个块使用不同的学习率。但是,Adam 所做的却远不止此:其并不只是为每个块分配不同的学习率,而是为每个参数都分配不同的学习率。而参数量(可能超过数十亿)要远远多于块的数量(通常数百计)。那问题就来了:
有必要为每个参数都使用单独的学习率吗?如果没必要,又能节省多少?
该团队进行了一番探索,得到了如下发现:
如图 4 (a) 和 (b) 所示,Adam 的表现优于最优的单学习率方法。这符合预期。
如图 4 (c) 和 (d) 所示,这里研究了其 Hessian 是 (a) 的一个密集子块的新问题。该团队探究了针对这个问题的最优单学习率方法,结果发现其表现优于 Adam,即使 Adam 分配的学习率要多得多。(a) 的所有三个子块都有类似的现象。
如果收集 (2) 中的那些最优学习率,并将其用于梯度下降的一个「逐块」版本,那么其在原始问题上的速度会比 Adam 快,见图 4(b) 中的绿线。
也就是说,对于带有块对角 Hessian 的一般问题而言,许多学习率并不一定会带来额外收益。
该团队也在 Transformer 中观察到了类似的现象。
总结起来,该团队发现:对于 Transformer,有可能使用比 Adam 远远更少的学习率实现与之相当或更好的性能。剩下的问题就是在不使用网格搜索的情况下如何找到这些学习率。
新方法:Adam-mini
基于上述讨论,该团队提出了 Adam-mini,见算法 1。Adam-mini 的目标是降低 Adam 中的学习率资源,而无需费力地对学习率执行网格搜索。Adam-mini 包含两个步骤。步骤 1 只在初始化时进行。
步骤 1-1:将模型参数切分为块。对于 Transformer,该团队选择的策略是「Partition for Transformers」,即根据头来切分所有的 Query 和 Key,并使用 PyTorch 来切分其余部分。对于其它网络,则使用默认的 PyTorch 切分即可,他们将其称之为「Partition for non-Transformers」。
步骤 1-2:使用 embd_blocks。对于 Transformer,其包含嵌入层和输出层。对于其它网络,不选择任何参数。
步骤 2:对于每个位于 embd_blocks 之外的参数块,都使用单个学习率。为了高效地为每个块选择合适的学习率,Adam-mini 的做法是直接将原始 Adam 中的 g◦g 替换成其均值。Adam-mini 像 Adam 一样在这些均值上使用了移动平均值。
一个简单示例。为了说明 Adam-mini 的关键设计,该团队在论文中给出了一个简单的示例。假设有一个问题,其有 5 个参数 w ∈ ℝ^5,Adam 和 Adam-mini 都会执行 w = w − u ◦ m,其中 m 是一阶动量,而 u 有不同的形式,如下所示:
对于 Adam:
对于 Adam-mini:假设分片方式为 (1, 2, 3) 和 (4, 5),则
请注意,有效元素 u_mini 的数量就等于块的数量,这远远小于 u_Adam,其等于参数数量。结果表明,这能让 LLM 的 v 中的元素数量减少 90% 以上。
分片策略的原则
现在讨论如何为 Adam-mini 选择参数分片。该团队基于前述分析得出了一个广义原则:
原则 1:应当将参数切分成不同的参数块,使得每个参数块都关联了 Hessian 中最小的密集子块。
由于参数的块对角结构,PyTorch 的默认分片方法是一个合理的候选项。实际上,这种分片确实能很好地用于非 Transformer 任务,比如 ResNet、扩散模型和图模型。算法 3 Partition for non-Transformers 展示了该策略。
但不幸的是,该团队发现,默认的 PyTorch 切片并不总是能很好地应对 Transformer。比如他们发现 Adam-mini 在 1B 模型上会出现训练不稳定问题(见图 6(d))。
他们猜测这是因为 PyTorch 切片无法完整地理解 Hessian结构。经过一番探索后,他们发现 Hessian 子模块分为两类:
第一类:类似于 Hessian 整体,这种 Hessian 子块本身也有进一步的块对角结构,由更小的密集矩阵构成。这一类包含 Query 和 Key。他们通过实验发现,小型密集子块的数量就等于多头注意力中头的数量。
第二类:这种 Hessian 子块有密集的结构,无法进一步分成更小的块。这一类包含 Value、注意力投射和 MLP 层。请注意 Value 的 Hessian 结构不同于 Query 和 Key 的 Hessian 结构,但它们全都由 4 个头组成。这是因为 Value 位于自注意力设计的 softmax 算子之外,而 Query 和 Key 却不是。
基于上述发现,该团队发现默认的 PyTorch 分片确实不是最适合 Transformer 的。可以根据头将 Query 和 Key 进一步切分成不同的块。根据原则 1,不同的头应当属于不同的块。根据直觉就能知道,不同的头在理解 token 时的作用也不同,因此它们需要不同的学习率就很合理了。
由此,该团队得到了算法 2:Partition for Transformers,其可根据头来切分 Query 和 Key。该过程遵循基于最小 Hessian 子块的原则如图 6 (d) 所示。该策略确实能稳定训练过程并提升性能。
Adam-mini 的一些特点
减少内存用量
根据设计,Adam-mini 可为 Transformer 减少学习率的数量——从参数总数减少到嵌入层的大小、输出层的大小和其它层中块的数量的总和。因此,减少的内存比例取决于模型中非嵌入参数的比例。
在 Llama2-7B 上,这个比例是 96.2%。对于主流的语言模型,这个比例通常 ≥ 90%。请注意,如果层数更多,这个比例也会更加接近 100%;比如对于 Llama3-70B,这个比例为 99.25%。因此,Adam-mini 可将 v 减少至少 90%,由此可为 Adam 带来 45% 到 50% 的内存节省。
吞吐量更高
Adam-mini 可取得比 AdamW 更高的吞吐量,尤其是当硬件资源有限时。
基于此,Adam-mini 可以减少预训练的总时间。如表 2 所示。当在 2 台 A800-80GB 上预训练 Llama2-7B 时,Adam-mini 的吞吐量比 AdamW 高 49.6%。召回吞吐量 (↑) 指的是每秒处理的 token 数量,因此在预训练时,Adam-mini 处理相同数量的 token 可节省 33.1% 的时间。
实验
预训练
设置
该团队预训练了一些开源 LLM,包括 GPT2 系列和 LLM 系列。他们在主流英语语料库上从头开始训练了这些模型。
具体来说,他们在 Openwebtext 上训练了 GPT2 系列,在 CommonCrawl 上训练了 TinyLlama-1B 和 Llama2-7B。他们使用 2B、3B 和 25B token 训练了模型。模型配置(比如上下文长度)是根据标准协议选择的。
该团队将 Adam-mini 与 AdamW 以及 Adafactor、CAME 和 SM3 等常用内存高效型方法进行了比较。对于 Adafactor 和 SM3,为了确保与其它方法进行公平的比较,这里整合了 β_1 = 0.9 的动量。他们在同样的预算内对所有方法的学习率进行了调节,并报告了最佳性能。
Llama 系列
图 7 (a) 展示了预训练 TinyLlama-1B 的验证损失曲线。Llama2-7B 的训练曲线已经在图 1(c) 中给出。对于 TinyLlama-1B 和 Llama2-7B,可以发现 Adam-mini 使用更少的内存便能达到与 AdamW 相近的效果。
GPT2 系列
图 7 (b) 展现了 GPT2-125M 的验证损失曲线,图 8 展示了大小从 330M 到 1.5B 的 GPT2 的验证损失曲线。可以看到,Adam-mini 使用更少的内存就能取得与 AdamW 相当的优良性能,而其它方法的表现要更差一些。
敏感度分析
该团队在 GPT2-125M 预训练任务上测试了 Adam-mini 对超参数的敏感度。这里报告了使用 2.5B token 训练之后的验证损失。如图 7 所示,Adam-mini 看起来对超参数并不敏感。
监督式微调和 RLHF
该团队评估了 Adam-mini 对下游微调任务的有效性。
具体来说,他们考虑了两种有代表性的任务:监督式微调(SFT)和根据人类反馈的强化学习(RLHF)。这里使用的预训练模型是 Llama-2-7B。
结果见表 3,可以看到 Adam-mini 的表现优于 AdamW,即便 Adam-mini 使用了单个学习率并且内存效率更高。
非 LLM 任务
该团队也在非 LLM 任务评估了 Adam-mini。表 4 给出了在 ImageNet 上训练 ResNet18、在 CelebA 上训练扩散模型、在 OGB-arxiv 上训练图卷积网络(GCN)和图注意力网络(GAT)的结果。结果发现 Adam-mini 使用更少的内存便能取得与 AdamW 相当或更好的性能。
红杉:重金购入GPU后,AI行业收入缺口达到5000亿美元 , 囤 GPU 真的像修铁路一样,是一项划算的投资吗?
AI公司花了那么多钱从英伟达购买GPU,需要产生多少收入才能证明这笔钱花得合理?最近,红杉资本的一篇文章给出了一个答案:6000亿美元。
而去年9月份,同一位作者算出的数字是2000亿美元。
这些数字是怎么算出来的呢?在去年9月份的文章中,作者David Cahn(红杉资本的合伙人)表示:在 GPU 上每花费 1 美元,在数据中心运行 GPU 需要花费大约 1 美元的能源成本。GPU 的最终用户——例如星巴克、X、特斯拉、Github Copilot 或新的初创公司——也需要赚取利润。假设他们需要赚取 50% 的利润,而英伟达2023年底的run-rate GPU revenue是500亿美元(当时分析师的估计),那么这些 GPU 需要产生 2000亿美元的生命周期收入来偿还前期资本投资(2023年9月算出的数字)。这还不包括云供应商的任何利润——他们要获得正回报,总收入要求会更高。
那这些重金购入GPU的公司实际能赚多少钱呢?David Cahn也做出了一些测算。他去年9月份提到,据 The Information 当时的报道,OpenAI 年收入达到 10 亿美元;微软表示,他们预计将从 Microsoft Copilot 等产品中产生 100 亿美元的人工智能收入;David Cahn假设谷歌、Meta 和 Apple 也各自从人工智能中获得 100 亿美元的收入,甲骨文、字节跳动、阿里巴巴、腾讯、X 和特斯拉各自获得50亿。那么它们总共将产生710亿美元的收入。这就造成了一个超过1250亿美元(125B+)的收入缺口。
作者之所以测算这些数字,是想抛出一个值得思考的问题:这些资本支出中有多少与真正的终端客户需求有关,又有多少是基于对未来终端客户需求的预期?
作者观察到, 在AI领域,大规模的资本支出正在发生。从长远来看,这应该会大幅降低人工智能开发成本。但在历史技术周期中,基础设施的过度建设往往会烧毁资本。因此,他希望大手笔买入GPU的这些企业想清楚:所有这些 GPU 的用途是什么?谁是客户的客户?如何才能将令人惊叹的创新转化为客户每天使用、喜爱并愿意付费的产品?
时隔近一年,这些问题依然很难回答,而且偿还前期资本投资的数字被推高到6000亿美元(假设英伟达2024年底的run-rate GPU revenue是1500亿美元)。具体算法如下:
在计算时,作者指出了一些需要考虑的变量:
1、供应短缺已经消退:2023 年末是 GPU 供应短缺的顶峰。初创公司打电话给风险投资家,打电话给任何愿意与他们交谈的人,请求对方帮助他们获取 GPU 的使用权。如今,这种担忧几乎完全消除了。David Cahn表示,对于他采访过的大多数人来说,现在获得 GPU 相对容易,并且交货时间合理。
2、GPU 库存正在增长:英伟达在第四季度报告称,其数据中心收入的一半左右来自大型云提供商。仅微软一家就可能占英伟达第四季度收入的约 22%。超大规模资本支出正在达到历史水平。这些投资是大型科技公司 24 年第一季度财报的一个主题。首席执行官们有效地告诉市场:「无论你喜欢与否,我们都会投资 GPU。」囤积硬件并不是一个新现象,一旦库存足够大,需求就会下降,这将是重启的催化剂。
3、OpenAI仍然占据着人工智能收入的最大份额:The Information最近报道称,OpenAI目前的收入为34亿美元,高于2023年底的16亿美元。虽然我们已经看到一些初创公司的营收接近1亿美元,但OpenAI与其他公司之间的差距仍然很大。在ChatGPT之外,今天消费者真正使用的人工智能产品有多少?想想每月15.49美元的Netflix或11.99美元的Spotify能给你带来多少价值。从长远来看,人工智能公司需要为消费者提供巨大的价值,让他们继续打开钱包。
4、在去年9月份的分析中,作者假设OpenAI+谷歌、微软、苹果、Meta+甲骨文、字节跳动、阿里巴巴、腾讯、X 和特斯拉总共能产生710亿美元的收入。考虑到OpenAI收入高于预期,同时其他之前没有被计算在内的AI公司也在产生营收,新的测算结果应该在710亿美元的基础上适当提高。但作者表示,即便如此,收入缺口还是扩大到了5000亿美元。
5、B100 即将到来:今年早些时候,Nvidia 发布了他们的 B100 芯片,该芯片的性能是之前的 2.5 倍,而成本仅增加了 25%。作者预计这将导致英伟达芯片的需求激增。与 H100 相比,B100 的成本与性能有了显着的提高,而且当今年晚些时候每家公司都试图上手 B100 时,可能会再次出现供应短缺。
对于David Cahn的测算方法,很多人去年就提出过异议,硅谷创投巨头A16Z特别顾问、AI初创公司2X创始人Guido Appenzeller就是其中之一。他认为,David Cahn的计算混淆了很多概念,对于GPU电费的计算也不合理,而且忽略了人工智能革命的规模。
还有人指出GPU 资本支出就像修建铁路,最终火车会来,农业出口可以创收,游乐园、购物中心等也会建起来。David Cahn同意这一观点,但是他认为提出此观点的人忽略了几点:
1、缺乏定价能力:就物理基础设施的建设而言,你所建设的基础设施具有某种内在价值。如果你拥有旧金山和洛杉矶之间的铁轨,你很可能拥有某种垄断定价权,因为在 A 地和 B 地之间只能铺设这么多铁轨。GPU 计算正日益成为一种按小时计量的商品。与成为寡头垄断的 CPU 云不同,构建专用AI云的新进入者继续涌入市场。在没有垄断或寡头垄断的情况下,高固定成本+低边际成本的企业几乎总能看到价格被竞相压低到边际成本(如航空公司)。
2、投资烧毁:即使是铁路,以及许多新技术,投机性的投资狂潮往往也会导致资本的高烧毁率。「The Engines that Moves Markets」是技术投资方面最好的教科书之一,其中的主要观点是很多人在投机性技术浪潮中损失惨重。挑选赢家很难,但挑选输家却容易得多。
3、折旧:我们从技术发展史中了解到,半导体会越来越好。Nvidia 将继续生产更好的下一代芯片,如 B100。这将导致上一代芯片加速贬值。由于市场低估了 B100 和下一代芯片的改进速度,因此高估了今天购买的 H100 在 3-4 年后的保值程度。同样,物理基础设施也不存在这种平行关系,因为物理基础设施并不遵循任何「摩尔定律」类型的曲线。
4、赢家与输家:David Cahn认为,我们需要仔细研究赢家和输家——在基础设施建设过剩的时期,总有赢家。人工智能很可能是下一个变革性的技术浪潮,正如作者在上一篇文章中提到的,GPU 计算价格的下降实际上有利于长期创新,也有利于初创企业。如果他的预测成真,它将主要对投资者造成伤害。创始人和公司创建者将继续在人工智能领域进行建设,而且他们将更有可能取得成功,因为他们将受益于较低的成本和在这一实验阶段积累的经验。
David Cahn在文章最后写道:
人工智能将创造巨大的经济价值。专注于为最终用户创造价值的公司建设者将获得丰厚的回报。我们正在经历一场有可能决定一代人命运的技术浪潮。像 Nvidia 这样的公司在促成这一转变中所发挥的作用值得我们给予高度评价,而且在未来很长一段时间内,它们都可能在生态系统中发挥至关重要的作用。
投机狂热是技术的一部分,因此并不可怕。那些在这一时刻保持冷静的人,有机会建立起极其重要的公司。但我们需要确保不要相信一种错觉,这种错觉现在已经从硅谷蔓延到美国其他地区,甚至全世界。这种错觉认为我们都会快速致富,因为 AGI 明天就会到来,我们都需要储备唯一有价值的资源,那就是 GPU。
实际上,未来的道路将是漫长的。会有起伏。但几乎可以肯定的是,这条路是值得的。
参考链接:
https://www.sequoiacap.com/article/follow-the-gpus-perspective/
https://www.sequoiacap.com/article/ais-600b-question/
-------
Taobao 天皓智联 whaosoft aiot
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。