基于Core ML的本地Llama 3.1

基于Core ML的本地Llama 3.1

💡 原文英文,约5800词,阅读约需22分钟。
📝

内容提要

许多应用开发者希望在Apple硅上本地运行大型语言模型(LLMs),以提高推理效率和保护用户隐私。本文介绍了如何优化和部署Llama-3.1-8B-Instruct模型,利用Apple的Core ML框架实现约33个tokens/s的解码速度。通过引入状态化的键值缓存和4位量化,显著提升了模型性能,适用于其他基于变换器的LLMs。

🎯

关键要点

  • 许多应用开发者希望在Apple硅上本地运行大型语言模型(LLMs),以提高推理效率和保护用户隐私。

  • 本文介绍了如何优化和部署Llama-3.1-8B-Instruct模型,利用Apple的Core ML框架实现约33个tokens/s的解码速度。

  • 模型必须经过仔细优化,以有效利用可用的系统资源,因为LLMs通常对内存和处理能力有很高的需求。

  • 使用Core ML框架和优化措施,Llama-3.1-8B-Instruct模型可以在M1 Max上本地运行。

  • 基线模型导出和性能评估是优化过程的第一步,了解模型的基本性能和改进空间。

  • 导出PyTorch模型到Core ML需要定义一个薄包装器,并使用Core ML工具进行转换。

  • 模型输入包括token化的文本序列和二进制注意力掩码,输出为每个token的原始未归一化概率分数。

  • 模型执行分为“提示”和“扩展”两个阶段,使用贪婪采样策略生成下一个token。

  • 评估模型性能的指标包括提示延迟和扩展吞吐量,后者反映了模型生成输出token的速度。

  • 基线模型的扩展吞吐量较低,主要由于静态输入形状和缺乏键值缓存。

  • 通过引入灵活的输入形状和状态化的键值缓存,可以显著提高模型性能。

  • 使用融合的缩放点积注意力(SDPA)和块状int4权重量化进一步优化模型性能。

  • 状态化的键值缓存允许模型在每次预测调用后更新缓存,减少了数据复制的开销。

  • 块状int4量化将模型大小从16GB减少到4.2GB,解码速度提高到约33 tokens/s。

  • 使用Core ML框架和所述优化,开发者可以在Apple硅上本地部署LLMs,利用用户硬件实现成本效益推理。

延伸问答

如何在Apple硅上本地运行大型语言模型?

通过优化和部署Llama-3.1-8B-Instruct模型,利用Apple的Core ML框架,可以在Apple硅上本地运行大型语言模型。

Llama-3.1-8B-Instruct模型的解码速度是多少?

Llama-3.1-8B-Instruct模型的解码速度约为33个tokens/s。

使用Core ML框架的主要优化措施有哪些?

主要优化措施包括引入状态化的键值缓存和4位量化,以提高模型性能。

如何将PyTorch模型导出到Core ML格式?

需要定义一个薄包装器,并使用Core ML工具进行转换,确保输入形状和输出类型正确。

模型性能评估的指标有哪些?

模型性能评估的指标包括提示延迟和扩展吞吐量,后者反映了模型生成输出token的速度。

状态化的键值缓存有什么优势?

状态化的键值缓存允许模型在每次预测调用后更新缓存,减少了数据复制的开销,从而提高了性能。

🏷️

标签

➡️

继续阅读