使用大型語言模型來構建生成式人工智能應用帶來了新的挑戰。關鍵問題在於確保模型根據用戶請求生成內容的回應質量(準確性和相關性)。在之前的課程中,我們討論了通過_修改現有模型的提示輸入_來解決這一問題的技術,如提示工程與檢索增強生成。
在今天的課程裡,我們將討論第三種技術,微調,它通過_使用額外數據重新訓練模型本身_來解決此挑戰。讓我們深入了解細節。
本課程介紹了微調預訓練語言模型的概念,探討了此方法的優勢與挑戰,並提供了何時以及如何使用微調來提升生成式人工智能模型性能的指導。
完成本課程後,你應該能回答以下問題:
- 什麼是語言模型的微調?
- 何時且為什麼微調是有用的?
- 如何微調一個預訓練模型?
- 微調有哪些限制?
準備好了嗎?我們開始吧。
想先了解本課程將涵蓋的整體內容嗎?查看此圖解指南,它描述了學習旅程——從學習微調的核心概念和動機,到理解執行微調任務的流程和最佳實踐。這是一個引人入勝的主題,別忘了查看資源頁面,獲取更多自學支持鏈接!
根據定義,大型語言模型是在來自多元來源(包括互聯網)的大量文本上進行_預訓練_的。正如我們在之前課程中學到的,我們需要像_提示工程_和_檢索增強生成_等技術來提升模型對用戶問題(「提示」)回應的質量。
一種流行的提示工程技術是通過提供_指令_(明確引導)或_給予幾個示例_(隱性引導)來給模型更多關於期望回應的指南。這被稱為_少量示例學習_,但它有兩個限制:
- 模型的令牌限制會限制你可提供範例的數量,進而影響效果。
- 模型的令牌成本會使每次提示增加示例變得昂貴,限制靈活性。
微調是機器學習系統中常用的做法,我們會對一個預訓練模型使用新數據重新訓練,以提升其在特定任務上的性能。在語言模型的背景下,我們可以用_針對特定任務或應用領域精心挑選的示例集_對預訓練模型進行微調,以創建一個專屬模型,使其對該特定任務或領域更加準確且相關。微調的一個附帶好處是,它還能減少少量示例學習所需的示例數量——降低令牌使用量及相關成本。
在_本文脈_中,我們談論的微調指的是監督式微調,即通過添加原始訓練數據集中未包含的新數據來重新訓練。這與無監督微調不同,後者是用不同超參數對原始數據重新訓練模型。
需要記住的關鍵是:微調是一項高級技術,需要一定專業知識才能得到理想結果。如果操作不當,可能無法帶來預期改善,甚至會降低模型在目標領域的性能。
因此,在學習「如何」微調語言模型之前,還需要了解「為什麼」要採用此路徑,以及「何時」開始微調過程。從問自己以下問題開始:
- 使用案例:你要微調的_使用案例_是什麼?你希望改善當前預訓練模型的哪個方面?
- 替代方案:你嘗試過_其他技術_來達到目標嗎?用它們創建基線以作比較。
- 提示工程:嘗試使用帶有相關回應範例的少量示例提示技術。評估回應質量。
- 檢索增強生成:嘗試用檢索自數據的查詢結果來增強提示。評估回應質量。
- 成本:你評估過微調的成本嗎?
- 可調整性——預訓練模型是否支持微調?
- 工作量——準備訓練數據、評估和優化模型所需的努力。
- 計算資源——執行微調作業和部署微調模型所需資源。
- 數據——是否有足夠高質量的示例以影響微調效果。
- 效益:你確認過微調的收益嗎?
- 質量——微調後模型是否優於基線?
- 成本——是否通過簡化提示降低了令牌使用?
- 擴展性——是否能將基礎模型再用於新領域?
通過回答這些問題,你應該能決定微調是否適合你的使用案例。理想情況下,只有當效益大於成本時,此方法才合理。一旦決定繼續,接下來就是思考_如何_微調預訓練模型。
想獲得更多關於決策過程的見解?觀看 微調還是不微調
要微調預訓練模型,你需要準備:
- 一個可微調的預訓練模型
- 用於微調的數據集
- 執行微調作業的訓練環境
- 部署微調後模型的托管環境
以下資源提供逐步教學,帶你實作使用特定模型與精選數據集進行微調的真實示例。要完成這些教程,你需要擁有相應提供商的帳號,並能訪問相關的模型和數據集。
| 提供商 | 教程 | 描述 |
|---|---|---|
| OpenAI | 如何微調聊天模型 | 學習如何為特定領域(「食譜助理」)微調 gpt-35-turbo,包括準備訓練數據、運行微調作業,以及使用微調後模型進行推理。 |
| Azure OpenAI | GPT 3.5 Turbo 微調教程 | 學習如何在 Azure 上微調 gpt-35-turbo-0613 模型,包含創建及上傳訓練數據、運行微調作業、部署和使用新模型。 |
| Hugging Face | 使用 Hugging Face 微調 LLM | 本博客文章示範如何利用 transformers 庫及 Transformer Reinforcement Learning (TRL) 對開源 LLM(例如 CodeLlama 7B)微調,並使用 Hugging Face 平台上的開放 數據集。 |
| 🤗 AutoTrain | 使用 AutoTrain 微調 LLM | AutoTrain(或 AutoTrain Advanced)是 Hugging Face 開發的 Python 库,支持多種任務的微調,包括 LLM 微調。AutoTrain 是無需編碼的解決方案,微調可在自有雲端、Hugging Face Spaces 或本地完成。支持基於網頁的 GUI、CLI 及 YAML 配置文件訓練。 |
| 🦥 Unsloth | 使用 Unsloth 微調 LLM | Unsloth 是一個開源框架,支持 LLM 微調和強化學習(RL)。Unsloth 透過現成的筆記本簡化本地訓練、評估和部署流程。它還支持文本轉語音(TTS)、BERT 及多模態模型。開始使用請參考他們一步步的LLM 微調指南。 |
選擇上述其中一個教程並實際操作一遍。我們可能會在此倉庫內使用 Jupyter Notebook 複製這些教程作參考,請直接使用原始資源以獲取最新版本。
完成本課程後,查看我們的生成式 AI 學習合集以持續提升你的生成式 AI 知識!
恭喜你!你已完成本課程的 v2 系列最終課程!別停止學習與構建。**查看資源頁面,獲取關於此主題的更多建議列表。
我們的 v1 系列課程也已更新,增加了更多作業與概念。花點時間回顧你的知識,並請分享你的問題與反饋,助我們為社群改進這些課程。
免責聲明:
本文件由 AI 翻譯服務 Co-op Translator 進行翻譯。雖然我們力求準確,但請注意自動翻譯可能包含錯誤或不準確之處。原始文檔的母語版本應視為權威來源。對於重要資訊,建議聘請專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤釋概不負責。

