已合并
feat: 支持自动多流配置与自动寻优工作流 #4301
KenChow创建于 14 天前
feat: 支持自动多流配置与自动寻优工作流 #4301
已合并
Pull Request已成功合入, 合并人@CANN-robot
(感谢 KenChow 的贡献)KKenChow
14 天前 强制推送 40 个提交:69aba5bb-32 commits from branch
develop,99f4b858-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 workflow14 天前 强制推送 40 个提交:69aba5bb-32 commits from branch
develop,99f4b858-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 workflow14 天前 添加了label:stat/needs-squash
此处折叠了500条消息 查看更多
zhanj
1 天前 评论:
1 天前 评论:
/lgtm


1 天前 添加了label:lgtm
22 小时前 添加了label:approved
22 小时前 合入了pull request
Pull Request
描述
新增 GE 自动多流的配置入口与自动寻优工作流,使用户无需修改模型代码即可选择、验证并挑选最优的多流并行策略。
1. 自动多流配置入口(compiler)
StreamUtils新增AutoMultistreamMode/AutoMultistreamConfig,统一解析ge.autoMultistreamParallelMode的取值:cv、LoadBalance:N、MainStream:N、WeightedLoadBalance:N(N 取值 [1, 64]),以及仅允许由自定义 Pass 通过图属性下发的default。LogicalStreamAllocator、EnginePartitioner与MiniDAGStreamPass的门控逻辑,统一走上述解析结果,非法取值统一报错。2. 执行步骤打点(runtime/v1)
runtime/v1/common/multi_stream_tuning:model_tuning_config通过模型属性_auto_multistream_tuning_mode识别调优态;step_recorder提供 RAII 的StepScope,按 STEP 日志输出单步耗时。DavinciModel(NnExecute/Run)与 RT2.0ModelV2Executor,覆盖 ACL、静态执行器、Hybrid 与 RT2.0 四条执行路径。3. 自动寻优样例(examples/multi_stream_autotune)
ge_ms_autotune.py:候选模式批量编译、OM 复用、输出一致性校验、耗时统计与最优策略推荐。auto_multistream_tuning_graph图属性)、sample_run.py运行脚本及中英文 README。4. 测试
变更类型
关联的Issue
无关联 Issue。
如何测试
前提条件:已安装 CANN Toolkit,并
source <ASCEND_INSTALL_PATH>/set_env.sh。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)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*'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。核对清单
其他信息
ge.autoMultistreamParallelMode时编译流程与打点逻辑保持原状。git diff --check origin/develop...HEAD的行尾提示仅涉及 3 个上游原本即全量使用 CRLF 的测试文件,本次保持其既有行尾格式,未引入行尾转换。