Repository navigation
Conversation
There was a problem hiding this comment.
AI Review
🟡 建议修改
发现有明确证据的问题,建议核对并处理。
已确认 2 个问题,其中 1 个已添加到对应代码行。
变更概览
本次变更主要包含:
- 新增 FlashOCC 模型的 TurboPhysAI 优化接入文档,涵盖容器环境准备、外置 MMDetection3D 依赖与 HCU 扩展构建、nuScenes 数据及权重准备、训练启动命令。
- 新增 flashocc 优化包初始化文件,导入时执行兼容性引导安装并引入优化目录 catalog,并配套添加忽略构建产物与本地缓存的 .gitignore。
- 本批新增 FlashOCC 优化组注册文件,定义针对 BEVDet 图像/BEV 编码器、prepare_inputs、occ 训练前向的 torch.compile 优化组,以及 DataLoader pin_memory、persistent workers、view transformer 几何准备加速和关闭激活检查点的优化组;另附 DVR 的 HCU 兼容 C++ 绑定源码。
- 新增 DVR 的 HCU 兼容 CUDA 扩展源码,提供体素占据初始化与光线步进前向渲染内核,作为插件目录内的本地编译源,供后续批次按 HCU 兼容方式构建。
文件审查摘要
| 文件 | 变更 | 审查结果 |
|---|---|---|
turbo_physai/optimizations/models/flashocc/sitecustomize.py |
新增 · +27/-0 | P2 × 1 |
turbo_physai/optimizations/models/flashocc/compat_sources/dvr/dvr.cu |
新增 · +747/-0 | P3 × 1 |
turbo_physai/optimizations/models/flashocc/compat_sources/dvr/dvr.hip |
新增 · +749/-0 | — |
turbo_physai/optimizations/models/flashocc/compatibility.py |
新增 · +393/-0 | — |
model_examples/FlashOCC/README.md |
新增 · +198/-0 | — |
turbo_physai/optimizations/models/flashocc/catalog.py |
新增 · +136/-0 | — |
turbo_physai/optimizations/models/flashocc/configs/optimization.yaml |
新增 · +105/-0 | — |
turbo_physai/optimizations/models/flashocc/voxel_pooling_compile.py |
新增 · +86/-0 | — |
turbo_physai/optimizations/models/flashocc/scripts/build_flashocc_ops_external.sh |
新增 · +78/-0 | — |
turbo_physai/optimizations/models/flashocc/compat_sources/dvr/dvr.cpp |
新增 · +72/-0 | — |
turbo_physai/optimizations/models/flashocc/geometry_compile.py |
新增 · +52/-0 | — |
turbo_physai/optimizations/models/flashocc/configs/recipe.yaml |
新增 · +36/-0 | — |
turbo_physai/optimizations/models/flashocc/device_buffers.py |
新增 · +34/-0 | — |
turbo_physai/optimizations/models/flashocc/persistent_workers.py |
新增 · +34/-0 | — |
turbo_physai/optimizations/models/flashocc/run_flashocc_turbo.sh |
新增 · +33/-0 | — |
turbo_physai/optimizations/models/flashocc/configs/runtime.yaml |
新增 · +32/-0 | — |
turbo_physai/optimizations/models/flashocc/disable_activation_checkpoint.py |
新增 · +32/-0 | — |
turbo_physai/optimizations/models/flashocc/.gitignore |
新增 · +24/-0 | — |
turbo_physai/optimizations/models/flashocc/compatibility_bootstrap.py |
新增 · +24/-0 | — |
turbo_physai/optimizations/models/flashocc/compile_prepare_inputs.py |
新增 · +23/-0 | — |
其余 6 个文件未逐项展开。
无法定位到 diff 行的问题(1)
P3 · grad_sigma 反向梯度写入存在数据竞态
- 文件:
turbo_physai/optimizations/models/flashocc/compat_sources/dvr/dvr.cu(无法安全定位到当前 diff 行) - 触发条件:训练反向传播时,同一批次内多条光线(不同线程)穿越相同体素并对该体素执行梯度累加。
- 证据与影响:核函数中 grad_sigma[n][ts][v.z][v.y][v.x] += dl_dd * dd_dsigma[i] 使用普通读-改-写而非原子操作,且源码注释自述此处存在写入竞态。 共享体素的梯度累加会丢失部分更新,梯度结果不确定,表现为训练不可复现,而非崩溃。
- 修改建议:若需确定性与完整梯度,可将该处累加改为 atomicAdd;若有意沿用上游 DVR 语义,需人工核验并注明该非确定性影响。
审查信息
- 变更统计:26 个文件,+3030/-0。
- 覆盖情况:共 26 个文件,已完整审查 26 个。
- 候选问题:2 项;证据复核过滤:0 项;发布前敏感信息保护:0 项。
- 本服务以 GitHub 提供的 PR diff 为审查主体,PR 描述与按相关性选取的仓库片段仅用于核验;未执行代码或重跑测试,结论仍需维护者核验。
| model_root = os.environ.get("FLASHOCC_ROOT") | ||
| runtime_root = os.environ.get("FLASHOCC_RUNTIME_ROOT") | ||
| if not model_root or not runtime_root: | ||
| raise RuntimeError("FlashOCC compatibility roots are not configured") |
There was a problem hiding this comment.
P2 · 兼容层安装失败仅 raise,异常被 site 机制吞掉后训练继续执行
触发条件: TURBO_PHYSAI_BOOTSTRAP=1 且 FLASHOCC_ROOT 或 FLASHOCC_RUNTIME_ROOT 未设置,或 compatibility.py 加载/install_compatibility 抛错时
证据与影响: 新文件第16、22行直接 raise RuntimeError;bootstrap 的 _run_user_sitecustomize() 调用处 except Exception 仅打印 traceback 后继续执行 activate(),site.execsitecustomize 本身也会吞掉异常;仓库自述设计明确要求失败以 91 退出码 os._exit 而非 raise 环境未配置或加载失败时,进程仍在未安装兼容层的状态下继续训练,后续以无关错误失败或静默按未兼容/未优化路径运行,问题难以定位
修改建议: 参照 bootstrap 的处理:打印带说明的错误信息后以统一的激活失败退出码 os._exit,而不是在 sitecustomize 中仅 raise
There was a problem hiding this comment.
AI Review
🟡 建议修改
发现有明确证据的问题,建议核对并处理。
已确认 2 个问题,其中 1 个已添加到对应代码行。
变更概览
本次变更主要包含:
- 新增 FlashOCC 优化包入口:提供接入文档 README 与 .gitignore,并在包导入时先执行 install_for_turbo_run 安装兼容引导,再导入 catalog 注册优化。
- 新增 FlashOCC 优化目录注册文件,声明 image/bev encoder、prepare_inputs、occ 训练的 torch.compile 优化组,以及 DataLoader pin_memory、persistent_workers、view transformer 几何准备加速和关闭激活检查点等组。
- 新增 DVR 的 HCU 兼容 C++ 源码,提供 init、render、render_forward 的参数校验与 pybind 导出。
- 将 DVR 的 CUDA 源码新增到 Flashocc 兼容源码目录,提供体素占用初始化与光线渲染核函数,供 HCU 环境以兼容方式编译,规避官方源码的不兼容编译路径。
文件审查摘要
| 文件 | 变更 | 审查结果 |
|---|---|---|
turbo_physai/optimizations/models/flashocc/sitecustomize.py |
新增 · +27/-0 | P2 × 1 |
turbo_physai/optimizations/models/flashocc/compatibility.py |
新增 · +393/-0 | P3 × 1 |
turbo_physai/optimizations/models/flashocc/compat_sources/dvr/dvr.hip |
新增 · +749/-0 | — |
turbo_physai/optimizations/models/flashocc/compat_sources/dvr/dvr.cu |
新增 · +747/-0 | — |
model_examples/FlashOCC/README.md |
新增 · +198/-0 | — |
turbo_physai/optimizations/models/flashocc/catalog.py |
新增 · +136/-0 | — |
turbo_physai/optimizations/models/flashocc/configs/optimization.yaml |
新增 · +105/-0 | — |
turbo_physai/optimizations/models/flashocc/voxel_pooling_compile.py |
新增 · +86/-0 | — |
turbo_physai/optimizations/models/flashocc/scripts/build_flashocc_ops_external.sh |
新增 · +78/-0 | — |
turbo_physai/optimizations/models/flashocc/compat_sources/dvr/dvr.cpp |
新增 · +72/-0 | — |
turbo_physai/optimizations/models/flashocc/geometry_compile.py |
新增 · +52/-0 | — |
turbo_physai/optimizations/models/flashocc/configs/recipe.yaml |
新增 · +36/-0 | — |
turbo_physai/optimizations/models/flashocc/device_buffers.py |
新增 · +34/-0 | — |
turbo_physai/optimizations/models/flashocc/persistent_workers.py |
新增 · +34/-0 | — |
turbo_physai/optimizations/models/flashocc/run_flashocc_turbo.sh |
新增 · +33/-0 | — |
turbo_physai/optimizations/models/flashocc/configs/runtime.yaml |
新增 · +32/-0 | — |
turbo_physai/optimizations/models/flashocc/disable_activation_checkpoint.py |
新增 · +32/-0 | — |
turbo_physai/optimizations/models/flashocc/.gitignore |
新增 · +24/-0 | — |
turbo_physai/optimizations/models/flashocc/compatibility_bootstrap.py |
新增 · +24/-0 | — |
turbo_physai/optimizations/models/flashocc/compile_prepare_inputs.py |
新增 · +23/-0 | — |
其余 6 个文件未逐项展开。
无法定位到 diff 行的问题(1)
P3 · 默认数据基目录不存在时兼容层安装整体中断
- 文件:
turbo_physai/optimizations/models/flashocc/compatibility.py(无法安全定位到当前 diff 行) - 触发条件:调用 install_compatibility 时未设置 FLASHOCC_DATA_BASE,且 model_root 父目录下不存在 static_data 目录(如数据放在其他位置或信息文件为绝对路径,无需相对路径解析)。
- 证据与影响:install_compatibility 以 str(model_path.parent / 'static_data') 作为默认 data_base 传入 install_relative_nuscenes_path_compatibility;该函数中 resolved_base.is_dir() 为假时直接 raise FileNotFoundError,异常向上传播。 install_compatibility 在该检查处抛异常,其后的 meta_path 扩展 finder、编码 finder 与 DVR 兼容安装均不会执行,整个兼容层安装失败,即使本次加载并不需要相对路径解析。
- 修改建议:默认路径不存在时降级处理(记录并跳过相对路径兼容安装),仅在使用方显式配置 FLASHOCC_DATA_BASE 且目录缺失时才报错;或将数据基目录校验延迟到实际加载信息文件时进行。
审查信息
- 变更统计:26 个文件,+3030/-0。
- 覆盖情况:共 26 个文件,已完整审查 26 个。
- 候选问题:5 项;证据复核过滤:3 项;发布前敏感信息保护:0 项。
- 本服务以 GitHub 提供的 PR diff 为审查主体,PR 描述与按相关性选取的仓库片段仅用于核验;未执行代码或重跑测试,结论仍需维护者核验。
| model_root = os.environ.get("FLASHOCC_ROOT") | ||
| runtime_root = os.environ.get("FLASHOCC_RUNTIME_ROOT") | ||
| if not model_root or not runtime_root: | ||
| raise RuntimeError("FlashOCC compatibility roots are not configured") |
There was a problem hiding this comment.
P2 · 兼容层安装失败时仅抛异常,会被 sitecustomize 机制吞掉导致静默跳过
触发条件: 启动 rank 时 FLASHOCC_ROOT 或 FLASHOCC_RUNTIME_ROOT 缺失/为空,或 compatibility.py 不存在、install_compatibility 抛异常。
证据与影响: 第16/22行直接 raise RuntimeError,第27行 install_compatibility 异常也未捕获。而仓库既有机制(bootstrap/__init__.py 注明 site.execsitecustomize() 会吞异常;_sitedir/sitecustomize.py 的 _run_user_sitecustomize 对用户钩子异常仅 print_exc 后继续),这些异常只会被打印,流程继续执行 activate() 与训练。 rank 会在未安装 FlashOCC 兼容层的情况下继续训练,配置错误被静默掩盖,后续可能产生难定位的运行错误,违背仓库“激活失败必须中止、不得退回未优化运行”的约定。
修改建议: 仿照 bootstrap _sitedir/sitecustomize.py 的做法:用 try/except 包裹加载与安装逻辑,失败时输出错误并以 ACTIVATION_FAILURE_EXIT_CODE(os._exit(91))退出,而不是直接 raise。
There was a problem hiding this comment.
AI Review
🟡 建议修改
发现有明确证据的问题,建议核对并处理。
已确认 1 个问题,其中 1 个已添加到对应代码行。
变更概览
本次变更主要包含:
- 新增 FlashOCC 应用说明文档(涵盖环境搭建、外置依赖构建、数据与权重准备及训练启动),并添加 flashocc 优化包的 .gitignore 与包初始化入口,初始化时调用 install_for_turbo_run 安装兼容层并导入 catalog。
- 新增 FlashOCC 优化组目录 catalog.py,注册多个优化组:image/bev encoder、prepare_inputs、occ_train 的 torch.compile,DataLoader pin_memory 与 persistent_workers,view transformer 几何准备加速及关闭 activation checkpoint。
- 新增 DVR 兼容性 C++ 扩展绑定源码 compat_sources/dvr/dvr.cpp,提供 init/render/render_forward 的 pybind 接口与 CUDA 输入检查。
- 在 FlashOcc compat_sources 目录新增 DVR 体素光线步进 CUDA 源码 dvr.cu,作为 HCU 环境下可编译的兼容副本,避免导入时触发官方源码中的不兼容编译路径;文件以新增方式引入,包含 occupancy 初始化与正向渲染核函数。
文件审查摘要
| 文件 | 变更 | 审查结果 |
|---|---|---|
turbo_physai/optimizations/models/flashocc/scripts/build_flashocc_ops_external.sh |
新增 · +78/-0 | P3 × 1 |
turbo_physai/optimizations/models/flashocc/compat_sources/dvr/dvr.cu |
新增 · +747/-0 | — |
turbo_physai/optimizations/models/flashocc/compatibility.py |
新增 · +426/-0 | — |
model_examples/FlashOCC/README.md |
新增 · +198/-0 | — |
turbo_physai/optimizations/models/flashocc/catalog.py |
新增 · +136/-0 | — |
turbo_physai/optimizations/models/flashocc/configs/optimization.yaml |
新增 · +105/-0 | — |
turbo_physai/optimizations/models/flashocc/voxel_pooling_compile.py |
新增 · +89/-0 | — |
turbo_physai/optimizations/models/flashocc/compat_sources/dvr/dvr.cpp |
新增 · +72/-0 | — |
turbo_physai/optimizations/models/flashocc/geometry_compile.py |
新增 · +55/-0 | — |
turbo_physai/optimizations/models/flashocc/configs/recipe.yaml |
新增 · +36/-0 | — |
turbo_physai/optimizations/models/flashocc/device_buffers.py |
新增 · +34/-0 | — |
turbo_physai/optimizations/models/flashocc/disable_activation_checkpoint.py |
新增 · +30/-0 | — |
turbo_physai/optimizations/models/flashocc/configs/runtime.yaml |
新增 · +29/-0 | — |
turbo_physai/optimizations/models/flashocc/run_flashocc_turbo.sh |
新增 · +29/-0 | — |
turbo_physai/optimizations/models/flashocc/compile_prepare_inputs.py |
新增 · +26/-0 | — |
turbo_physai/optimizations/models/flashocc/.gitignore |
新增 · +25/-0 | — |
turbo_physai/optimizations/models/flashocc/compile_bev_encoder.py |
新增 · +24/-0 | — |
turbo_physai/optimizations/models/flashocc/compile_image_encoder.py |
新增 · +24/-0 | — |
turbo_physai/optimizations/models/flashocc/compile_occ_train.py |
新增 · +24/-0 | — |
turbo_physai/optimizations/models/flashocc/persistent_workers.py |
新增 · +24/-0 | — |
其余 5 个文件未逐项展开。
审查信息
- 变更统计:25 个文件,+2285/-0。
- 覆盖情况:共 25 个文件,已完整审查 25 个。
- 候选问题:1 项;证据复核过滤:0 项;发布前敏感信息保护:0 项。
- 本服务以 GitHub 提供的 PR diff 为审查主体,PR 描述与按相关性选取的仓库片段仅用于核验;未执行代码或重跑测试,结论仍需维护者核验。
| fi | ||
|
|
||
| mkdir -p "$RUNTIME_ROOT" | ||
| BUILD_SRC=$(mktemp -d /tmp/flashocc-ops-src.XXXXXX) |
There was a problem hiding this comment.
P3 · 构建临时目录未清理,反复构建时在 /tmp 持续累积
触发条件: 脚本任一路径退出:成功路径结束时不清理;set -euo pipefail 下构建失败、产物校验退出码 2/3/4 等失败路径同样直接退出。
证据与影响: BUILD_SRC 和 BUILD_TMP 两个 mktemp -d 创建的目录分别在 31-32 行,全脚本无 rm -rf,也未注册 trap EXIT 清理。 每次构建在 /tmp 残留源码副本及编译产物目录,反复执行会累积占用磁盘空间(/tmp 为 tmpfs 时占用内存)。
修改建议: 在创建临时目录后添加 trap 'rm -rf "$BUILD_SRC" "$BUILD_TMP"' EXIT,保证各退出路径统一清理。
There was a problem hiding this comment.
AI Review
🟡 建议修改
发现有明确证据的问题,建议核对并处理。
已确认 1 个问题,其中 1 个已添加到对应代码行。
变更概览
本次变更主要包含:
- 新增 FlashOCC 适配基础文件:HCU 环境接入说明文档、构建产物忽略规则,以及优化包入口,在包导入时调用 install_for_turbo_run 安装兼容层并注册优化目录。
- 新增 FlashOCC 优化组注册文件 catalog.py,定义 image/BEV 编码器、prepare_inputs、occ 训练的 torch.compile,DataLoader pin_memory 与 persistent_workers,view transformer 几何准备加速及关闭 activation checkpoint 等优化组。
- 新增 DVR 兼容源码 dvr.cpp,提供 init/render/render_forward 的 C++ 绑定,并校验输入为 CUDA 且连续的张量,供 HCU 扩展在官方源码目录外编译使用。
- 本批在 flashocc 兼容源目录下新增 DVR 的 CUDA 源文件 dvr.cu,提供占用体素初始化 kernel 和光线渲染 forward kernel 的实现,供 HCU 环境编译使用。
文件审查摘要
| 文件 | 变更 | 审查结果 |
|---|---|---|
turbo_physai/optimizations/models/flashocc/scripts/build_flashocc_ops_external.sh |
新增 · +78/-0 | P3 × 1 |
turbo_physai/optimizations/models/flashocc/compat_sources/dvr/dvr.cu |
新增 · +747/-0 | — |
turbo_physai/optimizations/models/flashocc/compatibility.py |
新增 · +426/-0 | — |
model_examples/FlashOCC/README.md |
新增 · +195/-0 | — |
turbo_physai/optimizations/models/flashocc/catalog.py |
新增 · +136/-0 | — |
turbo_physai/optimizations/models/flashocc/configs/optimization.yaml |
新增 · +105/-0 | — |
turbo_physai/optimizations/models/flashocc/voxel_pooling_compile.py |
新增 · +89/-0 | — |
turbo_physai/optimizations/models/flashocc/compat_sources/dvr/dvr.cpp |
新增 · +72/-0 | — |
turbo_physai/optimizations/models/flashocc/geometry_compile.py |
新增 · +55/-0 | — |
turbo_physai/optimizations/models/flashocc/configs/recipe.yaml |
新增 · +36/-0 | — |
turbo_physai/optimizations/models/flashocc/device_buffers.py |
新增 · +34/-0 | — |
turbo_physai/optimizations/models/flashocc/disable_activation_checkpoint.py |
新增 · +30/-0 | — |
turbo_physai/optimizations/models/flashocc/configs/runtime.yaml |
新增 · +29/-0 | — |
turbo_physai/optimizations/models/flashocc/compile_prepare_inputs.py |
新增 · +26/-0 | — |
turbo_physai/optimizations/models/flashocc/.gitignore |
新增 · +25/-0 | — |
turbo_physai/optimizations/models/flashocc/compile_bev_encoder.py |
新增 · +24/-0 | — |
turbo_physai/optimizations/models/flashocc/compile_image_encoder.py |
新增 · +24/-0 | — |
turbo_physai/optimizations/models/flashocc/compile_occ_train.py |
新增 · +24/-0 | — |
turbo_physai/optimizations/models/flashocc/persistent_workers.py |
新增 · +24/-0 | — |
turbo_physai/optimizations/models/flashocc/configs/.optimization.yaml.generation.json |
新增 · +23/-0 | — |
其余 4 个文件未逐项展开。
审查信息
- 变更统计:24 个文件,+2253/-0。
- 覆盖情况:共 24 个文件,已完整审查 24 个。
- 候选问题:1 项;证据复核过滤:0 项;发布前敏感信息保护:0 项。
- 本服务以 GitHub 提供的 PR diff 为审查主体,PR 描述与按相关性选取的仓库片段仅用于核验;未执行代码或重跑测试,结论仍需维护者核验。
| BUILD_SRC=$(mktemp -d /tmp/flashocc-ops-src.XXXXXX) | ||
| BUILD_TMP=$(mktemp -d /tmp/flashocc-ops-build.XXXXXX) | ||
| PROJECTS="$FLASHOCC_ROOT/projects" | ||
| cp "$PROJECTS/setup.py" "$BUILD_SRC/setup.py" |
There was a problem hiding this comment.
P3 · 构建脚本生成的临时目录未清理
触发条件: 每次运行该构建脚本,无论构建成功还是中途失败退出(如编译错误、产物校验 exit 3)。
证据与影响: BUILD_SRC 与 BUILD_TMP 通过 mktemp -d 创建,脚本全程及 set -euo pipefail 各退出路径均无 rm -rf 或 trap 清理逻辑。 /tmp 下每次执行都会残留一份算子源码拷贝及编译产物,反复执行将持续占用磁盘空间。
修改建议: 在创建临时目录后添加 trap 'rm -rf "$BUILD_SRC" "$BUILD_TMP"' EXIT,保证各退出路径均清理。
AI Review审查尚未完整完成,无法给出整体结论;当前没有可发布的已确认问题,不代表代码没有问题。
|
There was a problem hiding this comment.
AI Review
🟡 建议修改
发现有明确证据的问题,建议核对并处理。
已确认 2 个问题,其中 1 个已添加到对应代码行。
变更概览
本次变更主要包含:
- 新增 FlashOCC 优化包的包初始化与 .gitignore,并在模型支持列表和模型示例文档中接入 FlashOCC 的应用说明、环境搭建与训练启动流程。
- 新增 FlashOCC 优化组目录,注册 torch.compile(image/bev encoder、prepare_inputs、forward_occ_train)、DataLoader pin_memory 与 persistent_workers、view transformer 加速准备及关闭激活检查点等包裹组。
- 新增 DVR 的 C++ 扩展兼容源码 dvr.cpp,提供 init/render/render_forward 的 pybind 绑定,用于在官方源码目录外构建扩展。
- 在 flashocc 的 compat_sources 目录中新增 DVR 的 HCU 兼容 CUDA 源码,包含体素占用初始化内核与基于 voxel traversal 的光线步进渲染内核,用于以插件目录源码替代官方源码的编译路径。
文件审查摘要
| 文件 | 变更 | 审查结果 |
|---|---|---|
turbo_physai/optimizations/models/flashocc/compat_sources/dvr/dvr.cu |
新增 · +747/-0 | P3 × 1 |
turbo_physai/optimizations/models/flashocc/scripts/build_flashocc_ops_external.sh |
新增 · +78/-0 | P3 × 1 |
turbo_physai/optimizations/models/flashocc/compatibility.py |
新增 · +426/-0 | — |
model_examples/FlashOCC/README.md |
新增 · +195/-0 | — |
turbo_physai/optimizations/models/flashocc/catalog.py |
新增 · +136/-0 | — |
turbo_physai/optimizations/models/flashocc/configs/optimization.yaml |
新增 · +105/-0 | — |
turbo_physai/optimizations/models/flashocc/voxel_pooling_compile.py |
新增 · +89/-0 | — |
turbo_physai/optimizations/models/flashocc/compat_sources/dvr/dvr.cpp |
新增 · +72/-0 | — |
turbo_physai/optimizations/models/flashocc/geometry_compile.py |
新增 · +55/-0 | — |
turbo_physai/optimizations/models/flashocc/configs/recipe.yaml |
新增 · +36/-0 | — |
turbo_physai/optimizations/models/flashocc/device_buffers.py |
新增 · +34/-0 | — |
turbo_physai/optimizations/models/flashocc/disable_activation_checkpoint.py |
新增 · +30/-0 | — |
turbo_physai/optimizations/models/flashocc/configs/runtime.yaml |
新增 · +29/-0 | — |
turbo_physai/optimizations/models/flashocc/compile_prepare_inputs.py |
新增 · +26/-0 | — |
turbo_physai/optimizations/models/flashocc/.gitignore |
新增 · +25/-0 | — |
turbo_physai/optimizations/models/flashocc/compile_bev_encoder.py |
新增 · +24/-0 | — |
turbo_physai/optimizations/models/flashocc/compile_image_encoder.py |
新增 · +24/-0 | — |
turbo_physai/optimizations/models/flashocc/compile_occ_train.py |
新增 · +24/-0 | — |
turbo_physai/optimizations/models/flashocc/persistent_workers.py |
新增 · +24/-0 | — |
turbo_physai/optimizations/models/flashocc/configs/.optimization.yaml.generation.json |
新增 · +23/-0 | — |
其余 5 个文件未逐项展开。
无法定位到 diff 行的问题(1)
P3 · 梯度累加使用非原子操作,存在数据竞争
- 文件:
turbo_physai/optimizations/models/flashocc/compat_sources/dvr/dvr.cu(无法安全定位到当前 diff 行) - 触发条件:多条射线线程在渲染时遍历到同一 voxel 并同时回传梯度(同一体素被多条射线穿过即触发,属常见情形)。
- 证据与影响:内核中以普通语句 grad_sigma[n][ts][v.z][v.y][v.x] += dl_dd * dd_dsigma[i] 对共享元素读-改-写,未使用原子操作;代码内注释亦标注 potential race conditions when writing gradients。 并发写会产生竞争,部分梯度贡献可能丢失,梯度更新不确定,训练结果存在不可复现性。
- 修改建议:改用 atomicAdd(或先做局部聚合再原子合并)累加梯度;若刻意沿用上游已知行为,请人工评估精度与可复现性影响并确认可接受。
审查信息
- 变更统计:25 个文件,+2254/-0。
- 覆盖情况:共 25 个文件,已完整审查 25 个。
- 候选问题:3 项;证据复核过滤:1 项;发布前敏感信息保护:0 项。
- 本服务以 GitHub 提供的 PR diff 为审查主体,PR 描述与按相关性选取的仓库片段仅用于核验;未执行代码或重跑测试,结论仍需维护者核验。
|
|
||
| mkdir -p "$RUNTIME_ROOT" | ||
| BUILD_SRC=$(mktemp -d /tmp/flashocc-ops-src.XXXXXX) | ||
| BUILD_TMP=$(mktemp -d /tmp/flashocc-ops-build.XXXXXX) |
There was a problem hiding this comment.
P3 · 构建临时目录在成功和失败路径均未清理
触发条件: 脚本每次运行结束后(无论构建成功或任一步因 set -e 中途失败退出)
证据与影响: BUILD_SRC 与 BUILD_TMP 用 mktemp -d 创建后,脚本没有任何 rm -rf 或 trap 清理逻辑,失败提前 exit 也会遗留这两个目录 每次构建在 /tmp 遗留完整源码副本及编译中间产物,反复构建会持续占用磁盘空间
修改建议: 创建临时目录后增加统一清理,例如 trap 'rm -rf "$BUILD_SRC" "$BUILD_TMP"' EXIT,保证正常与异常退出均回收
There was a problem hiding this comment.
AI Review
⚪ 审查未完成
部分内容未完成审查,当前结论不代表全部改动。
变更概览
本次变更主要包含:
- 新增 FlashOCC 优化包的包初始化入口与 .gitignore,并在支持列表和 model_examples 文档中新增 FlashOCC 的接入基线、环境准备与训练启动说明。
- 新增 FlashOCC 优化组目录定义,声明 torch.compile(image/bev encoder、prepare_inputs、occ 训练)、DataLoader pin_memory 与 persistent_workers、view transformer 几何加速及关闭激活检查点等优化项注册。
- 新增 DVR 的 HCU 兼容 C++ 扩展接口源码,提供 init/render/render_forward 的 C++ 入口,完成 CUDA/contiguous 参数检查后转发至 CUDA 实现。
- 在 FlashOcc 插件目录新增 DVR 的 CUDA 兼容源码 dvr.cu,实现占用体素初始化 kernel 与基于光线步进遍历的深度渲染 kernel,作为 HCU 编译扩展的兼容源文件。
文件审查摘要
| 文件 | 变更 | 审查结果 |
|---|---|---|
turbo_physai/optimizations/models/flashocc/compat_sources/dvr/dvr.cu |
新增 · +747/-0 | — |
turbo_physai/optimizations/models/flashocc/compatibility.py |
新增 · +426/-0 | — |
model_examples/FlashOCC/README.md |
新增 · +195/-0 | — |
turbo_physai/optimizations/models/flashocc/catalog.py |
新增 · +136/-0 | — |
turbo_physai/optimizations/models/flashocc/configs/optimization.yaml |
新增 · +105/-0 | — |
turbo_physai/optimizations/models/flashocc/voxel_pooling_compile.py |
新增 · +89/-0 | — |
turbo_physai/optimizations/models/flashocc/scripts/build_flashocc_ops_external.sh |
新增 · +78/-0 | — |
turbo_physai/optimizations/models/flashocc/compat_sources/dvr/dvr.cpp |
新增 · +72/-0 | — |
turbo_physai/optimizations/models/flashocc/geometry_compile.py |
新增 · +55/-0 | — |
turbo_physai/optimizations/models/flashocc/configs/recipe.yaml |
新增 · +36/-0 | — |
turbo_physai/optimizations/models/flashocc/device_buffers.py |
新增 · +34/-0 | — |
turbo_physai/optimizations/models/flashocc/disable_activation_checkpoint.py |
新增 · +30/-0 | — |
turbo_physai/optimizations/models/flashocc/configs/runtime.yaml |
新增 · +29/-0 | — |
turbo_physai/optimizations/models/flashocc/compile_prepare_inputs.py |
新增 · +26/-0 | — |
turbo_physai/optimizations/models/flashocc/.gitignore |
新增 · +25/-0 | — |
turbo_physai/optimizations/models/flashocc/compile_bev_encoder.py |
新增 · +24/-0 | — |
turbo_physai/optimizations/models/flashocc/compile_image_encoder.py |
新增 · +24/-0 | — |
turbo_physai/optimizations/models/flashocc/compile_occ_train.py |
新增 · +24/-0 | — |
turbo_physai/optimizations/models/flashocc/persistent_workers.py |
新增 · +24/-0 | — |
turbo_physai/optimizations/models/flashocc/configs/.optimization.yaml.generation.json |
新增 · +23/-0 | — |
其余 5 个文件未逐项展开。
审查信息
- 变更统计:25 个文件,+2254/-0。
- 覆盖情况:共 25 个文件,已完整审查 16 个,部分审查 9 个。
- 候选问题:0 项;证据复核过滤:0 项;发布前敏感信息保护:0 项。
- 未完成原因:模型调用失败(4 批)
- 本服务以 GitHub 提供的 PR diff 为审查主体,PR 描述与按相关性选取的仓库片段仅用于核验;未执行代码或重跑测试,结论仍需维护者核验。
There was a problem hiding this comment.
AI Review
⚪ 审查未完成
部分内容未完成审查,当前结论不代表全部改动。
变更概览
本次变更主要包含:
- 新增 FlashOCC 模型接入文档、支持列表条目,以及 flashocc 优化包入口;入口模块在导入时调用 install_for_turbo_run 安装兼容层并注册 catalog。
- 新增 FlashOCC 优化分组目录,注册 image/BEV 编码器等 torch.compile、DataLoader pin_memory 与 persistent workers、关闭 activation checkpoint、view transformer 几何准备加速等 wrap 目标与替换入口;另加入 DVR 兼容 C++ 绑定源码。
- 本批在 FlashOCC 插件目录下新增 DVR 的 CUDA 兼容源码 dvr.cu,包含占用初始化内核与光线渲染(体素遍历 raymarching)内核实现,用于 HCU 兼容构建。
- 本批在 Turbo 插件目录新增 DVR 的 HCU 兼容 CUDA 源码 dvr.cu,包含基于 voxel 遍历的光线渲染前向核(render_forward_cuda_kernel)及主机侧 launch 封装、渲染反向核的兼容实现。
文件审查摘要
| 文件 | 变更 | 审查结果 |
|---|---|---|
turbo_physai/optimizations/models/flashocc/compat_sources/dvr/dvr.cu |
新增 · +747/-0 | — |
turbo_physai/optimizations/models/flashocc/compatibility.py |
新增 · +426/-0 | — |
model_examples/FlashOCC/README.md |
新增 · +198/-0 | — |
turbo_physai/optimizations/models/flashocc/catalog.py |
新增 · +136/-0 | — |
turbo_physai/optimizations/models/flashocc/configs/optimization.yaml |
新增 · +105/-0 | — |
turbo_physai/optimizations/models/flashocc/voxel_pooling_compile.py |
新增 · +89/-0 | — |
turbo_physai/optimizations/models/flashocc/scripts/build_flashocc_ops_external.sh |
新增 · +78/-0 | — |
turbo_physai/optimizations/models/flashocc/compat_sources/dvr/dvr.cpp |
新增 · +72/-0 | — |
turbo_physai/optimizations/models/flashocc/geometry_compile.py |
新增 · +55/-0 | — |
turbo_physai/optimizations/models/flashocc/configs/recipe.yaml |
新增 · +36/-0 | — |
turbo_physai/optimizations/models/flashocc/device_buffers.py |
新增 · +34/-0 | — |
turbo_physai/optimizations/models/flashocc/disable_activation_checkpoint.py |
新增 · +30/-0 | — |
turbo_physai/optimizations/models/flashocc/configs/runtime.yaml |
新增 · +29/-0 | — |
turbo_physai/optimizations/models/flashocc/compile_prepare_inputs.py |
新增 · +26/-0 | — |
turbo_physai/optimizations/models/flashocc/.gitignore |
新增 · +25/-0 | — |
turbo_physai/optimizations/models/flashocc/compile_bev_encoder.py |
新增 · +24/-0 | — |
turbo_physai/optimizations/models/flashocc/compile_image_encoder.py |
新增 · +24/-0 | — |
turbo_physai/optimizations/models/flashocc/compile_occ_train.py |
新增 · +24/-0 | — |
turbo_physai/optimizations/models/flashocc/persistent_workers.py |
新增 · +24/-0 | — |
turbo_physai/optimizations/models/flashocc/configs/.optimization.yaml.generation.json |
新增 · +23/-0 | — |
其余 5 个文件未逐项展开。
审查信息
- 变更统计:25 个文件,+2257/-0。
- 覆盖情况:共 25 个文件,已完整审查 17 个,部分审查 8 个。
- 候选问题:0 项;证据复核过滤:0 项;发布前敏感信息保护:0 项。
- 未完成原因:模型请求超时(1 批)
- 本服务以 GitHub 提供的 PR diff 为审查主体,PR 描述与按相关性选取的仓库片段仅用于核验;未执行代码或重跑测试,结论仍需维护者核验。
yh-vino
left a comment
There was a problem hiding this comment.
主要问题:模型被改成了外部包 flashocc_optimization,只有源码放在 runtime.yaml 写死的路径时才能导入,安装后的包和 --model flashocc 都用不了;runtime.yaml 里仍然有本机的网卡和路径配置;README 第 81 行的中文引号会导致 3.5 节执行失败。另外数据目录、mmdet3d 的位置、权重来源和训练参数仍然和上游不一致,第三方声明也还没补。
PR 描述还缺:已执行的测试命令和结果、README 训练命令在 HCU 上实际跑了多少步、--log-report 中各 Group 是否都已应用、是否做过精度验证。
具体见行内评论。
| projects.mmdet3d_plugin.models.detectors.bevdet.BEVDet.__init__: | ||
| - ast-v1:a9d201d3a42fa4ad7d96869ebf7e50b536ffa90193e3b45f68d6e275fa6d5fcf | ||
| optimization_modules: | ||
| - flashocc_optimization.catalog |
There was a problem hiding this comment.
optimization_modules 改成了 flashocc_optimization.catalog,新增的 flashocc_optimization/__init__.py 把 __path__ 指向模型目录,生成记录的 base 也从 package 改成了 config。只有模型目录本身在 sys.path 上,顶层的 flashocc_optimization 才能导入,现在完全靠 runtime.yaml 里写死的 PYTHONPATH=/workspace/FlashOCC_TurboPhysAI/TurboPhysAI/turbo_physai/optimizations/models/flashocc 保证。按 README 安装 wheel 后,只要源码不在这个路径,导入就会失败,rank 以退出码 91 中止,--model flashocc 也用不了。
另外同一批文件会以 turbo_physai.optimizations.models.flashocc.* 和 flashocc_optimization.* 两个模块名各加载一次,所以 install_compatibility 里才需要额外加查重 finder 的代码。
请参照 BEVFormer,改回 turbo_physai.optimizations.models.flashocc.catalog(catalog 里的 f"{__package__}..." 随之恢复,重新生成配置),删掉 flashocc_optimization/、sitecustomize.py 和 runtime.yaml 里的 PYTHONPATH,兼容层只通过包的 __init__ 安装:引擎在每个 rank 导入 catalog 时会先执行它,失败时也会按约定以 91 中止。构建脚本里的导入也一起改回。
| set: | ||
| # This container's deployment settings, not portable model defaults. | ||
| HIP_VISIBLE_DEVICES: '0,1,2,3,4,5,6,7' | ||
| NCCL_SOCKET_IFNAME: lo |
There was a problem hiding this comment.
这个文件是随包交付的默认配置,但以下内容只适用于当前容器(注释里也写了不可移植),请删掉:
NCCL_SOCKET_IFNAME/GLOO_SOCKET_IFNAME: lo只能单机用;NCCL_TOPO_FILE: 'null';FLASHOCC_ROOT、FLASHOCC_RUNTIME_ROOT、FLASHOCC_DATA_BASE和PYTHONPATH里写死的/workspace/...路径(PYTHONPATH见 optimization.yaml 那条);PYTHONDONTWRITEBYTECODE。
参照 BEVFormer 的 runtime.yaml,只保留经过验证的性能相关变量;网卡等部署相关的设置由用户用 --set 覆盖。
| ### 3.5 准备外置 MMDetection3D 依赖并构建 HCU 扩展 | ||
|
|
||
| ```bash | ||
| mkdir -p “/workspace/FlashOCC_TurboPhysAI/static_data” |
There was a problem hiding this comment.
这里用的是中文引号 “”,shell 不会把它们当作引号,而是当成路径的一部分:结果是在当前目录下建出一个名为 “ 的相对目录,/workspace/FlashOCC_TurboPhysAI/static_data 并没有创建。随后构建脚本最后的自检会调用 install_compatibility,它要求 static_data 目录存在,否则抛 FileNotFoundError,3.5 节因此执行失败;第 4 节第一步的 cd static_data 也会失败。请改成英文双引号。
|
|
||
| ```bash | ||
| cd "/workspace/FlashOCC_TurboPhysAI" | ||
| git clone --branch flashocc-optimization \ |
There was a problem hiding this comment.
--branch flashocc-optimization 只存在于作者的 fork,HYGON-AI 仓库里没有这个分支,第 11 行的链接也指向 fork,合入后这条命令会失败。请按 BEVFormer、BEVFusion 的写法,改为参照安装指南使用产品镜像或从 main 安装。镜像名 autonomous-driving:torch2.10-dtk26.04 也请改成安装指南里的说法。
| mkdir -p "/workspace/FlashOCC_TurboPhysAI/static_data/ckpts" | ||
| curl -fL --retry 5 --retry-delay 3 \ | ||
| -o "/workspace/FlashOCC_TurboPhysAI/static_data/ckpts/bevdet-r50-cbgs.pth" \ | ||
| https://haihub-model-bj-1251001002.cos.ap-beijing.myqcloud.com/HyperDrive/ckpt/bevdet-r50-cbgs.pth |
There was a problem hiding this comment.
bevdet-r50-cbgs.pth 从 haihub-...myqcloud.com 下载,这不是官方地址。请改为上游给出的来源(FlashOCC 配置里的 load_from 来自 BEVDet 的官方发布)。
| return cleaned | ||
|
|
||
|
|
||
| def find_prebuilt_dvr(build_root: str | os.PathLike[str]) -> Path | None: |
There was a problem hiding this comment.
find_prebuilt_dvr 优先找写死的 py310_cpu,找不到就取排序后最后一个 */dvr/dvr.so,可能加载到用别的源码或别的 torch 版本编出来的 dvr。cpp_extension.load 本身已经按源码和编译参数做了缓存,请删掉这个函数,直接调用 original_load。第 249 行检查的是本仓库自带的源码里有没有 scalar_type,这个条件永远成立,也可以删掉。
| *.egg-info/ | ||
| build/ | ||
| dist/ | ||
| logs/ |
There was a problem hiding this comment.
除了 compat_sources/dvr/*.hip,其余条目(logs/、work_dirs/、*.pth、.env、新加的 validation/ 等)都和这个插件无关,是开发环境的产物,请删掉。
| ), | ||
| ) | ||
|
|
||
| PIN_MEMORY = group( |
There was a problem hiding this comment.
flashocc.loader.pin_memory 替换的是 mmdet 的框架入口 build_dataloader,实现不依赖 FlashOCC 的结构、配置或数据字段,对任何调用方行为都一样,满足放入公共优化的条件。建议迁到 turbo_physai/optimizations/common/ 下对应框架的目录,FlashOCC 的 Recipe 用 extends 引入,其他基于 mmdet3d 训练的模型也能复用。迁入后需要按公共优化的要求补测试,可以在本 PR 做,也可以后续单独提。
| grid_config = getattr(self, "grid_config", {}) | ||
| axes = [grid_config.get(axis) for axis in ("x", "y", "z")] | ||
| if all(axis is not None for axis in axes): | ||
| self.grid_size_cpu = tuple( |
There was a problem hiding this comment.
grid_size_cpu 赋值后没有任何地方使用,确认是否必要,不必要就删掉。另外 grid_size 注册成 buffer 后会跟着模型移到 HCU 上,上游 voxel_pooling_v2 每次前向都会执行几次 int(self.grid_size[i]),每次都要做一次设备同步。如果当初是打算用 grid_size_cpu 避免这一点,请把它接上。
| backbone_cfg = kwargs.get("img_backbone") | ||
|
|
||
| if not isinstance(backbone_cfg, dict): | ||
| return original(self, *args, **kwargs) |
There was a problem hiding this comment.
原来拿不到 dict 形式的配置时会抛 TypeError,现在改成直接调用原函数。这样 Group 在报告里显示为已应用,但 checkpoint 实际上没有关掉。请确认什么情况下会走到这个分支;如果不会走到,就恢复抛错。
There was a problem hiding this comment.
AI Review
🟡 建议修改
发现有明确证据的问题,建议核对并处理。
已确认 1 个问题,其中 0 个已添加到对应代码行。
变更概览
本次变更主要包含:
- 在模型支持列表文档中新增 FlashOCC(FlashOCC-R50,ResNet-50)条目,附基线提交哈希与模型文档链接,格式与表中已有行一致。
- 新增 FlashOCC 应用说明文档,介绍在 HCU 环境中基于官方 FlashOCC 仓库使用 TurboPhysAI 优化的接入基线、容器环境搭建与源码准备步骤。
- 新增 FlashOCC 模型的 README 部署文档,提供环境准备、官方源码与外置 MMDetection3D 依赖拉取、HCU 扩展构建及 nuScenes 数据准备步骤。
- model_examples/FlashOCC 下新增 README,说明 nuScenes 数据准备、通过 runpy 调用标注生成脚本、预训练权重下载,以及用 turbo-physai run 启动八卡训练的命令与配置路径。
文件审查摘要
| 文件 | 变更 | 审查结果 |
|---|---|---|
model_examples/FlashOCC/README.md |
新增 · +198/-0 | P3 × 1 |
turbo_physai/optimizations/models/flashocc/compat_sources/dvr/dvr.cu |
新增 · +747/-0 | — |
turbo_physai/optimizations/models/flashocc/compatibility.py |
新增 · +426/-0 | — |
turbo_physai/optimizations/models/flashocc/catalog.py |
新增 · +136/-0 | — |
turbo_physai/optimizations/models/flashocc/configs/optimization.yaml |
新增 · +105/-0 | — |
turbo_physai/optimizations/models/flashocc/voxel_pooling_compile.py |
新增 · +89/-0 | — |
turbo_physai/optimizations/models/flashocc/scripts/build_flashocc_ops_external.sh |
新增 · +78/-0 | — |
turbo_physai/optimizations/models/flashocc/compat_sources/dvr/dvr.cpp |
新增 · +72/-0 | — |
turbo_physai/optimizations/models/flashocc/geometry_compile.py |
新增 · +55/-0 | — |
turbo_physai/optimizations/models/flashocc/configs/recipe.yaml |
新增 · +36/-0 | — |
turbo_physai/optimizations/models/flashocc/device_buffers.py |
新增 · +34/-0 | — |
turbo_physai/optimizations/models/flashocc/disable_activation_checkpoint.py |
新增 · +30/-0 | — |
turbo_physai/optimizations/models/flashocc/configs/runtime.yaml |
新增 · +29/-0 | — |
turbo_physai/optimizations/models/flashocc/compile_prepare_inputs.py |
新增 · +26/-0 | — |
turbo_physai/optimizations/models/flashocc/.gitignore |
新增 · +25/-0 | — |
turbo_physai/optimizations/models/flashocc/compile_bev_encoder.py |
新增 · +24/-0 | — |
turbo_physai/optimizations/models/flashocc/compile_image_encoder.py |
新增 · +24/-0 | — |
turbo_physai/optimizations/models/flashocc/compile_occ_train.py |
新增 · +24/-0 | — |
turbo_physai/optimizations/models/flashocc/persistent_workers.py |
新增 · +24/-0 | — |
turbo_physai/optimizations/models/flashocc/configs/.optimization.yaml.generation.json |
新增 · +23/-0 | — |
其余 5 个文件未逐项展开。
无法定位到 diff 行的问题(1)
P3 · mkdir 命令使用弯引号,不会创建预期的 static_data 目录
- 文件:
model_examples/FlashOCC/README.md(无法安全定位到当前 diff 行) - 触发条件:用户按 3.5 节复制执行该 mkdir 命令 preparing 数据目录时。
- 证据与影响:该命令用中文弯引号而非半角直引号包裹路径,shell 将弯引号视为路径字符本身,按相对路径创建以弯引号开头的目录树,而非文档其余部分引用的绝对路径目录。 预期的 /workspace/FlashOCC_TurboPhysAI/static_data 目录未被创建,后续按文档放入 nuScenes 数据时会因目标路径不存在而失败或放错位置,造成明确的部署使用错误。
- 修改建议:将命令中的弯引号替换为半角直引号,与文档其余命令保持一致。
审查信息
- 变更统计:25 个文件,+2257/-0。
- 覆盖情况:共 25 个文件,已完整审查 25 个。
- 候选问题:2 项;证据复核过滤:1 项;发布前敏感信息保护:0 项。
- 本服务以 GitHub 提供的 PR diff 为审查主体,PR 描述与按相关性选取的仓库片段仅用于核验;未执行代码或重跑测试,结论仍需维护者核验。
共8个优化项
兼容项
已验证吞吐和精度。