Skip to content

Latest commit

 

History

History
105 lines (69 loc) · 12.9 KB

File metadata and controls

105 lines (69 loc) · 12.9 KB

Open Source Models

微調您的大型語言模型(LLM)

使用大型語言模型來建立生成式 AI 應用程式帶來了新的挑戰。一個關鍵問題是確保模型對特定使用者請求所生成內容的回應品質(準確性和相關性)。在之前的課程中,我們討論了類似提示工程(prompt engineering)和檢索增強生成(retrieval-augmented generation)這些技術,試圖透過_修改現有模型的提示輸入_來解決這個問題。

在今天的課程中,我們將討論第三種技術,微調(fine-tuning),該技術試圖透過_使用額外資料再訓練模型本身_來解決挑戰。讓我們深入了解細節。

學習目標

本課程介紹了微調預訓練語言模型的概念,探討此方法的優點與挑戰,並提供指導說明何時及如何使用微調來提升生成式 AI 模型的效能。

完成本課程後,您應該能回答以下問題:

  • 什麼是語言模型的微調?
  • 什麼時候以及為何微調有用?
  • 我該如何微調一個預訓練模型?
  • 微調有什麼限制?

準備好了嗎?讓我們開始吧。

圖解指南

想在深入學習前先了解整體概要嗎?參考這份圖解指南,說明了本課程的學習旅程——從了解微調的核心概念與動機,到理解執行微調任務的流程與最佳實踐。這是一個相當有趣的主題,不要忘了查看資源頁面,獲取更多支援您自學之旅的連結!

Illustrated Guide to Fine Tuning Language Models

什麼是語言模型的微調?

按照定義,大型語言模型是透過大量來自網路等多元來源的文本進行_預訓練_。正如我們在先前課程中了解到的,我們需要提示工程和檢索增強生成等技術,來提升模型對使用者問題(「提示」)的回應品質。

一項常見的提示工程技巧是給模型更多指南以指定期望的回應形式,無論是透過提供_指示_(明確指導)還是_給予幾個範例_(隱含指導)。這稱為_少量示例學習(few-shot learning)_,但存在兩個限制:

  • 模型的 token 限制會限制您能提供的示例數量,並影響效果。
  • 模型 token 費用會讓每次提示添加示例變得昂貴,限制彈性。

微調是機器學習系統中的常見做法,我們會拿一個預訓練模型,並用新資料重新訓練,提升其在特定任務上的表現。在語言模型的情境中,我們可以透過_針對特定任務或應用領域精心挑選的範例進行微調_預訓練模型,從而建立一個自訂模型,使其在該特定任務或領域上更為準確且相關。微調的附帶好處還包括減少少量示例學習所需的範例數量,降低 token 使用與相關成本。

何時以及為何要微調模型?

在_這裡_所談的微調,是指監督式微調,也就是透過新增原訓練資料集中未包含的資料來重新訓練模型。這與一種非監督式微調不同,後者是對原始資料使用不同超參數進行重新訓練。

關鍵在於,微調是一項需要一定專業知識的進階技術,才能達成預期效果。若操作不當,可能不但無法改善,反而會降低模型在目標領域的表現。

因此,在您學習「如何」微調語言模型前,需先明白「為何」要採用這條路,以及「何時」開始微調的過程。先自問這些問題:

  • 使用案例:您的微調_使用案例_是什麼?您希望改善現有預訓練模型的哪部分?
  • 替代方案:您是否嘗試過_其他技術_來達成預期的效果?並用它們建立比較基準。
    • 提示工程:嘗試少量示例提示,提供相關提示回應範例,評估回應品質。
    • 檢索增強生成:嘗試利用檢索結果增強提示,並評估回應品質。
  • 成本:您是否評估過微調的成本?
    • 可調整性——預訓練模型是否支持微調?
    • 工作量——準備訓練資料、評估與優化模型所需的努力。
    • 計算資源——執行微調作業及部署微調後模型所需的計算能力。
    • 資料——是否有足夠且符合品質的範例來發揮微調效果。
  • 效益:您是否確認微調帶來的效益?
    • 品質——微調後的模型是否超越基準表現?
    • 成本——是否能透過簡化提示減少 token 使用?
    • 擴充性——是否可以用基礎模型拓展到新領域?

回答這些問題,您將能判斷微調是否適合您的使用案例。理想狀況下,只有當效益超過成本時,才應採用此法。決定進行後,接下來要思考_如何_微調預訓練模型。

想了解更多決策過程的洞見嗎?觀看要不要微調?

我們如何微調一個預訓練模型?

要微調一個預訓練模型,您需要具備:

  • 一個可微調的預訓練模型
  • 用於微調的資料集
  • 用於執行微調作業的訓練環境
  • 用於部署微調後模型的主機環境

微調實作

以下資源提供逐步教學,帶您使用精選模型和精心準備的資料集進行實際操作。要學習這些教學,您需要在特定服務商註冊帳號,並取得相關模型與資料集的存取權限。

服務商 教學連結 說明
OpenAI 如何微調聊天模型 學習如何針對特定領域(「食譜助理」)微調 gpt-35-turbo,包含準備訓練資料、執行微調作業與使用微調後模型進行推論。
Azure OpenAI GPT 3.5 Turbo 微調教學 學習如何在 Azure 上微調 gpt-35-turbo-0613 模型,步驟涵蓋創建與上傳訓練資料、執行微調作業、部署及使用新模型。
Hugging Face 使用 Hugging Face 微調大型語言模型 本篇部落格帶您使用 transformers 函式庫與 Transformer Reinforcement Learning (TRL),搭配 Hugging Face 上的開放資料集,微調 開放大型語言模型(如 CodeLlama 7B)。
🤗 AutoTrain 使用 AutoTrain 微調大型語言模型 AutoTrain(或 AutoTrain Advanced)是 Hugging Face 開發的 Python 庫,能針對多種任務微調模型,包括大型語言模型微調。AutoTrain 提供免程式碼解決方案,微調可在您的私有雲、Hugging Face Spaces 或本機完成,支援網頁圖形介面、指令列介面及 yaml 配置文件訓練。
🦥 Unsloth 使用 Unsloth 微調大型語言模型 Unsloth 是一個支持大型語言模型微調與強化學習(RL)的開源框架。Unsloth 使本地訓練、評估和部署流程簡便,提供可用的筆記本範例。同時支持文字轉語音(TTS)、BERT 和多模態模型。若要開始,請閱讀他們的逐步大型語言模型微調指南

作業

從上述教學中選擇一個,並跟著操作學習。我們可能會在此 repo 內的 Jupyter 筆記本中重現部分教學以供參考,請直接使用原始來源以取得最新版本

做得很好!繼續您的學習。

完成本課程後,瀏覽我們的生成式 AI 學習合集,持續提升您的生成式 AI 知識!

恭喜您!您已完成本課程 v2 系列的最後一課!別停止學習與實作。請查看資源頁面,了解更多本主題的額外建議。

我們的 v1 系列課程也已更新,包含更多作業與概念。花點時間重新複習您的知識,並歡迎分享您的問題與回饋 ,幫助我們為社群改進這些課程。


免責聲明
本文件係使用 AI 翻譯服務 Co-op Translator 進行翻譯。雖然我們致力於提供準確的翻譯,但自動翻譯結果可能包含錯誤或不準確之處。原始文件之母語版本應視為權威來源。對於重要資訊,建議尋求專業人工翻譯。我們不對因使用此翻譯而產生之任何誤解或誤釋承擔責任。