PMC-LLaMA
PMC-LLaMA 是一个专为医疗领域打造的开源大语言模型项目,旨在构建高质量、可公开使用的医学 AI 助手。它通过两阶段训练策略解决通用模型在专业医疗场景下知识匮乏且指令遵循能力弱的问题:首先利用 480 万篇 PubMed Central 论文及医学书籍进行领域预训练,夯实专业知识基础;随后使用精心构造的指令数据集进行微调,显著提升模型理解医生或患者意图并给出准确回答的能力。
该项目不仅发布了多个版本的模型(如基于 LLaMA-13B 优化的版本),还验证了“先领域预训练、后指令微调”这一技术路线在医疗垂直领域的有效性。相比同类模型,PMC-LLaMA 在处理复杂病例咨询、生成诊断建议等任务时表现更为出色,并能更好地遵循用户的具体指令。此外,团队还推出了针对多语言支持的后续演进版本及专用的医疗报告生成评估指标 RaTEScore,进一步推动了医疗基础模型的发展。
PMC-LLaMA 非常适合医疗 AI 研究人员、开发者以及希望探索大模型在临床辅助决策中应用的专业人士使用。项目提供了完整的代码库、环境配置指南及便捷的加载示例,支持研究者快速复现实验或基于此开发定制化的医疗问答系统,是进入智慧医疗领域的重要开源基石。
使用场景
某三甲医院的信息科团队正致力于开发一款辅助分诊系统,旨在帮助初级医生快速处理海量的患者主诉并生成初步的诊疗建议。
没有 PMC-LLaMA 时
- 通用模型幻觉严重:直接使用通用的 LLaMA 模型回答专业医学问题时,常出现“一本正经胡说八道”的现象,如编造不存在的药物相互作用或错误的解剖学知识。
- 术语理解偏差:模型无法准确识别复杂的临床缩写和生僻医学术语(如特定孕周的并发症描述),导致对病情的理解浮于表面。
- 指令遵循能力弱:即使输入了详细的患者病历,模型往往忽略“直接给出最佳选项”等关键约束,输出冗长且缺乏重点的科普文章而非临床建议。
- 合规风险高:由于缺乏医学语料的预训练,生成的建议缺乏循证医学依据,难以通过医院内部的伦理与安全审查。
使用 PMC-LLaMA 后
- 专业知识精准可靠:PMC-LLaMA 基于 480 万篇 PubMed Central 论文及医学书籍预训练,能准确引用权威文献,显著降低医疗幻觉,确保建议的科学性。
- 深度理解临床语境:模型能精准解析如"22 周妊娠伴尿痛”等复杂病例细节,正确关联妊娠期用药禁忌与感染特征,提供符合临床逻辑的分析。
- 严格遵循诊疗指令:经过指令微调(Instruction Tuned),PMC-LLaMA 能严格执行“扮演医生”、“直接给出最佳选项”等要求,输出结构清晰、决策导向明确的回复。
- 落地部署更安心:作为开源模型,医院可在本地私有化部署,既利用了其在医学领域的专业能力,又确保了患者数据的隐私安全与合规性。
PMC-LLaMA 通过将海量医学文献知识转化为可执行的指令跟随能力,让 AI 真正从“泛泛而谈的聊天机器人”进化为“懂行且守规的医疗助手”。
运行环境要求
- 未说明
需要 NVIDIA GPU (代码示例使用 .cuda()),CUDA 11.6
未说明 (运行 13B 模型通常建议 24GB+ 显存及充足系统内存)

快速开始
PMC-LLaMA
“PMC-LLaMA:迈向构建开源医学语言模型”的官方代码。
我们证明,医学大语言模型应首先使用领域语料库进行预训练,然后再使用指令微调数据集进行微调。
我们已发布了基于我们的指令微调数据集训练的最新模型 PMC_LLaMA_13B。与 MedLLaMA_13B 相比,它在遵循用户指令方面表现出更强的能力。
同样,可以轻松加载该模型:
import transformers
import torch
tokenizer = transformers.LlamaTokenizer.from_pretrained('axiong/PMC_LLaMA_13B')
model = transformers.LlamaForCausalLM.from_pretrained('axiong/PMC_LLaMA_13B')
在此,我们介绍 PMC_LLaMA 的各个版本及其简要说明。
MedLLaMA_13B 是在医学语料库上预训练的模型,而 PMC_LLaMA_13B 则是在此基础上进一步微调得到的。
| 版本 | 链接 | 简介 | 发布日期 |
|---|---|---|---|
MMed-Llama-3 ![]() |
https://huggingface.co/Henrychur/MMed-Llama-3-8B | 基于 Llama-3 的最新多语言预训练大语言模型 | 2024/05/22 |
| MMedLM | https://github.com/MAGIC-AI4Med/MMedLM | 进一步预训练的多语言大语言模型 | 2024/02/21 |
| PMC_LLaMA_13B | https://huggingface.co/axiong/PMC_LLaMA_13B | 指令微调版 | 2023/09/01 |
| MedLLaMA_13B | https://huggingface.co/chaoyi-wu/MedLLaMA_13B | 在 480 万篇 PubMedCentral 论文和医学书籍上对 LLaMA 进行预训练 | 2023/05/01 |
| PMC_LLaMA_7B_10_epoch | https://huggingface.co/chaoyi-wu/PMC_LLAMA_7B_10_epoch | 类似于 PMC_LLaMA_7B,但训练了 10 个 epoch | 2023/05/01 |
| PMC_LLaMA_7B | https://huggingface.co/chaoyi-wu/PMC_LLAMA_7B | 使用 PMC 论文对 LLaMA-7b 进行 5 个 epoch 的微调 | 2023/04/25 |
最新消息
我们发布了一项新的报告生成指标 RaTEScore。我们坚信,为了推动基于生成式技术的医学基础模型的发展,开发一个稳健可靠的评估指标是至关重要的基础步骤。
环境配置
只需按照以下步骤设置所需的环境:
conda install pytorch==1.13.0 torchvision==0.14.0 torchaudio==0.13.0 pytorch-cuda=11.6 -c pytorch -c nvidia
pip install transformers=4.28.1, sentencepiece, datasets
快速入门
请查看 simple_test.py 以快速使用 PMC-LLaMA,或者您可以按照以下简单示例操作。
import transformers
import torch
tokenizer = transformers.LlamaTokenizer.from_pretrained('axiong/PMC_LLaMA_13B')
model = transformers.LlamaForCausalLM.from_pretrained('axiong/PMC_LLaMA_13B')
model.cuda() # 将模型移动到 GPU
prompt_input = (
'Below is an instruction that describes a task, paired with an input that provides further context.'
'Write a response that appropriately completes the request.\n\n'
'### Instruction:\n{instruction}\n\n### Input:\n{input}\n\n### Response:'
)
example = {
"instruction": "您是一位医生,请根据患者的描述回答其医疗问题。直接给出最佳选项。",
"input": (
"###问题:一位怀孕 22 周的 23 岁女性主诉排尿时有烧灼感。她表示症状始于 1 天前,并且尽管多喝水和服用蔓越莓提取物,症状仍在加重。她目前总体感觉良好,正在接受产科医生的定期随访。体温为 97.7°F (36.5°C),血压为 122/77 mmHg,脉搏为 80/min,呼吸频率为 19/min,室温下血氧饱和度为 98%。体格检查未见肋脊角压痛,子宫呈妊娠状态。请问对该患者的最佳治疗方案是什么?"
"###选项:A. 氨苄西林 B. 头孢曲松 C. 多西环素 D. 硝呋antoin"
)
}
input_str = [prompt_input.format_map(example)]
model_inputs = tokenizer(
input_str,
return_tensors='pt',
padding=True,
)
print( f"\033[32mmodel_inputs\033[0m: { model_inputs }" )
topk_output = model.generate(
model_inputs.input_ids.cuda(),
max_new_tokens=1000,
top_k=50
)
output_str = tokenizer.batch_decode(topk_output)
print('模型预测: ', output_str[0])
训练
训练过程可分为两个阶段:预训练和指令微调。
预训练
预训练脚本位于 Pretrain/training.sh。
我们的预训练数据来源于 S2ORC。只有带有 PubMed ID 的论文才被视为与医学相关,并在预训练中使用。
由于版权限制,我们无法公开原始内容,因此本书以 MedicalBook.xlsx 的形式列在本仓库中。如需复现,请自行购买并处理这些书籍。
有关如何微调 LLaMA 的更多详细信息,请参阅 Finetune_LLAMA
指令微调
我们还提供了指令微调脚本 SFT/train.py。
您的指令数据集可以在 PMC LLaMA Instructions 中找到。
结果
QA 基准测试
| 方法 | 模型大小 | USMLE | MedMCQA | PubMedQA |
|---|---|---|---|---|
| 人类(及格) | - | 50.0 | -- | 60.0 |
| 人类(专家) | - | 87.0 | 90.0 | 78.0 |
| ChatGPT | 175B | 57.0 | 44.7 | 63.9 |
| LLaMA-2 | 13B | 42.73 | 37.41 | 68.0 |
| LLaMA-2 | 70B | 43.68 | 35.02 | 74.3 |
| Med-Alpaca | 13B | 30.85 | 31.13 | 53.2 |
| Chat-Doctor | 7B | 33.93 | 31.10 | 54.3 |
PMC_LLaMA_13B ![]() |
13B | 56.36 | 56.04 | 77.9 |
请注意,手动评分和零样本结果中标有 * 的数据来自 LMFLow。
零样本案例
我们展示了PMC_LLaMA_13B在域外查询下的响应。
请注意,由于MedLLaMA_13B是在论文数据上训练的,它可能会生成一些引用编号(LLaMA有时也会这样做),我们在案例中将其忽略,以突出主要内容。而对于PMC_LLaMA_13B,由于其输出结果是结构化的,因此更容易提取出正确的答案。
致谢
Minimal LLaMA -- https://github.com/zphang/minimal-llama
alpaca -- https://github.com/tatsu-lab/stanford_alpaca
LMFLow -- https://github.com/OptimalScale/LMFlow/tree/main/src/lmflow
LLaMA:开放且高效的通用语言模型 -- https://arxiv.org/abs/2302.13971
联系方式
如有任何问题,请随时联系 wtzxxxwcy02@sjtu.edu.cn。
常见问题
相似工具推荐
AutoGPT
AutoGPT 是一个旨在让每个人都能轻松使用和构建 AI 的强大平台,核心功能是帮助用户创建、部署和管理能够自动执行复杂任务的连续型 AI 智能体。它解决了传统 AI 应用中需要频繁人工干预、难以自动化长流程工作的痛点,让用户只需设定目标,AI 即可自主规划步骤、调用工具并持续运行直至完成任务。 无论是开发者、研究人员,还是希望提升工作效率的普通用户,都能从 AutoGPT 中受益。开发者可利用其低代码界面快速定制专属智能体;研究人员能基于开源架构探索多智能体协作机制;而非技术背景用户也可直接选用预置的智能体模板,立即投入实际工作场景。 AutoGPT 的技术亮点在于其模块化“积木式”工作流设计——用户通过连接功能块即可构建复杂逻辑,每个块负责单一动作,灵活且易于调试。同时,平台支持本地自托管与云端部署两种模式,兼顾数据隐私与使用便捷性。配合完善的文档和一键安装脚本,即使是初次接触的用户也能在几分钟内启动自己的第一个 AI 智能体。AutoGPT 正致力于降低 AI 应用门槛,让人人都能成为 AI 的创造者与受益者。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
DeepSeek-V3
DeepSeek-V3 是一款由深度求索推出的开源混合专家(MoE)大语言模型,旨在以极高的效率提供媲美顶尖闭源模型的智能服务。它拥有 6710 亿总参数,但在处理每个 token 时仅激活 370 亿参数,这种设计巧妙解决了大规模模型推理成本高、速度慢的难题,让高性能 AI 更易于部署和应用。 这款模型特别适合开发者、研究人员以及需要构建复杂 AI 应用的企业团队使用。无论是进行代码生成、逻辑推理还是多轮对话开发,DeepSeek-V3 都能提供强大的支持。其独特之处在于采用了无辅助损失的负载均衡策略和多令牌预测训练目标,前者在提升计算效率的同时避免了性能损耗,后者则显著增强了模型表现并加速了推理过程。此外,模型在 14.8 万亿高质量令牌上完成预训练,且整个训练过程异常稳定,未出现不可恢复的损失尖峰。凭借仅需 278.8 万 H800 GPU 小时即可完成训练的高效特性,DeepSeek-V3 为开源社区树立了一个兼顾性能与成本效益的新标杆。
LLMs-from-scratch
LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备
spec-kit
Spec Kit 是一款专为提升软件开发效率而设计的开源工具包,旨在帮助团队快速落地“规格驱动开发”(Spec-Driven Development)模式。传统开发中,需求文档往往与代码实现脱节,导致沟通成本高且结果不可控;而 Spec Kit 通过将规格说明书转化为可执行的指令,让 AI 直接依据明确的业务场景生成高质量代码,从而减少从零开始的随意编码,确保产出结果的可预测性。 该工具特别适合希望利用 AI 辅助编程的开发者、技术负责人及初创团队。无论是启动全新项目还是在现有工程中引入规范化流程,用户只需通过简单的命令行操作,即可初始化项目并集成主流的 AI 编程助手。其核心技术亮点在于“规格即代码”的理念,支持社区扩展与预设模板,允许用户根据特定技术栈定制开发流程。此外,Spec Kit 强调官方维护的安全性,提供稳定的版本管理,帮助开发者在享受 AI 红利的同时,依然牢牢掌握架构设计的主动权,真正实现从“凭感觉写代码”到“按规格建系统”的转变。
NextChat
NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。
