模型简介
模型特点
模型能力
使用案例
🚀 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}
}



