模型简介
模型特点
模型能力
使用案例
🚀 芦荟(Aloe):全新医疗大语言模型家族
芦荟(Aloe)是一个全新的医疗大语言模型家族,在同类型的所有开源模型中极具竞争力。通过模型融合和先进的提示策略,芦荟在其规模下取得了最先进的成果。由于结合了红队测试和对齐优化工作,芦荟在衡量道德和事实性的指标上得分很高。完整的训练细节、模型融合配置以及所有训练数据(包括合成生成的数据)都将公开分享。此外,本研究中用于在推理过程中取得最先进成果的提示仓库也将一并分享。芦荟还附带了特定于医疗保健的风险评估,以促进此类系统的安全使用和部署。
🚀 快速开始
使用以下代码开始使用该模型。你可以使用Transformers库的pipeline抽象进行对话推理,也可以使用generate()
函数结合Auto类进行推理。下面是两种方法的示例。
基础用法
import transformers
import torch
model_id = "HPAI-BSC/Llama3-Aloe-8B-Alpha"
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("<|eot_id|>")
]
outputs = pipeline(
prompt,
max_new_tokens=256,
eos_token_id=terminators,
do_sample=True,
temperature=0.6,
top_p=0.9,
)
print(outputs[0]["generated_text"][len(prompt):])
高级用法
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
model_id = "HPAI-BSC/Llama3-Aloe-8B-Alpha"
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("<|eot_id|>")
]
outputs = model.generate(
input_ids,
max_new_tokens=256,
eos_token_id=terminators,
do_sample=True,
temperature=0.6,
top_p=0.9,
)
response = outputs[0][input_ids.shape[-1]:]
print(tokenizer.decode(response, skip_special_tokens=True))
✨ 主要特性
- 性能卓越:芦荟模型在多个医疗问答数据集上进行了测试,即使与更大的模型相比,也展现出了具有竞争力的性能。
- 安全可靠:通过结合红队测试和对齐优化工作,芦荟在衡量道德和事实性的指标上得分很高,并附带了特定于医疗保健的风险评估。
- 易于使用:提供了使用Transformers库的pipeline抽象和
generate()
函数结合Auto类的两种推理方式。
📦 安装指南
文档未提及安装步骤,故跳过该章节。
📚 详细文档
模型详情
模型描述
属性 | 详情 |
---|---|
开发者 | HPAI |
模型类型 | 仅因果解码器的Transformer语言模型 |
语言 | 主要为英语 |
许可证 | 该模型基于Meta Llama 3 8B构建,受Meta Llama 3许可证约束。我们的所有修改均遵循CC BY-NC 4.0许可证。 |
微调基础模型 | meta-llama/Meta-Llama-3-8B |
模型来源
- 仓库:https://github.com/HPAI-BSC/prompt_engine (更多内容即将推出)
- 论文:https://arxiv.org/abs/2405.01886 (更多内容即将推出)
模型性能
芦荟在最流行的医疗问答数据集上进行了测试,无论是否使用medprompting推理技术,结果都显示出具有竞争力的性能。
使用高级提示方法(即Medprompt)的结果是通过与本研究一同公开的仓库实现的。
使用场景
直接使用
我们鼓励将芦荟用于研究目的,作为构建更好的医疗基础模型的垫脚石。
超出范围的使用
这些模型不得用于临床实践、医学诊断或任何其他形式的直接或间接医疗建议。模型容易出错,并且可能产生有害内容。禁止将芦荟模型用于对个人有害的活动,如垃圾邮件、欺诈或冒充。
偏差、风险和局限性
我们考虑了三种风险情况:
- 医疗专业人员冒充:这是一种欺诈行为,目前在利润方面造成了数十亿美元的损失。像芦荟这样的模型可能会被用于提高此类欺骗活动的效率,使其更加普遍。主要的预防措施包括提高公众对数字化信息不可靠性的认识、强调医疗注册的重要性,以及制定强制执行人工智能生成内容免责声明的立法。
- 无专业监督的医疗决策:虽然这在现代社会已经是一个问题(如自我用药),但像芦荟这样能够生成高质量对话数据的模型可能会助长自我欺骗,特别是在存在谄媚的情况下。通过生成量身定制的响应,它还可以用于生成可操作的答案。提高公众对自我诊断危险的认识是主要的防御措施之一,同时在模型输出中引入免责声明和警告。
- 获取危险物质或程序的信息:虽然关于敏感内容的文献已经可以在不同的来源(如图书馆、互联网、暗网)中找到,但大语言模型可以集中这种访问,使得控制此类信息的流动几乎不可能。模型对齐在这方面可能会有所帮助,但到目前为止效果仍然不足,因为越狱方法仍然可以绕过它。
下表显示了芦荟在几个人工智能安全任务中的表现:
建议
我们在训练中避免使用所有个人数据。模型的安全性无法保证。芦荟在适当的提示下可能会产生有害内容。因此,未成年人在没有监督的情况下不应单独与芦荟进行交互。
训练详情
在Llama 3 8B的基础上进行监督微调,使用医疗和通用领域的数据集,采用DARE - TIES过程进行模型融合,使用两阶段DPO过程进行人类偏好对齐。更多细节即将公布。
训练数据
- 医疗领域数据集,包括使用Mixtral - 8x7B和Genstruct生成的合成数据
- HPAI - BSC/pubmedqa - cot
- HPAI - BSC/medqa - cot
- HPAI - BSC/medmcqa - cot
- LDJnr/Capybara
- hkust - nlp/deita - 10k - v0
- jondurbin/airoboros - 3.2
- argilla/dpo - mix - 7k
- nvidia/HelpSteer
- 自定义偏好数据,包含从Anthropic Harmless、Chen等人以及原始提示生成的对抗性提示
评估
测试数据、因素和指标
测试数据
指标
- 准确率:适用于评估多项选择题问答任务。
结果
总结
为了将芦荟与最具竞争力的开源模型(包括通用模型和特定于医疗保健的模型)进行比较,我们使用了流行的医疗数据集(PubMedQA、MedMCQA、MedQA和仅用于六项医疗任务的MMLU),以及新的且高度可靠的CareQA。我们通过计算除CareQA之外所有得分的加权平均准确率来生成标准的MultiMedQA分数作为参考。此外,我们计算了所有数据集的算术平均值。Medical MMLU是通过对六项医疗子任务(解剖学、临床知识、大学生物学、大学医学、医学遗传学和专业医学)进行平均计算得出的。
基准测试结果表明,对芦荟进行的训练使其性能超过了Llama3 - 8B - Instruct。Llama3 - Aloe - 8B - Alpha优于像Meditron 70B这样的更大模型,并且接近像Yi - 34这样的更大基础模型。对于前者,即使使用SC - CoT,使用其报告的最佳变体时,这种优势仍然存在。所有这些结果使Llama3 - Aloe - 8B - Alpha成为同规模下最好的医疗大语言模型。
在提示技术的帮助下,Llama3 - Aloe - 8B - Alpha的性能得到了显著提高。特别是Medprompting使报告的准确率提高了7%,之后Llama3 - Aloe - 8B - Alpha仅落后于大十倍的Llama - 3 - 70B - Instruct。这种改进在各个医学领域基本一致。使用Medprompting的Llama3 - Aloe - 8B - Alpha在MMLU医学方面优于使用其自我报告的20 shot SC - CoT的Meditron 70B,在其他基准测试中略逊一筹。
环境影响
属性 | 详情 |
---|---|
硬件类型 | 4xH100 |
使用时长 | 7000小时 |
硬件提供商 | 巴塞罗那超级计算中心 |
计算区域 | 西班牙 |
碳排放 | 439.25千克 |
模型卡片作者
模型卡片联系方式
mailto: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}
}



