ExecuTorch Llama iOS 演示应用
[更新 - 10/24] 我们已在 XNNPACK 后端 的演示应用中增加了对运行量化 Llama 3.2 1B/3B 模型 的支持。我们目前支持使用 SpinQuant 和 QAT+LoRA 量化方法进行推理。
我们很高兴分享,新改版的 iOS 演示应用已上线,并包含许多新更新,旨在为聊天用例提供更直观、更流畅的用户体验!此应用的主要目标是展示如何轻松地将 ExecuTorch 集成到 iOS 演示应用中,以及如何运用 ExecuTorch 和 Llama 模型提供的众多功能。
此应用是一个宝贵的资源,可以激发您的创造力,并提供您可以为特定用例定制和调整的基础代码。
请深入探索我们的演示应用!我们期待任何反馈,并很高兴看到您的创新想法。
主要概念
从这个演示应用中,您将学习到许多关键概念,例如
如何准备 Llama 模型、构建 ExecuTorch 库以及跨委托执行模型推理
通过 Swift Package Manager 公开 ExecuTorch 库
熟悉当前 ExecuTorch 面向应用的功能
我们的目标是让您了解 ExecuTorch 提供的支持类型,并让您放心地将其用于您的用例。
支持的模型
总的来说,此应用支持的模型有(因委托而异)
Llama 3.2 量化 1B/3B
BF16 中的 Llama 3.2 1B/3B
Llama 3.1 8B
Llama 3 8B
Llama 2 7B
Llava 1.5(仅限 XNNPACK)
构建应用程序
首先,重要的是要注意,目前 ExecuTorch 提供了跨多个委托的支持。一旦您确定了您选择的委托,请选择 README 链接以获取完整的端到端说明,了解环境设置、导出模型、构建 ExecuTorch 库和应用以在设备上运行
如何使用该应用
本节将提供使用该应用的主要步骤,以及 ExecuTorch API 的代码片段。
Swift Package Manager
ExecuTorch 运行时作为 Swift 包分发,提供一些 .xcframework 作为预构建的二进制目标。Xcode 将在首次运行时下载并缓存该包,这将需要一些时间。
注意:如果您遇到任何与包依赖项相关的问题,请完全退出 Xcode,删除整个 executorch 仓库,通过在终端中运行以下命令清除缓存,然后重新克隆仓库。
rm -rf \
~/Library/org.swift.swiftpm \
~/Library/Caches/org.swift.swiftpm \
~/Library/Caches/com.apple.dt.Xcode \
~/Library/Developer/Xcode/DerivedData
将您的二进制文件与 ExecuTorch 运行时以及导出的 ML 模型使用的任何后端或内核链接。建议将核心运行时链接到直接使用 ExecuTorch 的组件,并将内核和后端链接到主应用目标。
注意:要访问日志,请链接到 ExecuTorch 运行时的 Debug 版本,即 executorch_debug 框架。为了获得最佳性能,始终链接到交付物的 Release 版本(那些没有 _debug 后缀的版本),这些版本已移除所有日志记录开销。
有关在 Apple 平台上集成和运行 ExecuTorch 的更多详细信息,请查看此链接。
将模型复制到设备
有线连接设备并在 Finder 中打开内容。
导航到“文件”选项卡,并将模型和分词器文件拖放到 iLLaMA 文件夹中。
等待文件复制完成。
如果该应用在您的设备上成功运行,您应该看到类似以下内容
对于 Llava 1.5 模型,您可以在键入提示和发送按钮之前选择图像(通过图像/相机选择器按钮)。
报告问题
如果您在按照本教程操作时遇到任何错误或问题,请在此处 Github 上提交错误/问题。