說明模型訓練涉及到較多的專業知識, 這里以Llama 2的LoRA微調為例給出一版示例。
1. 模型微調簡介
由于基礎大模型參數量極多, 訓練需要的資源量極大, 因此基于基礎大模型進行微調的小模型應運而生。 LoRA技術便是其中最主流的一種。
LoRA小模型無法獨立使用, 需要在加載完基礎大模型后再進行加載, 對基礎大模型的能力進行擴展。
已有LoRA模型如何加載可參考文本生成模型使用最佳實踐。
(1) 準備訓練數據
支持多種格式, 主要分為格式化數據與原始文本數據。
格式化數據以alpaca-chat-format為例, 數據以json方式進行組織, 每條數據分為instruction,input, output三個部分。
原始文本數據直接將文章或對話的原文作為輸入, 框架自動進行切分和訓練。
下面以普通txt文本文件為例, 介紹后續訓練過程。
(2) 上傳數據到云主機
windows系統使用命令提示符, macos/linux系統使用終端, 執行scp命令將數據文件上傳到云主機的/root/text-generation-webui/training/datasets目錄下。
scp [本機文件路徑] root@[ip]:/root/text-generation-webui/training/datasets
(3) 訓練參數配置
必填: Name,
Text file選擇剛才上傳的文件。
其他參數的設定需要有足夠的背景知識, 這里不做詳細介紹, 您可自行學習模型訓練時的基本參數。
(4) 啟動訓練
在啟動前保證Model頁已經Load過基礎模型。
注意Llama 2-7b模型的訓練默認fp16精度大約消耗18G顯存, 入門款T4顯卡機型無法支持, 需要在加載基礎模型時選擇load-in-8bit以降低內存占用。
點擊頁面右下方 Start LoRA Training按鈕, 下方將會出現提示文字, 等待模型完成訓練與保存。
注意1.在此階段您可能會遇到各類問題導致訓練失敗, 建議參考大模型學習機服務啟停文檔中關于打印服務日志的內容。?常見例如: 中文不是utf8編碼, 顯存不足等。
2.由于huggingface.io網站訪問受限, 學習機在啟動服務時需要檢查是否在啟動腳本run.sh里寫入了export HF_HUB_OFFLINE=1, 否則在訓練啟動和結束時都會自動訪問huggingface網站導致超時失敗。
3.完成訓練后的基礎模型已經被訓練影響,?需要重新reload一次基礎模型以恢復初始狀態。
(5) 加載微調過的模型
完成訓練后, LoRA小模型會被保存到/root/text-generation-webui/loras目錄下。
回到Model頁, 右側LoRA標簽下選擇剛才訓練出的模型并點擊Apply LoRAs按鈕, 在基礎大模型之上加載LoRA小模型。
本次示例我們采用了西游記原文的前100行作為訓練數據, 在不加載LoRA小模型前, 生成效果以英文為主。
加載我們訓練的LoRA小模型后, 生成內容風格貼合西游記原文。