PowerInfer-2:第一个智能手机上高速推理大型语言模型

     大型语言模型(LLMs)以其卓越的理解和生成类人文本的能力,从根本上增强了我们的日常生活,并改变了我们的工作环境。当今最先进的LLMs,如GPT4和Claude-3,托管在数据中心,配备了最先进的GPU(例如,NVIDIA H100)。这些GPU提供了广泛的高带宽内存,并提供了达到数千万亿次的计算能力。同时,出现了一个趋势,即将LLMs部署在无处不在的智能手机上,将它们转变为智能个人助理。这种转变旨在充分利用丰富的个人数据,同时通过避免将私有数据传输到云服务来维护隐私。

     然而,尽管智能手机广泛使用,它们在满足LLM推断的复杂需求方面存在困难,因为它们的处理能力和内存大小受到限制。为了解决这些问题,研究人员探索了两种有希望的方法,用于在资源受限的条件下提供LLM推断。鉴于智能手机的有限内存容量,一种策略是部署缩减版的LLMs。例如,Google的Gemini Nano 3.25B,使用不到2GB的内存,通过减少智能能力以适应内存限制,代表了一种折中。这是由于更大的模型具有增强的智能,这种现象被称为“规模定律”。或者,一些技术旨在降低LLM权重在推断期间的计算和存储需求。PowerInfer通过将热激活神经元分配给GPU,冷神经元分配给CPU,在个人计算机(PC)上实现了11倍的推断速度提升。另一种方法,LLM in a Flash,通过使用基于闪存的NVMe存储来存储大型模型权重,来缓解内存限制。然而,这些解决方案在智能手机上失败了,因为智能手机具有较弱的、异构的硬件和存储设备,带宽较低,并且由于单个命令队列而不支持并发访问。这使得I/O活动成为移动设备上LLM推断的常见瓶颈。

     PowerInfer-2,这是第一个在智能手机上执行LLM高速推断的框架,可以容纳高达470亿参数的模型,这些模型超出了设备的内存容量。PowerInfer-2是PowerInfer项目的后续工作,专门为智能手机设计。

1 背景

1.1 LLM 推理过程与关键指标

大语言模型(LLM)的推理过程主要分为两个阶段:

  • 预填充阶段 : 处理用户输入的所有 token,生成第一个 token。
  • 解码阶段 (Decoding): 逐个生成后续 token,直到输出序列完整或遇到结束 token (EOS)。

这两个阶段具有不同的计算模式:

  • 预填充阶段: 处理所有 token,计算量较大。
  • 解码阶段: 每次迭代只处理一个 token,计算量相对较小,但具有显著的稀疏性。

为了优化性能,LLM 推理系统需要针对这两个阶段分别设计计算策略。

1.2 可预测的稀疏激活

     主流 LLM,如 GPT-4 和 Llama-2,通常采用解码器-only 的 Transformer 架构,其中 Feed-Forward Network (FFN) 块占据了大部分权重。FFN 块中的激活函数(如 ReLU)会导致大量的稀疏激活,即大部分神经元处于非激活状态。

    幸运的是,FFN 块中神经元的激活情况可以在计算之前进行预测。例如,PowerInfer 和 DejaVu 等框架使用小型 MLP 网络来预测 FFN 块中神经元的动态激活情况。通过这些预测器,可以显著减少 FFN 中的神经元计算数量,从而加速推理过程。

1.3 智能手机存储分析

智能手机通常缺乏足够的 DRAM 内存来存储整个 LLM,因此部分模型权重需要存储在外部存储设备中,例如 Snapdragon 8gen3 中的 UFS 4.0。

为了设计高效的 LLM 推理系统,需要考虑智能手机存储介质的性能特征,包括:

  • 读取吞吐量与块大小: 读取带宽随着读取块大小的增加而增加。
  • 随机读取与数据范围: 随机读取的性能受随机读取范围的影响,范围越小,带宽越高。
  • 读取吞吐量与 CPU 核心: CPU 核心的频率越高,读取带宽越高。
  • 读取吞吐量与核心数量: 与 NVMe 不同,UFS 存储只有一个命令队列,不支持并发访问,因此使用多个核心进行随机读取并不会提高 I/O 带宽。

2 PowerInfer-2

PowerInfer-2 是一个专为智能手机设计的高性能 LLM 推理框架,旨在解决智能手机计算能力有限和内存容量不足的挑战。它通过将传统的矩阵计算分解为细粒度的神经元集群计算,并利用智能手机中异构的计算、内存和 I/O 资源,实现了低延迟和高效率的 LLM 推理。

官网:https://powerinfer.ai/v2/

2.1 设计目标

  • 低推断延迟:最小化预填充阶段(TTFT)和解码阶段(TBT)的推断延迟。
  • 低内存占用:在推断期间减少内存使用,使得即使模型大小超过设备的内存限制,也能实现低延迟的LLM推断。
  • 灵活性:确保设计能够无缝适应具有不同计算、内存和存储容量的智能手机。

2.2 核心概念

PowerInfer-2 引入了一个多态神经元引擎,该引擎动态地将神经元组合成神经元簇,利用LLM推断阶段和异构XPU的不同计算特性。

  • 神经元簇的大小由计算单元的计算能力决定。
  • 通过这种抽象,PowerInfer-2能够充分利用不同计算能力的XPUs。

2.3 架构

PowerInfer-2的架构分为在线推理和离线规划两部分,协同工作以实现高效的推理。

2.3.1 在线推理

PowerInfer-2 的在线推理流程包括以下四个协同组件:

  • 多态神经元引擎: 根据推理阶段和硬件特性,动态地将神经元组合成神经元集群,并选择合适的计算单元进行计算。
  • 内存神经元缓存: 存储频繁访问的神经元权重,以减少 I/O 操作的开销。
  • 灵活的神经元加载: 根据模型的量化方法和 UFS I/O 特性,采用不同的加载策略,例如随机读取和顺序读取,以优化 I/O 读取吞吐量。
  • 神经元集群级流水线: 将神经元集群的计算和 I/O 操作重叠执行,以最小化 I/O 等待时间。

2.3.2 离线规划

PowerInfer-2 的离线规划流程负责生成执行计划,指导在线推理过程。执行计划包括以下配置信息:

  • 计算配置: 确定 CPU 和 NPU 在不同阶段或层的使用比例。
  • 内存配置: 根据用户设定的推理速度,计算最优的神经元缓存大小。
  • I/O 配置: 根据模型的稀疏性和冷热神经元的分布,确定灵活的神经元加载策略。

2.4 关键技术

2.4.1 多态神经元引擎

多态神经元引擎是 PowerInfer-2 的核心组件,它根据 LLM 推理的不同阶段和硬件特性,动态地将神经元组合成神经元集群,并选择合适的计算单元进行计算。

  • 基于 NPU 的预填充: 在预填充阶段,所有用户输入的 token 都会并发处理,因此 PowerInfer-2 使用包含所有神经元的大的神经元集群,并利用 NPU 在处理大型矩阵乘法方面的优势来加速计算。
  • 基于 CPU 的解码: 在解码阶段,每次迭代只处理一个 token,因此 PowerInfer-2 使用小的神经元集群,并利用 CPU 核心的灵活性来处理稀疏计算任务。

2.4.2 内存神经元缓存

内存神经元缓存用于存储频繁访问的神经元权重,以减少 I/O 操作的开销,具有以下特点:

  • 分段设计: 根据不同 LLM 权重类型的特点,将缓存分为多个区域,每个区域采用不同的缓存策略,例如 LRU 替换策略。
  • 神经元粒度: 缓存操作在神经元粒度上进行,可以更有效地利用缓存空间并提高缓存命中率。

2.4.3 灵活的神经元加载

PowerInfer-2 根据模型的量化方法和 UFS I/O 特性,采用不同的加载策略,以优化 I/O 读取吞吐量:

  • 无量化模型: 使用大粒度的随机读取,例如一次性读取一个神经元的所有权重数据。
  • 4 位量化模型: 使用小粒度的随机读取,并根据预测结果动态决定是否进行第二次读取,以避免不必要的 I/O 操作。

2.4.4 神经元集群级流水线

神经元集群级流水线技术将神经元集群的计算和 I/O 操作重叠执行,以最小化 I/O 等待时间:

  • 将矩阵计算分解为神经元集群: PowerInfer-2 将矩阵计算分解为多个神经元集群的计算,每个神经元集群可以独立执行。
  • 并发执行计算和 I/O 操作: 当一个神经元集群的计算完成后,立即开始处理下一个矩阵中内存中的神经元集群的计算,从而隐藏 I/O 等待时间。

2.4.5 执行计划生成

PowerInfer-2 的离线规划流程会根据模型和硬件特性生成执行计划,指导在线推理过程:

  • 硬件特性分析: 使用离线分析器评估 CPU、I/O 和内存的性能。
  • 模型特性分析: 使用离线分析器评估模型的稀疏性、冷热神经元的分布和缓存特性。
  • 成本模型: 使用成本模型优化执行计划,目标是最大化解码速度,同时满足用户指定的约束条件。

3 评估

3.1 实验设置

3.1.1 硬件选择

  • OnePlus 12 和 OnePlus Ace 2: 选择了高端和中端手机进行评估,代表不同性能水平的智能手机。
  • Snapdragon 8 Gen 3 和 Snapdragon 8+ Gen 1: 不同的 SoC,体现了不同计算能力的差异。
  • UFS 4.0 和 UFS 3.1: 不同的存储介质,评估其对 I/O 性能的影响。

3.1.2 模型选择

选择了四种不同架构和模型大小的语言模型,分别是:

  • 稀疏Llama-7B/13B
  • TurboSparse-Mixtral-47B
  • TurboSparse-Mistral-7B

3.1.3. 基线

PowerInfer-2与三种最先进的LLM推断框架进行了比较:llama.cpp、LLM in a Flash和MLC-LLM。Llama.cpp是目前支持将部分模型权重卸载到闪存存储(通过mmap)的最快大型模型推断框架,也是许多其他框架的后端,如Ollama。LLM in a Flash是为PC环境设计的,不是开源的。对于PowerInfer-2和LLMFlash,部署了我们的稀疏化模型,而其他基线系统则使用了原始模型进行速度比较。

3.1.4 工作负载

评估的工作负载是从实际LLM任务中选择的,包括多轮对话, 代码生成, 数学问题求解角色扮演:,评估 PowerInfer-2 在不同任务下的性能表现。

3.1.5 评估指标

  • 生成速度 (tokens/s): 作为主要评估指标,直观地反映系统性能。
  • 预填充速度和解码速度: 分别评估预填充和解码阶段的性能。
  • 解码速度分布: 分析不同任务和 token 级别的解码速度分布,评估系统的鲁棒性。

3.2 评估结果

  • 性能提升: PowerInfer-2 在多种模型和硬件上实现了显著的性能提升,最高可达 29.2 倍。
  • 内存节省: 在内存充足的情况下,PowerInfer-2 能够节省约 40% 的内存使用,同时保持高性能。
  • 鲁棒性: PowerInfer-2 在不同任务下表现出良好的鲁棒性,解码速度稳定。

3.3 关键发现

  • NPU 优势: 在预填充阶段,NPU 的计算能力显著优于 CPU 和 GPU。
  • I/O 优化: PowerInfer-2 通过灵活的神经元加载和神经元级流水线机制,有效减少了 I/O 延迟。
  • 缓存策略: 分段神经元缓存设计有效地提高了缓存命中率,降低了 I/O 负载。
  • 内存容量影响: 解码速度随内存容量线性增长,表明 I/O 是主要瓶颈。

3.4 未来工作

  • 支持更多模型和硬件: 将 PowerInfer-2 扩展到更多 LLM 模型和智能手机硬件。
  • 模型压缩: 探索模型压缩技术,进一步降低模型大小和内存占用。
  • 端到端优化: 将 PowerInfer-2 与其他优化技术相结合,实现端到端的 LLM 推理优化。

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

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

相关文章

决策树原理实现

决策树学习算法包括三部分:特征选择、树的生成和树的剪枝。常用的算法有ID3、C4.5和CART。 特征选择的目的在于选取对训练数据能够分类的特征。特征选择的关键是其准则。常用的准则如下: (1)特征 A A A对训练数据集 D D D的信息…

智能驾驶时代:车联网需要怎样的智能网络底座?

2024年,智能驾驶市场火热,无论是造车新势力还是老牌车企纷纷发力智能驾驶,他们深知,新能源汽车的下半场已到,再不发力智能驾驶,可能真的有些来不及了。车企不断加码单车智能的同时,政府也在稳步…

IP服务器代理如何设置使用?

IP服务器代理(通常称为代理IP或代理服务器)的设置和使用方法可以根据不同的需求和场景而有所不同。以下是一个清晰的步骤指南,帮助你设置和使用IP服务器代理: 1. 选择合适的代理IP类型 根据使用目的的不同,可以选择不…

MFC案例:利用SetTimer函数编写一个“计时器”程序

一、希望达成效果 利用基于对话框的MFC项目,做一个一方面能够显示当前时间;另一方面在点击开始按钮时进行读秒计时,计时结果动态显示,当点击结束时读秒结束并保持最后结果。 二、编程步骤及相关代码、注释 1、启动VS…

STM32定时器输出pwm的几种模式

目录 定时器 输出脉冲模式: PWM模式(PWM Mode) 输出比较模式(Output Compare Mode) 总结 占空比: 输出比较模式与占空比 PWM模式与占空比 输出比较模式与PWM模式的结合 输出比较模式实例&#xf…

解除网站IP抓取限制的方法有哪些?

在爬取网站数据时,经常会遇到IP被限制,导致返回的数据无法显示或者直接空白的情况。这时候就需要采取一些方法来解除网站对IP的爬取限制。IP代理是帮助用户绕过网站限制,保持稳定连接,实现数据顺畅爬取的重要解决方案。 1、IP代理…

解决生产问题的万能接口(Java编译器API的使用)

文章目录 前言Tool和ToolProvider编译器工具:JavaCompiler文件管理文件:FileObject文件管理器:JavaFileManager 诊断监听器:DiagnosticDemo:allPowerfulInterface具体实现测试 结语 前言 当生产环境出现问题时&#x…

安全智能预警软件有人试图窃取会立即发出高分贝警报已解锁VIP功能

一款手机安全智能预警软件,无论是网吧还是餐馆小聚,您的手机都能得到贴心的守护,一旦有人试图窃取,应用会立即发出高分贝警报,确保您在公交、地铁、商场等拥挤环境中依然能牢牢掌控手机。(解锁专业版&#…

Qt——窗口

目录 概述 菜单栏 创建菜单栏 创建子菜单 添加分割线 添加图标 工具栏 创建工具栏 设置初始位置和停靠位置 设置浮动属性 设置移动属性 状态栏 创建状态栏 显示实时消息 添加控件 浮动窗口 创建浮动窗口 对话框 创建对话框 对话框的分类 Qt 内置对话框 …

FreeRTOS学习笔记-基于stm32(14)内存管理

一、FreeRTOS 内存管理简介 FreeRTOS有两种方法来创建任务,队列,信号量等,一种动态一种静态。静态方法需要手动定义任务堆栈。使用动态内存管理的时候 FreeRTOS 内核在创建任务、队列、信号量的时候会动态的申请 RAM。 我们在移植FreeRTOS时可…

由于人工智能,他们的语言更容易理解

密歇根大学、墨西哥国家天体物理研究所和光学与电子研究所的研究人员正在使用人工智能模型来破译狗的语言。 在国际会议上提出的新研究展示了先进的人工智能 模型如何帮助人类了解动物。 密歇根大学人工智能实验室主任 Rada Mihalcea 强调了这项研究的重要性:对于…

Javaweb03-Servlet技术1(Servlet,ServletConfig,ServletContext)

Servlet技术(Servlet,ServletConfig,ServletContext) 1.Servlet的概述 Servlet是运行在Web服务器端的Java应用程序,它使用Java语言编写。与Java程序的区别是,Servlet 对象主要封装了对HTTP请求的处理,并且它的运行需要Servlet容器(Tomcat)的…

【五】Linux软件仓库Yum源--SSH远程控制--SCP远程传输

RPM(红帽软件包管理器) RPM建立统一的数据库文件,记录软件信息并分析依赖关系。目前RPM的优势已经被公众所认可,使用范围也已不局限在红帽系统中了。常见RPM命令如下: 安装软件 rpm -ivh file…

BitSet位图进行去重海量数据

问题 怎么在40亿个整数中找到唯一重复的数字? 1.Set的不可重复性 if(set.contains(x))System.out.println("重复的数字是"x);else{set.add(x);}但是,contains()方法消耗的时间,消耗的空间很大,毕竟有约40亿的数据,所…

Vue--》打造细腻颗粒感 —— 细分组件颗粒图

写文背景:当涉及到前端开发时,我们经常会发现自己在不同的组件中复用相似的逻辑,在过去我们可能会通过混入、高阶组件或者全局组件等方式来实现代码的复用;或者一个组件逻辑太多,写出了超多的响应式ref数据和五花八门的…

[大模型]LLaMA3-8B-Instruct langchain 接入

环境准备 在 Autodl 平台中租赁一个 3090 等 24G 显存的显卡机器,如下图所示镜像选择 PyTorch-->2.1.0-->3.10(ubuntu22.04)-->12.1 接下来打开刚刚租用服务器的 JupyterLab,并且打开其中的终端开始环境配置、模型下载和运行演示。 pip 换…

华为鲲鹏应用开发基础:鲲鹏处理器及关键硬件特性介绍(二)

1. 鲲鹏简介 1.1 鲲鹏处理器简介 鲲鹏处理器是华为自研的基于ARMv8指令集开发的数据中心级处理器 1.2 基于鲲鹏主板的多样化计算产品 1.3 基于鲲鹏920的华为TaiShan(泰山) 200服务器 1.3.1 TaiShan 2280服务器内部视图 1.3.2 TaiShan 2280服务器物理结构 1.3.3 TaiShan 2280服…

【Java】解决Java报错:IOException during File Operations

文章目录 引言一、IOException的定义与概述1. 什么是IOException?2. IOException的常见触发场景3. 示例代码 二、解决方案1. 检查文件是否存在2. 使用try-with-resources语句3. 捕获和处理IOException4. 使用NIO进行文件操作 三、最佳实践1. 检查文件状态2. 使用try…

缓冲区的奥秘:解析数据交错的魔法

目录 一、理解缓存区的好处 (一)直观性的理解 (二)缓存区的好处 二、经典案例分析体会 (一)文件读写流(File I/O Buffering) BufferedOutputStream 和 BufferedWriter 可以加快…

四川古力未来科技抖音小店打造品质生活,可靠之选引领潮流

在当今数字化快速发展的时代,电商平台如雨后春笋般涌现,抖音小店作为其中的佼佼者,凭借其独特的短视频电商模式,迅速吸引了大批年轻消费者的目光。而在众多的抖音小店中,四川古力未来科技抖音小店凭借其卓越的品质和专…