大模型笔记【2】 LLM in Flash

news2024/11/26 14:36:11

Apple最近发表了一篇文章,可以在iphone, MAC 上运行大模型:【LLM in a flash: Efficient Large Language Model Inference with Limited Memory】。

图片

主要解决的问题是在DRAM中无法存放完整的模型和计算,但是Flash Memory可以存放完整的模型。但是Flash带宽较低,LLM in Flash通过尽量减少从Flash中加载参数的数量,优化在DRAM中的内存管理,实现在Flash带宽有限的条件下提高计算速度的目的。


这篇文章很多都是工程上的细节,很少理论。下面是这篇论文的总结,如有不对的地方,欢迎私信。

  • 利用FeedForward 层的稀疏度,只加载FeedForward层输入非0和预测输出非0的参数

  • 通过Window Sliding 只加载增量的参数,复用之前的计算,减少需要加载的参数。

  • 将up-projection的row和down-projection的column放在一起存放,这样在flash中可以一次读取比较大的chunk,提高flash的带宽利用效率。

    如下图所示,chunk越大,带宽也就越大,初始加载chunk的latency可以被平摊。

    图片


1. 大模型在FeedForward layer有超过90%的稀疏度。将embedding和attention 矩阵一直保存在DRAM中。Attention 的权重占据了model总量的1/3。对于FeedForward Layer,只有非稀疏的部分被动态的加载进去DRAM。

2. 预测Relu层的稀疏性。在attention层的输出后面增加low-rank predictor,预测在relu层之后可能是0的元素。

经过优化后,最终只需要加载2%的FeedForward层的参数到DRAM中。

图片

3. Sliding Window

每次滑动窗口,在生成新的token后,删掉不在window内的neuron,增加新的neuron。

图片

上图右侧为一个window size为5的示意图,粉色的是要删除的元素,蓝色的是新加入的元素。

上图左侧是如何在aggregated usage和incremental transfer中保持平衡,window设置的越大,每次新需要加载neruon也就越少,但是需要在memory中累计保存的空间占用的也就越大。

上图左侧的目标就是如何让aggregated usage和incremental transfer都比较小。

译者疑问:这个window就是Longformer: The Long-Document Transformer 中的sliding window吗?欢迎私信。

4. 内存管理

内存管理也是因为sliding window引入的。

译者注:

就像c++中vector的维护一样,如果每次删除vector中间的一个元素,都需要导致该元素后面所有元素的移动。

下图描述的就是删除和加入新neuron的内容。

图片

最后文章还提出了比较有意思的一点,他们主要进行了稀疏化的优化,在计算和加载参数方面。他们也尝试了通过和当前neuron关系紧密的 “closest friend”绑定,每次加载neuron时,也都加载他的closest friend。

作者说但是这样带来了负面作用,因为存在一些closest friend是很多neuron的closest friend (译者注:类似于大众之友),这些neuron被频繁的加载到DRAM中,反而降低了性能。

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

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

相关文章

DRF-源码解析-1.2-CBV流程(视图函数执行流程)

在DRF中,所有drf的操作都是在路由匹配完成后,即视图函数执行前和执行后做文章的。 一、代码准备 演示的视图: class TestAPIView(APIView):def get(self,request)return Respponse({code:200,msg:测试通过}) 演示的路由: path…

Samtec卓越应用 | SEARAY:最大限度提高设计灵活性和密度

【摘要/前言】 SEARAY™是Samtec 的高速、高密度栅格阵列连接器系列。SEARAY™为设计人员提供了大量的设计灵活性,远远超过业内任何其他阵列产品。 【灵活性】 SEARAY™ 是一种 1.27 毫米 X 1.27 毫米的栅格。它是一种开放式引脚字段栅格阵列,即引脚不…

Jmeter扩展函数?年薪50W+的测试大佬教你怎么玩

很多同学,都问我:“老师,我的 jmeter 里面,怎么没有 MD5 函数,base64 函数也没有,我是不是用了假的 jmeter?” 哈哈哈,不是的。jmeter 的函数,有自带函数和扩展函数两大…

Apollo 9.0搭建问题记录

虚拟机安装 可以看这个:https://blog.csdn.net/qq_45138078/article/details/129815408 写的很详细 内存 为了学习 Apollo ,所以只是使用了虚拟机,内存得大一点(128G),第一次,就是因为分配内…

Python办公自动化 – 对数据进行正则表达式匹配

Python办公自动化 – 对数据进行正则表达式匹配 以下是往期的文章目录,需要可以查看哦。 Python办公自动化 – Excel和Word的操作运用 Python办公自动化 – Python发送电子邮件和Outlook的集成 Python办公自动化 – 对PDF文档和PPT文档的处理 Python办公自动化 – …

2023年度总结:技术沉淀、持续学习

2023年度总结:技术沉淀、持续学习 一、引言 今年是我毕业的第二个年头,也是完整的一年,到了做年终总结的时候了 这一年谈了女朋友,学习了不少技术,是充实且美好的一年! 首先先看年初定的小目标&#xf…

安达发|基于APS排程系统的PDM功能

APS系统(Advanced Planning and Scheduling,先进计划与排程)是一种基于APS系统(Advanced Planning and Scheduling,先进计划与排程)是一种基于供应链管理和生产管理的综合性软件系统。它通过整合企业内外部…

C# Winform 在低DPI创建窗体后,在高DPI运行时,窗体会自动拉伸,导致窗体显示不全

C# Winform 在低DPI创建窗体后,在高DPI运行时,窗体会自动拉伸,导致窗体显示不全, 比如在分辨率为100% 的电脑创建C#项目,当运动到分辨率为125%的电脑运行时,后者运行的窗体会自动拉伸,窗体显示…

C++ OpenGL 3D Game Tutorial 2: Making OpenGL 3D Engine学习笔记

视频地址https://www.youtube.com/watch?vPH5kH8h82L8&listPLv8DnRaQOs5-MR-zbP1QUdq5FL0FWqVzg&index3 一、main类 接上一篇内容&#xff0c;main.cpp的内容增加了一些代码&#xff0c;显得严谨一些&#xff1a; #include<OGL3D/Game/OGame.h> #include<i…

5分钟使用Hologres实时湖仓加速分析挑战赛来袭

活动简介 5分钟快速使用Hologres实时湖仓能力&#xff0c;加速分析数据湖OSS上Hudi、Delta、Paimon、ORC等格式数据&#xff0c;赢取精美礼品 活动入口&#xff1a;Hologres实时湖仓分析挑战赛-阿里云开发者社区 或点击文末【阅读全文】参与挑战 活动时间 2024年1月4日-202…

第7章-第4节-Java中的Set集合和自然排序compareble

1、HashSet&#xff1a; 1&#xff09;、 Set集合的特点 元素存储可以有序&#xff0c;可以无序&#xff08;要看选择的具体子类 HashSet 无序 LinkedHashSet&#xff08;有序&#xff09;,TreeSet&#xff08;排序&#xff09;&#xff09; 没有索引&#xff0c;不能通过索引…

109.第一个qt项目

今天正式开始qt的学习。在安装完qt开发环境之后&#xff0c;下面我们来使用QtCreator创建项目。 1.创建项目 创建基于窗口的qt应用程序。选择编译套件, 编译套件用于项目文件的编译, 如果安装了多个编译套件, 在这里选择其中一个就可以了。选择版本控制工具。 2.项目文件&…

狂拿offer,这12道性能测试面试题你会多少?不要再被挖坑了

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、性能测试包含了…

使用Scrapy框架和代理IP进行大规模数据爬取

目录 一、前言 二、Scrapy框架简介 三、代理IP介绍 四、使用Scrapy框架进行数据爬取 1. 创建Scrapy项目 2. 创建爬虫 3. 编写爬虫代码 4. 运行爬虫 五、使用代理IP进行数据爬取 1. 安装依赖库 2. 配置代理IP和User-Agent 3. 修改爬虫代码 4. 运行爬虫 六、总结 一…

Verilog学习记录

目录 一、Verilog简介 &#xff08;一&#xff09;Verilog 的主要特性 &#xff08;二&#xff09;Verilog的主要应用 &#xff08;三&#xff09;Verilog设计方法 二、Verilog基础语法 &#xff08;一&#xff09;标识符和关键字 &#xff08;二&#xff09;Verilog数据…

多模态推荐系统综述:一、特征交互 Bridge

一、特征交互 挑战1.如何融合不同语义空间中的模态特征并获得每种模态的偏好。GNN注意力 挑战2.如何在数据稀疏的情况下获得推荐模型的全面表示。对比学习解缠学习 挑战3. 如何优化轻量级推荐模型和参数化模态编码器。 1. Bridge 侧重于考虑多模态信息来捕获用户和项目之间的…

Camtasia2024中文绿色版本下载安装详细步骤教程

Camtasia2024是一款功能强大的屏幕录制和视频编辑软件。它可以帮助用户轻松地记录电脑屏幕上的任何操作&#xff0c;并可以将录制的视频进行编辑和制作成高质量的视频教程、演示文稿、培训课程等。 Camtasia具有直观的界面和易于使用的工具&#xff0c;包括添加文本、音频、动…

深度学习|4.7 参数和超参数

4.7 参数和超参数 超参数是指需要用户提前设置好的参数&#xff0c;这些超参数最终会影响到参数的数值&#xff08;相当于参数是动态调整得到的&#xff09; 学习率的选取 最优学习率应该能使得代价函数趋于一个较低的常数。

【金猿CIO展】是石科技CIO侯建业:算力产业赋能,促进数字经济建设

‍ 侯建业 本文由是石科技CIO侯建业撰写并投递参与“数据猿年度金猿策划活动——2023大数据产业年度优秀CIO榜单及奖项”评选。 大数据产业创新服务媒体 ——聚焦数据 改变商业 是石科技&#xff08;江苏&#xff09;有限公司成立于2021年&#xff0c;由国家超级计算无锡中心与…

信息系统安全——基于 KALI 和 Metasploit 的渗透测试

实验 2 基于 KALI 和 Metasploit 的渗透测试 2.1 实验名称 《基于 KALI 和 Metasploit 的渗透测试》 2.2 实验目的 1 、熟悉渗透测试方法 2 、熟悉渗透测试工具 Kali 及 Metasploit 的使用 2.3 实验步骤及内容 1 、安装 Kali 系统 2 、选择 Kali 中 1-2 种攻击工具&#xff0c…