Back to blog

FlexInfer: Breaking Memory Constraint via Flexible and Efficient Offloading for On-Device LLM Inference

通过灵活高效的卸载打破内存约束实现设备端LLM推理

FlexInfer: Breaking Memory Constraint via Flexible and Efficient Offloading for On-Device LLM Inference

一、论文概述

项目内容
标题FlexInfer: Breaking Memory Constraint via Flexible and Efficient Offloading for On-Device LLM Inference
作者Hongchao Du, Shangyu Wu, Arina Kharlamova, Nan Guan, Chun Jason Xue
机构City University of Hong Kong, MBZUAI
论文arXiv:2503.03777
代码未公开
发布2025年3月4日
领域设备端LLM推理、内存优化、卸载技术

二、核心思想

问题定义

在设备端部署LLM面临严峻的内存挑战:

  1. 内存需求高:LLM的参数量巨大,通常超出本地设备内存容量
  2. 现有方法局限:
    • 蒸馏/压缩/剪枝:影响模型性能,缺乏灵活性
    • 卸载方法:I/O开销大,不支持灵活的内存使用
  3. 适应性差:无法灵活适应不同的资源约束环境

解决方案概述

FlexInfer提出一个优化的卸载框架,包含三项核心技术:

  1. 异步预取(Asynchronous Prefetching):并行化I/O和计算操作
  2. 平衡内存锁定(Balanced Memory Locking):统一保留模型参数以充分利用可用内存
  3. 灵活张量保留(Flexible Tensor Preservation):根据用户指定的资源预算确定卸载和保留的参数

三、技术架构

整体框架图

FlexInfer架构

FlexInfer由三个关键组件组成,在推理过程中协同工作:

  1. 灵活张量保留优化器:根据可用预算和模型元数据确定参数保留计划
  2. 内存锁定管理器:将模型分为两部分:一部分加载并固定在内存中,另一部分通过预取按需加载
  3. 异步预取模块:处理按需加载的参数

核心公式

同步卸载吞吐量:

Tsync=1Per_token_CPU_latency+IO_sizeIO_bandwidthT_{sync} = \frac{1}{Per\_token\_CPU\_latency + \frac{IO\_size}{IO\_bandwidth}}

异步预取优化:

通过并行化I/O和计算操作,隐藏I/O延迟:

Tasync=1max⁡(Per_token_CPU_latency,IO_sizeIO_bandwidth)T_{async} = \frac{1}{\max(Per\_token\_CPU\_latency, \frac{IO\_size}{IO\_bandwidth})}

注意力计算:

Attention(Q,K,V)=softmax(QKTdk)VAttention(Q,K,V) = softmax\left(\frac{QK^T}{\sqrt{d_k}}\right)V

前馈网络:

FFN(h)=ACT(hWup+bup)Wdown+bdownFFN(h) = ACT(hW_{up} + b_{up})W_{down} + b_{down}

模型组件

组件说明关键技术
异步预取并行化I/O和计算多线程预取、计算-IO重叠
平衡内存锁定统一保留模型参数层级平衡、内存最大化利用
灵活张量保留智能参数选择预算感知、动态调整

关键技术详解

异步预取

异步预取机制

  • 问题:同步I/O导致推理性能受限于I/O带宽
  • 解决方案:并行化I/O和计算操作
  • 效果:通过预取并行化,性能提升34.8-59.4%

平衡内存锁定

平衡内存锁定

  • 问题:按层顺序锁定参数导致内存利用不均衡
  • 解决方案:统一保留模型参数以充分利用可用内存
  • 效果:在最小内存设置下提升9.2-11.1%

灵活张量保留

灵活张量保留

  • 问题:现有方法不支持灵活的内存使用
  • 解决方案:根据用户指定的资源预算确定卸载和保留的参数
  • 效果:支持不同内存预算下的最优参数保留

四、核心创新

创新点说明理论/实验依据
异步预取并行化I/O和计算操作性能提升34.8-118.8%
平衡内存锁定统一保留模型参数内存利用率提升9.2-11.1%
灵活张量保留预算感知的参数选择支持不同内存预算
精确内存管理最小化I/O瓶颈吞吐量提升5.2-12.5倍

五、实验结果

实验设置

  • 硬件:Ubuntu服务器,512GB内存,AMD 7995WX CPU
  • 模型:Llama2系列(7B, 13B, 34B, 70B)
  • 基线:mmap(MMAP)、无预取(Flex. w/o Prefetch)、无平衡锁定(Flex. w/o Balance)

性能提升

吞吐量对比

关键结果:

模型模型大小全内存性能FlexInfer提升
Llama2-7B3.8GB12.72 tokens/s5.2-12.5×
Llama2-13B7.3GB6.74 tokens/s5-11.8×
Codellama-34B17.9GB2.6 tokens/s4.2-10.6×
Llama2-70B36.4GB1.3 tokens/s5-11×

消融实验

异步预取效果:

  • 内存有限时:性能提升34.8-59.4%
  • 内存增加时:性能提升69.9-118.8%

平衡内存锁定效果:

  • 最小内存设置下:性能提升9.2-11.1%
  • 随内存增加,差异减小

同步读取 vs 预取:

  • 同步读取:性能提升2.6-3×(证明I/O是主要瓶颈)
  • 预取:进一步提升34.8-59.4%

关键发现

  1. I/O是主要瓶颈:在内存受限条件下,I/O是大模型推理的主要瓶颈
  2. 异步预取有效:通过并行化I/O和计算,显著提升性能
  3. 平衡锁定重要:统一保留参数可以充分利用可用内存
  4. 灵活适应性:FlexInfer可以适应不同的资源约束环境

六、相关工作

方法特点与FlexInfer的区别
mmap系统默认方法性能差,0.08-0.67 tokens/s
FlexGen高吞吐量卸载不支持灵活内存使用
PowerInfer消费级GPU推理需要GPU支持
PowerInfer-2智能手机推理特定硬件优化
LLMCad设备端推理不支持灵活预算

七、总结

核心贡献

  1. FlexInfer框架:首个支持灵活内存预算的LLM卸载推理框架
  2. 异步预取技术:并行化I/O和计算,显著降低I/O开销
  3. 平衡内存锁定:统一保留参数,最大化内存利用
  4. 灵活张量保留:根据预算智能选择保留参数

技术影响

  • 性能提升:相比mmap提升5.2-12.5倍吞吐量
  • 灵活性:支持不同内存预算下的最优配置
  • 实用性:适用于资源受限的设备端部署
  • 通用性:支持多种LLM模型(7B-70B)

局限性

  1. CPU推理:主要针对CPU推理优化,未充分利用GPU
  2. 硬件依赖:性能受存储设备I/O带宽限制
  3. 模型支持:主要验证于Llama2系列模型

八、参考资源