from methods.elasticdnn.pipeline.offline.fm_to_md.base import FM_to_MD_Util import torch def test(fm, fm_to_md_util: FM_to_MD_Util, samples: torch.Tensor): master_dnn = fm_to_md_util.init_md_from_fm_by_reducing_width_with_perf_test(fm, 4, samples) torch.save(master_dnn, 'tmp-master-dnn.pt') if __name__ == '__main__': from utils.dl.common.env import set_random_seed set_random_seed(1) # from torchvision.models import resnet50 # from methods.elasticdnn.model.cnn import ElasticCNNUtil # raw_cnn = resnet50() # prunable_layers = [] # for i in range(1, 5): # for j in range([3, 4, 6, 3][i - 1]): # prunable_layers += [f'layer{i}.{j}.conv1', f'layer{i}.{j}.conv2'] # ignore_layers = [layer for layer, m in raw_cnn.named_modules() if isinstance(m, nn.Conv2d) and layer not in prunable_layers] # test(raw_cnn, ignore_layers, ElasticCNNUtil(), torch.rand(2, 3, 224, 224)) from dnns.vit import vit_b_16 from methods.elasticdnn.pipeline.offline.fm_to_md.vit import FM_to_MD_ViT_Util raw_vit = vit_b_16() test(raw_vit.cuda(), FM_to_MD_ViT_Util(), torch.rand(2, 3, 224, 224).cuda())