把“医院大脑”搬回家:AntAngelMed 医疗大模型从评测第一到本地部署的完整指南

关键词:AntAngelMed、医疗大模型、开源、本地部署、HealthBench、MedAIBench、vLLM、SGLang、Ascend 910B、FP8 量化


开场白:为什么医生也开始用“大模型”?

如果你最近陪家人去过医院,可能会发现:
“医生一边问诊,一边在电脑上打字,屏幕右侧偶尔弹出‘AI 提示’。”
这些提示的背后,往往就是医疗大模型——它们读过海量医学文献、指南和病例,能在毫秒级给出“可能的诊断”“用药冲突警告”或“下一步检查建议”。

AntAngelMed 就是这类“医院大脑”的最新开源版本。
浙江省卫生健康信息中心、蚂蚁健康、安诊儿医学人工智能公司把它训练到“全球开源第一”后,直接放出完整权重和代码,任何人都能免费下载、本地化部署,甚至嵌入自己的问诊小程序。

这篇文章把官方技术文档“翻译”成普通人也能读懂的实操手册:

  • 它到底强在哪?
  • 和普通通用模型有什么区别?
  • 家用显卡能不能跑?
  • 想在自己的服务器上搭一套,该敲什么命令?

全部答案下面一次给齐。


1. AntAngelMed 是什么?一句话先说明白

AntAngelMed 是一个专门只看“医学”这一门学科的大语言模型,总参数 100 B,但每次推理只“唤醒”6.1 B,相当于用 1/16 的电,干 40 B 稠密模型的活。
官方在三个权威医疗评测 HealthBench、MedAIBench、MedBench 上全部拿到开源第一,比同尺寸通用模型高 10~20 个百分点。


2. 能力拆解:它到底会干什么?

场景 它能做的事 官方评测得分(开源对照)
患者自助问诊 根据症状描述给出可能原因、就诊科室、紧急程度 HealthBench-Hard 第一
医生辅助决策 鉴别诊断、用药冲突提醒、检查推荐 MedAIBench 医疗知识问答第一
医学文书生成 出院小结、病历摘要、患者教育材料 MedBench 医学语言生成第一
医学考试刷题 回答执业医师真题并给出解析 MedBench 医学知识问答 90%+

3. 技术亮点:为什么它“又快又省”?

3.1 1/32 激活率的 MoE 架构

  • 把 100 B 参数切成 32 个“专家”,每次只请其中 1 位上班。
  • 同样输出 1000 个汉字,耗电量≈ 6 B 模型,速度却是 36 B 稠密模型的 3 倍。

3.2 三阶段“医学特训”

  1. 持续预训练:先让基座模型把 20 TB 中文医学教材、指南、论文读一遍。
  2. 监督微调:再刷 200 万条“患者-医生”真实对话,学会共情和问诊逻辑。
  3. 强化学习:用 GRPO 算法分两阶段——先练“推理”,再练“安全”,减少胡说八道的概率。

3.3 128 K 长上下文

  • 一次可吞下 300 页 PDF 病历,出院小结不再“截断”。
  • 基于 YaRN 外推,无需额外训练。

4. 模型尺寸与硬件对照表

精度 权重体积 最低 GPU 显存 推荐硬件 推理速度 (tokens/s)
BF16 190 GB 4×A100 80 GB Nvidia A100 4 卡 ~200
FP8 量化 95 GB 2×A100 80 GB Nvidia A100 2 卡 ~350
FP8 + EAGLE3 投机采样 95 GB 2×A100 80 GB 同上 ~450(HumanEval 提升 71%)

说明:速度测试条件为 H20 服务器,batch=1,输出 1 k tokens。


5. 三种安装方式:总有一款适合你

5.1 最快体验:Hugging Face Transformers(单卡可跑,纯 CPU 也行,只是慢)

from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "MedAIBase/AntAngelMed"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
    model_name,
    device_map="auto",
    trust_remote_code=True
)

prompt = "我头痛三天了,会不会是脑瘤?"
messages = [
    {"role": "system", "content": "You are AntAngelMed, a helpful medical assistant."},
    {"role": "user", "content": prompt}
]
text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = tokenizer([text], return_tensors="pt").to(model.device)
out = model.generate(**inputs, max_new_tokens=1024)
print(tokenizer.decode(out[0], skip_special_tokens=True))

常见疑问
Q:没有显卡能跑吗?
A:能,把 device_map="auto" 交给 CPU,但 6 B 活跃参数在纯 CPU 上大约 30 s 出 100 字,仅适合体验。


5.2 生产部署:vLLM(OpenAI 兼容 API,Nvidia GPU)

步骤 1:装环境

pip install vllm==0.11.0

步骤 2:拉起服务

python -m vllm.entrypoints.openai.api_server \
  --model MedAIBase/AntAngelMed \
  --tensor-parallel-size 4 \
  --served-model-name AntAngelMed \
  --max-model-len 32768 \
  --trust-remote-code

步骤 3:像 ChatGPT 一样调用

curl http://localhost:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "AntAngelMed",
    "messages": [{"role": "user", "content": "孩子发烧 39 ℃ 需要立即去医院吗?"}]
  }'

返回示例

{
  "choices": [{
    "message": {
      "content": "39 ℃ 属于高热,若精神差、拒水、抽搐、呼吸急促,需立即就医;若精神好、能喝水,可先口服退热药并观察 24 h……"
    }
  }]
}

5.3 国产芯片:Ascend 910B(华为 NPU)

步骤 1:拉镜像

docker pull quay.io/ascend/vllm-ascend:v0.11.0rc3

步骤 2:一键启动容器(8 卡)

docker run -itd --privileged --name=antangel \
  --net=host --shm-size=1000g \
  -v /your/model/path:/model \
  quay.io/ascend/vllm-ascend:v0.11.0rc3 bash

步骤 3:在容器内启动服务

export PYTORCH_NPU_ALLOC_CONF=expandable_segments:True
export HCCL_OP_EXPANSION_MODE="AIV"
python3 -m vllm.entrypoints.openai.api_server \
  --model /model \
  --tensor-parallel-size 4 \
  --data-parallel-size 2 \
  --enable_expert_parallel \
  --served-model-name AntAngelMed \
  --max-model-len 32768

6. 性能对比:同尺寸模型跑分一览

模型 激活参数 HealthBench MedAIBench MedBench
AntAngelMed 6.1 B 63.4 87.2 84.7
Ling-C2-6B* 6.0 B 48.1 72.5 70.3
ChatGLM-Med-6B 6.0 B 45.0 70.1 68.9
GPT-3.5-Turbo 未知 59.2 未测 79.5

*Ling-C2-6B 为通用基座,未经医学特训。


7. 典型 FAQ:先帮你把坑填平

Q1:许可证允许商用吗?
A:MIT 许可证,可商用,但医疗场景需自行完成药监局备案,模型方不提供临床合规承诺。

Q2:会瞎编参考文献吗?
A:经过“通用强化学习”阶段后, hallucination 率从 18 % 降到 7 %,但仍建议把输出当“草稿”,必须由执业医师确认。

Q3:能替代医生吗?
A:不能。官方定位是“辅助”,任何直接给出诊断或处方的行为都违反使用条款。

Q4:FP8 量化后精度掉多少?
A:在 MedBench 上掉 0.3 个百分点,基本无感;速度却翻倍,值得开。

Q5:128 K 窗口怎么外推?
A:用 YaRN 方法,训练时只在 32 K 做微调,推理时线性插值 RoPE 基频,无需重新训练。


8. 如何把它嵌入你的业务?三条路线参考

业务类型 集成思路 所需改动
互联网医院小程序 把 vLLM API 封装成 /ask 接口,前端输入症状,返回结构化建议 1 天
医院 HIS 系统 在医生工作站加“AI 助手”侧边栏,自动读病历、给鉴别诊断 1 周
医药 SaaS 知识库 用 128 K 窗口一次性扔给模型“最新指南 + 患者数据”,生成患者教育图文 3 天

9. 下一步:社区已经在做什么?

  • 量化版:FP8 已上线,INT4 正在内测,目标单卡 A100 80 G 可跑。
  • 边缘端:把 6 B 激活参数蒸馏到 1.3 B,用于车载/家用健康助手。
  • 多模态:加入 X-ray、CT 编码器,实现“文字 + 影像”联合问诊,预计 Q2 开源。

10. 结语:把“排名第一”真正用起来

AntAngelMed 的评测分数再漂亮,也只有被你跑起来的那一刻,才转化为真实的价值:

  • 患者少排一次冤枉队
  • 医生少翻一本厚重指南
  • 程序员少熬一个通宵

如果你已经准备好 GPU,不妨现在就复制第 5 节的命令,敲下回车——
十分钟后,你的终端里会跳出第一行由“医院大脑”给出的医学建议。
那一刻,你不再是旁观者,而是真正把开源医疗 AI 带到现实世界的人。


附录:一键复制区

# 1. 下载模型(国内镜像)
export VLLM_USE_MODELSCOPE=true
vllm serve MedAIBase/AntAngelMed \
  --tensor-parallel-size 4 \
  --served-model-name AntAngelMed \
  --max-model-len 32768 \
  --trust-remote-code
# 2. Python 客户端
import openai
client = openai.OpenAI(base_url="http://localhost:8000/v1", api_key="empty")
response = client.chat.completions.create(
    model="AntAngelMed",
    messages=[{"role": "user", "content": "孩子发烧 39 ℃ 需要立即去医院吗?"}]
)
print(response.choices[0].message.content)

祝部署顺利,愿代码与康健同在。