已合并
feat: 支持自动多流配置与自动寻优工作流 #4301
KenChow创建于 14 天前
feat: 支持自动多流配置与自动寻优工作流 #4301
已合并
KenChow创建于 14 天前
KenChow成员
14 天前

Pull Request

描述

新增 GE 自动多流的配置入口与自动寻优工作流,使用户无需修改模型代码即可选择、验证并挑选最优的多流并行策略。

1. 自动多流配置入口(compiler)

  • StreamUtils 新增 AutoMultistreamMode / AutoMultistreamConfig,统一解析 ge.autoMultistreamParallelMode 的取值:cvLoadBalance:NMainStream:NWeightedLoadBalance:N(N 取值 [1, 64]),以及仅允许由自定义 Pass 通过图属性下发的 default
  • 模式来源从「仅 option」扩展为「option + 根图同名图属性」,图属性优先,便于自定义 Pass 在编译期动态切换策略。
  • 收敛 LogicalStreamAllocatorEnginePartitionerMiniDAGStreamPass 的门控逻辑,统一走上述解析结果,非法取值统一报错。

2. 执行步骤打点(runtime/v1)

  • 新增 runtime/v1/common/multi_stream_tuningmodel_tuning_config 通过模型属性 _auto_multistream_tuning_mode 识别调优态;step_recorder 提供 RAII 的 StepScope,按 STEP 日志输出单步耗时。
  • 非调优态(mode 为空)退化为空对象,不取时间戳、不分配资源,生产路径零开销;同线程仅统计最外层执行,避免嵌套重复打点。
  • 打点接入 DavinciModelNnExecute / Run)与 RT2.0 ModelV2Executor,覆盖 ACL、静态执行器、Hybrid 与 RT2.0 四条执行路径。

3. 自动寻优样例(examples/multi_stream_autotune)

  • ge_ms_autotune.py:候选模式批量编译、OM 复用、输出一致性校验、耗时统计与最优策略推荐。
  • 配套自定义 Pass(下发 auto_multistream_tuning_graph 图属性)、sample_run.py 运行脚本及中英文 README。

4. 测试

  • 新增/补充 UT 与 ST,覆盖模式解析与非法值分支、门控跳过分支、打点记录与执行器集成路径。

变更类型

关联的Issue

无关联 Issue。

如何测试

前提条件:已安装 CANN Toolkit,并 source <ASCEND_INSTALL_PATH>/set_env.sh

  1. 编译 UT/ST:
cmake -DCMAKE_BUILD_TYPE=GCOV -DENABLE_OPEN_SRC=True -DENABLE_GE_UT=ON -DENABLE_GE_ST=ON \
      -DENABLE_TEST=True -DENABLE_PKG=ON -DASCEND_INSTALL_PATH=${ASCEND_INSTALL_PATH} \
      -S . -B cmake-build-gcov
make -C cmake-build-gcov ut_libge_multiparts_utest ut_libge_distinct_load_utest \
     ut_fast_runtime2_test graph_engine_test st_fast_runtime2_test -j$(nproc)
  1. 执行本次新增/修改的用例:
unset LD_LIBRARY_PATH; unset ASCEND_OPP_PATH
./cmake-build-gcov/ut_libge_multiparts_utest --gtest_filter='*MultiStreamTuning*:*StreamUtils*:*DagStreamAllocatorPass*'
./cmake-build-gcov/ut_libge_distinct_load_utest --gtest_filter='*DavinciModel*'
./cmake-build-gcov/ut_fast_runtime2_test --gtest_filter='*CustomPass*:*ModelV2ExecutorBuilder*'
./cmake-build-gcov/graph_engine_test --gtest_filter='*MultiStreamTuning*:*DagStreamAllocatorPass*'
./cmake-build-gcov/st_fast_runtime2_test --gtest_filter='*MultiStream*'
  1. 运行自动寻优样例(端到端):
cd examples/multi_stream_autotune
# 编译并安装寻优自定义 Pass
cmake -S custom_pass -B build && cmake --build build --parallel
# 单独跑一次被测样例,确认多流生效
GE_AUTO_MULTISTREAM_PARALLEL_MODE=LoadBalance:4 python3 sample_run.py --steps 12 --dim 512
# 批量寻优并查看推荐结果
python3 ge_ms_autotune.py --run-command "python3 sample_run.py --steps 12" \
    --strategies LoadBalance,MainStream --streams 2,4,8 --repeat 3 --output-dir ./tune_out

预期:各候选配置的 STEP 打点被正确解析,输出耗时排名与推荐配置;详细步骤与参数见 examples/multi_stream_autotune/README.md

核对清单

其他信息

  • 本 PR 不改变默认行为:未配置 ge.autoMultistreamParallelMode 时编译流程与打点逻辑保持原状。
  • git diff --check origin/develop...HEAD 的行尾提示仅涉及 3 个上游原本即全量使用 CRLF 的测试文件,本次保持其既有行尾格式,未引入行尾转换。
likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 KenChow 的贡献)
KKenChow成员
14 天前 创建了 pull request,commit 69aba5bb
KKenChow成员
14 天前 update merge request[project id: 8824148, iid: 4301, commit_id: 8d211046a5e8ab75bb27f56f26674626e2b44683] virtual merging success
KKenChow成员
14 天前 强制推送  40 个提交:69aba5bb-32 commits from branch develop99f4b858-feat: 支持自动多流模式环境变量配置,282471f6-fix,780d1044-tmp add gitginore,8da5baf7-fix: 修复自动多流模式流水线失败,9a47975d-fix: 修复自动多流模式门控检查,8108b382-test: 补充自动多流配置读取覆盖,0d7fd5da-ms autotune via custom pass,b44c41a9-feat: add multi-stream custom-pass autotuning workflow
KKenChow成员
14 天前 update merge request[project id: 8824148, iid: 4301, commit_id: 7f92e4900b9cb23eda3b846f097d5a03d6147a82] virtual merging success
CANN-robotCANN-robot成员
14 天前 添加了label:stat/needs-squash
此处折叠了500条消息 查看更多
zhanj
zhanj成员
1 天前 评论:

/lgtm

likedislike
CANN-robotCANN-robot成员
1 天前 添加了label:lgtm
张德鹏成员
22 小时前 评论:

/approve

likedislike
CANN-robotCANN-robot成员
22 小时前 添加了label:approved
CANN-robotCANN-robot成员
22 小时前 合入了pull request