Swift Core ML Diffusers 🧨
这是一个原生应用程序,展示了如何在原生Swift UI应用程序中集成Apple的Core ML稳定扩散实现。Core ML版本是diffusers库中稳定扩散实现的简化版。这个应用程序可用于更快速的迭代,或作为任何用例的示例代码。
以下是该应用在macOS上的样子:
首次启动时,应用程序会从Hugging Face Hub的这个位置下载一个包含Stability AI的Stable Diffusion v2基础版Core ML版本的压缩包。这个过程需要一段时间,因为要下载和解压几GB的数据。
为了更快的推理,我们使用了一个非常快速的调度器:DPM-Solver++,我们从diffusers的DPMSolverMultistepScheduler实现将其移植到了Swift。
该应用支持使用coremltools
版本7或更高版本量化的模型。这需要macOS 14或iOS/iPadOS 17。
兼容性和性能
- macOS Ventura 13.1、iOS/iPadOS 16.2、Xcode 14.2。
- 性能(初次生成后,初次生成较慢)
- 在MacBook Pro M1 Max(64 GB)的macOS上约8秒。模型:Stable Diffusion v2-base,原始注意力实现,在CPU + GPU上运行。
- 在iPhone 13 Pro上23~30秒。模型:Stable Diffusion v2-base,SPLIT_EINSUM注意力,CPU + 神经引擎,启用内存减少。
量化模型运行更快,但需要macOS Ventura 14或iOS/iPadOS 17。
应用程序将尝试猜测运行模型的最佳硬件。您可以使用控制侧边栏中的"高级"部分覆盖此设置。
如何运行
在macOS上测试应用程序的最简单方法是从Mac App Store下载。
如何构建
您需要Xcode来构建应用程序。克隆仓库后,请在common.xcconfig
中更新您的开发团队标识符。iOS需要代码签名,但目前在macOS上已禁用。
已知问题
iPhone上的性能有些不稳定,有时会慢约20倍,手机会发热。这是因为模型无法安排在神经引擎上运行,一切都在CPU上进行。我们尚未确定这个问题的原因。如果您观察到同样的情况,以下是一些建议:
- 从Xcode断开连接
- 关闭不使用的应用程序
- 在重复测试前让iPhone冷却
- 重启设备
下一步
- 允许从Hub下载其他模型。