⚡️探究 iPhone 的 USB 速度對開發體驗的影響:AI 模型需要高速傳輸
從 iPhone 17 這一代起,在設備上執行 AI 模型,已經從可行轉向實用。而開發 AI 應用需要頻繁傳輸幾 GB 的模型,速率瓶頸會是工作流程與開發效率的全新問題。
我之所以會發推文說 iPhone Air 與 17 的 USB 2.0 不夠用、請買支援 USB 3 的 Pro 系列,最主要原因是我留意到開發時安裝大檔案的效率瓶頸。這個需求,目前遇到的開發者很少,但是未來可能會變成一個明顯的開發效率問題。
也就是:在 iOS 上執行 AI 模型,需要放入動輒上百 MB 甚至幾 GB 的檔案。
在 iPhone 上執行 AI 模型不再是玩具
不知道讀者朋友有沒有留意到,iOS app 執行本地 AI 模型的可行性越來越高了。
首先,iPhone 的運算能力持續增加。如果你有關注 iPhone 17 系列的 A19(Pro) 的性能表現測試報告,特別是 GPU 與 AI 運算方面,應該會知道這代 SoC 相較於前代有明顯增長、記憶體也更充足。iPhone 17 Pro 甚至能夠執行 8B 的 LLM。
其次,iOS 26 開始,Apple 提供了 Foundation Models,讓開發者更容易「入門」 AI 應用。可以預見的是,許多開發者會開始接觸 AI 功能,並加入到 app 當中。一旦不滿足於 Apple 原生的方案,就會尋求第三方模型。
第三,MLX 是 Apple 的 Machine Learning 框架。它的發展,讓在 Apple 平台上執行第三方 AI 模型的難度降低。除了 C++ 與 Python,也支援 Swift。我這陣子研究了一下 MLX Swift。只要下載 mlx-swift-examples,裡面就有非常多 AI 應用的範例,包括 LLM、VLM、Chat、Stable Diffusion 等。這些範例可以跑在 Mac,也可以在 iOS 設備上執行。
從 MLX 的 Examples 發現下載模型缺乏效率
這就要說到我發現傳輸速率影響開發效率的問題。
第一次執行的時候,mlx-swift-examples app 會從 Hugging Face 下載開源的 AI 模型回來。這些模型有幾百 MB 起跳,超過幾 GB 也不罕見。下載一個模型往往需要幾分鐘的時間。
如果開發或測試流程需要反覆地刪除 app、重新安裝,就得重新傳輸模型檔案,非常浪費時間。因為 iOS app 有 sandbox,不像 Mac 可以輕鬆備份已下載的模型檔。手動從 Document browser 讀取檔案是個 workaround,但無法自動化。
不久之前, 知名開發者 Mattt 表示,他正在與 Hugging Face 合作,開發一些 Swift Package 與工具,讓開發者更容易在 Swift 使用這些模型。並且在蒐集開發者的意見。你可以看到 mlx-swift-examples 裡面下載模型使用的 Swift Transformers package,Mattt 目前是主要維護者之一。
我發現到從 example apps 下載模型檔非常花時間,對於開發與測試非常不利。所以就建議 Mattt,能否使用 Mac 當成 cache server?而要是有什麼辦法,能夠利用 USB 3 來高速傳輸就更好了。他覺得是很好的建議。
Mattt: That's a great idea! I'm thinking through an overhaul about how models are loaded and managed, so your suggestion comes at the perfect moment.
讀者如果有什麼好點子,也不妨回覆他的推文。
更多 AI 模型應用的例子
在過去,iOS 開發者很少有機會接觸到安裝容量有幾百 MB 的 app。通常只有遊戲,或是大公司沒有詳細規劃依賴與模組的時候,才會有這種可能。所以 USB 2.0 的速度不是什麼問題,甚至許多開發者習慣了使用無線開發。但是在裝置上運行 AI 模型這個需求,將會徹底改變插 USB 線開發的意義。
如果你有找一些能下載 AI 模型的 app 來玩玩看的話,就會發現,下載幾個幾 GB 的模型是很常有的事情。並不是只有 mlx-swift-examples 為了示範才會這樣做。