# Baichuan-M3
## 论文
[Modeling Clinical Inquiry for Reliable Medical Decision-Making](https://arxiv.org/abs/2602.06570)
## 模型简介
Baichuan-M3 是百川智能推出的全新一代医疗增强大语言模型,是继 Baichuan-M2 之后的重要里程碑。
与以往主要聚焦于静态问答或表面角色扮演的方法不同,Baichuan-M3 经过专门训练,能够显式建模 临床决策过程,旨在提升模型在真实医疗场景中的可用性与可靠性。该模型并非仅生成“听起来合理”的答案,或频繁给出诸如“你应尽快就医”等模糊建议,而是被训练为能够 主动获取关键临床信息、构建连贯的医学推理路径,并 系统性地约束易产生幻觉的行为。
具有以下的亮点:
超越 GPT-5.2:在 HealthBench、HealthBench-Hard、幻觉评估和 SCAN-bench 等多项指标上全面超越 OpenAI 最新模型,树立医疗 AI 新的 SOTA。
高保真临床问诊能力:唯一在 SCAN-bench 全部三个维度(临床问诊、实验室检查、诊断)均排名第一的模型。
低幻觉率,高可靠性:通过 Fact-Aware RL,在无外部工具辅助的情况下,幻觉率低于 GPT-5.2。
高效部署:W4 量化将内存占用降至原始的 26%;Gated Eagle3 推测解码实现 96% 的加速。
## 环境依赖
| 软件 | 版本 |
| :----------: | :--------------------------------------------: |
| DTK | 26.04.2 |
| python | 3.10.12 |
| transformers | 4.57.6 |
| vllm | 0.11.0+das.opt1.rc2.dtk2604.20260128.g0bf89b0c |
推荐使用镜像:harbor.sourcefind.cn:5443/dcu/admin/base/vllm:0.11.0-ubuntu22.04-dtk26.04-0130-py3.10-20260204
- 挂载地址`-v`根据实际模型情况修改
```bash
docker run -it \
--shm-size 200g \
--network=host \
--name baichuan_m3 \
--privileged \
--device=/dev/kfd \
--device=/dev/dri \
--device=/dev/mkfd \
--group-add video \
--cap-add=SYS_PTRACE \
--security-opt seccomp=unconfined \
-u root \
-v /opt/hyhal/:/opt/hyhal/:ro \
-v /path/your_code_data/:/path/your_code_data/ \
harbor.sourcefind.cn:5443/dcu/admin/base/vllm:0.11.0-ubuntu22.04-dtk26.04-0130-py3.10-20260204 bash
```
更多镜像可前往[光源](https://sourcefind.cn/#/service-list)下载使用。
关于本项目DCU显卡所需的特殊深度学习库可从[光合](https://developer.sourcefind.cn/tool/)开发者社区下载安装。
## 数据集
`暂无`
## 训练
`暂无`
## 推理
### vllm
#### 多机推理
加入环境变量
> 请注意:
> 每个节点上的环境变量都写到.sh文件中,保存后各个计算节点分别source`.sh`文件
>
> VLLM_HOST_IP:节点本地通信口ip,尽量选择IB网卡的IP,**避免出现rccl超时问题**
>
> NCCL_SOCKET_IFNAME和 GLOO_SOCKET_IFNAME:节点本地通信网口ip对应的名称
>
> 通信口和ip查询方法:ifconfig
>
> IB口状态查询:ibstat !!!一定要active激活状态才可用,各个节点要保持统一
```bash
export ALLREDUCE_STREAM_WITH_COMPUTE=1
export VLLM_HOST_IP=x.x.x.x # 对应计算节点的IP,选择IB口SOCKET_IFNAME对应IP地址
export NCCL_SOCKET_IFNAME=ibxxxx
export GLOO_SOCKET_IFNAME=ibxxxx
export NCCL_IB_HCA=mlx5_0:1 # 环境中的IB网卡名字
unset NCCL_ALGO
export NCCL_MIN_NCHANNELS=16
export NCCL_MAX_NCHANNELS=16
export NCCL_NET_GDR_READ=1
export HIP_VISIBLE_DEVICES=0,1,2,3,4,5,6,7
export VLLM_SPEC_DECODE_EAGER=1
export VLLM_MLA_DISABLE=0
export VLLM_USE_FLASH_MLA=1
export VLLM_RPC_TIMEOUT=1800000
# K100_AI集群建议额外设置的环境变量:
export VLLM_ENFORCE_EAGER_BS_THRESHOLD=44
# 海光CPU绑定核
export VLLM_NUMA_BIND=1
export VLLM_RANK0_NUMA=0
export VLLM_RANK1_NUMA=1
export VLLM_RANK2_NUMA=2
export VLLM_RANK3_NUMA=3
export VLLM_RANK4_NUMA=4
export VLLM_RANK5_NUMA=5
export VLLM_RANK6_NUMA=6
export VLLM_RANK7_NUMA=7
```
启动RAY集群
x.x.x.x对应第一步的head节点VLLM_HOST_IP
```bash
# head节点执行
ray start --head --node-ip-address=x.x.x.x --port=6379 --num-gpus=8 --num-cpus=32
# worker节点执行
ray start --address='x.x.x.x:6379' --num-gpus=8 --num-cpus=32
```
启动vllm server
```bash
vllm serve /path/to/baichuan-inc/Baichuan-M3-235B
--host x.x.x.x --port 8000
--distributed-executor-backend ray
--tensor-parallel-size 8
--pipeline-parallel-size 2
--gpu-memory-utilization 0.9
--served-model-name baichuan-m3
--reasoning-parser deepseek_r1
```
启动完成后可通过以下方式访问:
```bash
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "baichuan-m3",
"messages": [
{
"role": "user",
"content": "下午头痛怎么办?"
}
]
}'
```
## 效果展示