许可证: cc-by-nc-4.0
数据集:
- argilla/dpo-mix-7k
- nvidia/HelpSteer
- jondurbin/airoboros-3.2
- hkust-nlp/deita-10k-v0
- LDJnr/Capybara
- HPAI-BSC/CareQA
- GBaker/MedQA-USMLE-4-options
- lukaemon/mmlu
- bigbio/pubmed_qa
- openlifescienceai/medmcqa
- bigbio/med_qa
- HPAI-BSC/better-safe-than-sorry
- HPAI-BSC/pubmedqa-cot
- HPAI-BSC/medmcqa-cot
- HPAI-BSC/medqa-cot
语言:
- en
库名称: transformers
标签:
- 生物学
- 医学
管道标签: 问答
现已推出ALOE家族的最新迭代!ALOE BETA 8B和ALOE BETA 70B版本。这些版本包括:
- 整体性能更优
- 更全面的对齐和安全性
- 许可证兼容更多用途
Aloe:新一代医疗大语言模型家族
Aloe是一个新的医疗大语言模型家族,通过模型融合和先进的提示策略,在其规模范围内与所有先前开源模型相比具有高度竞争力,并达到最先进的成果。得益于联合红队测试和对齐工作,Aloe在衡量伦理性和事实性的指标上得分很高。完整的训练细节、模型融合配置和所有训练数据(包括合成生成的数据)将共享。此外,本工作中用于在推理过程中产生最先进结果的提示库也将共享。Aloe附带了一个针对医疗领域的风险评估,以促进此类系统的安全使用和部署。
模型详情
模型描述
模型来源 [可选]
- 代码库: https://github.com/HPAI-BSC/prompt_engine(更多即将推出)
- 论文: https://arxiv.org/abs/2405.01886(更多即将推出)
模型性能
Aloe已在最流行的医疗问答数据集上进行了测试,无论是否使用medprompting推理技术。结果显示其性能具有竞争力,甚至超越更大的模型。
使用高级提示方法(如Medprompt)的结果通过本工作公开的代码库实现。
用途
直接使用
我们鼓励将Aloe用于研究目的,作为构建更好的医疗基础模型的垫脚石。
超出范围的使用
这些模型不得用于临床实践、医疗诊断或任何其他形式的直接或间接医疗建议。模型容易出错并可能产生有害内容。禁止将Aloe模型用于对个人有害的活动,如垃圾邮件、欺诈或冒充。
偏见、风险和限制
我们考虑三种风险情况:
- 冒充医疗专业人员,这是一种欺诈行为,目前每年产生数十亿美元的利润。像Aloe这样的模型可能会被用来提高此类欺骗活动的效果,使其更加普遍。主要的预防措施包括公众对数字化信息不可靠性和医疗注册重要性的教育,以及强制执行AI生成内容免责声明的立法。
- 无专业监督的医疗决策。虽然这已经是现代社会的一个问题(如自我用药),但像Aloe这样能够产生高质量对话数据的模型,特别是在存在奉承行为的情况下,可能会助长自我欺骗。通过生成定制化的回答,它也可以被用来产生可操作的答案。公众对自我诊断危险的教育是主要的防御手段之一,同时在模型输出中引入免责声明和警告。
- 获取危险物质或程序的信息。虽然关于敏感内容的文献已经可以在不同来源(如图书馆、互联网、暗网)找到,但大语言模型可以集中此类访问,几乎无法控制此类信息的流动。模型对齐在这方面可以有所帮助,但迄今为止效果仍然不足,因为越狱方法仍然可以绕过它。
下表显示了Aloe在多个AI安全任务中的表现:
建议
我们在训练中避免使用所有个人数据。模型安全性无法保证。Aloe在适当的提示下可能产生有害内容。因此,未成年人不应在没有监督的情况下单独与Aloe互动。
如何开始使用模型
使用以下代码开始使用模型。您可以使用Transformers的pipeline抽象运行对话推理,或利用Auto类与generate()
函数。让我们看看两者的示例。
Transformers pipeline
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):])
Transformers AutoModelForCausalLM
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))
训练详情
在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等人及原始提示生成的对抗性提示
评估
测试数据、因素和指标
测试数据