Skip to content

Commit 0b687cf

Browse files
committed
get fusible subgraph test
1 parent b703458 commit 0b687cf

13 files changed

+263
-296
lines changed
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
samples/timm/crossvit_small_240.in1k
2+
samples/timm/poolformerv2_s12.sail_in1k
3+
samples/timm/regnety_080.pycls_in1k
4+
samples/timm/dla46x_c.in1k
5+
samples/timm/mobilenetv1_100.ra4_e3600_r224_in1k
6+
samples/timm/efficientnetv2_rw_s.ra2_in1k
7+
samples/timm/vit_base_patch16_rope_ape_224.naver_in1k
8+
samples/timm/fastvit_t8.apple_dist_in1k
9+
samples/timm/test_byobnet.r160_in1k
10+
samples/timm/mambaout_base.in1k
11+
samples/timm/davit_small
12+
samples/timm/resnet61q.ra2_in1k
13+
samples/timm/coat_tiny
14+
samples/timm/regnetx_004.pycls_in1k
15+
samples/timm/convnextv2_large.fcmae
16+
samples/timm/regnety_640.seer
17+
samples/timm/repvit_m1_1.dist_300e_in1k
18+
samples/timm/tinynet_d.in1k
19+
samples/timm/resnetrs270.tf_in1k
20+
samples/timm/cait_m48_448
21+
samples/timm/legacy_seresnet50.in1k
22+
samples/timm/tinynet_a.in1k
23+
samples/timm/convnext_small.fb_in1k
24+
samples/timm/vit_huge_patch14_clip_quickgelu_224.dfn5b
25+
samples/timm/dpn131.mx_in1k
26+
samples/timm/convnextv2_large.fcmae_ft_in1k
27+
samples/timm/convnextv2_small
28+
samples/timm/repvit_m1.dist_in1k
29+
samples/timm/cs3darknet_s
30+
samples/timm/resnet50d.a1_in1k
31+
samples/timm/dm_nfnet_f6
32+
samples/timm/coatnet_1_rw_224
33+
samples/timm/lcnet_050.ra2_in1k
34+
samples/timm/efficientnet_em.ra2_in1k
35+
samples/timm/dpn48b
36+
samples/timm/semnasnet_075.rmsp_in1k
37+
samples/timm/skresnet34.ra_in1k
38+
samples/timm/crossvit_15_dagger_240.in1k
39+
samples/timm/mnasnet_100.rmsp_in1k
40+
samples/timm/mobilenetv3_rw.rmsp_in1k
41+
samples/timm/xception65p.ra3_in1k
42+
samples/timm/coatnet_0_rw_224
43+
samples/timm/eca_nfnet_l3
44+
samples/timm/deit3_base_patch16_224.fb_in1k
45+
samples/timm/mambaout_base_short_rw.sw_e500_in1k
46+
samples/timm/mobilenetv4_conv_small.e1200_r224_in1k
47+
samples/timm/xception71.tf_in1k
48+
samples/timm/dla60.in1k
49+
samples/timm/repghostnet_130.in1k
50+
samples/timm/mambaout_base_plus_rw.sw_e150_in12k
51+
samples/timm/poolformerv2_s36.sail_in1k
52+
samples/timm/deit3_huge_patch14_224.fb_in1k
53+
samples/timm/vit_base_patch32_clip_224.datacompxl
54+
samples/timm/poolformer_m48.sail_in1k
55+
samples/timm/regnety_006.pycls_in1k
56+
samples/timm/starnet_s4.in1k
57+
samples/timm/poolformer_m36.sail_in1k
58+
samples/timm/vit_huge_patch14_gap_224.in1k_ijepa
59+
samples/timm/efficientnet_b3.ra2_in1k
60+
samples/timm/mobilenetv3_large_150d.ra4_e3600_r256_in1k
61+
samples/timm/hgnetv2_b0.ssld_stage1_in22k_in1k
62+
samples/timm/convnextv2_huge.fcmae
63+
samples/timm/davit_huge
64+
samples/timm/regnetx_004_tv.tv2_in1k
65+
samples/timm/dla34.in1k
66+
samples/timm/convnext_xlarge.fb_in22k
67+
samples/timm/resmlp_12_224.fb_dino
68+
samples/timm/fasternet_t1.in1k
69+
samples/timm/resnetblur50.bt_in1k
70+
samples/timm/res2net50d.in1k
71+
samples/timm/vit_base_patch32_224.augreg_in1k
72+
samples/timm/mambaout_base_wide_rw.sw_e500_in1k
73+
samples/timm/vgg19_bn.tv_in1k
74+
samples/timm/vit_small_patch16_rope_ape_224.naver_in1k
75+
samples/timm/hardcorenas_b.miil_green_in1k
76+
samples/timm/vgg16.tv_in1k
77+
samples/timm/xception41p.ra3_in1k
78+
samples/timm/efficientnet_lite0.ra_in1k
79+
samples/timm/regnetv_064.ra3_in1k
80+
samples/timm/regnety_320.pycls_in1k
81+
samples/timm/convnext_pico.d1_in1k
82+
samples/timm/repvit_m1_0.dist_300e_in1k
83+
samples/timm/resnet50c.gluon_in1k
84+
samples/timm/mobileone_s4.apple_in1k
85+
samples/timm/ghostnet_100.in1k
86+
samples/timm/deit_base_distilled_patch16_384
87+
samples/timm/dpn68b.mx_in1k
88+
samples/timm/dla60_res2next
89+
samples/timm/resnet101d.gluon_in1k
90+
samples/timm/eva02_large_patch14_clip_224.merged2b
91+
samples/timm/fasternet_m.in1k
92+
samples/timm/mobilenetv2_110d.ra_in1k
93+
samples/timm/regnetx_064.pycls_in1k
94+
samples/timm/cspresnet50.ra_in1k
95+
samples/timm/resmlp_24_224.fb_dino
96+
samples/timm/mobileone_s3.apple_in1k
97+
samples/timm/mobileone_s2.apple_in1k
98+
samples/timm/res2net101d
99+
samples/timm/hardcorenas_f.miil_green_in1k
100+
samples/timm/hrnet_w18_ssld.paddle_in1k
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#samples/timm/crossvit_small_240.in1k
2+
#samples/timm/poolformerv2_s12.sail_in1k
3+
#samples/timm/regnety_080.pycls_in1k
4+
#samples/timm/dla46x_c.in1k
5+
#samples/timm/mobilenetv1_100.ra4_e3600_r224_in1k
6+
samples/timm/efficientnetv2_rw_s.ra2_in1k
7+
#samples/timm/vit_base_patch16_rope_ape_224.naver_in1k
8+
#samples/timm/fastvit_t8.apple_dist_in1k
9+
#samples/timm/test_byobnet.r160_in1k
10+
#samples/timm/mambaout_base.in1k

graph_net/test/graph_decompose_and_look_for_fully_fusionable_subgraph_test.sh

Lines changed: 0 additions & 31 deletions
This file was deleted.
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
#!/bin/bash
2+
3+
GRAPH_NET_ROOT=$(python3 -c "import graph_net; import os; print(
4+
os.path.dirname(graph_net.__file__))")
5+
6+
# input model path
7+
MODEL_NAME=resnet18
8+
MODEL_PATH_IN_SAMPLES=/timm/$MODEL_NAME
9+
# INPUT_MODEL_LIST=$GRAPH_NET_ROOT/config/get_fusible_subgraph_sample_list.txt
10+
INPUT_MODEL_LIST=$GRAPH_NET_ROOT/config/small_sample_list_for_get_fusible_subgraph.txt
11+
12+
OUTPUT_DIR="/tmp/find_fully_fusible_output"
13+
config_json_str=$(cat <<EOF
14+
{
15+
"handler_path": "$GRAPH_NET_ROOT/torch/fully_fusible_subgraph_extractor.py",
16+
"handler_class_name":"FullyFusibleSubgraphExtractor",
17+
"handler_config": {
18+
"model_path_prefix": "$GRAPH_NET_ROOT/../",
19+
"output_dir": "$OUTPUT_DIR",
20+
"split_positions": [],
21+
"group_head_and_tail": false,
22+
"chain_style": false,
23+
"max_step": 3,
24+
"min_step": 2,
25+
"max_nodes": 4
26+
}
27+
}
28+
EOF
29+
)
30+
CONFIG=$(echo $config_json_str | base64 -w 0)
31+
32+
# python3 -m graph_net.model_path_handler --model-path $GRAPH_NET_ROOT/../samples/$MODEL_PATH_IN_SAMPLES --handler-config=$CONFIG
33+
python3 -m graph_net.model_path_handler --model-path-list $INPUT_MODEL_LIST --handler-config=$CONFIG
34+
35+
36+
# 1. 读取总输入数量 (通过计算输入模型列表文件中的行数)
37+
if [ ! -f "$INPUT_MODEL_LIST" ]; then
38+
echo "input dir $INPUT_MODEL_LIST not exist."
39+
TOTAL_INPUT_COUNT=0
40+
else
41+
# wc -l 计算行数, awk '{print $1}' 移除文件名
42+
TOTAL_INPUT_COUNT=$(wc -l < "$INPUT_MODEL_LIST")
43+
fi
44+
45+
# 2. 统计已产出文件夹数量
46+
if [ ! -d "$OUTPUT_DIR" ]; then
47+
echo "output dir $OUTPUT_DIR not exist."
48+
PRODUCED_COUNT=0
49+
else
50+
# 查找 OUTPUT_DIR 下的一级子目录数量
51+
# -mindepth 1: 忽略父目录本身
52+
# -maxdepth 1: 只查找一级目录
53+
# -type d: 只查找目录 (文件夹)
54+
PRODUCED_COUNT=$(find "$OUTPUT_DIR" -mindepth 1 -maxdepth 1 -type d | wc -l)
55+
fi
56+
57+
58+
echo "Total Input = $TOTAL_INPUT_COUNT"
59+
echo "Total Output = $PRODUCED_COUNT"
60+
61+
# 3. 计算产出率 (使用 bc 进行浮点数运算)
62+
if [ "$TOTAL_INPUT_COUNT" -gt 0 ]; then
63+
# scale=2 设置小数点后两位精度
64+
PRODUCTION_RATE=$(echo "scale=2; ($PRODUCED_COUNT * 100) / $TOTAL_INPUT_COUNT" | bc)
65+
echo "Production Rate = ${PRODUCTION_RATE}%"
66+
fi

graph_net/torch/check_if_a_given_model_is_fully_fusionable.py

Lines changed: 0 additions & 65 deletions
This file was deleted.

graph_net/torch/constraint_util.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
import sys
22
import os
33
import graph_net
4+
import logging
5+
6+
logger = logging.getLogger(__name__)
47

58

69
class NaiveDataInputPredicator:
@@ -58,3 +61,21 @@ def __call__(self, model_path):
5861
decorator_config = b64_encoded_bytes.decode("utf-8")
5962
cmd = f"{sys.executable} -m graph_net.torch.run_model --model-path {model_path} --decorator-config {decorator_config}"
6063
return os.system(cmd) == 0
64+
65+
66+
class FusibleSubgraphPredicator:
67+
def __init__(self, config=None):
68+
if config is None:
69+
config = {}
70+
self.config = config
71+
72+
def __call__(self, model_path):
73+
import json
74+
import base64
75+
76+
json_string = json.dumps(self.config)
77+
json_bytes = json_string.encode("utf-8")
78+
b64_encoded_bytes = base64.b64encode(json_bytes)
79+
predicator_config = b64_encoded_bytes.decode("utf-8")
80+
cmd = f"{sys.executable} -m graph_net.model_path_handler --model-path {model_path} --handler-config {predicator_config}"
81+
return os.system(cmd) == 0

graph_net/torch/decompose_util.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,9 @@ def get_args_node(arg):
249249
yield arg.stop
250250
yield arg.step
251251
else:
252-
assert isinstance(arg, (int, bool, float, str, type(None))), f"{type(arg)=}"
252+
assert isinstance(
253+
arg, (int, bool, float, str, type(...), type(None))
254+
), f"{type(arg)=}"
253255

254256
def get_args_node_and_self_node(node):
255257
for arg in node.args:

0 commit comments

Comments
 (0)