| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 10 天前 |
D2D 权重加载
D2D权重加载是 PyMotor 提供的模型权重启动加速能力。新实例启动时,可从集群内已就绪(ACTIVE)的同角色实例通过网络直接拉取权重,替代全量从磁盘加载,从而缩短启动时间。
当前仅 vLLM 引擎支持该特性。
工作原理
- 在
user_config.json的engine_config中开启 D2D 配置(见下文)。 - 首个实例:无可用 peer 时,Engine 从本地磁盘加载权重,并通过
listen_port对外提供权重服务(seed 模式)。 - 后续实例:Controller 自动发现同角色 ACTIVE 实例,收集 peer IP 并下发给 NodeManager;Engine 以
netloader方式从 peer 拉取对应分片权重。
Peer 发现与路由由 Controller / NodeManager 自动完成,无需手动填写 peer IP。
配置方法
在对应角色的 motor_engine_*_config.engine_config 中的 model_loader_extra_config下填写source及listen_port。以 Prefill 为例:
{
"motor_engine_prefill_config": {
"engine_type": "vllm",
"engine_config": {
"model": "/data01/models/DeepSeek-V3.1",
"model_loader_extra_config": {
"source": "auto",
"listen_port": 10000
}
}
}
}
关键字段
| 字段 | 必填 | 说明 |
|---|---|---|
source |
是 | 固定为 "auto",表示 peer 地址由 Controller 自动填充 |
listen_port |
是 | 本实例对外提供权重服务的起始端口;各 device 实际端口为 listen_port + device_offset |
若模型启用了投机推理(如 speculative-config / MTP),主模型与 draft 模型共用同一组 source 和 listen_port配置,无需额外配置。draft 权重服务端口会在 listen_port 基础上自动偏移 10000。
可选字段
| 字段 | 说明 |
|---|---|
int8_cache |
是否启用 INT8 缓存,由于当前把接收端反量化做在了接收权重之后,量化版权重建议配置"INT8_CACHE":"dram" |
int8_cache_name |
INT8 缓存名称 |
output_prefix |
权重输出前缀 |
配置键名支持小写(如
listen_port)或大写(如LISTEN_PORT),二者等价。
启用条件
Controller 判定 D2D 开启需同时满足:
model_loader_extra_config存在且为合法 JSON 对象source == "auto"listen_port已配置
满足后,Engine 启动时会自动设置 load_format = "netloader"。
部署步骤
- 在模型对应的
user_config.json中按上文添加model_loader_extra_config(Prefill / Decode / Union 按实际角色分别配置)。 - 使用 Deployer 部署首个实例,等待实例进入 ACTIVE 状态。
- 扩容或部署同角色新实例时,Controller 会自动向新实例下发 peer IP。
使用约束
- 引擎:仅 vLLM。
- Peer 匹配:仅匹配同角色(Prefill 对 Prefill、Decode 对 Decode 等)且状态为 ACTIVE 的实例,排除自身。
- 端口:
listen_port需在集群网络内可达,且不与已有服务端口冲突。 - 权重路径:首个实例(seed)仍需可访问本地模型权重目录;后续实例可依赖 D2D 拉取。
已测试模型
以下模型已在 PyMotor 示例配置中验证 D2D 启动加速:
| 模型 | 配置目录 |
|---|---|
| Qwen3-30B | examples/infer_engines/vllm/models/qwen/3/30b/ |
| DeepSeek-V3.1 | examples/infer_engines/vllm/models/deepseek/v3_1/ |
其他未测试模型如有问题,欢迎至官方提 ISSUE。