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

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。

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SQL语句(DQL)

Data Query Language(数据查询语言),用来查询数据库中表的记录 DQL-基本查询 DQL-条件查询(WHERE) -- 查询姓名为2个字的员工信息 select * from emp where name like __;-- 查询身份证号最后一位是X的员工信息 selec…

uni-app打包小程序的一些趣事~

前言 Huilderx版本&#xff1a;4.15 uni-app Web端版本&#xff1a;3.4.21 问题1 Web端/APP端样式好好的&#xff0c;打包微信小程序就乱了咋整&#xff1f; 使用::v-deep/::deep/deep(){}都是没用滴~~ 原因&#xff1f; 解决&#xff1a; <script lang"ts"…

c语言回顾-数组(全网最详细,哈哈哈)

目录 前言&#xff0c;和小编一起感受数组的魅力&#xff01;&#xff01;&#xff01; 1.数组的概念 2.一维数组的创建和初始化 2.1数组创建 2.2数组的初始化 2.3数组的类型 3.一维数组的使用 3.1数组下标 3.2数组元素的输入输出 小结&#xff1a; 4.一维数组在内存…

Python中的__init__方法:为何它如此重要

目录 一、__init__方法的基本概念 1.1 定义与作用 1.2 调用时机 1.3 参数传递 二、__init__方法的工作原理 2.1 初始化属性 2.2 执行其他操作 2.3 继承与多态 三、__init__方法的使用技巧 3.1 参数传递与默认值 3.2 链式初始化 3.3 继承与超类初始化 3.4 初始化方…

常见锁策略之可重入锁VS不可重入锁

可重入锁VS不可重入锁 有一个线程,针对同一把锁,连续加锁两次,如果产生了死锁,那就是不可重入锁,如果没有产生死锁,那就是可重入锁. 死锁 我们之前引入多线程的时候不是讲了一个加数字的案例么,我们今天以它来举例 当我们这样写的时候会出现什么问题? 分析:第一个synchron…

Zookeeper:Zookeeper集群角色

文章目录 一、Leader选举二、Zookeeper集群角色 一、Leader选举 Serverid&#xff1a;服务器ID&#xff1b;比如有三台服务器&#xff0c;编号越大在选择算法中的权重越大。Zxid&#xff1a;数据ID&#xff1b;服务器中存放的最大数据ID&#xff0c;值越大说明数据越新&#x…

【创作纪念日】我的CSDN1024创作纪念

机缘 注册CSDN是很长时间了&#xff0c;但是上学时因为专业是电气工程&#xff0c;与编程打交道比较少&#xff0c;一直都是寻求帮助&#xff0c;而非内容输出。直到考研后专业改变&#xff0c;成为了主要跟软件编程、计算机知识相关的研究后&#xff0c;才逐步开启自己的CSDN…

模拟布局:为什么井、抽头和保护环至关重要

其中的关键示例是井、抽头和保护环。这些结构对于任何 MOSFET 电路的工作都至关重要。 这就是为什么了解衬底在 MOSFET 电路中的作用对于创建有效的模拟设计至关重要。要做到这一点&#xff0c;首先必须了解 MOSFET 晶体管的工作原理。 让我们来看看一种类型的 MOSFET&#x…

归并排序-MergeSort (C语言详解)

目录 前言归并排序的思想归并排序的递归法归并排序的非递归法归并排序的时间复杂度与适用场景总结 前言 好久不见, 前面我们了解到了快速排序, 那么本篇旨在介绍另外一种排序, 它和快速排序的思想雷同, 但又有区别, 这就是归并排序, 如下图, 我们对比快速排序与归并排序. 本…

编译器的控制流图分析

1&#xff0c;建立感性认识 1.1 源码 hello.c int x 10; int y 11; int main(){int z 12;for (int i 0;i < 10;i){z * x * y;}if(z>7.0)z1.0f;elsez 2.0f;return 0; }1.2 编译 2005 sudo apt-get install -y graphviz-doc libgraphviz-dev graphviz2034 ../ex_…

Java学习高级一

修饰符 static 类变量的应用场景 成员方法的分类 成员变量的执行原理 成员方法的执行原理 Java之 main 方法 类方法的常见应用场景 代码块 设计模式 单例设计模式 饿汉式单例设计模式 懒汉式单例设计模式 继承 权限修饰符

LeetCode题练习与总结:二叉树的后序遍历--145

一、题目描述 给你一棵二叉树的根节点 root &#xff0c;返回其节点值的 后序遍历 。 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[3,2,1]示例 2&#xff1a; 输入&#xff1a;root [] 输出&#xff1a;[]示例 3&#xff1a; 输入&#xff1a…

以太坊DApp交易量激增83%的背后原因解析

引言 最近&#xff0c;以太坊网络上的去中心化应用程序&#xff08;DApp&#xff09;交易量激增83%&#xff0c;引发了广泛关注和讨论。尽管交易费用高达2.4美元&#xff0c;但以太坊仍在DApp交易量方面遥遥领先于其他区块链网络。本文将深入探讨导致这一现象的主要原因&#…

颅内感染性疾病患者就诊指南

颅内感染性疾病&#xff0c;即病原体侵入中枢神经系统&#xff0c;导致脑部或脑膜发生炎症的疾病。这些病原体可能是细菌、病毒、真菌或寄生虫等。颅内感染不仅会对脑组织造成损害&#xff0c;还可能引发一系列严重的并发症&#xff0c;如癫痫发作、意识障碍等 颅内感染性疾病的…

国产软件号称Windows系统的天花板,却被误认为是外国佬研发

说起国产软件&#xff0c;大家总是容易给它们贴上“流氓、捆绑、满满的都是套路”这样的标签。 其实挺冤枉的&#xff0c;有些软件真的挺好用&#xff0c;也挺良心的&#xff0c;但就是因为这些刻板印象&#xff0c;老是被误以为是外国工程师搞出来的。 VeryCapture 之前小编…

JavaScript之深入对象,详细讲讲构造函数与常见内置构造函数

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;我是前端菜鸟的自我修养&#xff01;今天给大家详细讲讲构造函数与常见内置构造函数&#xff0c;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;原创不易&#xff0c;如果能帮助到带大家&#xff0c;欢迎…

达梦数据库的系统视图v$deadlock_history

达梦数据库的系统视图v$deadlock_history 在达梦数据库&#xff08;DM Database&#xff09;中&#xff0c;V$DEADLOCK_HISTORY 视图记录了数据库中发生的死锁信息。通过查询这个视图&#xff0c;数据库管理员可以监控和诊断数据库中的死锁问题&#xff0c;从而采取相应的措施…

鸿蒙认证值得考吗?

鸿蒙认证值得考吗&#xff1f; 鸿蒙认证&#xff08;HarmonyOS Certification&#xff09;是华为为了培养和认证开发者在鸿蒙操作系统&#xff08;HarmonyOS&#xff09;领域的专业技能而设立的一系列认证项目。这些认证旨在帮助开发者和企业工程师提升在鸿蒙生态中的专业技能…

小故事——半个世纪的爱情

半个世纪的爱情 故事的开端永远是在那个情窦初开的年纪&#xff0c;那富有蓬勃朝气的少年时代&#xff0c;眼神中青涩未尽&#xff0c;正是这个时间&#xff0c;才真正的让人难以忘怀。她不过是那班级里面普普通通的小孩&#xff0c;故事的男主角同样也是简简单单的存在&#…

激光SLAM如何动态管理关键帧和地图

Tip: 如果你在进行深度学习、自动驾驶、模型推理、微调或AI绘画出图等任务&#xff0c;并且需要GPU资源&#xff0c;可以考虑使用UCloud云计算旗下的Compshare的GPU算力云平台。他们提供高性价比的4090 GPU&#xff0c;按时收费每卡2.6元&#xff0c;月卡只需要1.7元每小时&…