fix graph_net/tools/generate_subgraph_dataset#603
Conversation
|
Thanks for your contribution! |
| function dimension_generalizer(){ | ||
| echo ">>> [1] dimension generalize for samoles under ${model_list}." | ||
| echo ">>>" | ||
| python3 -m graph_net.model_path_handler \ |
There was a problem hiding this comment.
这个脚本是为了给每个样本配置需要的维度变换Pass,目前这些Pass都已经更新到样本的graph_net.json中,因此这里不需要执行。
There was a problem hiding this comment.
这个function包含三个python,如果“这些Pass都已经更新到样本的graph_net.json中”,那么前两个python可以不执行,但是第三个python是生成不同维度的samples的子空间的,参考#566 (comment)
这点需要明确一下我们的要求到底是什么
There was a problem hiding this comment.
暂时先不删,目前不是只有small10改了,其他都没改,后续在修改这个
| fusible_subgraph_list=${DECOMPOSE_WORKSPACE}/fusible_subgraph_sample_list.txt | ||
| deduplicated_fusible_subgraphs_list=${DECOMPOSE_WORKSPACE}/deduplicated_fusible_subgraph_sample_list.txt | ||
| dimension_generalizer_samples_list=dimension_generalizer_sample_list.txt | ||
| model_runnable_predicator=ModelRunnablePredicator |
There was a problem hiding this comment.
该运行配置并没有给多个步骤复用,可直接写到对应的命令里面
There was a problem hiding this comment.
我觉得可以保留着,方便统一格式
There was a problem hiding this comment.
我先使用了保留的方式,如果确实需要写到命令里,后续在修改
| RENAMED_FUSIBLE_SUBGRAPH_DIR=$DECOMPOSE_WORKSPACE/renamed_fusible_subgraphs | ||
| DEDUPLICATED_FUSIBLE_SUBGRAPH_DIR=$DECOMPOSE_WORKSPACE/deduplicated_fusible_subgraphs | ||
| UNITTESTS_OUTPUT_DIR=$DECOMPOSE_WORKSPACE/unittests | ||
| DIMENSION_GENERALIZER_OUTPUT_DIR=/tmp/dimension_generalized_samples |
There was a problem hiding this comment.
统一在DECOMPOSE_WORKSPACE目录下建立子目录,保存每个步骤执行的产物
| EOF | ||
| ) | ||
|
|
||
| python3 -m graph_net.model_path_handler \ |
There was a problem hiding this comment.
这一步的功能是什么?看代码是更新了输入约束文件,需要集成进来吗?
There was a problem hiding this comment.
功能暂时保留,后续考虑是否删除
| "handler_config": { | ||
| "output_json_file_name": "cumsum_num_kernels.json", | ||
| "model_path_prefix": "${DEVICE_REWRITED_OUTPUT_DIR}", | ||
| "model_path_prefix": "${GRAPH_NET_ROOT}", |
|
|
||
| generate_op_names 2>&1 | tee ${DECOMPOSE_WORKSPACE}/log_op_names_${suffix}.txt | ||
| generate_split_point 2>&1 | tee ${DECOMPOSE_WORKSPACE}/log_split_point_${suffix}.txt | ||
| range_decompose 2>&1 | tee ${DECOMPOSE_WORKSPACE}/log_range_decompose_${suffix}.txt |
There was a problem hiding this comment.
前序新增了维度泛化步骤,维度泛化可能会修改model.py的内容,因为有些维度值是使用立即数的方式写死在了model.py里面,那range_decompose是不是应该以维度泛化后的样本作为输入?
|
|
||
| group_subgraph_sources 2>&1 | tee ${DECOMPOSE_WORKSPACE}/log_group_subgraph_sources_${suffix}.txt | ||
| analyze_subgraph_dependences 2>&1 | tee ${DECOMPOSE_WORKSPACE}/log_subgraph_dependencies_${suffix}.txt | ||
| rewrite_subgraph_shapes_per_index 2>&1 | tee ${DECOMPOSE_WORKSPACE}/log_rewrite_subgraph_shapes_${suffix}.txt |
There was a problem hiding this comment.
这3步是为了做一件事,前面2步是为了收集信息,最后1步才是真正应用样本变换,可以合并到1步,并且注意任何生成的json文件、样本等,都统一放到DECOMPOSE_WORKSPACE指定的目录下面。
目前这个函数还没有集成完毕 |
我比较倾向第二个 |
已实现第二个方法 |
依据「整图维度泛化」的信息进行「子图维度泛化」,子图的model.py也需要从泛化后的整图中截取?因为维度泛化时可能会修改整图的model.py。 |
从可融合子图中直接复制过来,这样做的目的是为了方便generate_unittests函数的运行 |
|
|
||
| python3 -m graph_net.model_path_handler \ | ||
| --model-path-list "$device_rewrited_subgraph_list" \ | ||
| --model-path-list "$model_list" \ |
There was a problem hiding this comment.
rewrite_device步骤是为了gen_fusible_subgraphs而添加,应该是将rewrite_device的输入改为GraphNet整图样本。
| for filename in files_to_copy: | ||
| src_file = src_model_path / filename | ||
| if src_file.exists(): | ||
| os.system(f"cp {src_file} {model_path / filename}") |
你没理解我的意思。整图维度泛化后,9份样本的 |
维度泛化后model.py应该都是一样的,是输入不同。假设初始有一份整图,输入是固定的,假设这个图只有一个维度可以泛化,原始的值是128,现在有(sympy.Symbol("S0"),): [ |
那些维度相关的pass就是在改model.py,成功应用了pass之后多少都有点差异。假设只有 |
主要是跑出来以后进行diff测试model.py时显示是相同的,没有差异的出现呀,疑惑🤔 |
这里的改动应该是在 |
好的,看到了,确实会变,可能是之前看的模型并没有对 |
那现在已经知道了model.py会变,那我的测试就应该不是从切开的融合子图里拿model.py,那从哪里拿???? |
我觉得应该从可融合子图那里,拿到子图的 |
当时说的是cumsum_num_kernels_generator比较慢,如果知道切分点以后,确实是一个可行方案 |
“泛化后的整图” 不包含size节点吧? |
参考该方案进行修改 |
|
除了泛化样本生成的成功率指标外,还需要看泛化样本执行的成功率,可以用 |
使用run_model进行测评 |
a295202 to
b32363a
Compare








PR Category
other
Description
维度泛化集成