📗iOS 本地 AI:Foundation Models framework 延伸資料

本系列關於 Foundation Models framework 的相關文章即將完結。說明有哪些延伸探索的方向、各種參考資源,並預告把目前所學遷移到其他語言模型。

關於 Foundation Models framework,還有很多進階內容可以談。不過我撰寫這個系列專題的目的,是帶讀者自己上手體驗。目前的篇幅,我覺得已經達到目的了。

以下,我會整理一些可以進一步研究的方向,以及整理好的學習素材,供有興趣的朋友參考。

值得研究的功能與方向

節省重複的結構化輸入

如果你的 Prompt 已經提供了期望輸出的結構,則可以使用 includeSchemaInPrompt: false 節省重複的輸入。請參考 Code Along 文章的 6.2: Optimizing the prompt。

探索 GenerationOptions

除了 sampling: .greedy 以外,我沒有針對 GenerationOptions 多做介紹。裡面有一些使用模型的參數,包含 SamplingMode、temperature、maximumResponseTokens。

加強多語言使用者體驗

Foundation Models 雖然支援中文以及多種語言,但是英文的表現會最好。並且如果提示詞裡面出現了英文,它很有可能會「不小心」輸出英文的結果。

如果你有照著我的文章在寫 AIPlayground,應該會發現我幾乎都是用中文在寫 Prompt@Guide,甚至還有 User locale: zh-Hant-tw 的字句(這是我跟 Jane 學的。影片連結在下方),因為我只想要看到中文的結果。

實際上,通常 App 要支援多種使用者語言,所以 AI 生成的結果也應該要對應使用者的語言。這是個使用 LLM 時很重要的議題,會有不少挑戰。如果你要開始支援多語言,我建議先從官方文件讀起。

使用模型做分類標籤

如果你使用 Foundation Models 的目的是要幫內容標分類標籤,那麼宣告 model 時可以寫成 let model = SystemLanguageModel(useCase: .contentTagging)。更多細節請參考官方文件

回饋模型生成的結果

如果你想要蒐集 Foundation Models 的使用者回饋,內建的 logFeedbackAttachment() 方法(有 3 種變化)可以直接打包對話紀錄跟回饋反應。

不過 Apple 做這個機制主要是希望透過 Feedback Assistant 回饋,來改進模型。還有,打包的內容會有完整的對話紀錄,所以一定要經過使用者同意

訓練自己的 Adapter 並套用到 Foundation Models

如果你熟悉語言模型的原理,應該知道可以使用 adapter 去調整模型輸出的權重,得到更好的輸出結果。

Foundation Models 也支援 adapter,不過實務上會非常麻煩。我覺得這是萬非不得已才要去考慮的事情。原因如下: