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

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

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

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

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

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

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

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

我們團(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名,全國最終排名為44/220.

開始微調(diào)(SFT)

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

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

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

推薦python=3.10,如果要在 Windows 平臺上開啟量化 LoRA(QLoRA),需要安裝預(yù)編譯的 bitsandbytes 庫, 支持 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,每抽一次會獲得1點(diǎn)幸運(yùn)值。王者榮耀里面的鉆石奪寶幸運(yùn)值達(dá)到200就滿了,也就是說當(dāng)幸運(yùn)值滿200時(shí),再奪寶一次是必出一個(gè)王者水晶的,擁有王者水晶可以到水晶商店里面去兌換物品了,兌換的物品都是永久的。",
"幸運(yùn)值滿值是360,玩家在抽361的時(shí)候是保底必出水晶,這個(gè)保底是人人都能抽出水晶的,也就是100%可以讓玩家得到水晶,榮耀水晶的概率是0.8%,但是玩家們?nèi)绻诓粩嘣黾映楠劦拇螖?shù),那么抽出水晶的概率也會增加,想要抽出水晶的玩家可以將361次當(dāng)做保底的次數(shù)。",
"玩家獲取王者水晶之后,可以使用該道具兌換王者商店中的獎勵,包含了回城特效、英雄、中級品質(zhì)的皮膚等獎勵。"
],
"answer":"《王者榮耀》鉆石奪寶幸運(yùn)值滿值為200點(diǎn)。

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

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

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

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

啟動微調(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#最大長度
--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#開啟fp16微調(diào)
--per_device_train_batch_size4
--gradient_accumulation_steps4
--lr_scheduler_typecosine
--max_grad_norm1.0
--logging_steps5
--save_steps1000

對于所有“基座”(Base)模型,–template 參數(shù)可以是 default, alpaca, vicuna 等任意值。但“對話”(Chat)模型請務(wù)必使用對應(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

獎勵模型訓(xùn)練

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

獎勵模型,作為RL中的critic,應(yīng)該讓模型知道什么是正確的答案和什么是錯(cuò)誤的答案,因此需要在數(shù)據(jù)集上進(jìn)行對于不同答案的一個(gè)打分情況,來讓機(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)之后的獎勵模型不可以直接進(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:對應(yīng)的是sft輸出的權(quán)重文件

critic:對應(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#最大長度
--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#開啟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#最大長度
--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#開啟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)練的得分的過程分享給大家

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

審核編輯:黃飛

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

    關(guān)注

    66

    文章

    8321

    瀏覽量

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

    關(guān)注

    2

    文章

    2209

    瀏覽量

    2231

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

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

收藏 人收藏

    評論

    相關(guān)推薦

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

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

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

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

    基于WfMC的協(xié)同設(shè)計(jì)流程模型

    在協(xié)同設(shè)計(jì)流程中,以WfMC(國際工作流程管理參考模型)工作流程參考模型為基礎(chǔ),分為設(shè)計(jì)流程定義
    發(fā)表于 05-08 15:25 ?29次下載
    基于WfMC的協(xié)同設(shè)計(jì)<b class='flag-5'>流程</b><b class='flag-5'>模型</b>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    模型為什么要微調(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 ?2699次閱讀