模型概述
模型特點
模型能力
使用案例
🚀 Aloe:一系列微調後的開源醫療大語言模型
Aloe是一系列經過微調的開源醫療大語言模型,在多個醫療任務中取得了先進的性能。它能有效處理多種醫療任務,如文本總結、診斷、治療建議等,為醫療研究和應用提供了強大的支持。
🚀 快速開始
Qwen2.5 - Aloe - Beta - 7B是一個開源醫療大語言模型,在多個醫療任務中取得了先進的性能。Aloe Beta有四種模型大小可供選擇:[7B](https://huggingface.co/HPAI - BSC/Qwen2.5 - Aloe - Beta - 7B/)、[8B](https://huggingface.co/HPAI - BSC/Llama3.1 - Aloe - Beta - 8B)、[70B](https://huggingface.co/HPAI - BSC/Llama3.1 - Aloe - Beta - 70B)和[72B](https://huggingface.co/HPAI - BSC/Qwen2.5 - Aloe - Beta - 72B)。所有模型都基於相同的方法進行訓練,構建在Llama3.1和Qwen2.5這兩個不同的模型家族之上。
Aloe在20個醫療任務上進行了訓練,使其成為一個強大且通用的醫療模型。評估顯示,Aloe模型在同類模型中表現出色。當與RAG系統([也已發佈](https://github.com/HPAI - BSC/prompt_engine))結合使用時,7B和8B版本的性能接近MedPalm - 2、GPT4等閉源模型。使用相同的RAG系統時,Llama3.1 - Aloe - Beta - 70B和Qwen2.5 - Aloe - Beta - 72B的性能超過了這些閉源替代方案,取得了先進的成果。
使用示例
基礎用法
import transformers
import torch
model_id = "HPAI-BSC/Qwen2.5-Aloe-Beta-7B"
pipeline = transformers.pipeline(
"text-generation",
model=model_id,
model_kwargs={"torch_dtype": torch.bfloat16},
device_map="auto",
)
messages = [
{"role": "system", "content": "You are an expert medical assistant named Aloe, developed by the High Performance Artificial Intelligence Group at Barcelona Supercomputing Center(BSC). You are to be a helpful, respectful, and honest assistant."},
{"role": "user", "content": "Hello."},
]
prompt = pipeline.tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
terminators = [
pipeline.tokenizer.eos_token_id,
pipeline.tokenizer.convert_tokens_to_ids("<|im_end|>")
]
outputs = pipeline(
prompt,
max_new_tokens=256,
eos_token_id=terminators,
do_sample=True,
temperature=0.7,
top_p=0.8,
top_k=20,
repetition_penalty=1.05
)
print(outputs[0]["generated_text"][len(prompt):])
高級用法
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
model_id = "HPAI-BSC/Qwen2.5-Aloe-Beta-7B"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id,
torch_dtype=torch.bfloat16,
device_map="auto",
)
messages = [
{"role": "system", "content": "You are an expert medical assistant named Aloe, developed by the High Performance Artificial Intelligence Group at Barcelona Supercomputing Center(BSC). You are to be a helpful, respectful, and honest assistant."},
{"role": "user", "content": "Hello"},
]
input_ids = tokenizer.apply_chat_template(
messages,
add_generation_prompt=True,
return_tensors="pt"
).to(model.device)
terminators = [
tokenizer.eos_token_id,
tokenizer.convert_tokens_to_ids("<|im_end|>")
]
outputs = model.generate(
input_ids,
max_new_tokens=256,
eos_token_id=terminators,
do_sample=True,
temperature=0.7,
top_p=0.8,
top_k=20,
repetition_penalty=1.05
)
response = outputs[0][input_ids.shape[-1]:]
print(tokenizer.decode(response, skip_special_tokens=True))
✨ 主要特性
- 多模型規模選擇:提供7B、8B、70B和72B四種不同規模的模型,滿足不同場景的需求。
- 廣泛的醫療任務訓練:在20個醫療任務上進行訓練,具備處理多種醫療場景的能力。
- 結合RAG系統性能出色:與RAG系統結合使用時,性能接近甚至超過部分閉源模型。
- 提升對齊和安全階段:在對齊和安全階段進行了改進,使用醫療偏好數據集和紅隊數據集進行優化。
📦 安裝指南
文檔未提及具體安裝步驟,暫無法提供。
📚 詳細文檔
模型詳情
模型描述
屬性 | 詳情 |
---|---|
開發者 | HPAI |
模型類型 | 因果解碼器僅變壓器語言模型 |
語言 | 英語(有能力處理其他語言,但未正式評估) |
許可證 | 該模型基於[Qwen2.5 - 7B](https://huggingface.co/Qwen/Qwen2.5 - 7B),採用Apache 2.0許可證發佈。我們的所有修改都採用CC BY 4.0許可證,使Aloe Beta模型可用於商業用途。 |
基礎模型 | [Qwen2.5 - 7B](https://huggingface.co/Qwen/Qwen2.5 - 7B) |
論文 | (更多即將發佈) |
RAG倉庫 | https://github.com/HPAI - BSC/prompt_engine |
模型性能
Aloe Beta已在最流行的醫療問答數據集上進行了測試,使用和不使用Medprompt推理技術。結果顯示,該模型具有競爭力,在相同規模的模型中達到了先進水平。
用途
直接使用
我們鼓勵將Aloe用於研究目的,作為構建更好的醫療基礎模型的墊腳石。在生產環境中,Aloe應始終在人類專家的監督下使用。
超出範圍的使用
這些模型不得用於臨床實踐、醫療診斷或任何其他形式的直接或間接醫療建議。模型容易出錯,可能會產生有害內容。嚴禁將Aloe模型用於對個人有害的活動,如垃圾郵件、欺詐或冒充。未成年人不得在無監督的情況下與Aloe進行交互。
偏差、風險和侷限性
Aloe在適當的提示下可能會產生有害內容,並且存在多種不良偏差。雖然我們進行了大量努力來減輕這些問題(見下面的對齊詳情),但無法完全保證模型的安全性。我們在訓練中避免使用所有個人數據。
我們確定了至少三種特定於醫療大語言模型的風險情況:
- 醫療專業人員冒充:這是一種欺詐行為,目前在[利潤](https://www.justice.gov/opa/pr/justice - department - charges - dozens - 12 - billion - health - care - fraud)方面造成了數十億美元的損失。像Aloe這樣的模型可能會被用於提高此類欺詐活動的效果,使其更加普遍。主要的預防措施包括提高公眾對數字化信息不可靠性的認識、強調醫療註冊的重要性,以及制定強制執行AI生成內容免責聲明的立法。
- 無專業監督的醫療決策:雖然這在現代社會中已經是一個問題(如自我用藥),但像Aloe這樣能夠生成高質量對話數據的模型可能會助長自我欺騙,特別是在存在諂媚的情況下。通過生成量身定製的響應,它還可以用於生成可操作的答案。提高公眾對自我診斷危險的認識是主要的防禦措施之一,同時在模型輸出中引入免責聲明和警告。
- 獲取危險物質或程序的信息:雖然關於敏感內容的文獻已經可以在不同來源(如圖書館、互聯網、暗網)中找到,但大語言模型可以集中此類訪問,使得控制此類信息的流動幾乎不可能。模型對齊在這方面可以有所幫助,但到目前為止效果仍然不足,因為越獄方法仍然可以繞過它。
訓練詳情
監督微調
在Qwen2.5 - 7B之上使用axolotl(https://github.com/axolotl - ai - cloud/axolotl)進行監督微調。
我們使用Deepspeed的Zero - 3分佈式訓練,使用以下硬件:
- 7B:Marenostrum 5的32x NVIDIA Hopper H100 64GB。
- 8B:Marenostrum 5的32x NVIDIA Hopper H100 64GB。
- 70B:Marenostrum 5的64x NVIDIA Hopper H100 64GB。
- 72B:Marenostrum 5的92x NVIDIA Hopper H100 64GB。
訓練數據
訓練集約由18億個標記組成,包含3種不同類型的數據:
- 醫療領域數據集:包括來自20個不同醫療任務的數據。
- [HPAI - BSC/Aloe - Beta - General - Collection](https://huggingface.co/datasets/HPAI - BSC/Aloe - Beta - General - Collection)
- [HPAI - BSC/chain - of - diagnosis](https://huggingface.co/datasets/HPAI - BSC/chain - of - diagnosis)
- [HPAI - BSC/MedS - Ins](https://huggingface.co/datasets/HPAI - BSC/MedS - Ins)
- [HPAI - BSC/ultramedica](https://huggingface.co/datasets/HPAI - BSC/ultramedical)
- 合成數據:我們使用Llama3.1 - 70B生成高質量答案,擴展了訓練數據。
- [HPAI - BSC/pubmedqa - cot - llama31](https://huggingface.co/datasets/HPAI - BSC/pubmedqa - cot - llama31)
- [HPAI - BSC/medqa - cot - llama31](https://huggingface.co/datasets/HPAI - BSC/medqa - cot - llama31)
- [HPAI - BSC/medmcqa - cot - llama31](https://huggingface.co/datasets/HPAI - BSC/medmcqa - cot - llama31)
- [HPAI - BSC/headqa - cot - llama31](https://huggingface.co/datasets/HPAI - BSC/headqa - cot - llama31)
- [HPAI - BSC/MMLU - medical - cot - llama31](https://huggingface.co/datasets/HPAI - BSC/MMLU - medical - cot - llama31)
- [HPAI - BSC/Polymed - QA](https://huggingface.co/datasets/HPAI - BSC/Polymed - QA)
- Genstruct數據(即將發佈)
- 通用數據:包括數學、STEM、代碼、函數調用和具有非常長上下文的指令。
- [HPAI - BSC/Aloe - Beta - General - Collection](https://huggingface.co/datasets/HPAI - BSC/Aloe - Beta - General - Collection)
訓練參數
- 輪數:3
- 序列長度:16384
- 優化器:adamw_torch
- 學習率:1e - 5
- 學習率調度器:cosine
- 熱身步驟:100
- 權重衰減:0
- 梯度檢查點
- Zero 3
- 總批量大小:128
- 每個設備的批量大小:1
- 梯度累積步驟:4
模型合併
使用DARE_TIES技術將訓練好的模型與Qwen2.5 - 7B - Instruct模型合併。使用[Mergekit](https://github.com/arcee - ai/mergekit)進行合併。
模型對齊
使用直接偏好優化(DPO)技術通過兩步過程對模型進行對齊:
- 通用DPO對齊:此步驟使用一個結合了醫療、通用偏好和安全數據的數據集。我們使用了我們的數據集[HPAI - BSC/Aloe - Beta - DPO](https://huggingface.co/datasets/HPAI - BSC/Aloe - Beta - DPO)。我們將數據集分成五部分,模型在每個部分上迭代訓練一個輪次。我們使用2e - 7的學習率。
- 紅隊對齊:此步驟進一步微調模型,使其能夠抵抗各種潛在攻擊,增強其魯棒性和安全性。數據集即將共享。在此階段,我們將學習率設置為1e - 7。
我們使用OpenRLHF庫。我們使用Marenostrum 5的16x NVIDA HOOPER H100 64GB對模型進行對齊。常見超參數:
- 序列長度:4096
- 優化器:Fused adam
- 總批量大小:128
- 每個設備的批量大小:1
- 梯度累積步驟:8
- Beta:0.1
評估
測試數據、因素和指標
測試數據
- [ACI - BENCH](https://github.com/wyim/aci - bench)
- [MTS - Dialog](https://github.com/abachaa/MTS - Dialog)
- MedText
- [Medical Text classification](https://www.kaggle.com/datasets/chaitanyakck/medical - text/data)
- [OLAPH](https://github.com/dmis - lab/OLAPH)
- CareQA Open
- MedDialog
- MEDIQA QA
- Meddialog Qsumm
- Biored
- [MIMIC - III](https://huggingface.co/datasets/dmacres/mimiciii - hospitalcourse - meta)
- [Medical Prescription](https://huggingface.co/datasets/devlocalhost/prescription - full)
- MedQA (USMLE)
- MedMCQA
- PubMedQA
- MMLU - Medical
- [MedQA - 4 - Option](https://huggingface.co/datasets/GBaker/MedQA - USMLE - 4 - options)
- [CareQA](https://huggingface.co/datasets/HPAI - BSC/CareQA)
- [Open LLM Leaderboard 2](https://huggingface.co/spaces/open - llm - leaderboard/open_llm_leaderboard)
指標
- 準確率:適用於評估多項選擇題問答任務。
- Rouge1:指系統輸出與黃金標準之間的一元詞重疊。
總結
為了將Aloe與最具競爭力的開源模型(包括通用和醫療特定模型)進行比較,我們使用了流行的醫療數據集(PubMedQA、MedMCQA、MedQA和僅用於六項醫療任務的MMLU),以及新的且高度可靠的CareQA。然而,雖然多項選擇基準測試為模型處理結構化查詢的能力提供了有價值的見解,但它們不足以代表醫療實踐中面臨的全部挑戰。基於這一理念,Aloe - Beta代表了Aloe家族發展的下一步,旨在拓寬範圍,超越定義Aloe - Alpha的多項選擇題問答任務。
基準測試結果表明,對Aloe進行的訓練使其性能超過了相同規模的所有其他開源模型。Qwen2.5 - Aloe - Beta - 7B和Llama3.1 - Aloe - Beta - 8B也優於其他醫療模型,如Llama3 - OpenBioLLM和Llama3 - Med42。所有這些結果使Aloe - Beta成為同規模下最好的醫療大語言模型。
藉助提示技術,Qwen2.5 - Aloe - Beta - 7B的性能顯著提高。特別是Medprompting使報告的準確率提高了9%,之後Qwen2.5 - Aloe - 7B - Beta僅落後於Llama - 3.1 - 70B - Instruct或MedPalm - 2等更大的模型。這種改進在OpenLLM排行榜和其他醫療任務中大多是一致的。
環境影響
屬性 | 詳情 |
---|---|
硬件類型 | 32xH100 |
使用小時數(8B) | 544 GPU小時 |
使用小時數(70B) | 4500 GPU小時 |
硬件提供商 | 巴塞羅那超級計算中心(BSC) |
計算區域 | 西班牙 |
碳排放 | 34.1千克二氧化碳 |
🔧 技術細節
模型架構
採用因果解碼器僅變壓器語言模型架構,基於Qwen2.5 - 7B基礎模型進行微調。
訓練優化
使用Deepspeed的Zero - 3分佈式訓練,結合多種優化技術,如梯度檢查點、梯度累積等,提高訓練效率和模型性能。
對齊技術
使用直接偏好優化(DPO)技術進行模型對齊,通過通用DPO對齊和紅隊對齊兩個步驟,增強模型的魯棒性和安全性。
📄 許可證
該模型基於[Qwen2.5 - 7B](https://huggingface.co/Qwen/Qwen2.5 - 7B),採用Apache 2.0許可證發佈。我們的所有修改都採用CC BY 4.0許可證,使Aloe Beta模型可用於商業用途。
👥 作者
Aloe Beta由高性能人工智能研究小組開發,該小組來自巴塞羅那超級計算中心 - BSC。主要作者包括Jordi Bayarri Planas、[Ashwin Kumar Gururajan](https://huggingface.co/G - AshwinKumar)和Dario Garcia - Gasulla。紅隊工作由Adrian Tormos領導。
郵箱:hpai@bsc.es
📚 引用
如果您在發表的作品中使用了此倉庫,請引用相應的論文作為來源:
@misc{gururajan2024aloe,
title={Aloe: A Family of Fine-tuned Open Healthcare LLMs},
author={Ashwin Kumar Gururajan and Enrique Lopez-Cuena and Jordi Bayarri-Planas and Adrian Tormos and Daniel Hinjos and Pablo Bernabeu-Perez and Anna Arias-Duart and Pablo Agustin Martin-Torres and Lucia Urcelay-Ganzabal and Marta Gonzalez-Mallo and Sergio Alvarez-Napagao and Eduard Ayguadé-Parra and Ulises Cortés Dario Garcia-Gasulla},
year={2024},
eprint={2405.01886},
archivePrefix={arXiv},
primaryClass={cs.CL}
}



