iPlayground 2025 講者心得:Local LLM 在 iOS 的實踐

iPlayground 2025 圓滿落幕了。作為今年的講者之一,我想分享這次從準備到演講的完整心得,以及身為講者看到的一些觀察。

一場符合並超出預期的活動

首先要稱讚一下今年的主辦團隊。福氣哥今年辦 iPlayground 已經是第四屆了,算是經驗老道。從前幾年的大規模(雙軌 500+ 人),到去年的小規模(單軌 100+ 人),再來是今年的中規模(單軌 300 人),每次的規模拿捏都很到位。

今年的票價是歷屆最高的,但入場人數也達到接近 300 人的規模。在現在這個 Mobile 開發逐漸式微的時代,能有這樣的參與度真的很不容易。

畢竟現在的狀況是:

  • 資金、資源、關注度都移到了 AI 身上
  • 許多 iOS 開發者看苗頭不對,紛紛轉向後端、網頁前端
  • 企業願意在移動端投資的資本越來越少
  • 相關的徵才和投資都沒有以往那麼積極

套句老朋友說的:「工程師就是高階軍火,在有仗可打的時候才會顯得稀缺。」

在這樣的大環境下,iPlayground 還能繼續辦下去,真的要感謝主辦團隊的堅持,以及所有贊助商的支持。

從被邀稿到確定講題

受寵若驚的邀稿

那是在我剛開始新工作 onboard 的第一個月,收到了好朋友 DinDin 的訊息。他說籌備團隊內部討論時,有人對我 2020 年講的「隨機數」題目印象深刻,想邀請我今年再來分享。

我真的是受寵若驚。

被邀稿代表你過去的分享被認可,這種感覺很特別。但同時壓力也來了——既然是被邀請的,我一定要好好想個題目,不能辜負這個機會。

選題的過程

當時我對好幾個題目都很有興趣,大概列了五個候選:

  1. SwiftUI 進階應用:包含自定義 Layout、Preference Key 等進階技巧
  2. iOS 效能優化:從 Instruments 使用到實際案例分析
  3. Local LLM 在 iOS 的應用:如何在設備上運行大語言模型
  4. Combine vs Swift Concurrency:兩種非同步方案的比較與選擇
  5. App 架構演進:從 MVC 到 TCA 的思考歷程

我問了好幾個朋友的意見,也考慮了幾個因素:

技術趨勢:

  • AI 是現在最熱門的話題
  • Local LLM 正在快速發展
  • 這個方向的中文資料還不多

個人興趣:

  • 我最近正在研究這個技術
  • 有實際的 side project 在做
  • 對這個主題有熱情

聽眾價值:

  • 大家可能聽過 ChatGPT API,但不一定知道可以跑在本地
  • 實作細節有分享價值
  • Demo 效果應該會不錯

最後我決定講 Local LLM 在 iOS 的應用

準備議程的過程

技術研究階段(約 1 個月)

首先當然是要把技術搞懂。我研究了幾個主要的框架:

llama.cpp

  • C++ 寫的,效能最好
  • 有 iOS 的 binding
  • 社群活躍,更新快

GGML

  • llama.cpp 的底層引擎
  • 支援量化模型
  • 可以在 CPU 上高效運行

MLX

  • Apple 自己的機器學習框架
  • 對 Apple Silicon 優化
  • 但文件較少

最後我選擇了 llama.cpp,因為它的社群支援最好,而且有完整的 Swift 範例。

接著是模型選擇。我測試了幾個模型:

  • Llama 2 7B:太大,iPhone 跑不太動
  • Phi-2:Microsoft 的小模型,2.7B 參數,效果不錯
  • TinyLlama:1.1B 參數,速度快但智能有限

最後選擇 Phi-2 的量化版本(Q4_K_M),在效能和品質間取得平衡。

內容設計階段(約 2 週)

確定技術方案後,開始設計演講內容。我的結構是:

Part 1:為什麼要用 Local LLM?(5 分鐘)

  • 隱私考量:敏感資料不用上傳
  • 離線可用:沒網路也能用
  • 成本控制:不用付 API 費用
  • 即時回應:沒有網路延遲

Part 2:技術架構(10 分鐘)

  • llama.cpp 簡介
  • 模型量化的原理
  • iOS 整合方式
  • 記憶體管理策略

Part 3:實作細節(15 分鐘)

  • 如何載入模型
  • 如何進行推論
  • 如何處理串流輸出
  • 如何優化效能

Part 4:Demo 展示(5 分鐘)

  • 實際 App 展示
  • 回應速度測試
  • 離線功能驗證

Part 5:挑戰與未來(5 分鐘)

  • 遇到的技術難題
  • 效能瓶頸分析
  • 未來發展方向

簡報製作階段(約 1 週)

我的簡報設計原則:

  1. 視覺簡潔:每頁只有一個重點
  2. 程式碼清晰:使用語法高亮,關鍵部分標註
  3. 適度動畫:重要概念用動畫強調
  4. 實際截圖:用真實的 Xcode、Instruments 截圖

這次我特別用心做了幾個動畫:

  • 模型量化的過程視覺化
  • 推論流程的步驟展示
  • 記憶體使用的即時圖表

演練階段(約 1 週)

第一次演練:對著鏡子

  • 時間嚴重超時(講了 50 分鐘)
  • 講話太快,緊張明顯
  • 有些專有名詞不確定怎麼唸

第二次演練:錄影自己看

  • 發現很多口頭禪(「然後」、「就是」)
  • 有些地方講得不夠清楚
  • 時間控制進步了(45 分鐘)

第三次演練:找朋友聽

  • 朋友給了很寶貴的意見
  • 有些技術術語需要解釋
  • Demo 部分可以更互動

最終版本:

  • 控制在 40 分鐘(保留 Q&A 時間)
  • 語速適中,咬字清晰
  • 技術深度與易懂性平衡

活動當天的體驗

報到與準備

活動當天早上,我提早到了會場。看到工作人員已經在忙碌地準備,福氣哥和 DinDin 在確認各種細節。

講者休息室備有咖啡和點心,氣氛輕鬆。我趁機和其他講者聊了聊,發現今年的講者陣容真的很強:

  • 有在 Apple 工作的資深工程師
  • 有知名 open source 專案的維護者
  • 有創業成功的技術 leader
  • 也有很優秀的年輕開發者

能和這些人並列,我感到很榮幸,也有點壓力。

上台前的緊張

輪到我上台前 30 分鐘,我開始緊張了。雖然已經演練很多次,但面對幾百人還是會緊張。

我做了幾個深呼吸,在心裡默念了幾次開場白,檢查了 demo app 能不能正常運作。

DinDin 過來拍拍我的肩膀:「放輕鬆,你準備得很充分了。」

演講過程

站上台的那一刻,燈光打下來,我看到台下坐滿了人。

開場時聲音有點顫抖,但講了幾句後就進入狀況了。我發現只要專注在內容上,專注在想要傳達的訊息上,緊張感就會慢慢消失。

印象深刻的幾個時刻:

  1. 講到隱私保護時,看到很多人點頭表示認同
  2. 展示程式碼時,有人在拍照記錄
  3. Demo 展示時,看到大家專注的眼神
  4. 提到效能優化時,有人舉手提問

整個過程大概 38 分鐘,保留了 12 分鐘給 Q&A。

Q&A 環節

這是最讓我緊張的部分,因為不知道會被問什麼。但實際上問題都很有品質:

Q1:「模型更新怎麼處理?」 這是個好問題。我說明了可以透過 over-the-air update 機制,讓使用者下載新模型,而不用更新整個 app。

Q2:「在舊款 iPhone 上的效能如何?」 我坦承 iPhone 11 以前的機型會比較慢,建議這些機型可以降級使用更小的模型,或是提供雲端 API 作為備案。

Q3:「有沒有考慮用 CoreML?」 這是個技術性問題。我解釋了 CoreML 和 llama.cpp 的差異,CoreML 更適合做推論優化,但 llama.cpp 的彈性更高。

這些問題都很棒,也讓我重新思考了一些技術細節。

其他講者的精彩分享

今年的議程真的是眾星雲集,每一場都很精彩。幾個我印象特別深刻的:

SwiftUI 的進階技巧

有位講者深入講解了 SwiftUI 的 Layout protocol,展示了如何做出複雜的自定義版面。那些範例程式碼寫得非常漂亮,讓我學到很多。

Swift Concurrency 的陷阱

另一位講者分享了 async/await 的一些常見錯誤和最佳實踐。我自己也踩過幾個坑,看到他整理得這麼清楚,覺得很受用。

App 架構設計的演進

有位創業的講者分享了他們 app 從 MVVM 演進到 TCA 的過程,包含遇到的困難和解決方案。這種實戰經驗的分享最有價值。

Vision Pro 開發經驗

今年也有講者分享 Vision Pro 的開發心得。雖然我還沒有實際接觸,但聽他的分享,對空間運算有了更具體的想像。

社群交流的價值

Break Time 的價值

每次 iPlayground 我最期待的,其實是 break time。這是認識新朋友、和老朋友敘舊的最好時機。

這次我:

  • 認識了幾位剛入行的 iOS 開發者
  • 和幾年沒見的老朋友聊了近況
  • 收到了幾個關於演講的回饋
  • 交換了幾個有趣的技術想法

有位聽眾跟我說,他之前一直不知道可以在 iOS 上跑 LLM,聽完我的演講後決定回去試試看。這種回饋真的讓人很有成就感。

晚宴的輕鬆氛圍

活動結束後的講者晚宴,氣氛更加輕鬆。大家卸下了講者的身份,就是一群喜歡 iOS 開發的朋友在聊天。

我們聊了:

  • 各自的職涯規劃
  • 對 iOS 開發未來的看法
  • AI 對我們工作的影響
  • 有沒有想轉換跑道

這些對話讓我發現,原來不只是我在思考這些問題,大家都在面對相同的焦慮和期待。

講者的收穫與成長

技術上的收穫

準備過程強迫自己深入: 為了把 Local LLM 講清楚,我必須比自己學習時更深入地理解它。有些細節之前模模糊糊,為了準備演講就得搞懂。

Q&A 帶來新思考: 聽眾的問題讓我注意到一些之前沒想到的場景和問題。比如舊款機型的支援、模型更新機制等,這些都成為我後續改進的方向。

和其他講者的交流: 和其他講者聊技術,會發現很多不同的思路和解決方案。這種peer learning的價值很高。

表達能力的提升

更清晰的結構: 準備演講的過程,訓練了我如何把複雜的技術組織成清晰的結構。這個能力在工作中的技術分享、文件撰寫都很有幫助。

更精準的表達: 如何在有限時間內把重點講清楚,如何用淺顯的比喻解釋艱深的概念,這些都是很寶貴的訓練。

更從容的台風: 雖然上台前還是會緊張,但和第一次比起來已經從容很多。這種面對大眾演說的經驗,是在工作中很難獲得的。

人脈的拓展

認識更多同行: 作為講者,會有更多人主動來交流。這次認識了好幾位之前只在社群媒體上看到的朋友,也建立了一些新的連結。

業界的visibility: 在會議上分享,會提高在業界的能見度。後來有幾個公司的人來找我聊,甚至有 recruiter 看了演講後主動聯繫。

開源專案的貢獻者: 演講後,有幾個人對我的 demo 專案有興趣,加入了開發。這讓專案發展得更快,也認識了更多厲害的開發者。

給未來想成為講者的你

如果你也想在 iPlayground 或其他研討會分享,我有幾個建議:

投稿建議

1. 不要覺得自己不夠格 很多人覺得要當「大神」才能分享,其實不是。新手的視角、踩坑的經驗、小議題的深入探討,都是很有價值的內容。

2. 選你真正有興趣的題目 準備演講很花時間,如果不是真心有興趣的題目,很難堅持下去。而且你的熱情會感染聽眾。

3. 從小題目開始 不用一開始就挑戰很大的主題。一個小議題講得深入透徹,比大題目講得浮光掠影更有價值。

4. 準備充分的範例 實際的程式碼、demo、案例研究,遠比理論講解更有說服力。

準備建議

1. 提早開始準備 至少提前一個月開始準備。技術研究、內容設計、簡報製作、演練,每個階段都需要時間。

2. 多次演練 對著鏡子練、錄影自己看、找朋友當聽眾,每次演練都會發現新的問題。

3. 控制好時間 寧可講少一點,也不要超時。超時會壓縮到 Q&A 時間,也會影響下一位講者。

4. 準備 Plan B Demo 可能會出問題(Murphy’s Law),準備好錄影或截圖作為備案。

上台建議

1. 開場很重要 前 30 秒決定了聽眾的注意力。一個有趣的開場、一個切身的問題、一個驚人的數據,都是不錯的開場方式。

2. 和聽眾互動 適時問問題、做小調查、邀請討論,這些互動會讓演講更生動。

3. 講故事比講道理有效 技術分享不是學術論文,適當加入故事、案例、個人經驗,會讓內容更容易吸收。

4. 享受這個過程 緊張是正常的,但也要試著享受這個分享的過程。你的熱情會感染聽眾。

對未來的展望

iOS 開發的未來

雖然現在 Mobile 開發不再是最熱門的領域,但我相信 iOS 開發仍然有它的價值:

設備端 AI 的興起: 像我這次分享的 Local LLM,就是一個新的方向。未來會有更多 AI 功能在設備端運行。

隱私保護的重視: Apple 一直很重視隱私,這也是 iOS 的優勢。在隱私意識高漲的時代,這個優勢會更明顯。

生態系的完整性: iPhone、iPad、Mac、Apple Watch、Vision Pro,整個生態系的整合,仍然是 iOS 開發的獨特價值。

品質的要求: iOS 用戶對 app 品質的要求較高,這代表優秀的 iOS 開發者仍然有市場價值。

iPlayground 的未來

希望 iPlayground 能夠繼續辦下去,成為台灣 iOS 社群的年度盛事。

也希望更多人願意投稿、分享、參與。社群的活力來自每個人的貢獻。

結語

這次擔任 iPlayground 講者的經驗,對我來說是很寶貴的成長。

從準備到演講,從技術研究到表達訓練,從緊張上台到從容分享,每個階段都是學習。

更重要的是,我感受到了社群的溫暖。無論是主辦團隊的用心、聽眾的專注、講者間的交流,都讓我覺得,這個社群值得我們繼續投入

如果你也喜歡 iOS 開發,也想分享你的經驗,不要猶豫,投稿吧!

我們明年再見!


感謝:

  • 感謝福氣哥和籌備團隊的辛苦籌辦
  • 感謝 DinDin 的邀稿
  • 感謝所有來聽演講的朋友
  • 感謝所有讓 iPlayground 持續下去的人

大軍 2025-09-07