模型微調-基于LLaMA-Factory進行微調的一個簡單案例
- 1. 租用云計算資源
- 2. 拉取 LLaMa-Factory
- 3. 安裝依賴環境
- 4. 啟動 LLaMa-Factory 界面
- 5. 從 Huggingface 下載模型
- 6. 模型驗證
- 7. 模型微調
1. 租用云計算資源
以下示例基于 AutoDL 云計算資源。
在云計算平臺選擇可用的云計算資源實例,如果有4090實例可用,推薦選擇4090實例。同時注意鏡像的選擇,所以鏡像會包含特定的環境,省去一些基礎環境的安裝步驟,不過這里鏡像在實例啟動之后也可以進行切換。
創建實例之后,通過SSH連接遠程服務器
這里我使用 VS Code的 Remote-SSH 插件進行連接,連接進去之后可以看到實例中有兩個盤,其中/root/autodl-tmp是數據盤,推薦運行環境、模型文件都放在數據盤,避免后續因為實例關機回收導致數據文件丟失。
2. 拉取 LLaMa-Factory
LLaMa-Factory 的 git 地址如下,通過 git 命令拉取
git clone https://github.com/hiyouga/LLaMA-Factory.git
3. 安裝依賴環境
LLaMa-Factory 依賴 Python 特定版本,這里使用 Conda 來進行 Python 虛擬環境管理,大語言模型相關的框架對運行環境的依賴比較嚴重,推薦通過虛擬環境進行隔離。
而在創建虛擬環境之前,推薦設置一下 Conda 虛擬環境和 Python 包的保存路徑,還是那個原因,避免因為云計算資源回收導致數據丟失。
mkdir -p /root/autodl-tmp/conda/pkgs
conda config --add pkgs_dirs /root/autodl-tmp/conda/pkgs
mkdir -p /root/autodl-tmp/conda/envs
conda config --add envs_dirs /root/autodl-tmp/conda/envs/
之后創建虛擬環境:
conda create -n llama-factory python=3.10
虛擬環境創建完成之后,通過以下命令初始化以下Conda,并刷新一下命令行環境變量,再激活環境:
conda init
source ~/.bashrc
conda activate llama-factory
之后進入 LLaMa-Factory 文件夾,通過以下命令進行 LLaMa-Factory 相關依賴包的安裝
pip install -e ".[torch,metrics]"
安裝完成之后,通過以下命令測試一下 LLaMa-Factory 是否正常安裝:
llamafactory-cli version
4. 啟動 LLaMa-Factory 界面
通過以下命令啟動 LLaMa-Factory 可視化微調界面:
llamafactory-cli webui
通過 VS Code 中的 Remote-SSH 插件連接云服務器的情況,啟動可視化界面之后,Remote-SSH 會自動進行端口轉發,從而自動在本地瀏覽器打開相應的頁面。如果是其他工具的話,可能需要在云平臺配置一下相應的端口,之后通過云平臺暴漏出來的域名打開。
5. 從 Huggingface 下載模型
首先創建一個文件夾用于存放模型文件:
mkdir hugging-face
增加環境變量,修改 HuggingFace 鏡像源為國內鏡像網站:
export HF_ENDPOINT=https://hf-mirror.com
修改模型默認存儲路徑:
export HF_HOME=/root/autodl-tmp/hugging-face
之后還是切換到 llama-factory 虛擬環境,安裝 HuggingFace官方下載工具:
pip install -U huggingface_hub
安裝完成之后,通過以下命令下載模型:
huggingface-cli download --resume-download Qwen/Qwen2.5-0.5B-Instruct
這里為了下載和后面的微調演示快點就下載0.5B的模型了,具體的模型大家可以根據實際情況去選擇自己需要的模型,在huggingface上搜索模型名稱,之后進入模型主頁,復制名稱即可:
模型文件都比較大,在線下載的話需要等待一段時間,下載完成之后,可以看到模型文件就在 hugging-face 文件夾下了。
在線下載比較占用時間,而云服務器開機每一分鐘都需要花錢,你可以在本地下載模型文件之后傳到云服務器上。這時候可以通過 AutoDL 提供的 Jupyter 工具進行文件上傳,或者通過其他帶有SFTP功能的工具連接云服務器上傳。
6. 模型驗證
下載完成模型之后,我們需要驗證模型文件是否可以正常加載、運行,可以通過 LLaMa-Factory 的可視乎界面加載運行模型:
需要注意的是,加載本地模型的時候,需要修改填寫模型本地路徑,這里的路徑是模型快照的唯一哈希值,而不是模型文件夾的路徑。
之后就可通過和模型進行對話,測試下載下來的模型是否正常了,也可以看下對話中模型輸出的風格,和我們微調之后的做下對比。
7. 模型微調
接下來就可以通過 LLaMa-Factory 進行微調了,這里先做一個簡單的演示,為了不讓這篇文章篇幅過長,先不具體講解各種微調參數的含義和作用,數據集也只使用 LLaMa-Factory 自帶的示例數據集,演示一下對模型認知設定的微調。
修改一下默認的 identity.json 數據集,將其中的{{name}}、{{author}}替換為我們自己的設定,并保存文件。
之后在 LLaMa-Factory Web界面中加載預覽數據集,并且稍微調整一下超參,主要是學習率先保存不變,主要是訓練輪次,以及驗證集比例。
后續如果需要使用我們自定義的數據集的話,也只要將數據集文件放到 LLaMa-Factory 的 data 文件夾,再在 dataset_info.json 中進行配置,就可以在 Web 界面進行加載使用。這里就先不細說了。
之后點擊開始,可以看到微調任務的執行進度,以及損失函數的變化情況。
0.5B 的模型,再加上數據集數據量不多,只有不到100條,所以微調過程還是很快的,可以看到最終的損失函數降到了 0.5 左右。不過這是因為訓練數據太少,而且一些超參設置比較不合理,才有這樣的較低損失函數,實際微調用于生產環境的模型時,要注意防止過擬合的情況。
之后,還是用 LLaMa-Factory 加載微調之后的模型文件進行測試,這里通過檢查點路徑添加剛剛訓練完成的模型文件:
之后就可以和我們微調之后的模型進行對話了
可以看到,微調之后的模型已經學習了數據集中的信息,可以按照我們預設的人設回答問題。
參考文檔:
LLama-Factory 官方文檔