快速结论
优先把布尔开关明确写成 0/1 或 true/false;保留未设置与空字符串的区别。改完配置后在新进程验证,别把其他类型参数一起替换。
- 教程适用于 5537415 中通过 _bool 读取的值。
- 大小写不敏感,但没有自动 trim 空格。
- 环境描述符首次读取后缓存到类属性,运行中改环境不保证重新解析。
本次更新:10 月 25 日核对原始来源后新增,注明消息日期、适用版本及验证范围。
DeepInfer 10 月 25 日提交把布尔环境变量改为严格解析。本教程依据对应源码给出排查流程,没有安装或执行推理。
1. 确认字段确实是布尔值
先查看当前提交的 environ.py,区分 bool、int、str 和 choice。不要把 DEEPINFER_ACCELERATOR、模型路径或整数批次参数也替换成 0、1。
2. 把几个容易混淆的值分开
| 配置值 | 当前 _bool 行为 |
|---|---|
| 1、true 及其大小写变体 | 真 |
| 0、false 及其大小写变体 | 假 |
| 空字符串 | 假 |
| 未设置 | 使用该字段默认值 |
| yes、off、2、带前后空格的 true | 报 ValueError |
错误通常携带变量名称。排查时保留脱敏后的字段和值形态,无需打印整个进程环境或所有凭据。
3. 逐层找出谁覆盖了配置
以下为编辑建议:依次核对 shell、容器 env、配置模板、作业平台覆盖项及启动包装脚本。只比较有关开关,记录最终启动进程读到的值。
需要启用批次不变并关闭可变长度 MTP 时,官方 README 的明确写法为:
export DEEPINFER_BATCH_INVARIANT=1
export DEEPINFER_ENABLE_MTP_VARLEN=0
这两个设置是 NVIDIA 确定性采样流程的一部分,完整复现还需固定 seq_seed 与输入,见复现教程。
4. 用新进程核对改动
环境描述符在第一次读取后会缓存解析结果。修改 shell 或编排配置后,应按自己的任务管理方式重新启动待验证进程,不能仅修改外部环境就认定正在运行的进程已采用新值。
记录源码提交、启动配置及首个错误;格式问题解决后再检查设备、依赖和模型。出现布尔解析异常,不代表权重文件损坏或模型能力发生变化。
参考资料
本文依据以下资料整理,版本与接口信息请以来源页面的现行说明为准。