DDS(深度学习分割)模型首次使用时需要约 10–15 秒加载到显存,客户点击检测时会感受到明显卡顿。预热功能可以在空闲时提前加载模型,预热完成后每次检测即点即响应(约 30–50 ms/张)。
典型使用场景:
主界面 → 教学文件列表 → 工具条上的火焰按钮 ![]()



CMD = 1106
以 分号 ; 分隔的名字列表,每个名字可以是教学文件名或分组名:
| 参数示例 | 含义 |
|---|---|
| (空字符串) | 预热全部教学文件 |
teaching1 |
预热单个教学文件 |
Default |
预热 Default 分组下全部教学文件 |
teaching1;BGA组;teaching2 |
混合:文件名和分组名任意组合 |
名字优先按教学文件解析,找不到再按分组解析。
沿用 FIX 标准 UDP 协议(16 字节包头 + 参数体):
| 偏移 | 字段 | 长度 | 说明 |
|---|---|---|---|
| 0–7 | 魔数 | 8 | "FIX00000" |
| 8–9 | ACK | 2 | 应用层序列号 |
| 10–11 | 命令码 | 2 | 1106 |
| 12–15 | 参数长度 | 4 | N |
| 16–... | 参数体 | N | UTF-8 文本 |
响应体为 key=value; 形式的一行文本:
loaded=2;failed=0;skipped_vram=0;models=fix-solder-ddsv10.ptx,fix-void-ddsv10.ptx
| 字段 | 含义 |
|---|---|
loaded |
成功预热的模型数量 |
failed |
加载失败的模型数量 |
skipped_vram |
因显存不足跳过的模型数量 |
models |
成功预热的模型文件名列表(逗号分隔) |
failed_models |
失败的模型列表(失败时才出现) |
skipped_models |
跳过的模型列表(跳过时才出现) |
error |
错误原因(出错时出现,取值:chain_running / no_match) |
| 错误码 | 常量名 | 含义 |
|---|---|---|
0 |
RET_OK |
成功(即使 0 个模型被加载也是成功) |
32 |
RET_TeachingFileNotExists |
传入的名字都匹配不到文件或分组 |
64 |
RET_TeachingFileExecError |
当前正在检测中,拒绝预热 |
场景 1:预热 "产品A" 分组下全部方案
请求参数: "产品A"
响应: loaded=3;failed=0;skipped_vram=0;models=fix-solder-ddsv10.ptx,fix-void-ddsv10.ptx,fix-bga-solder.ptx
错误码: 0
场景 2:检测进行中发送预热命令
请求参数: "Default"
响应: loaded=0;failed=0;skipped_vram=0;error=chain_running
错误码: 64
客户端应稍后重试。
场景 3:预热所有方案(空参数)
请求参数: ""
响应: loaded=8;failed=0;skipped_vram=0;models=...
错误码: 0
.ptx 模型文件,需重启 FIX 并再次触发预热Q: 预热一次可以管多久?
A: 只要 FIX 程序不关闭,预热状态持续有效。
Q: 预热后模型占多少显存?
A: 每个 DDS 模型约占 500 MB–1.5 GB 显存(视模型大小而定)。RTX 4070 Ti (12 GB) 可同时驻留 6–8 个模型。
Q: 为什么 ONNX 模型没被预热?
A: ONNX 模型加载本身已经很快(<100 ms),首次推理约 500 ms,总体可接受,故无需预热。
Q: UDP 预热命令返回 loaded=0,是否代表失败?
A: 不一定。如果教学方案中没有 DDS 模型(例如全是 ONNX 或规则),响应会是 loaded=0;failed=0;skipped_vram=0,错误码仍为 0,属于正常情况。