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
美洲驼 3.2 1B/3B 在 BF16 中
羊驼 3.1 8B
羊驼 3 8B
羊驼 2 7B
Llava 1.5(仅限 XNNPACK)
构建应用程序¶
首先,需要注意的是,目前 ExecuTorch 为多个委托提供支持。确定您选择的委托人后,选择 README 链接以获取环境设置的完整端到端说明,以导出模型以构建 ExecuTorch 库和应用程序以在设备上运行:
委托 |
资源 |
---|---|
XNNPACK(基于 CPU 的库) |
|
MPS (Metal Performance Shader) |
如何使用该应用程序¶
本节将提供使用该应用程序的主要步骤,以及 ExecuTorch API 的代码片段。
Swift 包管理器¶
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 的更多详细信息,请查看此链接。
XCode 系列¶
打开 XCode 并选择“打开现有项目”以打开 。
examples/demo-apps/apple_ios/LLama
确保 ExecuTorch 包依赖项已正确安装,然后选择哪个 ExecuTorch 框架应链接到哪个目标。
运行应用程序。这将在手机上构建并启动应用程序。
在应用程序 UI 中,选择要使用的模型和分词器,键入提示并点击箭头按钮
将模型复制到模拟器¶
将模型和分词器文件拖放到 Simulator 窗口,并将它们保存在 iLLaMA 文件夹中的某个位置。
在应用程序对话框中选择文件,键入提示并单击向上箭头按钮。
将模型复制到设备¶
有线连接设备并在 Finder 中打开内容。
导航到 Files 选项卡,然后将模型和 tokenizer 文件拖放到 iLLaMA 文件夹中。
等待文件被复制。
如果应用程序在您的设备上成功运行,您应该会看到如下所示的内容:
对于 Llava 1.5 型号,您可以在键入提示符和发送按钮之前选择并成像(通过图像/相机选择器按钮)。