Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
田渊栋等人新作:突破内存瓶颈,让一块4090预训练7B大模型_创想鸟

田渊栋等人新作:突破内存瓶颈,让一块4090预训练7B大模型

meta fair 田渊栋参与的研究项目在上个月获得了广泛好评。在他们的论文《mobilellm: optimizing sub-billion parameter language models for on-device use cases》中,他们开始探讨如何优化10亿以下参数的小型模型,旨在实现在移动设备上运行大型语言模型的目标。

3 月 6 日,田渊栋团队发布了最新的研究成果,这次专注于提高LLM内存的效率。除了田渊栋本人,研究团队还包括来自加州理工学院、德克萨斯大学奥斯汀分校以及CMU的研究人员。这项研究旨在进一步优化LLM内存的性能,为未来的技术发展提供支持和指导。

他们联合提出了一种名为 GaLore(Gradient Low-Rank Projection)的训练策略,这种策略允许全参数学习,相比于 LoRA 等常见的低秩自适应方法,GaLore具有更高的内存效率。

这项研究首次表明,在配备 24GB 内存的消费级 GPU(例如 NVIDIA RTX 4090)上,可以成功地进行 7B 模型的预训练,而无需使用模型并行、检查点或卸载策略。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

田渊栋等人新作:突破内存瓶颈,让一块4090预训练7B大模型

论文地址:https://arxiv.org/abs/2403.03507

论文标题:GaLore: Memory-Efficient LLM Training by Gradient Low-Rank Projection

盘古大模型 盘古大模型

华为云推出的一系列高性能人工智能大模型

盘古大模型 35 查看详情 盘古大模型

接下来我们看看文章主要内容。

当前,大型语言模型(LLM)在多个领域展现出卓越的潜力,但我们也必须正视一个现实问题,那就是预训练和微调LLM不仅需要大量的计算资源,还需要大量的内存支持。

LLM 对内存的需求不仅包括以亿计算的参数,还包括梯度和 Optimizer States(例如 Adam 中的梯度动量和方差),这些参数可能大于存储本身。举例来说,使用单个批大小且从头开始预训练的 LLaMA 7B ,需要至少 58 GB 内存(14 GB 用于可训练参数,42 GB 用于 Adam Optimizer States 和权重梯度,2 GB 用于激活)。这使得训练 LLM 在消费级 GPU(例如具有 24GB 内存的 NVIDIA RTX 4090)上变得不可行。

为了解决上述问题,研究人员不断开发各种优化技术,以减少预训练和微调期间的内存使用。

该方法在 Optimizer States 下将内存使用量减少了 65.5%,同时还能保持在 LLaMA 1B 和 7B 架构上使用最多 19.7B token 的 C4 数据集进行预训练的效率和性能,以及在 GLUE 任务上微调 RoBERTa 的效率和性能。与 BF16 基准相比,8-bit GaLore 进一步减少了优化器内存达 82.5%,总训练内存减少了 63.3%。

看到这项研究后,网友表示:「是时候忘记云、忘记 HPC 了,有了 GaLore,所有的 AI4Science 都将在 2000 美元的消费级 GPU 上完成。」

田渊栋等人新作:突破内存瓶颈,让一块4090预训练7B大模型

田渊栋表示:「有了 GaLore,现在可以在具有 24G 内存的 NVidia RTX 4090s 中预训练 7B 模型了。

我们没有像 LoRA 那样假设低秩权重结构,而是证明权重梯度自然是低秩的,因此可以投影到(变化的)低维空间中。因此,我们同时节省了梯度、Adam 动量和方差的内存。

因此,与 LoRA 不同,GaLore 不会改变训练动态,可用于从头开始预训练 7B 模型,无需任何内存消耗的预热。GaLore 也可用于进行微调,产生与 LoRA 相当的结果」。

田渊栋等人新作:突破内存瓶颈,让一块4090预训练7B大模型

方法介绍

前面已经提到,GaLore 是一种允许全参数学习的训练策略,但比常见的低秩自适应方法(例如 LoRA)更节省内存。GaLore 关键思想是利用权重矩阵 W 的梯度田渊栋等人新作:突破内存瓶颈,让一块4090预训练7B大模型缓慢变化的低秩结构,而不是试图将权重矩阵直接近似为低秩形式。

本文首先从理论上证明了梯度矩阵 G 在训练过程中会变成低秩,在理论的基础上,本文用 GaLore 来计算两个投影矩阵 田渊栋等人新作:突破内存瓶颈,让一块4090预训练7B大模型田渊栋等人新作:突破内存瓶颈,让一块4090预训练7B大模型将梯度矩阵 G 投影成低秩形式 P^⊤GQ。在这种情况下,依赖于组件梯度统计的 Optimizer States 的内存成本可以大大减少。如表 1 所示,GaLore 的内存效率比 LoRA 更高。实际上,与 LoRA 相比,在预训练期间,这可减少高达 30% 的内存。

田渊栋等人新作:突破内存瓶颈,让一块4090预训练7B大模型

本文证明了 GaLore 在预训练和微调方面表现良好。当在 C4 数据集上预训练 LLaMA 7B 时,8-bit GaLore 结合了 8-bit 优化器和逐层权重更新技术,实现了与全秩相当的性能,并且 optimizer state 的内存成本不到 10%。

值得注意的是,对于预训练,GaLore 在整个训练过程中保持低内存,而不需要像 ReLoRA 那样进行全秩训练。得益于 GaLore 的内存效率,这是首次可以在具有 24GB 内存的单个 GPU(例如,在 NVIDIA RTX 4090 上)上从头开始训练 LLaMA 7B,而无需任何昂贵的内存卸载技术(图 1)。

田渊栋等人新作:突破内存瓶颈,让一块4090预训练7B大模型

作为一种梯度投影方法,GaLore 与优化器的选择无关,只需两行代码即可轻松插入现有优化器,如算法 1 所示。

田渊栋等人新作:突破内存瓶颈,让一块4090预训练7B大模型

下图为将 GaLore 应用于 Adam 的算法:

田渊栋等人新作:突破内存瓶颈,让一块4090预训练7B大模型

实验及结果

研究者对 GaLore 的预训练和 LLM 的微调进行了评估。所有实验均在英伟达 A100 GPU 上进行。

为了评估其性能,研究者应用 GaLore 在 C4 数据集上训练基于 LLaMA 的大型语言模型。C4 数据集是 Common Crawl 网络抓取语料库的一个巨大的净化版本,主要用于预训练语言模型和单词表征。为了最好地模拟实际的预训练场景,研究者在不重复数据的情况下,对足够大的数据量进行训练,模型大小范围可达 70 亿个参数。

本文沿用了 Lialin 等人的实验设置,采用了基于 LLaMA3 的架构,带有 RMSNorm 和 SwiGLU 激活。对于每种模型大小,除了学习率之外,他们使用了相同的超参数集,并以 BF16 格式运行所有实验,以减少内存使用,同时在计算预算相同的情况下调整每种方法的学习率,并报告最佳性能。

此外,研究者使用 GLUE 任务作为 GaLore 与 LoRA 进行内存高效微调的基准。GLUE 是评估 NLP 模型在各种任务中性能的基准,包括情感分析、问题解答和文本关联。

本文首先使用 Adam 优化器将 GaLore 与现有的低秩方法进行了比较,结果如表 2 所示。

田渊栋等人新作:突破内存瓶颈,让一块4090预训练7B大模型

研究者证明,GaLore 可以应用于各种学习算法,尤其是内存高效的优化器,以进一步减少内存占用。研究者将 GaLore 应用于 AdamW、8 bit Adam 和 Adafactor 优化器。他们采用一阶统计的 Adafactor,以避免性能下降。

实验在具有 10K 训练步数的 LLaMA 1B 架构上对它们进行了评估,调整了每种设置的学习率,并报告了最佳性能。如图 3 所示,下图表明,GaLore 可适用于流行的优化器,例如 AdamW、8-bit Adam 和 Adafactor。此外,引入极少数超参数不会影响 GaLore 的性能。

田渊栋等人新作:突破内存瓶颈,让一块4090预训练7B大模型

如表 4 所示,在大多数任务中,GaLore 都能以更少的内存占用获得比 LoRA 更高的性能。这表明,GaLore 可以作为一种全栈内存高效训练策略,用于 LLM 预训练和微调。

田渊栋等人新作:突破内存瓶颈,让一块4090预训练7B大模型

如图 4 所示,与 BF16 基准和 8  bit Adam 相比,8 bit GaLore 所需的内存要少得多,在预训练 LLaMA 7B 时仅需 22.0G 内存,且每个 GPU 的 token 批量较小(最多 500 个 token)。

田渊栋等人新作:突破内存瓶颈,让一块4090预训练7B大模型

更多技术细节,请阅读论文原文。

以上就是田渊栋等人新作:突破内存瓶颈,让一块4090预训练7B大模型的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/425770.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
怎样查看360浏览器的缓存文件位置
上一篇 2025年11月7日 11:34:29
Spring Boot 查询 SQL 为空,为何 IDEA 返回空结果,Navicat 却能成功查询?
下一篇 2025年11月7日 11:34:33

相关推荐

  • VSCode如何安装和使用插件 VSCode插件管理的高效方法

    安装插件需通过vscode扩展视图搜索并点击安装,部分插件需重启或配置后生效;2. 使用插件时可通过命令面板、上下文菜单、状态栏或自动语言特性调用功能,并在设置中自定义行为;3. 高效管理应定期审视插件使用频率,禁用或卸载不常用者,关注性能影响,利用“开发者: 显示正在运行的扩展”识别资源占用高的插…

    2026年9月22日
    200
  • 如何在Krita导出AI生成的8K艺术图片?保存超高清图像方法

    答案是优先选择PNG格式导出8K AI艺术作品,确保画布为8K分辨率,嵌入sRGB色彩配置文件,并优化系统内存与硬盘性能以提升Krita处理效率。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 在Krita中导出AI生成的8K艺术图片,核心…

    2026年9月21日
    200
  • MySQL全文搜索引擎集成方案_提升文本数据搜索能力的实用指南

    MySQL全文搜索引擎集成方案_提升文本数据搜索能力的实用指南MySQL全文搜索引擎集成方案_提升文本数据搜索能力的实用指南MySQL全文搜索引擎集成方案_提升文本数据搜索能力的实用指南MySQL全文搜索引擎集成方案_提升文本数据搜索能力的实用指南

    mysql原生全文搜索功能存在明显局限,需结合外部搜索引擎才能满足复杂需求。1. mysql全文搜索适用于小数据量、简单查询场景,但分词能力弱,尤其对中文支持差,查询功能有限,无法实现模糊查询、纠错等高级功能,且性能随数据量增长显著下降。2. 外部搜索引擎如elasticsearch(es)和sph…

    2026年9月21日 用户投稿
    100
  • 如何在MindSpore中训练AI大模型?华为AI框架的训练教程

    如何在MindSpore中训练AI大模型?华为AI框架的训练教程如何在MindSpore中训练AI大模型?华为AI框架的训练教程如何在MindSpore中训练AI大模型?华为AI框架的训练教程如何在MindSpore中训练AI大模型?华为AI框架的训练教程

    答案:MindSpore通过自动并行、混合精度、优化器状态分片等技术,结合Profiler工具调试性能瓶颈,实现大模型高效分布式训练。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 在MindSpore中训练AI大模型,核心在于巧妙地利用其…

    2026年9月21日 用户投稿
    400
  • Java ConcurrentSkipListMap在并发场景下应用

    ConcurrentSkipListMap是基于跳跃表实现的线程安全有序映射,支持高并发读写与高效范围查询,适用于需排序的并发场景,如排行榜系统;相比ConcurrentHashMap,它提供有序性与导航操作,但插入查找为O(log n),内存开销较大,适合读多写少或需区间扫描的业务。 在高并发场景…

    2026年9月21日
    100
  • mac怎么查看具体的内存型号_mac内存型号查询方法

    首先通过“关于本机”查看内存容量与类型,再进入“系统报告”的内存页面获取各插槽的制造商、型号、部件编号和速度等详细信息,最后使用“活动监视器”分析内存使用情况以判断是否需要升级。 如果您想了解Mac设备中安装的内存具体型号和规格,但系统概览仅显示总容量,则需要通过特定工具深入查看硬件信息。以下是查询…

    2026年9月21日
    100
  • MySQL缓存机制对性能提升的作用_MySQL缓存配置及调优方案

    MySQL缓存机制对性能提升的作用_MySQL缓存配置及调优方案MySQL缓存机制对性能提升的作用_MySQL缓存配置及调优方案MySQL缓存机制对性能提升的作用_MySQL缓存配置及调优方案MySQL缓存机制对性能提升的作用_MySQL缓存配置及调优方案

    mysql的缓存机制主要包括innodb缓冲池、查询缓存和操作系统文件系统缓存等,其中innodb缓冲池是性能优化的核心。1. innodb缓冲池缓存表数据和索引页,减少磁盘i/o,提升读写效率;2. 查询缓存因失效频繁及锁竞争问题,在高并发场景下易成瓶颈,已在mysql 8.0中移除;3. 操作系…

    2026年9月21日 用户投稿
    200
  • Windows11内存占用率过高怎么解决_Windows11内存占用过高修复方法

    1、通过任务管理器结束高内存占用进程;2、禁用Superfetch(SysMain)服务以降低内存负担;3、优化启动项减少后台负载;4、升级物理内存条提升系统性能。 如果您发现Windows 11系统运行缓慢,并且任务管理器显示内存占用率持续处于高位,这可能是由于后台进程过多、系统服务占用资源或硬件…

    2026年9月21日
    100
  • JavaScript中的模块联邦如何实现微前端的代码共享?

    模块联邦通过运行时动态加载实现微前端代码共享,无需打包公共依赖。使用 ModuleFederationPlugin 配置 name、remotes、exposes 和 shared,使应用可暴露或引入远程模块,支持组件、工具函数及状态管理共享,提升复用性并减少冗余。 模块联邦通过在构建时让不同应用直…

    2026年9月21日
    200
  • Linux中如何查看进程状态_Linux进程状态查看的详细方法

    掌握Linux进程查看方法可高效管理程序,常用ps aux或ps -ef查看进程快照,top和htop实时监控,/proc/PID/目录下获取详细状态,pgrep和pidof快速定位PID。 在Linux系统中,查看进程状态是系统管理和故障排查中的基本操作。掌握多种方法可以更高效地监控和管理运行中的…

    2026年9月21日
    1300
  • Windows10无法启用或关闭Windows功能怎么办_Windows10Windows功能无法启用关闭修复方法

    首先启动Windows Modules Installer服务,然后通过注册表编辑器设置RegistrySizeLimit为FFFFFFFF以释放内存限制,接着使用SFC和DISM命令修复系统文件,最后运行系统自带的疑难解答工具并重启电脑,可解决Windows功能窗口加载缓慢或空白的问题。 如果您尝…

    2026年9月21日
    100
  • 大数据量下的批量导入/导出优化

    在大数据环境下优化批量导入/导出的方法包括:1. 使用批处理技术分批导入/导出数据,减少系统资源压力;2. 采用数据流技术如apache kafka进行实时处理,降低内存占用;3. 利用并行处理技术分配任务到多个处理器或节点,提高处理速度;4. 通过性能监控和调优识别并解决瓶颈点,以提升整体效率。 …

    2026年9月21日
    300
  • Linux怎么使用systemctl管理服务

    Linux怎么使用systemctl管理服务Linux怎么使用systemctl管理服务Linux怎么使用systemctl管理服务Linux怎么使用systemctl管理服务

    systemctl是Linux中管理systemd服务的核心工具,提供统一命令集来启动、停止、重启、查看服务状态及设置开机自启,支持并行启动、依赖管理与Cgroups资源控制,相比SysVinit更高效;通过创建/etc/systemd/system/下的.service文件可自定义服务,包含[Un…

    2026年9月21日 用户投稿
    200
  • 怎样通过禁用不需要的扩展来优化VSCode的内存占用?

    VSCode卡顿常因扩展过多,禁用非必要扩展可提升性能;2. 通过“Developer: Show Running Extensions”查看内存占用高的扩展,优先处理“Start-up”类型;3. 在扩展视图中禁用不常用的语言支持、主题等;4. 使用项目级.vscode/extensions.js…

    2026年9月21日
    300
  • Linux怎么监控特定进程的运行状态

    Linux怎么监控特定进程的运行状态Linux怎么监控特定进程的运行状态Linux怎么监控特定进程的运行状态Linux怎么监控特定进程的运行状态

    监控Linux进程需综合使用ps、top、htop、pgrep和systemctl等工具,结合资源占用、进程状态、日志输出和进程数量判断是否异常,并通过systemd的Restart机制或看门狗脚本实现自动重启,同时利用journalctl、sar、atop及Prometheus+Grafana等方…

    2026年9月21日 用户投稿
    100
  • Linux命令行如何查看登录用户

    Linux命令行如何查看登录用户Linux命令行如何查看登录用户Linux命令行如何查看登录用户Linux命令行如何查看登录用户

    答案是 who、w 和 users 命令用于查看Linux系统登录用户,其中 who 显示登录用户及终端信息,w 还显示用户正在执行的命令和系统负载,users 仅输出用户名列表。 在Linux命令行下,要查看当前系统上有哪些用户登录,最直接、最常用的命令包括 who 、 w 和 users 。它们…

    2026年9月21日 用户投稿
    200
  • 内存占用过高的优化方法

    优化内存占用的方法包括:1. 遵循基本内存管理原则,避免不必要的对象创建,使用合适的数据结构,及时释放资源;2. 优化数据结构,如从arraylist切换到hashmap;3. 检测并修复内存泄漏,通过定期清理不再需要的数据;4. 使用对象池减少对象的创建和销毁;5. 遵循性能优化与最佳实践,避免频…

    2026年9月20日
    000
  • Java中将包含嵌套列表的对象列表扁平化为单一元素列表的转换技巧

    本文探讨了在java中如何将一个包含嵌套列表的对象列表进行转换,使其生成一个新的列表,其中每个对象内部的嵌套列表只包含一个元素。文章详细介绍了三种实现方式:基于java 7及以前版本的传统循环方法、利用java 8至java 15的stream api结合`flatmap`操作,以及java 16及…

    2026年9月20日
    200
  • order by排序在mysql中如何实现

    ORDER BY用于对查询结果排序,支持ASC升序和DESC降序,位于SELECT语句末尾,可按单列或多列排序;MySQL优先利用索引有序性避免排序,若无合适索引则采用filesort在内存或磁盘排序;优化器选择单路或双路排序以提升效率;性能关键包括为排序字段建立索引、避免大结果集无索引排序、减少S…

    2026年9月20日
    000
  • Linux如何将进程放入后台运行

    将Linux进程放入后台运行主要有四种方法:使用&符号在启动时放入后台;通过Ctrl+Z暂停后用bg继续运行;结合nohup与&防止会话关闭导致终止;使用screen或tm…

    2026年9月20日
    000

发表回复

登录后才能评论
关注微信