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