自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

大模型三階段訓(xùn)練方法(LLaMa Factory) 原創(chuàng)

發(fā)布于 2024-12-10 12:32
瀏覽
0收藏

前言

本章我們將通過 LLaMA-Factory 具體實(shí)踐大模型訓(xùn)練的三個(gè)階段,包括:預(yù)訓(xùn)練、監(jiān)督微調(diào)和偏好糾正。

大模型訓(xùn)練回顧

大模型三階段訓(xùn)練方法(LLaMa Factory)-AI.x社區(qū)

訓(xùn)練目標(biāo)

訓(xùn)練一個(gè)醫(yī)療大模型

訓(xùn)練過程實(shí)施

準(zhǔn)備訓(xùn)練框架

??LLaMA Factory??是一款開源低代碼大模型微調(diào)框架,集成了業(yè)界最廣泛使用的微調(diào)技術(shù),支持通過Web UI界面零代碼微調(diào)大模型,目前已經(jīng)成為開源社區(qū)內(nèi)最受歡迎的微調(diào)框架,GitHub星標(biāo)超過2萬。

運(yùn)行環(huán)境要求

  • ?硬件:
  • GPU:推薦使用24GB顯存的顯卡或者更高配置
  • 軟件:
  • python:3.10
  • pytorch:2.1.2 + cuda12.1
  • 操作系統(tǒng):Ubuntu 22.04

推薦選擇DSW官方鏡像:??modelscope:1.14.0-pytorch2.1.2-gpu-py310-cu121-ubuntu22.04??

下載訓(xùn)練框架

第一步:登錄ModelScope平臺(tái),啟動(dòng)PAI-DSW的GPU環(huán)境,并進(jìn)入容器。

第二步:在容器中,通過命令行拉取代碼。

# 拉取代碼
git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git

# 進(jìn)入代碼目錄
cd LLaMA-Factory

# 安裝依賴
pip install -e ".[torch,metrics]"

第三步:檢查環(huán)境是否安裝成功。

llamafactory-cli version

正常安裝成功顯示如下:

大模型三階段訓(xùn)練方法(LLaMa Factory)-AI.x社區(qū)

  1. 如果安裝不成功,需要根據(jù)提示信息進(jìn)行逐個(gè)問題解決。
  2. 一般情況下,在ModelScope平臺(tái)中,一般會(huì)出現(xiàn)??Keras??? 版本不匹配的問題,可以運(yùn)行??pip install tf-keras??解決。

第四步:進(jìn)行端口映射命令 由于阿里云平臺(tái)的端口映射似乎存在問題,這會(huì)導(dǎo)致啟動(dòng)LLaMA Factory的Web界面顯示異常,所以需要手動(dòng)在命令行運(yùn)行如下命令:

export GRADIO_SERVER_PORT=7860 GRADIO_ROOT_PATH=/${JUPYTER_NAME}/proxy/7860/

第五步:命令行下運(yùn)行命令,啟動(dòng)WebUI界面

llamafactory-cli webui

啟動(dòng)后,點(diǎn)擊返回信息中的http://0.0.0.0:7860,可以看到Web界面。

大模型三階段訓(xùn)練方法(LLaMa Factory)-AI.x社區(qū)

準(zhǔn)備訓(xùn)練模型

選擇模型

在開展大模型訓(xùn)練之前,由于我們不能從零開始訓(xùn)練一個(gè)大模型(時(shí)間及資源都不允許!),所以我們需要選擇一個(gè)已經(jīng)訓(xùn)練好的模型,作為基礎(chǔ)模型進(jìn)行訓(xùn)練。

在ModelScope平臺(tái),我們選擇??Qwen2-0.5B??模型作為底座模型。

下載模型

第一步:拉取代碼

git clone https://www.modelscope.cn/qwen/Qwen2-0.5B.git

第二步:在??LLaMA-Factory??下創(chuàng)建models目錄,方便后續(xù)模型都維護(hù)在該目錄下。

第三步:移動(dòng)模型目錄到??LLaMA-Factory???的??models??目錄下。

LLaMA-Factory/
|-models/
    |-Qwen2-0.5B/

驗(yàn)證模型

第一步:在??LLaMA-Factory??的WebUI界面,進(jìn)行相關(guān)配置。

  • Model name:??Qwen2-0.5B??
  • Model path:??models/Qwen2-0.5B??

??models/Qwen2-0.5B??? 對(duì)應(yīng) ??下載模型?? 第三步中的路徑。由于Linux系統(tǒng)是大小寫敏感,所以需要特別注意頁面配置路徑與實(shí)際路徑大小寫要保持一致。

第二步:切換Tab為 ??Chat??? , 點(diǎn)擊 ??Load model??按鈕。 模型加載成功后,會(huì)顯示如下界面。

大模型三階段訓(xùn)練方法(LLaMa Factory)-AI.x社區(qū)

如果出現(xiàn)錯(cuò)誤,可以通過切換到啟動(dòng)??LLaMA Factory??的命令行查看日志信息排查問題。

第三步:在Chat的對(duì)話框中,輸入簡(jiǎn)單信息驗(yàn)證模型能否使用。

大模型三階段訓(xùn)練方法(LLaMa Factory)-AI.x社區(qū)

由于當(dāng)前加載的??Qwen2-0.5B??是一個(gè)基礎(chǔ)模型,所以其對(duì)話能力會(huì)非常弱,這里我們主要是驗(yàn)證模型加載的整體流程是否通順。

第1階段:預(yù)訓(xùn)練

?由于大模型的預(yù)訓(xùn)練需要數(shù)千個(gè)GPU并持續(xù)數(shù)月的時(shí)間,所以一般情況下實(shí)際工作中并不會(huì)涉及到預(yù)訓(xùn)練,本篇文章我們只做的簡(jiǎn)單流程體驗(yàn)。

準(zhǔn)備訓(xùn)練數(shù)據(jù)

說明:LLaMa-Factory的Github上有訓(xùn)練數(shù)據(jù)格式的詳細(xì)說明,請(qǐng)見README_zh。

  • 預(yù)訓(xùn)練數(shù)據(jù)格式:??[
    {"text""document"},
    {"text""document"}
    ]?
    ?
  • 數(shù)據(jù)集樣例

按照數(shù)據(jù)集樣例,我們準(zhǔn)備如下的自定義預(yù)訓(xùn)練數(shù)據(jù)集,保存到??data/custom_pt_train_data.json??。

[
  {"text":"患者在過去的五年中多次出現(xiàn)頭痛癥狀。"},
{"text":"研究表明,適量運(yùn)動(dòng)有助于改善心血管健康。"},
{"text":"高血壓患者需定期監(jiān)測(cè)血壓水平。"},
{"text":"糖尿病患者應(yīng)注意飲食控制和胰島素使用。"},
{"text":"流感疫苗每年接種可以有效預(yù)防流感。"},
{"text":"保持良好的睡眠習(xí)慣對(duì)心理健康至關(guān)重要。"},
{"text":"慢性咳嗽可能是肺部疾病的早期征兆。"},
{"text":"定期體檢可以幫助早期發(fā)現(xiàn)健康問題。"},
{"text":"心理咨詢對(duì)緩解焦慮和抑郁癥狀有效。"},
{"text":"飲食中增加纖維素有助于消化系統(tǒng)健康。"},
{"text":"適量飲水對(duì)維持身體正常功能非常重要。"},
{"text":"戒煙可以顯著降低患肺癌的風(fēng)險(xiǎn)。"},
{"text":"高膽固醇水平可能導(dǎo)致心臟病。"},
{"text":"保持健康體重有助于降低多種疾病風(fēng)險(xiǎn)。"},
{"text":"心理健康與身體健康密切相關(guān)。"},
{"text":"兒童應(yīng)定期進(jìn)行視力和聽力檢查。"},
{"text":"老年人易患骨質(zhì)疏松癥,需注意補(bǔ)鈣。"},
{"text":"過度飲酒會(huì)對(duì)肝臟造成嚴(yán)重?fù)p害。"},
{"text":"心臟病患者應(yīng)遵循醫(yī)生的治療方案。"},
{"text":"良好的飲食習(xí)慣可以改善生活質(zhì)量。"},
{"text":"運(yùn)動(dòng)可以幫助減少壓力和焦慮。"},
{"text":"戒煙后,肺部功能會(huì)逐漸恢復(fù)。"},
{"text":"高血糖可能導(dǎo)致多種并發(fā)癥。"},
{"text":"定期鍛煉有助于提高免疫力。"},
{"text":"適量的社交活動(dòng)可以提高生活滿意度。"},
{"text":"健康的生活習(xí)慣可以改善整體健康狀況。"},
{"text":"心理健康教育應(yīng)引起全社會(huì)的重視。"}
]

注冊(cè)自定義數(shù)據(jù)

根據(jù)LLaMa-Factory的README,我們需要在??dataset_info.json??中按照以下格式注冊(cè)自定義的數(shù)據(jù)集。

  • 數(shù)據(jù)集注冊(cè)格式:??"數(shù)據(jù)集名稱": {
    "file_name""data.json",
    "columns": {
      "prompt""text"
    }
    }?
    ?

我們?cè)??data/dataset_info.json??中添加如下數(shù)據(jù)集:

"custom_pt_train_data": {
  "file_name": "custom_pt_train_data.json",
  "columns": {
    "prompt": "text"
  }
}

大模型三階段訓(xùn)練方法(LLaMa Factory)-AI.x社區(qū)

預(yù)覽訓(xùn)練數(shù)據(jù)

在 LLaMa-Factory的WebUI界面上,選擇Dataset為 ??custom_pt_train_data???,點(diǎn)擊??Preview dataset??按鈕,預(yù)覽數(shù)據(jù)集。

大模型三階段訓(xùn)練方法(LLaMa Factory)-AI.x社區(qū)

配置訓(xùn)練參數(shù)

  • Model name:??Qwen2-0.5B??
  • Model path:??models/Qwen2-0.5B??
  • Finetuning method:??full??
  • Stage :??Pre-Training??
  • Dataset:??custom_pt_train_data??? ,??c4_demo???,??wikipedia_zh??
  • Output dir:??Qwen2_pretrain_output_demo1??

參數(shù)簡(jiǎn)要說明:

  • ??Finetuning method??代表微調(diào)的方法:

??full??: 完全微調(diào)模型的所有參數(shù)。

??Freeze??:凍結(jié)模型的某些層或所有層,僅微調(diào)特定的參數(shù)。

??LoRA (Low-Rank Adaptation)??:在不改變?cè)寄P蛥?shù)的情況下,通過添加少量的可訓(xùn)練參數(shù)來適應(yīng)新任務(wù)。

  • ??Stage?? 代表訓(xùn)練的階段:
  • ??Pre-Training??: 預(yù)訓(xùn)練階段。
  • ??Supervised Fine-Tuning??: 微調(diào)階段。
  • ??Reward Model??: 獎(jiǎng)勵(lì)模型是一個(gè)過程,通過構(gòu)建一個(gè)模型來預(yù)測(cè)給定輸入的獎(jiǎng)勵(lì)值,通過訓(xùn)練獎(jiǎng)勵(lì)模型,可以為后續(xù)的強(qiáng)化學(xué)習(xí)提供一個(gè)目標(biāo)。
  • ??PPO (Proximal Policy Optimization)??: PPO是一種強(qiáng)化學(xué)習(xí)算法,旨在優(yōu)化策略(即模型的行為),以最大化預(yù)期獎(jiǎng)勵(lì)。
  • ??DPO (Direct Preference Optimization)??: DPO是一種直接優(yōu)化偏好的方法,通常用于根據(jù)人類反饋直接調(diào)整模型的輸出。
  • ??KTO (Knowledge Transfer Optimization)??: KTO指的是知識(shí)遷移優(yōu)化,旨在從一個(gè)任務(wù)或模型中遷移知識(shí)到另一個(gè)任務(wù)或模型。

啟動(dòng)訓(xùn)練

點(diǎn)擊??Preview Command???預(yù)覽命令行無誤后,點(diǎn)擊??Start??即可開啟訓(xùn)練。

如果啟動(dòng)訓(xùn)練失敗,可以通過切換到啟動(dòng)??LLaMA Factory??的命令行查看日志信息排查問題。 例如:我首次啟動(dòng)時(shí)報(bào)錯(cuò)如下:

# ConnectionError: Couldn't reach 'pleisto/wikipedia-cn-20230720-filtered' on the Hub (ConnectionError)

這個(gè)問題是因?yàn)榧虞dwikipedia-cn-20230720-filtered數(shù)據(jù)集時(shí),由于網(wǎng)絡(luò)問題,導(dǎo)致無法加載。因此,本著將訓(xùn)練流程跑通,我將數(shù)據(jù)集改為??wiki_demo??后運(yùn)行,即可正常訓(xùn)練。

正常訓(xùn)練過程:

大模型三階段訓(xùn)練方法(LLaMa Factory)-AI.x社區(qū)

第2階段:監(jiān)督微調(diào)

準(zhǔn)備訓(xùn)練數(shù)據(jù)

??SFT?? 的數(shù)據(jù)格式有多種,例如:Alpaca格式、OpenAI格式等。

其中Alpaca格式如下:

[
  {
"instruction":"human instruction (required)",
"input":"human input (optional)",
"output":"model response (required)",
"system":"system prompt (optional)",
"history":[
["human instruction in the first round (optional)","model response in the first round (optional)"],
["human instruction in the second round (optional)","model response in the second round (optional)"]
]
}
]

根據(jù)以上的數(shù)據(jù)格式,我們?cè)贛odelScope的數(shù)據(jù)集找到中文醫(yī)療對(duì)話數(shù)據(jù)-Chinese-medical-dialogue符合上述格式。

# 在data目錄下使用git命令拉取數(shù)據(jù)集
git clone https://www.modelscope.cn/datasets/xiaofengalg/Chinese-medical-dialogue.git

注冊(cè)自定義數(shù)據(jù)

在??dataset_info.json??中添加如下數(shù)據(jù)集:

"custom_sft_train_data":{
"file_name":"Chinese-medical-dialogue/data/train_0001_of_0001.json",
"columns":{
"prompt":"instruction",
"query":"input",
"response":"output"
}
},

預(yù)覽訓(xùn)練數(shù)據(jù)

通過??Preview dataset??按鈕預(yù)覽數(shù)據(jù)集。

大模型三階段訓(xùn)練方法(LLaMa Factory)-AI.x社區(qū)

配置訓(xùn)練參數(shù)

  • Model name:??Qwen2-0.5B??
  • Model path:??saves/Qwen2-0.5B/full/Qwen2_pretrain_output_demo1??
  • Finetuning method:??full??
  • Stage :??Supervised Fine-Tuning??
  • Dataset:??custom_sft_train_data??
  • Output dir:??Qwen2_sft_output_demo1??

配置參數(shù)說明:

  • ??Model path??:我們選擇第1階段預(yù)訓(xùn)練模型的輸出目錄。
  • ??Stage???:這一階段,因?yàn)槲覀円M(jìn)行微調(diào),選擇??Supervised Fine-Tuning??。
  • ??Output dir???: 更換一個(gè)新的輸出路徑,以便后續(xù)開展第3階段訓(xùn)練,例如:??Qwen2_sft_output_demo1??

啟動(dòng)訓(xùn)練

點(diǎn)擊??Preview Command??預(yù)覽命令行

llamafactory-cli train 
--stage sft 
--do_train True
--model_name_or_path saves/Qwen2-0.5B/full/Qwen2_pretrain_output_demo1
--preprocessing_num_workers 16
--finetuning_type full 
--template default 
--flash_attn auto 
--dataset_dir data 
--dataset custom_sft_train_data 
--cutoff_len 1024
--learning_rate 5e-05
--num_train_epochs 3.0
--max_samples 100000
--per_device_train_batch_size 2
--gradient_accumulation_steps 8
--lr_scheduler_type cosine 
--max_grad_norm 1.0
--logging_steps 5
--save_steps 100
--warmup_steps 0
--optim adamw_torch 
--packing False
--report_to none 
--output_dir saves/Qwen2-0.5B/full/Qwen2_sft_output_demo1
--bf16 True
--plot_loss True
--ddp_timeout 180000000
--include_num_input_tokens_seen True

補(bǔ)充說明:

  • ??--logging_steps 5??: 每 5 步記錄一次訓(xùn)練日志。
  • ??--save_steps 100??: 每 100 步保存一次模型檢查點(diǎn)。

這里最好將??save_steps?? 設(shè)置大一點(diǎn),否則訓(xùn)練過程會(huì)生成非常多的訓(xùn)練日志,導(dǎo)致硬盤空間不足而訓(xùn)練終止。

命令行確認(rèn)無誤后,點(diǎn)擊??Start??即可開啟訓(xùn)練。

大模型三階段訓(xùn)練方法(LLaMa Factory)-AI.x社區(qū)

訓(xùn)練過程中,記得實(shí)時(shí)關(guān)注資源的消耗情況:

  • 顯存:使用??watch -n 1 nvidia-smi?? 實(shí)時(shí)查看顯存開銷。
  • 硬盤:使用??watch -n 1 df -h /mnt?? 實(shí)施查看/mnt分區(qū)的磁盤使用情況。

歷時(shí)5小時(shí)30分鐘后,模型終于訓(xùn)練完畢。(大模型的訓(xùn)練果然是一個(gè)燒錢??的過程)

驗(yàn)證模型

  1. 在LLaMA Factory的WebUI界面上,切換至??Chat??界面
  2. Model path: 輸入剛才訓(xùn)練模型的輸出目錄,即??saves/Qwen2-0.5B/full/Qwen2_sft_output_demo1??
  3. 其他配置保持默認(rèn)不變;
  4. 點(diǎn)擊??Load model??,待模型加載成功后,輸入看病相關(guān)的信息,測(cè)試模型的能力。

大模型三階段訓(xùn)練方法(LLaMa Factory)-AI.x社區(qū)

第3階段:偏好糾正

準(zhǔn)備訓(xùn)練數(shù)據(jù)

  • 糾正偏好數(shù)據(jù)格式:??[
    {
      "instruction""human instruction (required)",
      "input""human input (optional)",
      "chosen""chosen answer (required)",
      "rejected""rejected answer (required)"
    }
    ]?
    ??按照上述數(shù)據(jù)格式,我們借助其他的大模型生成20條訓(xùn)練數(shù)據(jù)并保存到??data/custom_rlhf_train_data.json???。??[
    {
    "instruction":"請(qǐng)?zhí)峁┮环N常見的感冒藥。",
    "input":"我需要一種能緩解咳嗽的藥。",
    "chosen":"感冒藥如對(duì)乙酰氨基酚可以緩解癥狀。",
    "rejected":"我不知道有什么藥。"
    },
    {
    "instruction":"解釋一下高血壓的危害。",
    "input":"高血壓對(duì)身體有什么影響?",
    "chosen":"高血壓會(huì)增加心臟病和中風(fēng)的風(fēng)險(xiǎn)。",
    "rejected":"高血壓沒什么大不了的。"
    },
    {
    "instruction":"推薦一種健康的飲食習(xí)慣。",
    "input":"我想減肥,應(yīng)該吃什么?",
    "chosen":"建議多吃水果和蔬菜,減少糖分?jǐn)z入。",
    "rejected":"只吃沙拉就可以了。"
    },
    {
    "instruction":"描述糖尿病的癥狀。",
    "input":"糖尿病有什么明顯的癥狀?",
    "chosen":"常見癥狀包括口渴、頻繁排尿和疲勞。",
    "rejected":"沒有什么特別的癥狀。"
    },
    {
    "instruction":"如何預(yù)防流感?",
    "input":"我應(yīng)該怎么做才能不得流感?",
    "chosen":"接種流感疫苗和勤洗手是有效的預(yù)防措施。",
    "rejected":"只要不出門就行了。"
    },
    {
    "instruction":"解釋一下心臟病的風(fēng)險(xiǎn)因素。",
    "input":"心臟病的危險(xiǎn)因素有哪些?",
    "chosen":"包括高血壓、高膽固醇和吸煙。",
    "rejected":"心臟病與生活方式無關(guān)。"
    },
    {
    "instruction":"如何緩解焦慮?",
    "input":"我感到很焦慮,有什么建議?",
    "chosen":"嘗試深呼吸練習(xí)和規(guī)律鍛煉。",
    "rejected":"焦慮沒什么好擔(dān)心的。"
    },
    {
    "instruction":"推薦一些適合老年人的鍛煉方式。",
    "input":"老年人適合什么運(yùn)動(dòng)?",
    "chosen":"散步、游泳和太極都是很好的選擇。",
    "rejected":"老年人不需要運(yùn)動(dòng)。"
    },
    {
    "instruction":"解釋什么是過敏反應(yīng)。",
    "input":"過敏反應(yīng)是什么?",
    "chosen":"是免疫系統(tǒng)對(duì)某些物質(zhì)的異常反應(yīng)。",
    "rejected":"過敏反應(yīng)就是感冒。"
    },
    {
    "instruction":"如何保持心理健康?",
    "input":"我應(yīng)該怎么照顧自己的心理健康?",
    "chosen":"定期與朋友交流和尋求專業(yè)幫助是很重要的。",
    "rejected":"心理健康不重要。"
    },
    {
    "instruction":"描述高膽固醇的影響。",
    "input":"高膽固醇對(duì)身體有什么影響?",
    "chosen":"可能導(dǎo)致動(dòng)脈硬化和心臟病。",
    "rejected":"高膽固醇沒什么影響。"
    },
    {
    "instruction":"如何識(shí)別抑郁癥?",
    "input":"抑郁癥的癥狀有哪些?",
    "chosen":"包括持續(xù)的悲傷、失去興趣和疲憊感。",
    "rejected":"抑郁只是心情不好。"
    },
    {
    "instruction":"建議如何提高免疫力。",
    "input":"我想增強(qiáng)免疫力,有什么建議?",
    "chosen":"保持均衡飲食、充足睡眠和適量運(yùn)動(dòng)。",
    "rejected":"吃藥就能提高免疫力。"
    },
    {
    "instruction":"講解什么是癌癥篩查。",
    "input":"癌癥篩查是什么?",
    "chosen":"是通過檢測(cè)早期發(fā)現(xiàn)癌癥的過程。",
    "rejected":"癌癥篩查沒必要。"
    },
    {
    "instruction":"如何處理壓力?",
    "input":"我壓力很大,怎么辦?",
    "chosen":"可以嘗試冥想和時(shí)間管理技巧。",
    "rejected":"壓力是正常的,不必處理。"
    },
    {
    "instruction":"解釋什么是肥胖。",
    "input":"肥胖是什么?",
    "chosen":"是體重超過健康范圍的狀態(tài),通常由多種因素造成。",
    "rejected":"肥胖只是吃得多。"
    },
    {
    "instruction":"如何進(jìn)行健康檢查?",
    "input":"健康檢查包括什么?",
    "chosen":"通常包括體檢、血液檢查和必要的影像學(xué)檢查。",
    "rejected":"健康檢查不重要。"
    },
    {
    "instruction":"推薦一些抗氧化的食物。",
    "input":"哪些食物富含抗氧化劑?",
    "chosen":"藍(lán)莓、堅(jiān)果和綠茶都是很好的選擇。",
    "rejected":"抗氧化食物沒什么特別。"
    },
    {
    "instruction":"解釋什么是慢性病。",
    "input":"慢性病是什么?",
    "chosen":"是長期存在且通常無法完全治愈的疾病。",
    "rejected":"慢性病就是普通病。"
    }
    ]?
    ?

注冊(cè)自定義數(shù)據(jù)

在??dataset_info.json???中,注冊(cè)新添加的??custom_rlhf_train_data.json??數(shù)據(jù)集。

"custom_rlhf_train_data":{
"file_name":"custom_rlhf_train_data.json",
"ranking":true,
"columns":{
"prompt":"instruction",
"query":"input",
"chosen":"chosen",
"rejected":"rejected"
}
},

配置訓(xùn)練參數(shù)

第三階段有兩種訓(xùn)練方式:??Reward Model??? + ??PPO??? 和 ??DPO??,這兩種方式我們都做一下嘗試。

策略1:??Reward Model??? + ??PPO??

第一步:先訓(xùn)練Reward Model

  • Finetuning method: 選擇??lora??? (因?yàn)槭怯?xùn)練補(bǔ)丁,所以此處一定要選擇為??lora??)
  • Stage: 選擇??Reward Modeling??
  • Dataset: 選擇剛才上傳??custom_rlhf_train_data.json??
  • Output dir:設(shè)置一個(gè)新的輸出目錄,例如:??Qwen2_rm_output_demo1??

訓(xùn)練完畢后,會(huì)在save下生成一個(gè)補(bǔ)丁。

大模型三階段訓(xùn)練方法(LLaMa Factory)-AI.x社區(qū)

第二步:通過??PPO???+第一步訓(xùn)練時(shí)的??Reward Model??,具體配置方法為:

  • Finetuning method: 選擇??lora??? (因?yàn)槭怯?xùn)練補(bǔ)丁,所以此處一定要選擇為??lora??)
  • Stage: 選擇??Supervised Fine-tuning??
  • Dataset: 由于這一過程本質(zhì)是??SFT???訓(xùn)練,所以數(shù)據(jù)集選擇??custom_sft_train_data.json??。
  • Reward model: 在??RLHF configurations???中,設(shè)置為第一步訓(xùn)練的輸出目錄,即??Qwen2_rm_output_demo1??
  • Output dir:設(shè)置一個(gè)新的輸出目錄,例如:??Qwen2_ppo_output_demo1??

訓(xùn)練完畢后,同樣會(huì)在save下生成一個(gè)補(bǔ)丁。

第三步:將Lora補(bǔ)丁與原始模型合并導(dǎo)出

  1. 切換到??Chat??標(biāo)簽下
  2. Model path: 選擇第二階段的輸出,即:??saves/Qwen2-0.5B/full/Qwen2_sft_output_demo1??
  3. Checkpoint path: 選擇上面第二步的輸出,即??Qwen2_ppo_output_demo1??
  4. 點(diǎn)擊??Load model??,待模型加載成功后,測(cè)試模型
  5. 切換至??Export??標(biāo)簽下
  6. Export path:設(shè)置一個(gè)新的路徑,例如??Qwen2_final_output_demo1??
  7. 點(diǎn)擊??Export??按鈕

最終,會(huì)在LLaMa Factory中,生成導(dǎo)出的目錄文件,該文件即為最終訓(xùn)練的模型。

大模型三階段訓(xùn)練方法(LLaMa Factory)-AI.x社區(qū)

策略2:直接使用??DPO??訓(xùn)練

第一步:直接配置??DPO??訓(xùn)練參數(shù)

  • Finetuning method: 選擇??lora??
  • Stage: 選擇??DPO??
  • Dataset: 選擇剛才上傳??custom_rlhf_train_data.json??
  • Output dir:設(shè)置一個(gè)新的輸出目錄,例如:??Qwen2_dpo_output_demo1??

訓(xùn)練完畢后,會(huì)在save下生成一個(gè)補(bǔ)丁。

第二步:將Lora補(bǔ)丁與第二階段訓(xùn)練的模型輸出合并導(dǎo)出。(該步驟與上面策略1的方法類似,此處不再贅述)

至此,經(jīng)過大模型的三個(gè)階段,我們完成了一個(gè)醫(yī)療大模型的訓(xùn)練。

附錄

TeleChat-PTD數(shù)據(jù)集

如果涉及到從零開始訓(xùn)練大模型的話,預(yù)訓(xùn)練數(shù)據(jù)集可以參考了解 ??TeleChat-PTD?? 數(shù)據(jù)集。

數(shù)據(jù)集簡(jiǎn)介

  • TeleChat-PTD是由電信星辰大模型TeleChat預(yù)訓(xùn)練語料中抽取出的的綜合性大規(guī)模中文數(shù)據(jù)集。
  • 數(shù)據(jù)集地址:https://modelscope.cn/datasets/TeleAI/TeleChat-PTD
  • 數(shù)據(jù)集規(guī)模:2.7億
  • 數(shù)據(jù)集類型:純中文文本構(gòu)成
  • 數(shù)據(jù)集來源:網(wǎng)頁、書籍、官方媒體等
  • 數(shù)據(jù)集大?。涸即笮〖s1TB,壓縮后480G,共189個(gè)文件。

數(shù)據(jù)集特點(diǎn)

  • 該數(shù)據(jù)集是以??JSON Lines??? 格式??(.jsonl)??存儲(chǔ)的,每一行都是一個(gè)獨(dú)立的 JSON 對(duì)象。
  • 每個(gè)??JSON??? 對(duì)象包含一個(gè)鍵為??"data"??? 的字段:??{
    "data""文本內(nèi)容"
    }?
    ?

數(shù)據(jù)集內(nèi)容預(yù)覽

大模型三階段訓(xùn)練方法(LLaMa Factory)-AI.x社區(qū)

內(nèi)容小結(jié)

  • LLaMA-Factory是一個(gè)開源的、可自定義的、可擴(kuò)展的、可部署的、可訓(xùn)練的大模型訓(xùn)練平臺(tái)。
  • LLaMA-Factory的訓(xùn)練流程分為3個(gè)階段:預(yù)訓(xùn)練、監(jiān)督微調(diào)、偏好糾正。
  • 訓(xùn)練過程的大致步驟為:

     1.按照LLaMA-Factory官方README文檔的數(shù)據(jù)格式,準(zhǔn)備訓(xùn)練數(shù)據(jù);

     2.按照LlaMA-Factory官方README文檔,在的dataset_info.json文件,注冊(cè)自定義數(shù)據(jù);

     3.根據(jù)訓(xùn)練階段配置訓(xùn)練參數(shù),包括模型名稱、模型路徑、訓(xùn)練方法、數(shù)據(jù)集、輸出目錄等;

     4.預(yù)覽訓(xùn)練命名無誤后,啟動(dòng)訓(xùn)練。

     5.如果啟動(dòng)訓(xùn)練失敗,可以通過切換到啟動(dòng)??LLaMA Factory??的命令行查看日志信息排查問題。


本文轉(zhuǎn)載自公眾號(hào)一起AI技術(shù) 作者:熱情的Dongming

原文鏈接:??https://mp.weixin.qq.com/s/b1-W1bopDZwVk16AUEik2Q??

?著作權(quán)歸作者所有,如需轉(zhuǎn)載,請(qǐng)注明出處,否則將追究法律責(zé)任
標(biāo)簽
已于2024-12-10 12:37:09修改
收藏
回復(fù)
舉報(bào)
回復(fù)
相關(guān)推薦