PowerInfer: 让你的消费级显卡也能飞速运行大型语言模型

大型语言模型(LLM)凭借其强大的文本理解和生成能力,已经深刻地改变了我们的生活和工作方式。然而,这些模型通常运行在配备高端服务器级 GPU 的数据中心,这使得它们对于个人用户来说难以触及。近年来,将 LLM 部署到个人电脑(PC)上,尤其是配备消费级 GPU 的 PC 上,成为了一个热门趋势。这主要是因为个人用户希望拥有更高的数据隐私、更强的模型定制能力以及更低的推理成本。

与数据中心部署优先考虑高吞吐量不同,本地部署更关注低延迟,尤其是处理单个请求时。但是,将 LLM 部署到消费级 GPU 上也面临着巨大的挑战,主要是因为它们的内存需求非常大。LLM 通常采用自回归 Transformer 架构,逐个生成文本标记,每次生成都需要访问整个模型,而模型可能包含数百亿甚至上千亿个参数。因此,推理过程受到 GPU 内存容量的严重限制,尤其是在本地部署中,因为单个请求(通常一次只有一个)无法充分利用并行处理能力。

目前解决内存问题的方案包括模型压缩和卸载。压缩技术,例如量化、蒸馏和剪枝,可以减小模型尺寸。然而,即使是深度压缩后的模型对于消费级 GPU 来说仍然太大。例如,一个 4 位精度的 OPT-66B 模型仅仅加载参数就需要大约 40GB 的内存,这超出了即使是高端 GPU(如 NVIDIA RTX 4090)的容量。模型卸载,将模型在 Transformer 层级上分配到 GPU 和 CPU 之间,可以减轻 GPU 内存压力。例如,llama.cpp 将层分配到 CPU 和 GPU 内存中,利用两者进行推理,从而减少了 GPU 资源需求。然而,这种方法受到 PCIe 互连速度慢和 CPU 计算能力有限的限制,导致推理延迟很高。

PowerInfer 的突破:利用 LLM 推理中的高局部性

本文介绍了 PowerInfer,一个针对配备单个消费级 GPU 的 PC 的本地部署而优化的 LLM 推理系统。PowerInfer 的核心思想是利用 LLM 推理中的高局部性,将少量频繁激活的神经元分配到 GPU 上,而将大多数不常激活的神经元分配到 CPU 上。PowerInfer 在离线阶段预先选择并预加载 GPU 上的频繁激活神经元,并在运行时利用在线预测器识别激活的神经元。这种方法允许 GPU 和 CPU 独立处理各自的神经元集,从而最大限度地减少了昂贵的 PCIe 数据传输需求。

PowerInfer 的关键技术

PowerInfer 采用了一种自适应的预测器构建方法,针对激活稀疏性和偏度较高的层构建更小的预测器,从而释放 GPU 内存用于 LLM 推理。此外,PowerInfer 还设计了神经元感知的稀疏运算符,直接与单个神经元交互,从而绕过对整个矩阵的操作,实现了高效的神经元级矩阵向量乘法,并避免了对特定稀疏格式进行转换的需要。

PowerInfer 的性能评估

性能评估表明,PowerInfer 在配备单个 NVIDIA RTX 4090 GPU 的 PC 上,量化模型的平均生成速度为 13.20 个标记/秒,非量化模型的平均生成速度为 8.32 个标记/秒,同时保持了模型精度。这些结果显著优于 llama.cpp,量化模型的平均加速比为 7.23 倍,非量化模型的平均加速比为 11.69 倍。更重要的是,在 NVIDIA RTX 4090 GPU(价格约 2000 美元)上实现的推理速度仅比能够完全容纳模型的顶级 A100 GPU(价格约 20000 美元)慢 18%。

PowerInfer 的未来展望

PowerInfer 的源代码已公开发布,并计划在未来进一步完善,例如:

  • 支持更多类型的 LLM 模型,例如 Mistral-7B 和 Bamboo-7B.
  • 支持 Windows 系统。
  • 支持 text-generation-webui。
  • 支持 Metal 后端,以便在 macOS 上进行稀疏推理。

PowerInfer 的核心贡献

  • 提出了一种利用 LLM 推理中高局部性的方法,将频繁激活的神经元分配到 GPU 上,而将大多数不常激活的神经元分配到 CPU 上。
  • 设计了自适应的预测器构建方法和神经元感知的稀疏运算符,提高了 LLM 推理的效率。
  • 通过性能评估表明,PowerInfer 显著提高了 LLM 推理速度,同时保持了模型精度。

PowerInfer 为 LLM 的本地部署开辟了新的可能性,让你的消费级显卡也能飞速运行大型语言模型,体验前所未有的智能体验!

参考文献:

  • PowerInfer: Fast Large Language Model Serving with a Consumer-grade GPU. arXiv preprint arXiv:2312.12456, 2023.
  • PowerInfer-2: Fast Large Language Model Inference on a Smartphone. arXiv preprint arXiv:2406.06282, 2024.
  • PowerInfer GitHub repository: https://github.com/SJTU-IPADS/PowerInfer

手机上的“大脑”:PowerInfer-2 让大型语言模型飞入寻常百姓家

大型语言模型(LLM)正以前所未有的速度改变着我们的生活。从智能助手到内容创作,LLM 的强大能力已经渗透到各个领域。然而,这些“大脑”通常驻扎在拥有强大计算能力的数据中心,需要消耗大量资源。如何将 LLM 的力量带到每个人手中,成为了一项新的挑战。

手机上的 LLM:机遇与挑战

手机作为我们日常生活中不可或缺的一部分,拥有着巨大的潜力来承载 LLM,实现更加个性化、便捷的智能体验。然而,手机的计算能力和内存容量有限,难以满足 LLM 的庞大需求。

目前,主要有两种方法尝试将 LLM 部署到手机上:

  • 缩减模型尺寸: 例如,Google 的 Gemini Nano 3.25B 模型仅占用 2GB 内存,但这也意味着牺牲了部分智能能力。
  • 优化推理效率: 一些技术致力于降低 LLM 推理过程中的计算和存储需求,例如 PowerInfer [30] 通过将活跃神经元分配到 GPU,非活跃神经元分配到 CPU 来提高推理速度。

然而,这些方法在手机上仍然面临着挑战。手机硬件的异构性以及存储设备的带宽限制,使得 I/O 操作成为 LLM 推理的瓶颈。

PowerInfer-2:手机上的 LLM 推理加速器

为了解决这些问题,本文介绍了 PowerInfer-2,一个专门针对手机设计的 LLM 推理框架。PowerInfer-2 能够在手机上高效地执行 LLM 推理,甚至可以支持参数高达 470 亿的模型,远远超过手机的内存容量。

PowerInfer-2 的核心思想:

  • 神经元集群计算: PowerInfer-2 将传统的矩阵计算分解为更细粒度的“神经元集群”计算,充分利用手机中 CPU、GPU 和 NPU 等异构计算单元。
  • 多态神经元引擎: PowerInfer-2 设计了一个多态神经元引擎,根据 LLM 推理的不同阶段,采用不同的计算策略。在预填充阶段,它将所有神经元合并成一个大型神经元集群,利用 NPU 的优势进行高效计算;在解码阶段,它使用更小的神经元集群,利用 CPU 的灵活性进行更轻量级的计算。
  • 分段神经元缓存: PowerInfer-2 引入了一种分段缓存机制,针对不同的 LLM 权重类型,采用不同的缓存策略,有效提高缓存命中率。
  • 神经元集群级流水线: PowerInfer-2 通过将 I/O 操作与神经元集群计算重叠,有效减少 I/O 延迟带来的等待时间。

PowerInfer-2 的优势:

  • 速度提升: PowerInfer-2 在手机上实现了高达 29.2 倍的速度提升,是首个能够在手机上运行 TurboSparse-Mixtral-47B 模型的系统,其生成速度达到每秒 11.68 个词。
  • 内存优化: 对于完全能够放入内存的模型,PowerInfer-2 能够在保持推理速度的情况下,将内存使用量减少约 40%。

PowerInfer-2 的工作原理:

PowerInfer-2 的工作流程分为离线规划和在线推理两个阶段。在离线规划阶段,系统会根据用户需求和硬件配置,生成一个执行计划,指导在线推理过程。

在线推理阶段,PowerInfer-2 利用多态神经元引擎,根据不同的推理阶段,动态地将神经元组合成神经元集群,并使用分段缓存和神经元集群级流水线技术,有效降低 I/O 延迟,提高推理速度。

PowerInfer-2 的未来展望:

PowerInfer-2 的出现,为将 LLM 部署到手机上开辟了新的道路,为我们带来了更便捷、更智能的移动体验。相信未来,随着技术的不断进步,手机上的 LLM 将会更加强大,为我们带来更多惊喜。

参考文献:

  • Xue, Zhenliang, et al. “PowerInfer-2: Fast Large Language Model Inference on a Smartphone.” arXiv preprint arXiv:2406.06282 (2024).

0 0 投票数
Article Rating
订阅评论
提醒
0 评论
最多投票
最新 最旧
内联反馈
查看所有评论
0
希望看到您的想法,请您发表评论x