❎ iOS 本地 AI:用 AnyLanguageModel 加 MLX 跑開源模型
AnyLanguageModel 讓 Hugging Face 上的開源 LLM 很容易下載與開始使用,只要三行程式碼就可以呼叫 MLX 框架以及配套工具。我也更新了範例專案,可以直接在 Mac 與 iOS 裝置上試玩。
這個系列講了很多 Foundation Models,也試過用 AnyLanguageModel 連線到 LM Studio Server。現在,我們應該會很想知道,要怎麼樣在 Mac 或 iOS 上跑開源模型吧?
這就是效果的影片:

至於要怎麼做到,讓我一步一步說明。
要在 Apple 裝置上執行開源 AI 模型,有兩個常見的技術,一個是 Core ML,另一個則是 MLX。以下根據我粗淺的理解,簡單介紹兩者的差異。
Core ML 簡介
Core ML 這個名稱對於 iOS 開發者來說,應該不算陌生。它在 iOS 11 推出,能夠在 iPhone 上執行各種 AI 模型(不只是語言模型),並且充分利用 SoC 中的 Apple Neural Engine(簡稱 ANE),所以既節能,又高效。
不過,Core ML 執行的 AI 模型檔案需要使用 Apple 自家的 Core ML 格式。其他模型要轉換成 CoreML 格式並不總是那麼容易,雖然也有像 ANEMLL 這種專案與社群在努力。
因此,如果要執行開源模型,許多人會考慮去使用 MLX。
MLX 簡介
MLX 是 2023 年 Apple 推出的開源專案,偏向研究性質(MLX 的意思就是 Machine Learning Explore)。使用 Metal API,加上統一記憶體架構的優勢,讓 AI 運算能夠發揮 Apple silicon 的完整實力。雖然它並不支援 ANE,但是對於現有的開源模型生態來說,較容易相容。
MLX 有多個 repository 在 GitHub mlx-explore 組織底下。mlx 支援 Python、C++,甚至還有 C 語言套件 mlx-c。而 iOS/Mac App 開發者熟悉的 Swift,也有 mlx-swift 的套件可以使用。如果你想自行研究的話,建議從 mlx-swift-examples 開始。
MLX 也有自己的最佳化模型格式。你可以在 Hugging Face 上找到 MLX Community 轉檔好的許多模型,並直接下載。
Hugging Face 簡介
說到 Hugging Face,如果你感到陌生的話,簡單來說:它是全球最大的開源 AI 模型的存放平台,相對於 GitHub 是全球最大的開源軟體專案平台一樣的地位。
要認識 Hugging Face,尤其是學習怎麼閱讀開源模型的資訊(模型卡)、介面要怎麼讀,我很推薦 ChaoCode 的這兩部影片:
在 Hugging Face 上,大部分的開源模型都不需要登入就可以下載(除了有些要簽協議才能使用)。這包括直接從 iOS App 下載到裝置上來執行。也就是說,開發者如果想要讓使用者下載模型,一毛錢都不用出。
目前 Hugging Face 也有 Swift Package 提供下載模型的機制:
- Swift Transformers 是用來開發 Swift 的語言模型功能的工具包,其中包含下載模型的功能。目前已經是 1.0 的成熟套件,詳情可看這篇
- Swift Hugging Face 是新的、獨立的模型下載工具,跟
AnyLanguageModel一樣是由 Mattt 開發,並且之後打算取代 Swift Transformers 內的下載工具。詳情可看這篇
簡單上手
雖然上面提到很多概念跟新名詞,但是使用 AnyLanguageModel 設定、下載 Hugging Face 上的開源 LLM、並且執行,卻顯得非常簡單,就這樣三行程式碼: