Apple Intelligence邊緣推理和模型隱私

Apple WWDC背後的技術, 例如邊緣推理是如何實現的, 使用者隱私怎麼保護的. 這個問題非常關鍵, 你看Musk對當前的邊緣推理和Private Cloud Compute並沒有反對, 只是反對OAI在OS Level呼叫API. 另一個層面來看,本質上Apple已經建構好了一個LLM OS的雛形.

那麼我們就來詳細探索一下Apple邊緣推理的實現,然後我在五六年前也因為GDPR等合規需求,當時在Cisco也實現了一套邊緣推理框架, 因此後面會給一點我個人的經驗和建議, 特別是雲端推理如何使用公有雲的問題以及端側模型個性化的問題, 最後留了一個彩蛋~嘻嘻~

1. Apple 邊緣推理框架
1.1 端側模型
1.2 伺服器端模型
1.3 模型最佳化
1.4 個性化FineTune
2. 端側推理最佳化
2.1 Flash & DRAM
2.2 減少資料傳輸量
2.3 提高傳輸吞吐量
3. 模型安全和私有雲端運算(PCC)
3.1 硬體架構和運行環境
3.2 資料安全
4.未來展望

1. Apple 邊緣推理框架

1.1 端側模型

《OpenELM: An Efficient Language Model Family with Open Training and Inference Framework》[1]這篇論文來看, 基本上就是一個很普通的LLM, Pre-Norm,Rope,SwiGLU, GQA,flashattention這些都有, 然後有一個小的創新點是Layer-wised Scaling:

這樣縮放看似很巧妙,但實際上這樣的結構會導致的問題是壓縮更厲害,可以參考Transformer need glasses, 相當於在較前面的layer態射的能力較弱, 而運算中一些數值誤差在後級放大.

另一個模型是跟UI相關的多模態《Ferret-UI: Grounded Mobile UI Understanding with Multimodal LLMs》[2]讓大模型理解螢幕上UI的組建和相應的使用者操作順序.

Ferret-UI 基於Ferret[3],Ferret是一個用於理解圖像內任何形狀和粒度內的細粒度的空間理解, 並精準的建立開放的詞彙描述, 很有可能IPad新的計算器也使用了這個模型

而Ferret-UI則是把一些UI操作的序列採用低分辯率圖像用於快速推理,最後產生按鍵相關的行為

例如尋找Widget/icon/List等元素

相當於原來大家用起來很不方便的“捷徑(Shortcuts)”應用通過多模態大模型處理了, 這也是新版本Siri的核心

1.2 伺服器模型

然後從Apple最近的一篇文章《Introducing Apple’s On-Device and Server Foundation Models》[4]來看端側模型詞表是49K,而伺服器端是100K

然後充分強調了全鏈路的隱私和模型安全的問題

框架是一個基於JAX/XLA的自研框架,估計是為了和各種算力匹配,以及和自己的伺服器晶片匹配, 預訓練基本上常見的DP/TP/SP,還有FSDP這些最佳化都有,就不展開了. 後面的對齊任務就大概講了一下.

1.3 模型最佳化

主要是針對推理的, 使用了混合2-bit/4-bit以及LoRA的策略.然後比較有趣的事他們開發的延遲和功耗評估分析工具Talaria[5]

基本任務評估看上去還行?


1.4 個性化FineTune

這是一個很有意思的功能

針對日常的使用者行為建構了一個小的神經網路可以進行微調

通過僅微調介面卡層,基本預訓練模型的原始參數保持不變,保留模型的一般知識,同時定製介面卡層以支援特定任務。

2. 端側推理最佳化

端側推理最佳化來自於論文《LLM in a flash: Efficient Large Language Model Inference with Limited Memory》[6]

2.1 Flash & DRAM

端側的統一記憶體架構如下:

Flash的容量大頻寬低, 片上GPU和CPU互聯頻寬也不是很高, DRAM的大小也只有10GB. 因此模型無法全部載入到記憶體中,還要考慮一些功耗的問題.

2.2 減少資料傳輸量

首先是將Attention和Embedding的參數常駐記憶體中, 這就是Selective Persistence Strategy, 然後MLP層的處理來自於論文《Deja Vu: Contextual Sparsity for Efficient LLMs at Inference Time》[7]的思路,進行稀疏性預測剪枝

然後就是滑動窗口的方法

2.3 提高傳輸吞吐量

儲存Layout上進行最佳化,提高讀取吞吐

然後就是一些主動的記憶體管理

3. 模型安全和私有雲端運算(PCC)

3.1 硬體架構和運行環境

PCC採用了Apple自訂的晶片, 聯絡到訓練用的JAX/XLA框架來看, 應該是整個訓推一體到端側完全統一了軟體棧. 然後和iPhone一樣支援Secure Enclave 和 Secure Boot這些安全技術, 同時針對大模型推理工作對作業系統也做了增強

3.2 資料安全

採用了完全無狀態的計算模式, 當然不要因為一個無狀態又和Serverless容器啥的扯上了, 本質上是資料處理完了就刪除. 然後蘋果對於如何營運一個Cloud寫了很多, 例如如何避免特權, 避免各種日誌, 避免使用者資料洩漏等, 發佈每個生產 PCC 版本的二進制映像的同時,為了進一步幫助研究,還會定期發佈安全關鍵的 PCC 原始碼的子集. 還有相應的安全賞金計畫.

4. 未來展望

雖然模型本身和相應的功能不怎麼樣,但是蘋果整套端雲協同的方案是值得學習的, 同時針對每個使用者的一些習慣建構的adpater小型的可以FineTune的神經網路也是值得關注的.

蘋果的一些操作的任務可能還有一些不同, 例如如何讓大模型記住一個“捷徑”而不用讓終端使用者去複雜組態這些的行為FineTune要和Ferret-UI結合還是有些工作的, 大概想到的一種演算法是一些使用者行為時間序列的擬合, 通過旁路的神經網路來修改反饋給主網路的Attention?

另一個值得考慮的問題是, 蘋果這套系統要在國內營運, 前期似乎有些傳聞出來會用某家的大模型, 但是針對PCC這些,蘋果在國內是否能夠放置相應的伺服器呢?

然後我們再切過來,對於Android生態怎麼處理呢? 可能這是國內一眾手機廠商正在努力追趕的一個賽道吧? 這裡公有雲應該可以承接一些針對每個客戶的端側模型FineTune的需求,以及更大規模Server端模型的推理需求. (資訊平權)