前言
??微調模型通常比從零開始訓練一個模型的技術要求低。公司不需要擁有大量的深度學習專家,利用現有的開源工具和庫(如Hugging Face的Transformers等),中小型公司可以輕松地使用和微調大型模型,從而快速實現AI能力的集成。因此,學會微調大模型就很有必要。
1.微調方法
1.1 全參數微調
全參數微調是指預訓練模型的所有參數進行調整和優化,以使模型能夠適應特定任務。具體來說,就是通過訓練數據對預訓練模型的所有參數(包括權重和偏置等)進行微調,使其更好地執行目標任務。
1.2 部分參數微調
1.2.1 低秩適配(Low-Rank Adaptation, LoRA)
??LoRA方法通過引入低秩矩陣來代替全連接層中的權重更新。它通過對模型中的部分權重矩陣進行低秩分解,從而減少需要微調的參數量。
1.2.2 適配器方法(Adapters)
??適配器方法通過在預訓練模型中插入小型的適配器模塊,保持大部分原始模型的參數不變,只微調適配器模塊。這種方法顯著減少了需要微調的參數數量,同時保持了遷移能力。
1.2.3 Prompt Tuning(提示微調)
Prompt Tuning是通過優化輸入的“提示”或“前綴”來適應新任務,而不是微調模型的所有參數。這種方法特別適用于自然語言處理任務,在不修改模型本身的情況下,通過改變輸入格式來提高模型的任務適應性。
具體部分參數微調方法還有很多,感興趣的可以自己去探索。
2.實踐!!
網上得來終覺淺,絕知此事要躬行,光看理論不實踐,這不是耍流氓嗎??!!
推薦實踐項目:LLaMA-Factory
按照官網教程去安裝:
2.1 安裝環境
官網推薦的環境:
git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
conda create -n llama-lora python=3.10
conda activate llama-lora
pip install -e ".[torch,metrics]"
如果嫌太慢的話,可以換源去安裝。
安裝完成后,可以去校驗校驗教程網址
3. 注意事項
3.1.這里我llamafactory-cli train -h校驗的時候,報錯:
搜索發現是環境優先級問題:
sudo vim /etc/profile
# 將你的conda環境放到profile里面
export PATH="/home/hxgk/anaconda3/envs/lora-llama/bin:$PATH"
source /etc/profile
3.2 yaml文件配置
1.將LLaMA-Factory/examples/accelerate/fsdp_config.yaml第19行的num_processes設置成你的顯卡個數。
2.將LLaMA-Factory/examples/train_lora/llama3_lora_sft.yaml中的eval全部注釋掉,如圖所示:
兩個有一個沒設置都有可能出現:
sys.exit(load_entry_point(‘torch==2.5.1’, ‘console_scripts’, ‘torchrun’)())
…
torch.distributed.elastic.multiprocessing.errors.ChildFailedError:
這樣的報錯。
3.2 具體微調模型的顯存大小不能全信官網
官網數據:
我剛開始使用Llama3-8B,使用lora方法去微調模型(8張8g顯存顯卡),理論上只會使用16g-32g顯存,我64g顯存綽綽有余,結果直接報OOM,結果氣的我直接下載了llama-1B才成功微調。
總結
整體來說,LLaMA-Factory這個項目的坑不少,需要仔細一點,我現在也剛剛跑通,后續考慮制作自己的數據集,然后微調一個chatbox試試。