产品镜像和源码安装环境均使用 turbo-physai。仅在尚未安装组件的源码开发目录中,可使用 PYTHONPATH=. python -m turbo_physai.cli 调用同一入口。
创建空白的外部优化开发工程:
turbo-physai optimization init <name> [--output <directory>]name:模型或优化项目名称,必须以字母开头,只包含字母、数字、-、_;--output:输出目录;未指定时,框架将名称转为小写、将-转为_,并使用<normalized_name>_optimization;- 已存在路径不会覆盖。
turbo-physai optimization generate \
--recipe <recipe.yaml> \
--repo <model-repo> \
--commit <validated-commit> \
--output <generated-optimization-config.yaml> \
[--force]- 模型仓库 HEAD 必须等于
--commit; - 模型仓库必须干净;
--commit用于本次生成的基线确认,并作为非阻断的参考信息写入最终 YAML;- 展开
extends和 Group 依赖,确定最终 Group 顺序; - 检查 Group 组合冲突和模型 Replacement 对公共 Replacement 的直接引用;
- 从当前模型仓库提取 target source/AST Hash;
- 同时输出配置和隐藏生成记录
.<配置文件名>.generation.json; - 配置或记录已存在时默认返回错误;
--force同时更新配置和生成记录。
准备 RuntimeConfig,并在每个 Python 训练进程中应用 OptimizationConfig 后执行原训练入口:
turbo-physai run \
[--model <model-name>] \
[--optimization-config <model-optimization-config.yaml>] \
[--runtime-config <runtime.yaml>] \
[--log-report] \
[--force-group GROUP_ID[,GROUP_ID...]] \
[--disable-group GROUP_ID[,GROUP_ID...]] \
[--set NAME=VALUE] \
[--disable-numa] \
<training-command>| 参数 | 含义 |
|---|---|
--model |
内置模型名称;自动选择该模型的 OptimizationConfig 和 RuntimeConfig |
--optimization-config |
显式 OptimizationConfig 路径;优先于 --model 选择结果 |
--runtime-config |
显式 RuntimeConfig 路径;优先于 --model 选择结果 |
--log-report |
将本次优化应用报告输出到训练日志;默认关闭 |
--force-group GROUP_ID[,GROUP_ID...] |
对指定且已启用的一个或多个 Group 的可放行检查进行一次性覆盖 |
--disable-group GROUP_ID[,GROUP_ID...] |
本次启动不应用指定的一个或多个 Group |
--set NAME=VALUE |
覆盖或增加非空环境变量,可重复 |
--disable-numa |
关闭本次启动的 NUMA 绑定;默认开启 |
训练命令直接写在 TurboPhysAI 参数之后,框架逐字透传,不解析或改写启动器参数。可以使用 torchrun、torchpack dist-run、DeepSpeed、accelerate、mpirun、srun 或 Shell 启动脚本,TurboPhysAI 会在每个 Python 训练 rank 中自动应用 OptimizationConfig。
指定 --log-report 后,Rank 0 将完整 OptimizationReport 输出到训练日志,其他 rank 输出应用状态摘要。报告内容见优化应用报告。
例外是 python -E、-I、-S:这三个标志会使启动钩子不被加载,命令中出现它们时 turbo-physai run 直接报错,而不是让训练以未优化状态运行。
Shell 语法本身仍不由 turbo-physai run 解析。source、ulimit、管道和条件分支应保留在作业脚本中,由该脚本调用 turbo-physai run。完整字段和覆盖规则见 RuntimeConfig 使用指南。
配置选择顺序如下:
- 显式
--optimization-config或--runtime-config; --model对应目录下的configs/optimization.yaml和可选的configs/runtime.yaml;- 未指定模型和 OptimizationConfig 时,使用内置
optimizations/common/configs/optimization.yaml,不加载 RuntimeConfig。
模型名称不区分大小写,- 会按 _ 处理。例如 --model BEVFormer 与 --model bevformer 等价。
turbo-physai run \
--model bevformer \
torchrun --nproc-per-node=8 tools/train.py path/to/config.pyTorchPack 示例:
turbo-physai run \
--model bevfusion \
torchpack dist-run -np 8 python tools/train.py path/to/config.py--force-group 仅对本次启动有效,且 Group 必须已被当前 OptimizationConfig 启用。多个 Group ID 使用逗号分隔。该参数只能覆盖框架明确标记为可放行的证据类检查。目标不存在、Alias 身份冲突、签名不兼容和优化冲突等结构性问题仍会阻断。
--disable-group 仅对本次启动有效,不修改 OptimizationConfig。多个 Group ID 使用逗号分隔。依赖被禁用 Group 的其他 Group 同时跳过。报告分别使用 disabled_by_user 和 dependency_disabled 记录两类原因。同一 Group 不能同时强制放行和禁用。
run 用 exec 替换自身执行训练命令,进程树中不留中间进程。SIGINT、SIGTERM 等信号由训练进程直接接收,不经过转发。
用于在不启动训练的情况下,排查配置加载、Group 依赖及目标代码匹配问题。检查通过不能代替实际运行验证。
turbo-physai optimization check <optimization-config.yaml> \
[--repo <model-repo> | --generated-only]默认检查已生成的 OptimizationConfig 与当前模型仓库是否一致。--repo 默认为当前目录。该模式要求模型工作区干净,并校验配置格式、字段类型和 Catalog 导入,检查 Group 依赖闭包、执行顺序、Group 组合以及已记录的 target Hash。模型仓库 commit 不同本身不会导致检查失败。默认模式不检查隐藏生成记录。
使用 --generated-only 检查生成记录,防止交付时遗漏 CLI 生成步骤或修改配套文件后未重新生成。该模式不需要模型环境,不能与 --repo 同时使用:
turbo-physai optimization check --generated-only <optimization-config.yaml>该模式读取配置同目录的隐藏生成记录 .<配置文件名>.generation.json,核对 Config、Recipe、声明的 Catalog 文件和继承配置规范化后的 SHA-256。YAML 按解析后的数据计算,Python Catalog 按 AST 计算;不导入 Catalog 或模型,也不需要克隆模型仓库。
注释、空行及不改变解析结果的排版变化不会触发失败。配置值、列表顺序、Catalog 代码结构及字符串内容的变化仍会触发失败。记录缺失、格式错误、关联文件缺失、无法解析或指纹不匹配时返回 2,需要修正文件并重新执行 optimization generate。
| 返回码 | 含义 |
|---|---|
0 |
命令成功,或训练进程正常退出 |
2 |
训练进程执行前发生参数、OptimizationConfig、RuntimeConfig、生成检查或覆盖策略错误 |
91 |
某个 rank 无法应用 OptimizationConfig,主动终止而不是以未优化状态继续训练 |
| 训练进程返回码 | run 执行训练后,退出码即训练进程自身的退出码,包括信号导致的 128 + signal |
非 run 命令的具体错误原因写入标准错误输出。run 执行训练后,训练日志和异常由训练进程直接输出。