0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

大模型微調(diào)開(kāi)源項(xiàng)目全流程

深度學(xué)習(xí)自然語(yǔ)言處理 ? 來(lái)源:青稞AI ? 2024-03-13 14:56 ? 次閱讀

作者:1050Ti全量微調(diào).,東北大學(xué)軟件工程

微調(diào)實(shí)戰(zhàn)經(jīng)歷

本次微調(diào)經(jīng)驗(yàn)分享依據(jù)于我們?cè)?023年參加的“第2屆·百度搜索創(chuàng)新大賽——搜索答案組織”整個(gè)比賽過(guò)程。

我們團(tuán)隊(duì)選擇的基座模型是ChatGLM3-6B-Base模型,訓(xùn)練數(shù)據(jù)集為官方提供的數(shù)據(jù)集(9000條),訓(xùn)練方法為LORA sft 監(jiān)督微調(diào)。

最終結(jié)果:score 36.12--ROUGE-L 41.03--BLEU-4 31.22,東三省排名第1名,全國(guó)最終排名為44/220.

開(kāi)始微調(diào)(SFT)

準(zhǔn)備微調(diào)框架

微調(diào)框架選擇的是github上面的llama-factory開(kāi)源項(xiàng)目

gitclonehttps://github.com/hiyouga/LLaMA-Factory.git
cdLLaMA-Factory
pipinstall-rrequirements.txt

推薦python=3.10,如果要在 Windows 平臺(tái)上開(kāi)啟量化 LoRA(QLoRA),需要安裝預(yù)編譯的 bitsandbytes 庫(kù), 支持 CUDA 11.1 到 12.1

pipinstallhttps://github.com/jllllll/bitsandbytes-windows-webui/releases/download/wheels/bitsandbytes-0.39.1-py3-none-win_amd64.whl

加載數(shù)據(jù)集

在data文件夾下面創(chuàng)建xxx.json命名格式的數(shù)據(jù)集json文件,本人設(shè)置的是baidutrain.json

json文件格式如下

[
{
"query":"王者榮耀鉆石奪寶幸運(yùn)值滿是多少",
"refs":[
"積分奪寶幸運(yùn)值滿值為360點(diǎn),鉆石奪寶幸運(yùn)值滿值為200點(diǎn),但是奪寶幸運(yùn)值滿了之后還需要一抽才能獲得水晶,所以積分奪寶361抽必定獲得水晶,鉆石奪寶201抽必定獲得水晶。",
"王者鉆石奪寶幸運(yùn)值滿是200。",
"1、最高的幸運(yùn)值上限是200,每抽一次會(huì)獲得1點(diǎn)幸運(yùn)值。王者榮耀里面的鉆石奪寶幸運(yùn)值達(dá)到200就滿了,也就是說(shuō)當(dāng)幸運(yùn)值滿200時(shí),再奪寶一次是必出一個(gè)王者水晶的,擁有王者水晶可以到水晶商店里面去兌換物品了,兌換的物品都是永久的。",
"幸運(yùn)值滿值是360,玩家在抽361的時(shí)候是保底必出水晶,這個(gè)保底是人人都能抽出水晶的,也就是100%可以讓玩家得到水晶,榮耀水晶的概率是0.8%,但是玩家們?nèi)绻诓粩嘣黾映楠?jiǎng)的次數(shù),那么抽出水晶的概率也會(huì)增加,想要抽出水晶的玩家可以將361次當(dāng)做保底的次數(shù)。",
"玩家獲取王者水晶之后,可以使用該道具兌換王者商店中的獎(jiǎng)勵(lì),包含了回城特效、英雄、中級(jí)品質(zhì)的皮膚等獎(jiǎng)勵(lì)。"
],
"answer":"《王者榮耀》鉆石奪寶幸運(yùn)值滿值為200點(diǎn)。

鉆石奪寶幸運(yùn)值滿200后再抽一次必出一個(gè)王者水晶,玩家獲取王者水晶之后,可以使用該道具兌換王者商店中的獎(jiǎng)勵(lì),其中包含了回城特效、英雄、中級(jí)品質(zhì)的皮膚等,兌換的物品永久有效。"
},
{
"query":"王手是什么意思",
"refs":[
"一、原神王手。王手這個(gè)詞出現(xiàn)在PV短片《雪姬逢椿》中。王手是小神里說(shuō)的,小神里很可愛(ài),說(shuō)王手二字的聲音也不錯(cuò)。所以玩家說(shuō)王手二字讓我氪了648。二、王手原意。王手是日本將棋的說(shuō)法,與中國(guó)象棋將軍的用法相似。意思是將軍(棋步),將軍。",
"一、原神王手在PV短片——「雪霽逢椿」中出現(xiàn)了王手這個(gè)詞。王手是由小神里說(shuō)出的,小神里十分可愛(ài),說(shuō)王手二字時(shí)聲音也好聽(tīng)。所以玩家就表示王手二字讓我氪了648。二、王手原本意思王手是日本將棋的說(shuō)法,和中國(guó)象棋將軍的用法差不多。是將軍(的棋步),將一軍的意思。",
"王手是日本將棋的說(shuō)法,與中國(guó)象棋將軍的用法相似。意思是將軍(棋步),將軍。",
"其中的王手是指,如能下了能擒拿對(duì)方王將的一手,類似于象棋里的將軍。稱之為王手。",
"王手,男,浙江溫州市人。1981年開(kāi)始發(fā)表小說(shuō)。近年小說(shuō)散見(jiàn)于《收獲》《人民文學(xué)》《當(dāng)代》《鐘山》《花城》《作家》《山花》等刊,出版中短篇小說(shuō)集《火藥槍》《柯依娜一個(gè)人》《獅身人面》"
],
"answer":"王手是指下了這步棋能擒拿對(duì)方王將的一手,類似于象棋里的將軍,是日本將棋中的一種說(shuō)法。

此外,王手還是中國(guó)作家協(xié)會(huì)會(huì)員,一級(jí)作家,出版中短篇小說(shuō)集《火藥槍》《柯依娜一個(gè)人》等。"
}
]

一定要將數(shù)據(jù)集所在的json文件加載到dataset_info.json中!!!!!!!!

"baidu_train":{
"file_name":"baidutrain.json",
"columns":{
"prompt":"",#系統(tǒng)prompt
"query":"refs"+"query",#輸入
"response":"answer",#輸出
"history":""#歷史對(duì)話
}
}

啟動(dòng)微調(diào)

使用sft進(jìn)行微調(diào)

CUDA_VISIBLE_DEVICES=0pythonwork/jwx/ChatGLM-Efficient-Tuning-main/src/train_bash.py
--stagesft#微調(diào)方式
--model_name_or_pathwork/jwx/ChatGLM3-main/model#模型路徑
--do_train
--dataset_dirwork/jwx/ChatGLM-Efficient-Tuning-main/data#數(shù)據(jù)集文件夾
--datasetbaidu_dev,baidu_train#數(shù)據(jù)集
--finetuning_typelora#微調(diào)方法
--max_source_length2048#最大長(zhǎng)度
--max_target_length512
--learning_rate3e-05#學(xué)習(xí)率
--num_train_epochs3.0#學(xué)習(xí)輪數(shù)
--max_samples10000
--lora_rank8#lora訓(xùn)練的秩
--lora_dropout0.1
--lora_targetq_proj,v_proj#lora作用層
--resume_lora_trainingTrue
--output_dirsaves/output#輸出微調(diào)的文件夾
--fp16True#開(kāi)啟fp16微調(diào)
--per_device_train_batch_size4
--gradient_accumulation_steps4
--lr_scheduler_typecosine
--max_grad_norm1.0
--logging_steps5
--save_steps1000

對(duì)于所有“基座”(Base)模型,–template 參數(shù)可以是 default, alpaca, vicuna 等任意值。但“對(duì)話”(Chat)模型請(qǐng)務(wù)必使用對(duì)應(yīng)的模板。

更多參數(shù)信息

https://github.com/hiyouga/ChatGLM-Efficient-Tuning/wiki/%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95

合并模型并導(dǎo)出

pythonsrc/export_model.py
--model_name_or_pathwork/jwx/ChatGLM3-main/model
--adapter_name_or_pathsaves/output
--templatedefault
--finetuning_typelora
--export_dirpath_to_export
--export_size7
--export_legacy_formatFalse

RW

獎(jiǎng)勵(lì)模型訓(xùn)練

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

獎(jiǎng)勵(lì)模型,作為RL中的critic,應(yīng)該讓模型知道什么是正確的答案和什么是錯(cuò)誤的答案,因此需要在數(shù)據(jù)集上進(jìn)行對(duì)于不同答案的一個(gè)打分情況,來(lái)讓機(jī)器進(jìn)行學(xué)習(xí)。格式如下:

[
0:{
input:"",
instruction:"Whatarethethreeprimarycolors?",
output:[
0:"Thethreeprimarycolorsarered,blue,andyellow.Thesecolorsarecalledprimarybecausetheycannotbecreatedbymixingothercolorsandallothercolorscanbemadebycombiningtheminvariousproportions.Intheadditivecolorsystem,usedforlight,theprimarycolorsarered,green,andblue(RGB).",
1:"Red,Yellow,andGreen."
]
},
1:{
input:"4/16",
instruction:"Explainwhythefollowingfractionisequivalentto1/4",
output:[
0:"Thefraction4/16isequivalentto1/4becausebothnumeratorsanddenominatorsaredivisibleby4.Dividingboththetopandbottomnumbersby4yieldsthefraction1/4.",
1:"1/4isthesameas1/4."
]
}
]

運(yùn)行微調(diào)

微調(diào)之后的獎(jiǎng)勵(lì)模型不可以直接進(jìn)行使用,因?yàn)閞w模型的輸出是一個(gè)打分,相當(dāng)于RL中的critic。

CUDA_VISIBLE_DEVICES=0pythonsrc/train_bash.py
--stagerm
--do_train
--model_name_or_pathpath_to_llama_model
--adapter_name_or_pathpath_to_sft_checkpoint#sft模型微調(diào)的權(quán)重文件,可加可不加
--create_new_adapter
--datasetcomparison_gpt4_zh
--templatedefault
--finetuning_typelora
--lora_targetq_proj,v_proj
--output_dirpath_to_rm_checkpoint
--per_device_train_batch_size2
--gradient_accumulation_steps4
--lr_scheduler_typecosine
--logging_steps10
--save_steps1000
--learning_rate1e-6
--num_train_epochs1.0
--plot_loss
--fp16

RLHF

253c63f2-de15-11ee-a297-92fbcf53809c.jpg

準(zhǔn)備actor和critic

actor:對(duì)應(yīng)的是sft輸出的權(quán)重文件

critic:對(duì)應(yīng)的是RW輸出的權(quán)重文件

運(yùn)行RLHF

CUDA_VISIBLE_DEVICES=0pythonsrc/train_bash.py
--stageppo
--do_trainTrue
--model_name_or_pathbaichuan-inc/baichuan-7B
--adapter_name_or_pathsaves/Baichuan-7B-Base/lora/sft#sft輸出的權(quán)重文件
--finetuning_typelora
--templatedefault
--dataset_dirdata
--datasetalpaca_gpt4_en
--cutoff_len1024
--learning_rate5e-05
--num_train_epochs3.0
--max_samples100000
--per_device_train_batch_size4
--gradient_accumulation_steps4
--lr_scheduler_typecosine
--max_grad_norm1.0
--logging_steps5
--save_steps100
--warmup_steps0
--lora_rank8
--lora_dropout0.1
--lora_targetW_pack
--create_new_adapterTrue
--output_dirsaves/Baichuan-7B-Base/lora/train_2024-03-01-09-49-43
--fp16True
--reward_modelsaves/Baichuan-7B-Base/lora/rw#rw輸出的權(quán)重文件
--reward_model_typelora
--plot_lossTrue

多卡訓(xùn)練

使用accelerate進(jìn)行訓(xùn)練

accelerateconfig#首先配置分布式環(huán)境
acceleratelaunchsrc/train_bash.py
--stagesft#微調(diào)方式
--model_name_or_pathwork/jwx/ChatGLM3-main/model#模型路徑
--do_train
--dataset_dirwork/jwx/ChatGLM-Efficient-Tuning-main/data#數(shù)據(jù)集文件夾
--datasetbaidu_dev,baidu_train#數(shù)據(jù)集
--finetuning_typelora#微調(diào)方法
--max_source_length2048#最大長(zhǎng)度
--max_target_length512
--learning_rate3e-05#學(xué)習(xí)率
--num_train_epochs3.0#學(xué)習(xí)輪數(shù)
--max_samples10000
--lora_rank8#lora訓(xùn)練的秩
--lora_dropout0.1
--lora_targetq_proj,v_proj#lora作用層
--resume_lora_trainingTrue
--output_dirsaves/output#輸出微調(diào)的文件夾
--fp16True#開(kāi)啟fp16微調(diào)
--per_device_train_batch_size4
--gradient_accumulation_steps4
--lr_scheduler_typecosine
--max_grad_norm1.0
--logging_steps5
--save_steps1000#參數(shù)同上

使用deepspeed進(jìn)行訓(xùn)練

deepspeed--num_gpus8--master_port=9901src/train_bash.py
--deepspeedds_config.json
--stagesft#微調(diào)方式
--model_name_or_pathwork/jwx/ChatGLM3-main/model#模型路徑
--do_train
--dataset_dirwork/jwx/ChatGLM-Efficient-Tuning-main/data#數(shù)據(jù)集文件夾
--datasetbaidu_dev,baidu_train#數(shù)據(jù)集
--finetuning_typelora#微調(diào)方法
--max_source_length2048#最大長(zhǎng)度
--max_target_length512
--learning_rate3e-05#學(xué)習(xí)率
--num_train_epochs3.0#學(xué)習(xí)輪數(shù)
--max_samples10000
--lora_rank8#lora訓(xùn)練的秩
--lora_dropout0.1
--lora_targetq_proj,v_proj#lora作用層
--resume_lora_trainingTrue
--output_dirsaves/output#輸出微調(diào)的文件夾
--fp16True#開(kāi)啟fp16微調(diào)
--per_device_train_batch_size4
--gradient_accumulation_steps4
--lr_scheduler_typecosine
--max_grad_norm1.0
--logging_steps5
--save_steps1000

心得分享

下面我將本次比賽微調(diào)訓(xùn)練的得分的過(guò)程分享給大家

254cfd20-de15-11ee-a297-92fbcf53809c.png

審核編輯:黃飛

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 機(jī)器學(xué)習(xí)

    關(guān)注

    66

    文章

    8418

    瀏覽量

    132655
  • 大模型
    +關(guān)注

    關(guān)注

    2

    文章

    2451

    瀏覽量

    2718

原文標(biāo)題:詳解大模型微調(diào)全流程

文章出處:【微信號(hào):zenRRan,微信公眾號(hào):深度學(xué)習(xí)自然語(yǔ)言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    2月志芯片開(kāi)源項(xiàng)目分享合集

    手勢(shì)識(shí)別模型,轉(zhuǎn)為TFlite模型,再通過(guò)谷歌提供的 TFlite C API 運(yùn)行模型。 3、項(xiàng)目名稱:ConcoPi-基于F1C100S的小終端 使用
    發(fā)表于 03-02 14:39

    開(kāi)源匯總】精選開(kāi)源硬件項(xiàng)目匯總

    本帖為開(kāi)源硬件項(xiàng)目分享匯總帖,各位小伙伴可以在帖子下方分享自己的開(kāi)源項(xiàng)目經(jīng)歷哦~PS.本帖會(huì)持續(xù)更新,歡迎大家分享各自的經(jīng)驗(yàn)開(kāi)源
    發(fā)表于 04-29 18:45

    手繪圖的方式帶你了解機(jī)器學(xué)習(xí)模型構(gòu)建的流程

    周末在家無(wú)聊閑逛github,發(fā)現(xiàn)一個(gè)很有趣的開(kāi)源項(xiàng)目,作者用手繪圖的方式講解了機(jī)器學(xué)習(xí)模型構(gòu)建的流程,邏輯清晰、生動(dòng)形象。同時(shí),作者也對(duì)
    的頭像 發(fā)表于 09-25 11:07 ?2648次閱讀

    0-30V、0-7A可調(diào)開(kāi)關(guān)電源開(kāi)源項(xiàng)目

    電子發(fā)燒友網(wǎng)站提供《0-30V、0-7A可調(diào)開(kāi)關(guān)電源開(kāi)源項(xiàng)目.zip》資料免費(fèi)下載
    發(fā)表于 07-12 10:27 ?129次下載
    0-30V、0-7A可<b class='flag-5'>調(diào)開(kāi)</b>關(guān)電源<b class='flag-5'>開(kāi)源</b><b class='flag-5'>項(xiàng)目</b>

    油門象限和微調(diào)開(kāi)源硬件

    電子發(fā)燒友網(wǎng)站提供《油門象限和微調(diào)開(kāi)源硬件.zip》資料免費(fèi)下載
    發(fā)表于 02-02 16:42 ?0次下載
    油門象限和<b class='flag-5'>微調(diào)</b>輪<b class='flag-5'>開(kāi)源</b>硬件

    調(diào)開(kāi)關(guān)電源的原理 可調(diào)開(kāi)關(guān)電源的工作流程

      可調(diào)開(kāi)關(guān)電源可以根據(jù)不同的應(yīng)用需求,調(diào)節(jié)輸出電壓和電流,以滿足不同設(shè)備的電源要求,而且可以有效地降低電源的損耗,提高電源的可靠性和效率。缺點(diǎn)是價(jià)格較高,而且由于可調(diào)開(kāi)關(guān)電源的復(fù)雜性,它的維護(hù)和保養(yǎng)也比較復(fù)雜。
    發(fā)表于 02-22 15:11 ?4291次閱讀

    iPhone都能微調(diào)模型了嘛

    一起提出的新方法 QLoRA 把微調(diào)模型的 顯存需求從>780GB降低到 。 開(kāi)源社區(qū)直接開(kāi)始狂歡,相關(guān)論文成為24小時(shí)內(nèi)關(guān)注度最高的AI論文。 ? 以Meta的美洲駝LLaMA為基礎(chǔ),得到原駝
    的頭像 發(fā)表于 06-02 15:26 ?702次閱讀
    iPhone都能<b class='flag-5'>微調(diào)</b>大<b class='flag-5'>模型</b>了嘛

    清華等開(kāi)源「工具學(xué)習(xí)基準(zhǔn)」ToolBench,微調(diào)模型ToolLLaMA性能超越ChatGPT

    最近,清華大學(xué)自然語(yǔ)言處理實(shí)驗(yàn)室等支持的開(kāi)源社區(qū)OpenBMB (Open Lab for Big Model Base)發(fā)布了ToolBench項(xiàng)目,可以幫助開(kāi)發(fā)者構(gòu)建開(kāi)源、大規(guī)模、高質(zhì)量的指令調(diào)優(yōu)數(shù)據(jù),促進(jìn)構(gòu)建具有通用工具使
    的頭像 發(fā)表于 06-08 11:39 ?584次閱讀
    清華等<b class='flag-5'>開(kāi)源</b>「工具學(xué)習(xí)基準(zhǔn)」ToolBench,<b class='flag-5'>微調(diào)</b><b class='flag-5'>模型</b>ToolLLaMA性能超越ChatGPT

    七彩曲調(diào)開(kāi)源硬件

    電子發(fā)燒友網(wǎng)站提供《七彩曲調(diào)開(kāi)源硬件.zip》資料免費(fèi)下載
    發(fā)表于 07-11 15:36 ?0次下載
    七彩曲<b class='flag-5'>調(diào)開(kāi)源</b>硬件

    【AI簡(jiǎn)報(bào)20230818期】人形機(jī)器人問(wèn)世:大模型加持;用AI微調(diào)AI,微軟華班出品!

    、應(yīng)用流程簡(jiǎn)單、可全程低代碼操作。企業(yè)、開(kāi)發(fā)者可以根據(jù)不同細(xì)分場(chǎng)景的業(yè)務(wù)需求,靈活選擇各類大模型,降低大模型使用成本。 據(jù)騰訊云公眾號(hào)透露,騰訊云是國(guó)內(nèi)第一批上架和支持開(kāi)源
    的頭像 發(fā)表于 08-18 18:15 ?1596次閱讀
    【AI簡(jiǎn)報(bào)20230818期】人形機(jī)器人問(wèn)世:大<b class='flag-5'>模型</b>加持;用AI<b class='flag-5'>微調(diào)</b>AI,微軟<b class='flag-5'>全</b>華班出品!

    OpenAI開(kāi)放大模型微調(diào)功能 GPT-3.5可以打造專屬ChatGPT

    OpenAI開(kāi)放大模型微調(diào)功能 GPT-3.5可以打造專屬ChatGPT OpenAI開(kāi)放大模型微調(diào)功能,這意味著GPT-3.5 Turbo支持自定義
    的頭像 發(fā)表于 08-23 19:34 ?1223次閱讀

    四種微調(diào)模型的方法介紹

    微調(diào)(Full Fine-tuning):微調(diào)是指對(duì)整個(gè)預(yù)訓(xùn)練模型進(jìn)行微調(diào),包括所有的
    發(fā)表于 01-03 10:57 ?2.4w次閱讀
    四種<b class='flag-5'>微調(diào)</b>大<b class='flag-5'>模型</b>的方法介紹

    最佳開(kāi)源模型刷新多項(xiàng)SOTA,首次超越Mixtral Instruct!「開(kāi)源版GPT-4」家族迎來(lái)大爆發(fā)

    Mixtral 8x7B模型開(kāi)源后,AI社區(qū)再次迎來(lái)一大波微調(diào)實(shí)踐。來(lái)自Nous Research應(yīng)用研究小組團(tuán)隊(duì)微調(diào)出新一代大模型Nous
    的頭像 發(fā)表于 01-30 15:29 ?943次閱讀
    最佳<b class='flag-5'>開(kāi)源</b><b class='flag-5'>模型</b>刷新多項(xiàng)SOTA,首次超越Mixtral Instruct!「<b class='flag-5'>開(kāi)源</b>版GPT-4」家族迎來(lái)大爆發(fā)

    紅帽發(fā)布RHEL AI開(kāi)發(fā)者預(yù)覽版,集成IBM Granite模型,簡(jiǎn)化AI開(kāi)發(fā)流程

    RHEL AI依托InstructLab開(kāi)源項(xiàng)目,結(jié)合IBM Research的開(kāi)源授權(quán)Granite大型語(yǔ)言模型與InstructLab模型
    的頭像 發(fā)表于 05-08 15:01 ?493次閱讀

    模型為什么要微調(diào)?大模型微調(diào)的原理

    難以達(dá)到最佳性能。為了提升模型在特定任務(wù)上的表現(xiàn),微調(diào)(Fine-tuning)成為了一個(gè)關(guān)鍵步驟。本文將詳細(xì)探討大模型為什么要進(jìn)行微調(diào)以及微調(diào)
    的頭像 發(fā)表于 07-10 10:43 ?4121次閱讀