柚子快報(bào)激活碼778899分享:Llama 3 模型微調(diào)的步驟
柚子快報(bào)激活碼778899分享:Llama 3 模型微調(diào)的步驟
環(huán)境準(zhǔn)備
操作系統(tǒng):Ubuntu 22.04.5 LTS
Anaconda3:Miniconda3-latest-Linux-x86_64
GPU: NVIDIA GeForce RTX 4090 24G
Step 1. 準(zhǔn)備conda環(huán)境
創(chuàng)建一個(gè)新的conda環(huán)境:
conda create --name llama_factory python=3.11
激活剛剛創(chuàng)建的conda環(huán)境:
conda activate llama_factory
Step 2. 下載LLaMA-Factory的項(xiàng)目文件
下載LLama_Factory源碼:
git clone https://github.com/hiyouga/LLaMA-Factory.git
Step 3. 升級(jí)pip版本
建議在執(zhí)行項(xiàng)目的依賴安裝之前升級(jí) pip 的版本,如果使用的是舊版本的 pip,可能無法安裝一些最新的包,或者可能無法正確解析依賴關(guān)系。升級(jí) pip 很簡(jiǎn)單,只需要運(yùn)行命令如下命令:
python -m pip install --upgrade pip
Step 4. 使用pip安裝LLaMA-Factory項(xiàng)目代碼運(yùn)行的項(xiàng)目依賴
pip install -r requirements.txt --index-url https://mirrors.huaweicloud.com/repository/pypi/simple
Step 5. Llama3模型下載
在~/ai-test/創(chuàng)建如下目錄:
mkdir model
存放模型文件
cd model
可以從下面地址中下載模型文件,這里我們從ModelScope來下載
huggingface Llama3模型主頁:
https://huggingface.co/meta-llama/
Github主頁:
https://github.com/meta-llama/llama3/tree/main
ModelScope Llama3-8b模型主頁:
https://www.modelscope.cn/models/LLM-Research/Meta-Llama-3-8B-Instruct/summary
git clone https://www.modelscope.cn/LLM-Research/Meta-Llama-3-8B-Instruct.git
Step 6. 運(yùn)行原始模型
切換到LLama_Factory目錄下
cd ~/ai-test/LLaMA-Factory
CUDA_VISIBLE_DEVICES=0 python src/web_demo.py \
--model_name_or_path /home/oneview/ai-test/model/Meta-Llama-3-8B-Instruct \
--template llama3 \
--infer_backend vllm \
--vllm_enforce_eager
訪問http://127.0.0.1:8000輸入“你好,請(qǐng)介紹下你自己”,可以發(fā)現(xiàn)模型還不具備中文處理能力,后面我們將用中文數(shù)據(jù)集對(duì)模型進(jìn)行微調(diào)。 通過上述步驟就已經(jīng)完成了LLaMA-Factory模型的完整私有化部署過程。
接下來是微調(diào)的步驟
Step 1. 查看微調(diào)中文數(shù)據(jù)集數(shù)據(jù)字典
我們找到./LLaMA-Factory目錄下的data文件夾: 查看dataset_info.json:
找到當(dāng)前數(shù)據(jù)集名稱:alpaca_zh。數(shù)據(jù)集情況如下:
Step 2. 創(chuàng)建微調(diào)腳本
切換到./LLaMA-Factory目錄,創(chuàng)建一個(gè)名為single_lora_llama3.sh的腳本(腳本的名字可以自由命名)。
#!/bin/bash
export CUDA_DEVICE_MAX_CONNECTIONS=1
export NCCL_P2P_DISABLE="1"
export NCCL_IB_DISABLE="1"
# 如果是預(yù)訓(xùn)練,添加參數(shù) --stage pt \
# 如果是指令監(jiān)督微調(diào),添加參數(shù) --stage sft \
# 如果是獎(jiǎng)勵(lì)模型訓(xùn)練,添加參數(shù) --stage rm \
# 添加 --quantization_bit 4 就是4bit量化的QLoRA微調(diào),不添加此參數(shù)就是LoRA微調(diào) \
CUDA_VISIBLE_DEVICES=0 python src/train_bash.py \ ## 單卡運(yùn)行
--stage sft \ ## --stage pt (預(yù)訓(xùn)練模式) --stage sft(指令監(jiān)督模式)
--do_train True \ ## 執(zhí)行訓(xùn)練模型
--model_name_or_path /home/oneview/ai-test/model/Meta-Llama-3-8B-Instruct \ ## 模型的存儲(chǔ)路徑
--dataset alpaca_zh \ ## 訓(xùn)練數(shù)據(jù)的存儲(chǔ)路徑,存放在 LLaMA-Factory/data路徑下
--template llama3 \ ## 選擇Qwen模版
--lora_target q_proj,v_proj \ ## 默認(rèn)模塊應(yīng)作為
--output_dir /home/oneview/ai-test/Llama3/output \ ## 微調(diào)后的模型保存路徑
--overwrite_cache \ ## 是否忽略并覆蓋已存在的緩存數(shù)據(jù)
--per_device_train_batch_size 2 \ ## 用于訓(xùn)練的批處理大小??筛鶕?jù) GPU 顯存大小自行設(shè)置。
--gradient_accumulation_steps 64 \ ## 梯度累加次數(shù)
--lr_scheduler_type cosine \ ## 指定學(xué)習(xí)率調(diào)度器的類型
--logging_steps 5 \ ## 指定了每隔多少訓(xùn)練步驟記錄一次日志。這包括損失、學(xué)習(xí)率以及其他重要的訓(xùn)練指標(biāo),有助于監(jiān)控訓(xùn)練過程。
--save_steps 100 \ ## 每隔多少訓(xùn)練步驟保存一次模型。這是模型保存和檢查點(diǎn)創(chuàng)建的頻率,允許你在訓(xùn)練過程中定期保存模型的狀態(tài)
--learning_rate 5e-5 \ ## 學(xué)習(xí)率
--num_train_epochs 1.0 \ ## 指定了訓(xùn)練過程將遍歷整個(gè)數(shù)據(jù)集的次數(shù)。一個(gè)epoch表示模型已經(jīng)看過一次所有的訓(xùn)練數(shù)據(jù)。
--finetuning_type lora \ ## 參數(shù)指定了微調(diào)的類型,lora代表使用LoRA(Low-Rank Adaptation)技術(shù)進(jìn)行微調(diào)。
--fp16 \ ## 開啟半精度浮點(diǎn)數(shù)訓(xùn)練
--lora_rank 4 \ ## 在使用LoRA微調(diào)時(shí)設(shè)置LoRA適應(yīng)層的秩。
注:實(shí)際腳本文件最好不要出現(xiàn)中文備注,否則容易出現(xiàn)編輯格式導(dǎo)致的問題。
然后為了保險(xiǎn)起見,我們需要對(duì)齊格式內(nèi)容進(jìn)行調(diào)整,以滿足Ubuntu操作系統(tǒng)運(yùn)行需要(此前是從Windows系統(tǒng)上復(fù)制過去的文件,一般都需要進(jìn)行如此操作):
sed -i 's/\r$//' ./single_lora_llama3.sh
Step 3. 運(yùn)行微調(diào)腳本,獲取模型微調(diào)權(quán)重
當(dāng)我們準(zhǔn)備好微調(diào)腳本之后,接下來即可圍繞當(dāng)前模型進(jìn)行微調(diào)了。這里我們直接在命令行中執(zhí)行sh文件即可,注意運(yùn)行前需要為該文件增加權(quán)限:
chmod +x ./single_lora_llama3.sh
./single_lora_llama3.sh
當(dāng)微調(diào)結(jié)束之后,我們就可以在當(dāng)前主目錄下看到新的模型權(quán)重文件:
Step 4. 合并模型權(quán)重,獲得微調(diào)模型
接下來我們需要將該模型權(quán)重文件和此前的原始模型權(quán)重文件進(jìn)行合并,才能獲得最終的微調(diào)模型。LlaMa-Factory中已經(jīng)為我們提供了非常完整的模型合并方法,同樣,我們只需要編寫腳本文件來執(zhí)行合并操作即可,即llama3_merge_model.sh。同樣,該腳本文件也可以按照此前single_lora_llama3.sh腳本相類似的操作,就是將課件中提供的腳本直接上傳到Jupyter主目錄下,再復(fù)制到LlaMa-Factory主目錄下進(jìn)行運(yùn)行。
首先簡(jiǎn)單查看llama3_merge_model.sh腳本文件內(nèi)容:
#!/bin/bash
python src/export_model.py \ ## 用于執(zhí)行合并功能的Python代碼文件
--model_name_or_path /home/oneview/ai-test/model/Meta-Llama-3-8B-Instruct \ ## 原始模型文件
--adapter_name_or_path /home/oneview/ai-test/Llama3/output \ ## 微調(diào)模型權(quán)重文件
--template llama3 \ ## 模型模板名稱
--finetuning_type lora \ ## 微調(diào)框架名稱
--export_dir /home/oneview/ai-test/Llama3/output_lora \ ## 合并后新模型文件位置
--export_size 2 \
--export_legacy_format false
注:實(shí)際腳本文件最好不要出現(xiàn)中文備注,否則容易出現(xiàn)編輯格式導(dǎo)致的問題。
然后運(yùn)行腳本,進(jìn)行模型合并:
./llama3_merge_model.sh
接下來即可查看剛剛獲得的新的微調(diào)模型:
Step 5. 測(cè)試微調(diào)效果
切換到LLama_Factory目錄下
cd ~/ai-test/LLaMA-Factory
CUDA_VISIBLE_DEVICES=0 python src/web_demo.py \
--model_name_or_path /home/oneview/ai-test/Llama3/llama3_lora \
--template llama3 \
--infer_backend vllm \
--vllm_enforce_eager
運(yùn)行如下:端口可能有所不同
訪問http://127.0.0.1:8000
可以看到,現(xiàn)在的回答已經(jīng)是中文
原文博客地址:https://www.cnblogs.com/hlgnet/articles/18148788
柚子快報(bào)激活碼778899分享:Llama 3 模型微調(diào)的步驟
參考文章
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。