大家好,我是 Jack。
大模型 fine-tune,在各個(gè)領(lǐng)域百花齊放。
今天介紹一個(gè)醫(yī)學(xué)領(lǐng)域 fine-tune 得到的大模型,Huatuo-LLaMA。
我們都知道,OpenAI 最新的 GPT 都沒(méi)有開(kāi)源,自從 FaceBook(Meta)開(kāi)源了 LLaMA 的預(yù)訓(xùn)練模型之后,基于 LLaMa fine-tune 得到的大模型開(kāi)始多了起來(lái)。
Huatuo-LLaMA 就是其之一,屬于醫(yī)學(xué)領(lǐng)域的模型。
我們都知道,LLaMA 有著 7B(70億) 到 65B(650億) 量級(jí)的參數(shù)量。
作者團(tuán)隊(duì)出于訓(xùn)練成本的考慮,選擇了模型參數(shù)量相對(duì)較少的 LLaMA-7B 作為 HuaTuo 的基礎(chǔ)模型,在此基礎(chǔ)上進(jìn)行 instruct tuning,獲得指令微調(diào)的大模型。
基礎(chǔ)模型,就是 Base LLM(Large Language Model),它有著續(xù)寫(xiě)的能力,比如給一個(gè)開(kāi)頭,Base LLM 能夠根據(jù)提供的開(kāi)頭續(xù)寫(xiě)內(nèi)容。
但是 Base LLM 不能理解對(duì)話,你問(wèn)它問(wèn)題,它不會(huì)回答。為了讓大模型具有理解問(wèn)題的能力,就需要在 Base LLM 的基礎(chǔ)上,進(jìn)行 instruct tuning,進(jìn)而得到 Instruction LLM。
好了,Huatuo-LLaMA 大致的訓(xùn)練原理說(shuō)明白了,它就是一個(gè)基于中文的醫(yī)學(xué)數(shù)據(jù)在 LLaMA-7B 開(kāi)源模型基礎(chǔ)上,instruct tuning 得到的模型。
作者團(tuán)隊(duì)參考 cMeKG,采用公開(kāi)和自建的中文醫(yī)學(xué)知識(shí)庫(kù)構(gòu)建訓(xùn)練數(shù)據(jù)。
醫(yī)學(xué)知識(shí)庫(kù)圍繞疾病、藥物、檢查指標(biāo)等構(gòu)建,字段包括并發(fā)癥,高危因素,組織學(xué)檢查,臨床癥狀,藥物治療,輔助治療等。
知識(shí)庫(kù)示例如下:
{'中心詞': '偏頭痛', '相關(guān)疾病': ['妊娠合并偏頭痛', '惡寒發(fā)熱'], '相關(guān)癥狀': ['皮膚變硬', '頭部及眼后部疼痛并能聽(tīng)到連續(xù)不斷的隆隆聲', '晨起頭痛加重'], '所屬科室': ['中西醫(yī)結(jié)合科', '內(nèi)科'], '發(fā)病部位': ['頭部']}
然后利用 GPT3.5 接口圍繞醫(yī)學(xué)知識(shí)庫(kù)構(gòu)建問(wèn)答數(shù)據(jù),豐富 Prompt 的提問(wèn)形式。
指令微調(diào)的訓(xùn)練集數(shù)據(jù)示例如下:
'問(wèn)題:一位年輕男性長(zhǎng)期使用可卡因,突然出現(xiàn)胸痛、嘔吐、出汗等癥狀,經(jīng)檢查發(fā)現(xiàn)心電圖反映心肌急性損傷,請(qǐng)問(wèn)可能患的是什么疾病?治療方式是什么?'
'回答: 可能患的是心肌梗塞,需要進(jìn)行維拉帕米、依普利酮、硝酸甘油、?阻滯劑、嗎啡等藥物治療,并進(jìn)行溶栓治療、低分子量肝素、鈣通道阻滯劑等輔助治療。此外需要及時(shí)停用可卡因等藥物,以防止病情加重。'
這個(gè)數(shù)據(jù)就構(gòu)建好了。
然后利用 LLaMa 開(kāi)源的 finetune 代碼,就能進(jìn)行訓(xùn)練了。
#!/bin/bash
exp_tag='e1'
python finetune.py \
--base_model 'decapoda-research/llama-7b-hf' \
--data_path './data/llama_data.json' \
--output_dir './lora-llama-med-'$exp_tag \
--prompt_template_name 'med_template' \
--micro_batch_size 128 \
--batch_size 128 \
--wandb_run_name $exp_tag
具體的訓(xùn)練過(guò)程,可以看下代碼。
項(xiàng)目地址:
https://github.com/SCIR-HI/Huatuo-Llama-Med-Chinese
作者團(tuán)隊(duì)在一張 A100-SXM-80GB 顯卡上進(jìn)行了訓(xùn)練,訓(xùn)練總輪次 10 輪,耗時(shí)約 2h17m。
batch_size 為 128 的情況下顯存占用在 40G 左右。預(yù)計(jì) 3090/4090 顯卡( 24GB 顯存)以上顯卡可以較好支持,根據(jù)顯存大小來(lái)調(diào)整 batch_size。
Example1:
輸入:小張最近感覺(jué)身體不適,出現(xiàn)心悸、氣促等癥狀。體檢發(fā)現(xiàn)心臟擴(kuò)大、搏動(dòng)減弱。
回答: 小張可能患有心肌炎,建議盡快到醫(yī)院進(jìn)行檢查和治療。治療方案包括藥物治療和手術(shù)治療。
Example2:
輸入: 麻風(fēng)病和兒童哮喘的病因是否一致?
回答: 不一致,麻風(fēng)病的病因是麻風(fēng)桿菌感染,而兒童哮喘的病因是喂養(yǎng)不良、吸煙等因素。
Example3:
輸入: 一位患者出現(xiàn)了持續(xù)性的脹痛和黃疸,經(jīng)影像學(xué)檢查后確診為肝膽管結(jié)石病,應(yīng)該采取哪些治療方案?
回答: 針對(duì)肝膽管結(jié)石病,治療方案包括手術(shù)治療、藥物治療和輔助治療等。具體治療方案需要根據(jù)患者的具體情況而定。
因?yàn)橛?xùn)練數(shù)據(jù)有限,并且生成效果還有一定的隨機(jī)性,因此無(wú)法保證 Huatuo-LLaMA 輸出答案的準(zhǔn)確性。
不過(guò)這個(gè)項(xiàng)目用于學(xué)術(shù)研究,還是夠用的,對(duì)于大模型 fine-tune 感興趣的小伙吧,不妨看一看。
之前跟大家說(shuō)的教學(xué)視頻,我已經(jīng)錄制完成了,還要再剪輯一下。
手把手帶大家一起訓(xùn)練一個(gè)中文的 Base LLM,預(yù)計(jì) 18 號(hào)發(fā)布到 B 站,時(shí)長(zhǎng)在 20~30 分鐘,現(xiàn)場(chǎng)寫(xiě) Bug,哈哈。
好了,今天就聊這么多吧,我是 Jack,我們下期見(jiàn)!
聯(lián)系客服