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