微調前的前置準備與介紹
微調模型跟 RAG 的差別
微調模型跟 RAG 的差別在於,RAG 是透過檢索機制從外部知識庫中獲取相關資訊,並將抓取的資訊與模型回覆結合。
微調則是讓知識能夠嵌入在模型本身,所以能夠針對特定領域去優化,讓模型成為該領域的專家。
所以假設你希望 LLM 能夠內建特定領域知識,並根據你當下的問題來回覆,就適合使用微調,但如果希望 LLM 能夠查詢並回應即時資訊,則適合使用 RAG。
說明目標
這次微調的模型是 DeepSeek R1 Distill Llama 8B,目標是讓模型在回覆時,以我平時撰寫社群貼文、部落格文章時常用的口吻回覆。
所以我希望能夠讓模型保有原本的知識量,只不過在回覆時能夠以我習慣的用語回覆,所以如果你也想根據自己的需求來微調模型,就需要調整一下我這次提供的模板。
前置準備
如果你也想試著一起微調模型,需要準備的有
- 註冊 HuggingFace 帳號,並拿到 API Key
- 微調所需的訓練資料
- Glows AI 帳號:透過註冊連結能夠免費拿到 10 Credit,剛好適合這次微調
- 這次有幫大家準備好模板,只需要調整參數即可使用
這次的訓練資料是我將之前的 Threads 社群貼文、部落格文章轉為問答,且使用 Alpaca 格式(Instruction + input + output)。
之後也會分享我是如何將這整個流程自動化的,不過如果你暫時只是想玩玩,且懶得調整代碼,也可以先到 HuggingFace 上搜尋 Alpaca 就可以找到相同格式的訓練資料。
但其實如果你有特定想使用的資料,也可以透過 ChatGPT 或 Claude 來幫你修改我提供的這份代碼,讓他符合你想使用的資料格式。
此外這次 Glows AI 提供給我的讀者只要註冊就可獲得 10 Credits,大約可以使用 2.5 小時的 RTX 4090,對於一次微調來說剛好足夠。
Glows.ai 平台介紹
這是我第一次微調模型,透過在這個平台,你可以很快的部署各種需要算力的服務,另外如果你是有在架設自己的 AI 服務,也能很彈性的擴展算力。
最喜歡的部分是相比其他雲平臺,他的介面算很簡單易用,從開 VM 到執行代碼,沒有過多繁雜的前置設定即可使用!

透過官方提供已設置好的模板與環境,你就可以更快部署架設各種服務,此外也可以將自己的應用快照儲存,就算暫停機器也可以保留原本的訓練資料與環境。
之後可以再重新啟用時保留原始文件,就不需要再從頭開始設置環境、抓取檔案。
Pricing
定價相比其他雲平臺也更便宜,此外也可以根據你的使用情境,彈性購買 Credit、根據你的 AI 服務用量自動調整算力資源!
而且現在一張 H100 售價約為 30,000 美元,如果是在 Glows.ai 上租用,一天約為 84 美元,可以租用一張 H100 約一年。
不過如果在初期就花太多錢在顯卡上顯然成本太高,對於資源有限的新創較不實際,另外當服務的算力需求上升,也無需購買額外顯卡,而是直接多租用一張顯卡會更加彈性。
訓練資料準備
這次使用的訓練資料是 Alpaca 格式,幫大家找了一個可以參考的訓練資料 HuggingFace Alpaca zh。
另外我這次的訓練資料則是透過將 WordPress、Threads 貼文結合 Gemini 生成的合成資料問答集,之後再來分享模板!
開始微調訓練
文末會放上模板讓大家可以複製使用!首先先到 Glows.ai 註冊帳號,註冊之後會看到有 10 點免費 Credit,點擊 Create New,選擇 img-9rp4yp3k(滑到底就看到了),在點擊 Complete Checkout。

之後等他一下,變成 Running 後,選擇 Access > Http Port > Open,打開之後會看到 JupyterLab 的介面。

選擇左上角的 Upload,將模板上傳上去,上傳成功後會看到左邊有顯示上傳的代碼文件,雙擊打開之後繼續,在開始前先過一次代碼,將參數調整成你的數值再開始。

首先是配置參數,在這步驟先將你的 HuggingFace 基本資訊貼上,像是 Username、API Token、Dataset Name、Model Name 設置好。
此外如果你是新手則不建議更動預計微調的模型,像是 DeepSeek R1 常見的蒸餾模型有 Qwen 與 Llama,兩者的訓練資料設置有些微不同,如果有更動後續的設定也要跟著調整。
參數部分則根據你的需求來設置,像是我這次的調整是希望維持原有知識下調整語氣,所以在學習率、MAX_STEPS 及其他參數設置都與此目標有關。
如果你是想要微調模型,讓其具備特定領域知識,我會建議先複製個 3 筆訓練資料樣本,加上提供這份的代碼去詢問 AI,並說明清楚你的需求,讓他協助你調整設置。
Ex. 我希望透過微調模型來達到 XXX,以下是我的訓練資料樣本 XXX,如果想達到該目標,有哪些參數需要調整等等的。
同時我也建議配置參數都可以問過一輪,才會知道根據你的需求,假設訓練出來不理想,可以調整哪些參數來接近目標。

接下來下一個需要查看的是 LoRA 參數,也是與訓練目標有關的調整參數,如果沒有要變更設定,那就維持原樣即可。

接下來是 Cell 9開始訓練,要特別注意的點有兩個,首先是 Training Loss 用來評估模型是否有充分學習你所提供的訓練資料知識,越低則代表學習越充分。
但也不是越低越好,當他跳動的幅度太大,可能會有過擬合(Over Fitting)的情況發生,也就是模型太沈浸在你提供的訓練資料中。
這樣的情況下,微調出的模型可能在回覆時鬼打牆,不斷重複你提供的資訊,這當然不是我們樂見的。不過,我們可以透過調整學習率、MAX STEP 等參數來優化。

接著在訓練完成後,一步步執行後續的流程,就會自動將你訓練好的模型上傳到 HuggingFace了,不過你可能會想問,要如何測試訓練好的模型?下一步驟接續!

測試模型
分別有兩種方法,第一種是下載 LM Studio,點擊左側 Discover 接著搜尋你的使用者名稱,就會顯示出你上傳的模型囉,不過這樣測試效率很慢,所以使用第二種!

Open Web UI
這時一樣會先打開 Glows.ai,選擇 RTX 4090、LLAMA-3.1 8B, WebUI,等待安裝完成後點擊 Http Port 的 Open,會看到註冊頁(這裡的註冊資料會在刪除虛擬機後一併移除,無需擔心)。
這樣做還有另一個好處是,如果你的網速沒有特別快,且只是想要測試模型,透過 Glows.ai 下載的速度很快,且不會佔用本地空間,可以測試到覺得模型微調符合效果在實際下載到本地端。

點擊右上角的頭像進入管理員控制台

選擇設定 > 模型 > 輸入前綴 hf.co/Username/Model_Name,並且在模型名稱後面加上 : 與模型參數,輸入完點擊右側下載。
範例:hf.co/unsloth/DeepSeek-R1-Distill-Llama-8B-GGUF:Q8_0

這裡的用戶名稱與模型名稱可以直接到 HuggingFace 上直接複製,模型參數會在右側顯示。

下載完後點擊左上角選擇模型,就可以開始測試效果囉,另外可以點擊右側的加號,一次測試多個模型在單一問題的表現如何。

實際測試訓練後的模型,我覺得是有一定的調整與效果,像是回覆更加口語化、且繁中用語都有與原先 DeepSeek 的回覆做出區別!
只不過由於訓練目標是與用詞習慣相關,原先問答集的知識使用的不夠完善,之後可能會想再針對這方面去優化,讓他保有大部分原先知識的同時結合問答集來回覆。

假設在測試後覺得效果不理想,就直接重跑一次流程測試直到結果滿意即可,另外可以使用 Jupyter Lab 左上的 Kernel 直接清除,即可重新開始,無需再次租用開新機器。
如果在訓練時有遇到任何問題都歡迎透過 Instagram 或 Discord 群組來交流!
討論