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

server/2024/10/20 3:47:39/

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这个模型参数上,仍然是目前最快的推理框架!

更多大模型相关,如模型解读、模型微调、模型部署、推理加速等,可以留意本微信公众号《小窗幽记机器学习》

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.ppmy.cn/server/128597.html

相关文章

C++并发编程实战—单例模式与线程池实现

线程池 C线程池是一种用于管理和复用线程的机制,它可以提高程序的性能和效率,特别是在处理大量并发任务时。以下是C线程池的具体细节: 一、定义与功能 定义:线程池是一种设计模式,它预先创建并维护一定数量的线程&a…

教程:在Linux上启动、运行、杀掉和管理项目程序

笔记 1. 启动并运行一个项目程序 假设你的项目程序是一个可执行文件 my_project,位于 /data 目录下。 cd /data ./my_project 2. 杀掉一个正在运行的项目程序 首先,找到程序的进程ID (PID)。 ps aux | grep my_project 找到对应的PID,然后…

用HTML5+CSS+JavaScript庆祝国庆

用HTML5CSSJavaScript庆祝国庆 中华人民共和国的国庆日是每年的10月1日。 1949年10月1日,中华人民共和国中央人民政府成立,在首都北京天安门广场举行了开国大典,中央人民政府主席毛泽东庄严宣告中华人民共和国成立,并亲手升起了…

十大时间序列预测模型

目录 1. 自回归模型 原理 核心公式 推导过程: 完整案例 2. 移动平均模型 原理 核心公式 推导过程: 完整案例 3. 自回归移动平均模型 原理 核心公式 推导过程: 完整案例 4. 自回归积分移动平均模型 原理 核心公式 推导过程 完整案例 5. 季节性自回归积分…

Koa学习

Koa 安装与配置 1. 初始化项目 在终端中执行以下命令: # 创建项目文件夹 mkdir koa cd koa# 初始化并安装依赖 npm init -y npm install koa npm install nodemon --save-dev2. 修改 package.json 在 package.json 文件中进行如下修改: {"type…

STL的位图:bitset

引言 在C标准模板库(STL)中,bitset是一种用于表示固定大小序列的位集合的容器。每个位(bit)可以被独立地设置或清除,即它可以单独地表示0或1。bitset在处理二进制数据时非常有用,尤其是在需要节…

Docker 实践与应用举例

一、容器化Web应用: 创建一个Docker容器来运行一个简单的Web应用,例如一个基于Node.js的Express应用。首先,编写Dockerfile来定义容器的构建过程,然后使用Docker命令来构建和运行容器。 使用Docker Compose来定义和管理多个容器组…

使用Three.js库创建的简单WebGL应用程序,主要用于展示具有不同透明度和缩放比例的圆环列

上述HTML文档是一个使用Three.js库创建的简单WebGL应用程序&#xff0c;主要用于展示具有不同透明度和缩放比例的圆环列。以下是代码的详细解释&#xff1a; HTML结构: 文档类型声明为HTML5。<html>标签设置了语言属性为英语&#xff08;lang"en"&#xff09;…