大語言模型的 Fine Tune 一直是大家很關注的問題,我們接下來的幾天就會實際帶大家在 Azure Machine Learning 上 Fine Tune 一個 llama 3.1 的模型,親自實驗過就知道 Fine Tune 的好壞了。
我們先分成兩種大語言模型的Fine Tune。第一個是 chat completion 的模型Fine Tune,第二個是文字產生圖片的大語言模型Fine Tune。
常見的 Chat Completion 模型是 GPT 系列模型(GPT-4o 等)、Anthropic 的 Claude ,Meta 的 Llama 家族等等。
數據的品質是 Fine Tune 過程中最核心的因素之一。即使是最先進的模型,如果用低品質或錯誤格式的數據進行 Fine Tune,也無法產生理想的效果。以產品型錄為例,若你希望 AI 幫助你回答客戶對於產品的問題,如果數據中存在格式錯誤或缺失,模型可能無法準確理解你的需求,從而導致結果偏差。光是把你的產品型錄整理成可以拿來 fine tune 的對話性質格式,真的就搞死你了。
其實 99.99% 的應用場景,應該要使用 RAG(Retrieval-Augmented Generation,檢索增強生成)技術可以比單純的Fine Tune更有效。RAG 技術通過結合檢索和生成,使模型在生成答案之前,能檢索到更多的相關資訊。再以產品型錄為例,若你希望 AI 幫助你回答客戶對於產品的問題,模型可以先檢索到相關的產品數據,再生成答案,這樣可以確保回答的答案更準確。
而且,把你的型錄做成了可以被檢索的形式,也就是向量資料,花的時間心力比較低,成本也會比較低。這個我們整套帶大家做完後,會來有個比較。對沒錯,我們會帶大家做 Fine Tune 和 RAG 的比較,滿足大家對於 Fine Tune 的想望。
OpenAI 給出下面的場景,建議可以 Fine Tune 模型。同時我也加上我實務上的經驗補充,希望可以讓讀者更有感。
提高可操控性:Fine Tune可以讓模型更好地遵循指令。例如,若你希望模型輸出簡潔的回應或總是使用特定語言(如德語),可以通過Fine Tune來確保這些需求。
可靠的輸出格式:一些應用程式要求一致的回應格式,如幫助生成程式碼或構建 API 呼叫。透過Fine Tune,開發者可以讓模型更可靠地將提示轉換為高品質的 JSON 片段,與現有的系統整合。不過現在有 structured_output 了,JSON 格式其實可以用這個來解決。建議是你的特殊格式再來 Fine Tune。
自定義語氣:企業可以使用Fine Tune來調整模型的語氣,使其更符合品牌的聲音風格。例如,有著強烈品牌聲音的公司可以透過Fine Tune,確保 AI 輸出的內容與品牌一致。尤其是 NSFW 的部份,一定要 Fine Tune
處理 edge case:對於一些難以用 prompt 解釋的特殊情況,可以通過學習多樣的例子來應對這些問題。但是你要評估你的 edge case 值不值得來做,如果把 NSFW視為 edge case 的話,那麼很值得 😅😅
減少提示長度並提升性能:透過Fine Tune,企業還可以縮短 API 請求中的提示長度,從而加快每次呼叫的速度並降低成本。這使得在大規模應用場景中,效率得以顯著提升。我們實務上,常常 prompt 會愈寫愈長,因為會根據真實用戶的反饋來調整結果。如果你的應用情境需要超長的 prompt,那麼可以計算 Fine Tune 是否值得。
邊緣運算的特定領域用途小模型:這種應用,基本上都要 Fine Tune 成你所需要的特定領域用途的形狀了。因為邊緣運算往往不太適合部署大的大語言模型,往往都是部署中小型的大語言模型,簡稱 SLM。
這類的大語言模型,微調效果往往顯著,尤其會用 LoRA 的手法來微調。
像我就曾經用我太太的照片,來微調 Stable Diffusion Model,讓它可以產生不同的我太太的圖片。
明天開始,我們就來 Fine Tune 吧!