LLM端侧部署系列 | 手机上运行47B大模型?上交推理框架PowerInfer-2助力AI手机端侧部署

news2025/1/11 20:56:06

0. 引言

黄梅时节家家雨,青草池塘处处蛙。

有约不来过夜半,闲敲棋子落灯花。

当下,在移动设备上部署大型模型的趋势是愈演愈烈。Google推出了AI Core,使得Gemini Nano可以在智能手机上部署。此外,近期传闻苹果在iOS 18中整合了一个3B模型。端侧大模型的江湖,再次风起云涌。各种智能手机制造商也在探索在移动设备上部署大模型以增强数据隐私。然而,目前能在移动设备上运行的模型相对较小,且占用大量内存,这严重限制了大模型在端侧的应用场景。

1. 简介

近日,上海交大为大模型能够在智能手机上部署提出PowerInfer-2,该框架是专为智能手机设计且高度优化的推理框架。目前PowerInfer-2支持的最大模型是Mixtral 47B MoE模型,在inference的时候每秒可生成11.68个token,这比其他最先进的框架快22倍。即使是使用7B模型,PowerInfer-2只需将50%的FFN权重放置在手机上,在7B这个模型参数上,仍然是目前最快的推理框架!

视频号:AI科技爱科学

视频中的速度并不是PowerInfer-2的最快速度,因为渲染等过程会引入额外开销。

2. PowerInfer-2特点

PowerInfer-2具有以下特性:

  • 异构计算:将粗粒度的矩阵计算分解为细粒度的"神经元族群"(neuron clusters),然后根据不同硬件组件的特性动态调整这些簇群的大小。

  • I/O-计算流水线:设计神经元缓存(Neuron caching)和细粒度的神经元族群级流水线技术以最大化神经元加载和计算之间的重叠。

更多技术细节可以参阅 PowerInfer-2论文:https://arxiv.org/abs/2406.06282。后续也会补充说明更加详细的技术细节,感兴趣的小伙伴敬请留意。

3. 评估

PowerInfer-2的一个显著优势是极度降低内存使用量。为了证明PowerInfer-2的有效性,实验过程对TurboSparse-Mixtral模型施加了各种内存约束,并比较了PowerInfer-2、LLM Flash和llama.cpp的解码速度。结果清楚地显示,PowerInfer-2显著性地、碾压性地优于其他框架。

PowerInfer-2的另一个优势是推理速度的提高。无论是在full in-memory 场景还是offloading场景中,PowerInfer-2都明显优于其他框架,尤其是在智能手机上。对于7B LLM,PowerInfer-2可以节省近40%的内存使用量,并实现比llama.cpp和MLC-LLM更快推理速度。

对于TurboSparse-Mistral-7B模型,设置不同的offloading,分别对比PowerInfer-2、llama.cpp和MLC-LLM的解码速度。"50% offloading"表示将FFN块的50%模型权重卸载到闪存存储器。"No offload"表示所有模型参数都驻留在内存中。红色的⨉标签表示由于不支持权重卸载而导致的执行失败。

4. 模型

PowerInfer-2是一个专为智能手机如何高速推理大型语言模型(LLM)而设计的框架,特别适用于模型大小超过设备内存容量的场景。PowerInfer-2的关键思路是通过将传统的矩阵计算分解为细粒度的神经元集群计算,利用智能手机中的异构计算、内存和I/O资源。具体而言,PowerInfer-2具备多态神经元引擎,能够根据LLM推理的不同阶段自适应采用不同的计算策略。此外,它引入了分段神经元缓存(neuron caching) 和细粒度神经元集群级流水线(fine-grained neuron-cluster-level pipelining) 技术,有效地减少I/O操作引起的开销。从PowerInfer-2的实测结果表明,它能够支持多种LLM模型在两款智能手机(OnePlus 12和Ace 2)上运行, 并在速度上比最先进的框架快29.2倍。值得注意的是,PowerInfer-2是第一个能够在智能手机上以每秒11.68个token的生成速度为TurboSparse-Mixtral-47B模型提供服务的系统。对于完全适应内存的模型,PowerInfer-2在保持与llama.cpp和MLC-LLM相当的推理速度的同时,内存使用量减少了约40%。

PowerInfer推出了两个新模型:TurboSparse-Mistral-7B和TurboSparse-Mixtral-47B。这些模型是Mistral和Mixtral的稀疏版本,不仅提高了模型性能,还具有更高的可预测稀疏性。值得注意的是,这2个模型的训练仅用150亿个token,成本不到10万美元。模型发布在https://huggingface.co/PowerInfer。更多技术细节请参阅TurboSparse论文:https://arxiv.org/abs/2406.05955。

论文细节,留待后文补充,敬请期待。

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

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

相关文章

常用组件详解(二):torchsummary

文章目录 一、基本使用二、常见指标2.1Input size2.2Forward/backward pass size 一、基本使用 torchsummary库是一个好用的模型可视化工具,用于帮助开发者把握每个网络层级的细节,包括其中的连接和维度。使用方法: from torchsummary impor…

2、音频编码格式--AAC

1、AAC:AAC是一种音频编码格式,由于其可以任意帧解码的优点,常用于直播中。 AAC的封装格式:ADTS、ADIF。那为什么需要对AAC进行封装呢?这是由于音频流在传输的过程中,是以一个一个数据包进行发送的&#xf…

密码学及其应用 —— 非对称加密/公匙密码技术

1 RSA加密算法 RSA加密算法是一种基于公钥密码学的加密技术,由罗纳德里维斯特(Ron Rivest)、阿迪萨莫尔(Adi Shamir)和伦纳德阿德曼(Leonard Adleman)在1977年共同发明。RSA算法是第一个既能用于…

树莓派开发之文件传输

文章目录 一、简介使用U盘传输文件使用SD卡传输文件使用Xftp 7传输文件 二、 总结 一、简介 在树莓派开发中经常会用到文件传输,下面介绍几种树莓派文件传输的几种方法。 使用U盘传输文件 (1)复制所需传输文件到U盘 (2&#…

双指针-旋转链表

目录 一、问题描述 二、解题思路 三、代码实现 四、刷题链接 一、问题描述 二、解题思路 1.先确定链表长度为len 2.注意当K>len时,如果每个节点都往右移动len个位置,等价于不移动,所以需要求KK%len。 3.所有元素右移K个位置&#xf…

Golang-channel理解

channel golang-channel语雀笔记整理 channelgolang channel的设计动机?chanel的数据结构/设计思考 golang channel的设计动机? channel是一种不同协程之间实现异步通信的数据结构。golang中有一种很经典的说法是要基于通信实现共享内存,而不…

多表执行嵌套查询,减少笛卡尔积,防止内存溢出

问题:当涉及四个表的查询时,会产生大量的笛卡尔积导致内存溢出。 解决办法 :可以使用嵌套查询将多表的联合查询拆分为单个表的查询,使用resultmap中的association(适合一对一) 或 collection(一…

docker -run hello-world超时

主要原因就是尝试拉取库的时候没有从阿里云镜像里拉&#xff0c;所以设置一下就好了 这里使用的是ubuntu系统&#xff08;命令行下逐行敲就行了&#xff09; sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-EOF {"registry-mirrors": [&quo…

51个图表,完美展示数据分布关系!

本节介绍seaborn展示数据分布关系的图表&#xff08;Distribution plots&#xff09;的实现&#xff0c;该类图表用于展示数据集的分布规律&#xff0c;帮助快速获取数据多方面信息&#xff0c;例如&#xff0c;观测值的范围、中心趋势、是否存在某个方向上严重偏斜、是否存在双…

每日一题(6.22-6.28)

(&#xff61;&#xff65;∀&#xff65;)&#xff89;&#xff9e;嗨&#xff0c;中途考电路分析去了&#xff0c;空了几天的题没有练&#xff0c;为什么三相电路他都没讲过的都要考啊&#xff1f;我服了&#xff0c;什么在Y型三相电路&#xff0c;线电压和相电压的比值都考&…

Hadoop3:Yarn容量调度器配置多队列案例

一、情景描述 需求1&#xff1a; default队列占总内存的40%&#xff0c;最大资源容量占总资源60%&#xff0c;hive队列占总内存的60%&#xff0c;最大资源容量占总资源80%。 二、多队列优点 &#xff08;1&#xff09;因为担心员工不小心&#xff0c;写递归死循环代码&#…

扛鼎中国AI搜索,天工凭什么?

人类的创作不会没有瓶颈&#xff0c;但AI的热度可不会消停。 大模型之战依旧精彩&#xff0c;OpenAI选择在Google前一天举行发布会&#xff0c;两家AI企业之间的拉扯赚足了热度。 反观国内&#xff0c;百模大战激发了大家对于科技变革的热切期盼&#xff0c;而如今行业已逐渐…

20240628每日前端---------解决vue项目滥用watch

主题 滥用watch。 名字解释 watch 例子 先看一个代码例子&#xff1a; <template>{{ dataList }} </template><script setup lang"ts"> import { ref, watch } from "vue";const dataList ref([]); const props defineProps([&q…

MySQL高级-SQL优化-insert优化-批量插入-手动提交事务-主键顺序插入

文章目录 1、批量插入1.1、大批量插入数据1.2、启动Linux中的mysql服务1.3、客户端连接到mysql数据库&#xff0c;加上参数 --local-infile1.4、查询当前会话中 local_infile 系统变量的值。1.5、开启从本地文件加载数据到服务器的功能1.6、创建表 tb_user 结构1.7、上传文件到…

笔记本电脑安装CentOS

正文共&#xff1a;1234 字 24 图&#xff0c;预估阅读时间&#xff1a;2 分钟 前面我们对VPP进行了多次介绍&#xff08;羡慕&#xff01;大佬的VPP能达到180G性能&#xff0c;而我的却只有13.5G&#xff09;&#xff0c;可以发现他的很多优点&#xff0c;但是我们也可以发现它…

从源码分析Springboot自动配置原理

一、什么是Springboot的自动配置 Spring Boot自动配置&#xff08;Auto-configuration&#xff09;是Spring Boot框架的核心特性之一&#xff0c;它使得开发者可以更容易地创建基于Spring的应用程序&#xff0c;而无需进行大量的手动配置。自动配置基于开发者添加的jar依赖项来…

Nuxt3 的生命周期和钩子函数(六)

title: Nuxt3 的生命周期和钩子函数&#xff08;六&#xff09; date: 2024/6/30 updated: 2024/6/30 author: cmdragon excerpt: 摘要&#xff1a;本文深入解析了Nuxt3框架中的多个核心生命周期钩子和组件注册功能&#xff0c;包括imports:sources、imports:extend、import…

【Qt】之【Bug】大量出现“未定义的标识符”问题

背景 构建时出现大量错误 原因 中文注释问题 解决 方法1. 报错代码附近的中文注释全部删掉。。。 方法2. 报错的文件添加 // Chinese word comment solution #pragma execution_character_set("utf-8")

2024年【安全生产监管人员】考试资料及安全生产监管人员考试总结

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 安全生产监管人员考试资料是安全生产模拟考试一点通生成的&#xff0c;安全生产监管人员证模拟考试题库是根据安全生产监管人员最新版教材汇编出安全生产监管人员仿真模拟考试。2024年【安全生产监管人员】考试资料及…

算法力扣刷题 二十六【459.重复的子字符串】

前言 字符串篇&#xff0c;继续。 记录 二十六【459.重复的子字符串】 一、题目阅读 给定一个非空的字符串 s &#xff0c;检查是否可以通过由它的一个子串重复多次构成。 示例 1: 输入: s "abab" 输出: true 解释: 可由子串 "ab" 重复两次构成。示例…