[ASP] torchvision is imported, can work with the MaskRCNN/KeypointRCNN from torchvision. [set_permutation_params_from_asp] Set permutation needed parameters [set_identical_seed] Set the identical seed: 1 for all GPUs to make sure the same results generated in permutation search [ASP] Auto skipping pruning conv1::weight of size=torch.Size([64, 3, 7, 7]) and type=torch.float32 for sparsity [build_offline_permutation_graph] Further refine the model graph built by Torch.FX for offline permutation [build_fx_graph] The torch version is: 1.11.0, version major is: 1, version minor is: 11, version minimum is: 0 [build_fx_graph] The Torch.FX is supported. [build_fx_graph] Print the model structure with pure PyTorch function ResNet( (conv1): Conv2d(3, 64, kernel_size=(7, 7), stride=(2, 2), padding=(3, 3), bias=False) (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (relu): ReLU(inplace=True) (maxpool): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False) (layer1): Sequential( (0): Bottleneck( (conv1): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv3): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn3): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (relu): ReLU(inplace=True) (downsample): Sequential( (0): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False) (1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) ) ) (1): Bottleneck( (conv1): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv3): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn3): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (relu): ReLU(inplace=True) ) (2): Bottleneck( (conv1): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv3): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn3): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (relu): ReLU(inplace=True) ) ) (layer2): Sequential( (0): Bottleneck( (conv1): Conv2d(256, 128, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False) (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn3): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (relu): ReLU(inplace=True) (downsample): Sequential( (0): Conv2d(256, 512, kernel_size=(1, 1), stride=(2, 2), bias=False) (1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) ) ) (1): Bottleneck( (conv1): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn3): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (relu): ReLU(inplace=True) ) (2): Bottleneck( (conv1): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn3): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (relu): ReLU(inplace=True) ) (3): Bottleneck( (conv1): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn3): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (relu): ReLU(inplace=True) ) ) (layer3): Sequential( (0): Bottleneck( (conv1): Conv2d(512, 256, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False) (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (relu): ReLU(inplace=True) (downsample): Sequential( (0): Conv2d(512, 1024, kernel_size=(1, 1), stride=(2, 2), bias=False) (1): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) ) ) (1): Bottleneck( (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (relu): ReLU(inplace=True) ) (2): Bottleneck( (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (relu): ReLU(inplace=True) ) (3): Bottleneck( (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (relu): ReLU(inplace=True) ) (4): Bottleneck( (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (relu): ReLU(inplace=True) ) (5): Bottleneck( (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (relu): ReLU(inplace=True) ) ) (layer4): Sequential( (0): Bottleneck( (conv1): Conv2d(1024, 512, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False) (bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv3): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn3): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (relu): ReLU(inplace=True) (downsample): Sequential( (0): Conv2d(1024, 2048, kernel_size=(1, 1), stride=(2, 2), bias=False) (1): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) ) ) (1): Bottleneck( (conv1): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) (bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv3): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn3): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (relu): ReLU(inplace=True) ) (2): Bottleneck( (conv1): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) (bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv3): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn3): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (relu): ReLU(inplace=True) ) ) (avgpool): AdaptiveAvgPool2d(output_size=(1, 1)) (fc): Linear(in_features=2048, out_features=1000, bias=True) ) [build_fx_graph] Build the module name and type dictionary [build_fx_graph] module_name: , module type: [build_fx_graph] this module has 'group' param with value: 1 [build_fx_graph] module_name: conv1, module type: [build_fx_graph] this module has 'group' param with value: 1 [build_fx_graph] module_name: bn1, module type: [build_fx_graph] module_name: relu, module type: [build_fx_graph] module_name: maxpool, module type: [build_fx_graph] module_name: layer1, module type: [build_fx_graph] module_name: layer1.0, module type: [build_fx_graph] module_name: layer1.0.conv1, module type: [build_fx_graph] this module has 'group' param with value: 1 [build_fx_graph] module_name: layer1.0.bn1, module type: [build_fx_graph] module_name: layer1.0.conv2, module type: [build_fx_graph] this module has 'group' param with value: 1 [build_fx_graph] module_name: layer1.0.bn2, module type: [build_fx_graph] module_name: layer1.0.conv3, module type: [build_fx_graph] this module has 'group' param with value: 1 [build_fx_graph] module_name: layer1.0.bn3, module type: [build_fx_graph] module_name: layer1.0.relu, module type: [build_fx_graph] module_name: layer1.0.downsample, module type: [build_fx_graph] module_name: layer1.0.downsample.0, module type: [build_fx_graph] this module has 'group' param with value: 1 [build_fx_graph] module_name: layer1.0.downsample.1, module type: [build_fx_graph] module_name: layer1.1, module type: [build_fx_graph] module_name: layer1.1.conv1, module type: [build_fx_graph] this module has 'group' param with value: 1 [build_fx_graph] module_name: layer1.1.bn1, module type: [build_fx_graph] module_name: layer1.1.conv2, module type: [build_fx_graph] this module has 'group' param with value: 1 [build_fx_graph] module_name: layer1.1.bn2, module type: [build_fx_graph] module_name: layer1.1.conv3, module type: [build_fx_graph] this module has 'group' param with value: 1 [build_fx_graph] module_name: layer1.1.bn3, module type: [build_fx_graph] module_name: layer1.1.relu, module type: [build_fx_graph] module_name: layer1.2, module type: [build_fx_graph] module_name: layer1.2.conv1, module type: [build_fx_graph] this module has 'group' param with value: 1 [build_fx_graph] module_name: layer1.2.bn1, module type: [build_fx_graph] module_name: layer1.2.conv2, module type: [build_fx_graph] this module has 'group' param with value: 1 [build_fx_graph] module_name: layer1.2.bn2, module type: [build_fx_graph] module_name: layer1.2.conv3, module type: [build_fx_graph] this module has 'group' param with value: 1 [build_fx_graph] module_name: layer1.2.bn3, module type: [build_fx_graph] module_name: layer1.2.relu, module type: [build_fx_graph] module_name: layer2, module type: [build_fx_graph] module_name: layer2.0, module type: [build_fx_graph] module_name: layer2.0.conv1, module type: [build_fx_graph] this module has 'group' param with value: 1 [build_fx_graph] module_name: layer2.0.bn1, module type: [build_fx_graph] module_name: layer2.0.conv2, module type: [build_fx_graph] this module has 'group' param with value: 1 [build_fx_graph] module_name: layer2.0.bn2, module type: [build_fx_graph] module_name: layer2.0.conv3, module type: [build_fx_graph] this module has 'group' param with value: 1 [build_fx_graph] module_name: layer2.0.bn3, module type: [build_fx_graph] module_name: layer2.0.relu, module type: [build_fx_graph] module_name: layer2.0.downsample, module type: [build_fx_graph] module_name: layer2.0.downsample.0, module type: [build_fx_graph] this module has 'group' param with value: 1 [build_fx_graph] module_name: layer2.0.downsample.1, module type: [build_fx_graph] module_name: layer2.1, module type: [build_fx_graph] module_name: layer2.1.conv1, module type: [build_fx_graph] this module has 'group' param with value: 1 [build_fx_graph] module_name: layer2.1.bn1, module type: [build_fx_graph] module_name: layer2.1.conv2, module type: [build_fx_graph] this module has 'group' param with value: 1 [build_fx_graph] module_name: layer2.1.bn2, module type: [build_fx_graph] module_name: layer2.1.conv3, module type: [build_fx_graph] this module has 'group' param with value: 1 [build_fx_graph] module_name: layer2.1.bn3, module type: [build_fx_graph] module_name: layer2.1.relu, module type: [build_fx_graph] module_name: layer2.2, module type: [build_fx_graph] module_name: layer2.2.conv1, module type: [build_fx_graph] this module has 'group' param with value: 1 [build_fx_graph] module_name: layer2.2.bn1, module type: [build_fx_graph] module_name: layer2.2.conv2, module type: [build_fx_graph] this module has 'group' param with value: 1 [build_fx_graph] module_name: layer2.2.bn2, module type: [build_fx_graph] module_name: layer2.2.conv3, module type: [build_fx_graph] this module has 'group' param with value: 1 [build_fx_graph] module_name: layer2.2.bn3, module type: [build_fx_graph] module_name: layer2.2.relu, module type: [build_fx_graph] module_name: layer2.3, module type: [build_fx_graph] module_name: layer2.3.conv1, module type: [build_fx_graph] this module has 'group' param with value: 1 [build_fx_graph] module_name: layer2.3.bn1, module type: [build_fx_graph] module_name: layer2.3.conv2, module type: [build_fx_graph] this module has 'group' param with value: 1 [build_fx_graph] module_name: layer2.3.bn2, module type: [build_fx_graph] module_name: layer2.3.conv3, module type: [build_fx_graph] this module has 'group' param with value: 1 [build_fx_graph] module_name: layer2.3.bn3, module type: [build_fx_graph] module_name: layer2.3.relu, module type: [build_fx_graph] module_name: layer3, module type: [build_fx_graph] module_name: layer3.0, module type: [build_fx_graph] module_name: layer3.0.conv1, module type: [build_fx_graph] this module has 'group' param with value: 1 [build_fx_graph] module_name: layer3.0.bn1, module type: [build_fx_graph] module_name: layer3.0.conv2, module type: [build_fx_graph] this module has 'group' param with value: 1 [build_fx_graph] module_name: layer3.0.bn2, module type: [build_fx_graph] module_name: layer3.0.conv3, module type: [build_fx_graph] this module has 'group' param with value: 1 [build_fx_graph] module_name: layer3.0.bn3, module type: [build_fx_graph] module_name: layer3.0.relu, module type: [build_fx_graph] module_name: layer3.0.downsample, module type: [build_fx_graph] module_name: layer3.0.downsample.0, module type: [build_fx_graph] this module has 'group' param with value: 1 [build_fx_graph] module_name: layer3.0.downsample.1, module type: [build_fx_graph] module_name: layer3.1, module type: [build_fx_graph] module_name: layer3.1.conv1, module type: [build_fx_graph] this module has 'group' param with value: 1 [build_fx_graph] module_name: layer3.1.bn1, module type: [build_fx_graph] module_name: layer3.1.conv2, module type: [build_fx_graph] this module has 'group' param with value: 1 [build_fx_graph] module_name: layer3.1.bn2, module type: [build_fx_graph] module_name: layer3.1.conv3, module type: [build_fx_graph] this module has 'group' param with value: 1 [build_fx_graph] module_name: layer3.1.bn3, module type: [build_fx_graph] module_name: layer3.1.relu, module type: [build_fx_graph] module_name: layer3.2, module type: [build_fx_graph] module_name: layer3.2.conv1, module type: [build_fx_graph] this module has 'group' param with value: 1 [build_fx_graph] module_name: layer3.2.bn1, module type: [build_fx_graph] module_name: layer3.2.conv2, module type: [build_fx_graph] this module has 'group' param with value: 1 [build_fx_graph] module_name: layer3.2.bn2, module type: [build_fx_graph] module_name: layer3.2.conv3, module type: [build_fx_graph] this module has 'group' param with value: 1 [build_fx_graph] module_name: layer3.2.bn3, module type: [build_fx_graph] module_name: layer3.2.relu, module type: [build_fx_graph] module_name: layer3.3, module type: [build_fx_graph] module_name: layer3.3.conv1, module type: [build_fx_graph] this module has 'group' param with value: 1 [build_fx_graph] module_name: layer3.3.bn1, module type: [build_fx_graph] module_name: layer3.3.conv2, module type: [build_fx_graph] this module has 'group' param with value: 1 [build_fx_graph] module_name: layer3.3.bn2, module type: [build_fx_graph] module_name: layer3.3.conv3, module type: [build_fx_graph] this module has 'group' param with value: 1 [build_fx_graph] module_name: layer3.3.bn3, module type: [build_fx_graph] module_name: layer3.3.relu, module type: [build_fx_graph] module_name: layer3.4, module type: [build_fx_graph] module_name: layer3.4.conv1, module type: [build_fx_graph] this module has 'group' param with value: 1 [build_fx_graph] module_name: layer3.4.bn1, module type: [build_fx_graph] module_name: layer3.4.conv2, module type: [build_fx_graph] this module has 'group' param with value: 1 [build_fx_graph] module_name: layer3.4.bn2, module type: [build_fx_graph] module_name: layer3.4.conv3, module type: [build_fx_graph] this module has 'group' param with value: 1 [build_fx_graph] module_name: layer3.4.bn3, module type: [build_fx_graph] module_name: layer3.4.relu, module type: [build_fx_graph] module_name: layer3.5, module type: [build_fx_graph] module_name: layer3.5.conv1, module type: [build_fx_graph] this module has 'group' param with value: 1 [build_fx_graph] module_name: layer3.5.bn1, module type: [build_fx_graph] module_name: layer3.5.conv2, module type: [build_fx_graph] this module has 'group' param with value: 1 [build_fx_graph] module_name: layer3.5.bn2, module type: [build_fx_graph] module_name: layer3.5.conv3, module type: [build_fx_graph] this module has 'group' param with value: 1 [build_fx_graph] module_name: layer3.5.bn3, module type: [build_fx_graph] module_name: layer3.5.relu, module type: [build_fx_graph] module_name: layer4, module type: [build_fx_graph] module_name: layer4.0, module type: [build_fx_graph] module_name: layer4.0.conv1, module type: [build_fx_graph] this module has 'group' param with value: 1 [build_fx_graph] module_name: layer4.0.bn1, module type: [build_fx_graph] module_name: layer4.0.conv2, module type: [build_fx_graph] this module has 'group' param with value: 1 [build_fx_graph] module_name: layer4.0.bn2, module type: [build_fx_graph] module_name: layer4.0.conv3, module type: [build_fx_graph] this module has 'group' param with value: 1 [build_fx_graph] module_name: layer4.0.bn3, module type: [build_fx_graph] module_name: layer4.0.relu, module type: [build_fx_graph] module_name: layer4.0.downsample, module type: [build_fx_graph] module_name: layer4.0.downsample.0, module type: [build_fx_graph] this module has 'group' param with value: 1 [build_fx_graph] module_name: layer4.0.downsample.1, module type: [build_fx_graph] module_name: layer4.1, module type: [build_fx_graph] module_name: layer4.1.conv1, module type: [build_fx_graph] this module has 'group' param with value: 1 [build_fx_graph] module_name: layer4.1.bn1, module type: [build_fx_graph] module_name: layer4.1.conv2, module type: [build_fx_graph] this module has 'group' param with value: 1 [build_fx_graph] module_name: layer4.1.bn2, module type: [build_fx_graph] module_name: layer4.1.conv3, module type: [build_fx_graph] this module has 'group' param with value: 1 [build_fx_graph] module_name: layer4.1.bn3, module type: [build_fx_graph] module_name: layer4.1.relu, module type: [build_fx_graph] module_name: layer4.2, module type: [build_fx_graph] module_name: layer4.2.conv1, module type: [build_fx_graph] this module has 'group' param with value: 1 [build_fx_graph] module_name: layer4.2.bn1, module type: [build_fx_graph] module_name: layer4.2.conv2, module type: [build_fx_graph] this module has 'group' param with value: 1 [build_fx_graph] module_name: layer4.2.bn2, module type: [build_fx_graph] module_name: layer4.2.conv3, module type: [build_fx_graph] this module has 'group' param with value: 1 [build_fx_graph] module_name: layer4.2.bn3, module type: [build_fx_graph] module_name: layer4.2.relu, module type: [build_fx_graph] module_name: avgpool, module type: [build_fx_graph] module_name: fc, module type: [print_raw_fx_graph] Print the intermediate representation (IR) with Torch.FX graph(): %x : torch.Tensor [#users=1] = placeholder[target=x] %conv1 : [#users=1] = call_module[target=conv1](args = (%x,), kwargs = {}) %bn1 : [#users=1] = call_module[target=bn1](args = (%conv1,), kwargs = {}) %relu : [#users=1] = call_module[target=relu](args = (%bn1,), kwargs = {}) %maxpool : [#users=2] = call_module[target=maxpool](args = (%relu,), kwargs = {}) %layer1_0_conv1 : [#users=1] = call_module[target=layer1.0.conv1](args = (%maxpool,), kwargs = {}) %layer1_0_bn1 : [#users=1] = call_module[target=layer1.0.bn1](args = (%layer1_0_conv1,), kwargs = {}) %layer1_0_relu : [#users=1] = call_module[target=layer1.0.relu](args = (%layer1_0_bn1,), kwargs = {}) %layer1_0_conv2 : [#users=1] = call_module[target=layer1.0.conv2](args = (%layer1_0_relu,), kwargs = {}) %layer1_0_bn2 : [#users=1] = call_module[target=layer1.0.bn2](args = (%layer1_0_conv2,), kwargs = {}) %layer1_0_relu_1 : [#users=1] = call_module[target=layer1.0.relu](args = (%layer1_0_bn2,), kwargs = {}) %layer1_0_conv3 : [#users=1] = call_module[target=layer1.0.conv3](args = (%layer1_0_relu_1,), kwargs = {}) %layer1_0_bn3 : [#users=1] = call_module[target=layer1.0.bn3](args = (%layer1_0_conv3,), kwargs = {}) %layer1_0_downsample_0 : [#users=1] = call_module[target=layer1.0.downsample.0](args = (%maxpool,), kwargs = {}) %layer1_0_downsample_1 : [#users=1] = call_module[target=layer1.0.downsample.1](args = (%layer1_0_downsample_0,), kwargs = {}) %add : [#users=1] = call_function[target=operator.add](args = (%layer1_0_bn3, %layer1_0_downsample_1), kwargs = {}) %layer1_0_relu_2 : [#users=2] = call_module[target=layer1.0.relu](args = (%add,), kwargs = {}) %layer1_1_conv1 : [#users=1] = call_module[target=layer1.1.conv1](args = (%layer1_0_relu_2,), kwargs = {}) %layer1_1_bn1 : [#users=1] = call_module[target=layer1.1.bn1](args = (%layer1_1_conv1,), kwargs = {}) %layer1_1_relu : [#users=1] = call_module[target=layer1.1.relu](args = (%layer1_1_bn1,), kwargs = {}) %layer1_1_conv2 : [#users=1] = call_module[target=layer1.1.conv2](args = (%layer1_1_relu,), kwargs = {}) %layer1_1_bn2 : [#users=1] = call_module[target=layer1.1.bn2](args = (%layer1_1_conv2,), kwargs = {}) %layer1_1_relu_1 : [#users=1] = call_module[target=layer1.1.relu](args = (%layer1_1_bn2,), kwargs = {}) %layer1_1_conv3 : [#users=1] = call_module[target=layer1.1.conv3](args = (%layer1_1_relu_1,), kwargs = {}) %layer1_1_bn3 : [#users=1] = call_module[target=layer1.1.bn3](args = (%layer1_1_conv3,), kwargs = {}) %add_1 : [#users=1] = call_function[target=operator.add](args = (%layer1_1_bn3, %layer1_0_relu_2), kwargs = {}) %layer1_1_relu_2 : [#users=2] = call_module[target=layer1.1.relu](args = (%add_1,), kwargs = {}) %layer1_2_conv1 : [#users=1] = call_module[target=layer1.2.conv1](args = (%layer1_1_relu_2,), kwargs = {}) %layer1_2_bn1 : [#users=1] = call_module[target=layer1.2.bn1](args = (%layer1_2_conv1,), kwargs = {}) %layer1_2_relu : [#users=1] = call_module[target=layer1.2.relu](args = (%layer1_2_bn1,), kwargs = {}) %layer1_2_conv2 : [#users=1] = call_module[target=layer1.2.conv2](args = (%layer1_2_relu,), kwargs = {}) %layer1_2_bn2 : [#users=1] = call_module[target=layer1.2.bn2](args = (%layer1_2_conv2,), kwargs = {}) %layer1_2_relu_1 : [#users=1] = call_module[target=layer1.2.relu](args = (%layer1_2_bn2,), kwargs = {}) %layer1_2_conv3 : [#users=1] = call_module[target=layer1.2.conv3](args = (%layer1_2_relu_1,), kwargs = {}) %layer1_2_bn3 : [#users=1] = call_module[target=layer1.2.bn3](args = (%layer1_2_conv3,), kwargs = {}) %add_2 : [#users=1] = call_function[target=operator.add](args = (%layer1_2_bn3, %layer1_1_relu_2), kwargs = {}) %layer1_2_relu_2 : [#users=2] = call_module[target=layer1.2.relu](args = (%add_2,), kwargs = {}) %layer2_0_conv1 : [#users=1] = call_module[target=layer2.0.conv1](args = (%layer1_2_relu_2,), kwargs = {}) %layer2_0_bn1 : [#users=1] = call_module[target=layer2.0.bn1](args = (%layer2_0_conv1,), kwargs = {}) %layer2_0_relu : [#users=1] = call_module[target=layer2.0.relu](args = (%layer2_0_bn1,), kwargs = {}) %layer2_0_conv2 : [#users=1] = call_module[target=layer2.0.conv2](args = (%layer2_0_relu,), kwargs = {}) %layer2_0_bn2 : [#users=1] = call_module[target=layer2.0.bn2](args = (%layer2_0_conv2,), kwargs = {}) %layer2_0_relu_1 : [#users=1] = call_module[target=layer2.0.relu](args = (%layer2_0_bn2,), kwargs = {}) %layer2_0_conv3 : [#users=1] = call_module[target=layer2.0.conv3](args = (%layer2_0_relu_1,), kwargs = {}) %layer2_0_bn3 : [#users=1] = call_module[target=layer2.0.bn3](args = (%layer2_0_conv3,), kwargs = {}) %layer2_0_downsample_0 : [#users=1] = call_module[target=layer2.0.downsample.0](args = (%layer1_2_relu_2,), kwargs = {}) %layer2_0_downsample_1 : [#users=1] = call_module[target=layer2.0.downsample.1](args = (%layer2_0_downsample_0,), kwargs = {}) %add_3 : [#users=1] = call_function[target=operator.add](args = (%layer2_0_bn3, %layer2_0_downsample_1), kwargs = {}) %layer2_0_relu_2 : [#users=2] = call_module[target=layer2.0.relu](args = (%add_3,), kwargs = {}) %layer2_1_conv1 : [#users=1] = call_module[target=layer2.1.conv1](args = (%layer2_0_relu_2,), kwargs = {}) %layer2_1_bn1 : [#users=1] = call_module[target=layer2.1.bn1](args = (%layer2_1_conv1,), kwargs = {}) %layer2_1_relu : [#users=1] = call_module[target=layer2.1.relu](args = (%layer2_1_bn1,), kwargs = {}) %layer2_1_conv2 : [#users=1] = call_module[target=layer2.1.conv2](args = (%layer2_1_relu,), kwargs = {}) %layer2_1_bn2 : [#users=1] = call_module[target=layer2.1.bn2](args = (%layer2_1_conv2,), kwargs = {}) %layer2_1_relu_1 : [#users=1] = call_module[target=layer2.1.relu](args = (%layer2_1_bn2,), kwargs = {}) %layer2_1_conv3 : [#users=1] = call_module[target=layer2.1.conv3](args = (%layer2_1_relu_1,), kwargs = {}) %layer2_1_bn3 : [#users=1] = call_module[target=layer2.1.bn3](args = (%layer2_1_conv3,), kwargs = {}) %add_4 : [#users=1] = call_function[target=operator.add](args = (%layer2_1_bn3, %layer2_0_relu_2), kwargs = {}) %layer2_1_relu_2 : [#users=2] = call_module[target=layer2.1.relu](args = (%add_4,), kwargs = {}) %layer2_2_conv1 : [#users=1] = call_module[target=layer2.2.conv1](args = (%layer2_1_relu_2,), kwargs = {}) %layer2_2_bn1 : [#users=1] = call_module[target=layer2.2.bn1](args = (%layer2_2_conv1,), kwargs = {}) %layer2_2_relu : [#users=1] = call_module[target=layer2.2.relu](args = (%layer2_2_bn1,), kwargs = {}) %layer2_2_conv2 : [#users=1] = call_module[target=layer2.2.conv2](args = (%layer2_2_relu,), kwargs = {}) %layer2_2_bn2 : [#users=1] = call_module[target=layer2.2.bn2](args = (%layer2_2_conv2,), kwargs = {}) %layer2_2_relu_1 : [#users=1] = call_module[target=layer2.2.relu](args = (%layer2_2_bn2,), kwargs = {}) %layer2_2_conv3 : [#users=1] = call_module[target=layer2.2.conv3](args = (%layer2_2_relu_1,), kwargs = {}) %layer2_2_bn3 : [#users=1] = call_module[target=layer2.2.bn3](args = (%layer2_2_conv3,), kwargs = {}) %add_5 : [#users=1] = call_function[target=operator.add](args = (%layer2_2_bn3, %layer2_1_relu_2), kwargs = {}) %layer2_2_relu_2 : [#users=2] = call_module[target=layer2.2.relu](args = (%add_5,), kwargs = {}) %layer2_3_conv1 : [#users=1] = call_module[target=layer2.3.conv1](args = (%layer2_2_relu_2,), kwargs = {}) %layer2_3_bn1 : [#users=1] = call_module[target=layer2.3.bn1](args = (%layer2_3_conv1,), kwargs = {}) %layer2_3_relu : [#users=1] = call_module[target=layer2.3.relu](args = (%layer2_3_bn1,), kwargs = {}) %layer2_3_conv2 : [#users=1] = call_module[target=layer2.3.conv2](args = (%layer2_3_relu,), kwargs = {}) %layer2_3_bn2 : [#users=1] = call_module[target=layer2.3.bn2](args = (%layer2_3_conv2,), kwargs = {}) %layer2_3_relu_1 : [#users=1] = call_module[target=layer2.3.relu](args = (%layer2_3_bn2,), kwargs = {}) %layer2_3_conv3 : [#users=1] = call_module[target=layer2.3.conv3](args = (%layer2_3_relu_1,), kwargs = {}) %layer2_3_bn3 : [#users=1] = call_module[target=layer2.3.bn3](args = (%layer2_3_conv3,), kwargs = {}) %add_6 : [#users=1] = call_function[target=operator.add](args = (%layer2_3_bn3, %layer2_2_relu_2), kwargs = {}) %layer2_3_relu_2 : [#users=2] = call_module[target=layer2.3.relu](args = (%add_6,), kwargs = {}) %layer3_0_conv1 : [#users=1] = call_module[target=layer3.0.conv1](args = (%layer2_3_relu_2,), kwargs = {}) %layer3_0_bn1 : [#users=1] = call_module[target=layer3.0.bn1](args = (%layer3_0_conv1,), kwargs = {}) %layer3_0_relu : [#users=1] = call_module[target=layer3.0.relu](args = (%layer3_0_bn1,), kwargs = {}) %layer3_0_conv2 : [#users=1] = call_module[target=layer3.0.conv2](args = (%layer3_0_relu,), kwargs = {}) %layer3_0_bn2 : [#users=1] = call_module[target=layer3.0.bn2](args = (%layer3_0_conv2,), kwargs = {}) %layer3_0_relu_1 : [#users=1] = call_module[target=layer3.0.relu](args = (%layer3_0_bn2,), kwargs = {}) %layer3_0_conv3 : [#users=1] = call_module[target=layer3.0.conv3](args = (%layer3_0_relu_1,), kwargs = {}) %layer3_0_bn3 : [#users=1] = call_module[target=layer3.0.bn3](args = (%layer3_0_conv3,), kwargs = {}) %layer3_0_downsample_0 : [#users=1] = call_module[target=layer3.0.downsample.0](args = (%layer2_3_relu_2,), kwargs = {}) %layer3_0_downsample_1 : [#users=1] = call_module[target=layer3.0.downsample.1](args = (%layer3_0_downsample_0,), kwargs = {}) %add_7 : [#users=1] = call_function[target=operator.add](args = (%layer3_0_bn3, %layer3_0_downsample_1), kwargs = {}) %layer3_0_relu_2 : [#users=2] = call_module[target=layer3.0.relu](args = (%add_7,), kwargs = {}) %layer3_1_conv1 : [#users=1] = call_module[target=layer3.1.conv1](args = (%layer3_0_relu_2,), kwargs = {}) %layer3_1_bn1 : [#users=1] = call_module[target=layer3.1.bn1](args = (%layer3_1_conv1,), kwargs = {}) %layer3_1_relu : [#users=1] = call_module[target=layer3.1.relu](args = (%layer3_1_bn1,), kwargs = {}) %layer3_1_conv2 : [#users=1] = call_module[target=layer3.1.conv2](args = (%layer3_1_relu,), kwargs = {}) %layer3_1_bn2 : [#users=1] = call_module[target=layer3.1.bn2](args = (%layer3_1_conv2,), kwargs = {}) %layer3_1_relu_1 : [#users=1] = call_module[target=layer3.1.relu](args = (%layer3_1_bn2,), kwargs = {}) %layer3_1_conv3 : [#users=1] = call_module[target=layer3.1.conv3](args = (%layer3_1_relu_1,), kwargs = {}) %layer3_1_bn3 : [#users=1] = call_module[target=layer3.1.bn3](args = (%layer3_1_conv3,), kwargs = {}) %add_8 : [#users=1] = call_function[target=operator.add](args = (%layer3_1_bn3, %layer3_0_relu_2), kwargs = {}) %layer3_1_relu_2 : [#users=2] = call_module[target=layer3.1.relu](args = (%add_8,), kwargs = {}) %layer3_2_conv1 : [#users=1] = call_module[target=layer3.2.conv1](args = (%layer3_1_relu_2,), kwargs = {}) %layer3_2_bn1 : [#users=1] = call_module[target=layer3.2.bn1](args = (%layer3_2_conv1,), kwargs = {}) %layer3_2_relu : [#users=1] = call_module[target=layer3.2.relu](args = (%layer3_2_bn1,), kwargs = {}) %layer3_2_conv2 : [#users=1] = call_module[target=layer3.2.conv2](args = (%layer3_2_relu,), kwargs = {}) %layer3_2_bn2 : [#users=1] = call_module[target=layer3.2.bn2](args = (%layer3_2_conv2,), kwargs = {}) %layer3_2_relu_1 : [#users=1] = call_module[target=layer3.2.relu](args = (%layer3_2_bn2,), kwargs = {}) %layer3_2_conv3 : [#users=1] = call_module[target=layer3.2.conv3](args = (%layer3_2_relu_1,), kwargs = {}) %layer3_2_bn3 : [#users=1] = call_module[target=layer3.2.bn3](args = (%layer3_2_conv3,), kwargs = {}) %add_9 : [#users=1] = call_function[target=operator.add](args = (%layer3_2_bn3, %layer3_1_relu_2), kwargs = {}) %layer3_2_relu_2 : [#users=2] = call_module[target=layer3.2.relu](args = (%add_9,), kwargs = {}) %layer3_3_conv1 : [#users=1] = call_module[target=layer3.3.conv1](args = (%layer3_2_relu_2,), kwargs = {}) %layer3_3_bn1 : [#users=1] = call_module[target=layer3.3.bn1](args = (%layer3_3_conv1,), kwargs = {}) %layer3_3_relu : [#users=1] = call_module[target=layer3.3.relu](args = (%layer3_3_bn1,), kwargs = {}) %layer3_3_conv2 : [#users=1] = call_module[target=layer3.3.conv2](args = (%layer3_3_relu,), kwargs = {}) %layer3_3_bn2 : [#users=1] = call_module[target=layer3.3.bn2](args = (%layer3_3_conv2,), kwargs = {}) %layer3_3_relu_1 : [#users=1] = call_module[target=layer3.3.relu](args = (%layer3_3_bn2,), kwargs = {}) %layer3_3_conv3 : [#users=1] = call_module[target=layer3.3.conv3](args = (%layer3_3_relu_1,), kwargs = {}) %layer3_3_bn3 : [#users=1] = call_module[target=layer3.3.bn3](args = (%layer3_3_conv3,), kwargs = {}) %add_10 : [#users=1] = call_function[target=operator.add](args = (%layer3_3_bn3, %layer3_2_relu_2), kwargs = {}) %layer3_3_relu_2 : [#users=2] = call_module[target=layer3.3.relu](args = (%add_10,), kwargs = {}) %layer3_4_conv1 : [#users=1] = call_module[target=layer3.4.conv1](args = (%layer3_3_relu_2,), kwargs = {}) %layer3_4_bn1 : [#users=1] = call_module[target=layer3.4.bn1](args = (%layer3_4_conv1,), kwargs = {}) %layer3_4_relu : [#users=1] = call_module[target=layer3.4.relu](args = (%layer3_4_bn1,), kwargs = {}) %layer3_4_conv2 : [#users=1] = call_module[target=layer3.4.conv2](args = (%layer3_4_relu,), kwargs = {}) %layer3_4_bn2 : [#users=1] = call_module[target=layer3.4.bn2](args = (%layer3_4_conv2,), kwargs = {}) %layer3_4_relu_1 : [#users=1] = call_module[target=layer3.4.relu](args = (%layer3_4_bn2,), kwargs = {}) %layer3_4_conv3 : [#users=1] = call_module[target=layer3.4.conv3](args = (%layer3_4_relu_1,), kwargs = {}) %layer3_4_bn3 : [#users=1] = call_module[target=layer3.4.bn3](args = (%layer3_4_conv3,), kwargs = {}) %add_11 : [#users=1] = call_function[target=operator.add](args = (%layer3_4_bn3, %layer3_3_relu_2), kwargs = {}) %layer3_4_relu_2 : [#users=2] = call_module[target=layer3.4.relu](args = (%add_11,), kwargs = {}) %layer3_5_conv1 : [#users=1] = call_module[target=layer3.5.conv1](args = (%layer3_4_relu_2,), kwargs = {}) %layer3_5_bn1 : [#users=1] = call_module[target=layer3.5.bn1](args = (%layer3_5_conv1,), kwargs = {}) %layer3_5_relu : [#users=1] = call_module[target=layer3.5.relu](args = (%layer3_5_bn1,), kwargs = {}) %layer3_5_conv2 : [#users=1] = call_module[target=layer3.5.conv2](args = (%layer3_5_relu,), kwargs = {}) %layer3_5_bn2 : [#users=1] = call_module[target=layer3.5.bn2](args = (%layer3_5_conv2,), kwargs = {}) %layer3_5_relu_1 : [#users=1] = call_module[target=layer3.5.relu](args = (%layer3_5_bn2,), kwargs = {}) %layer3_5_conv3 : [#users=1] = call_module[target=layer3.5.conv3](args = (%layer3_5_relu_1,), kwargs = {}) %layer3_5_bn3 : [#users=1] = call_module[target=layer3.5.bn3](args = (%layer3_5_conv3,), kwargs = {}) %add_12 : [#users=1] = call_function[target=operator.add](args = (%layer3_5_bn3, %layer3_4_relu_2), kwargs = {}) %layer3_5_relu_2 : [#users=2] = call_module[target=layer3.5.relu](args = (%add_12,), kwargs = {}) %layer4_0_conv1 : [#users=1] = call_module[target=layer4.0.conv1](args = (%layer3_5_relu_2,), kwargs = {}) %layer4_0_bn1 : [#users=1] = call_module[target=layer4.0.bn1](args = (%layer4_0_conv1,), kwargs = {}) %layer4_0_relu : [#users=1] = call_module[target=layer4.0.relu](args = (%layer4_0_bn1,), kwargs = {}) %layer4_0_conv2 : [#users=1] = call_module[target=layer4.0.conv2](args = (%layer4_0_relu,), kwargs = {}) %layer4_0_bn2 : [#users=1] = call_module[target=layer4.0.bn2](args = (%layer4_0_conv2,), kwargs = {}) %layer4_0_relu_1 : [#users=1] = call_module[target=layer4.0.relu](args = (%layer4_0_bn2,), kwargs = {}) %layer4_0_conv3 : [#users=1] = call_module[target=layer4.0.conv3](args = (%layer4_0_relu_1,), kwargs = {}) %layer4_0_bn3 : [#users=1] = call_module[target=layer4.0.bn3](args = (%layer4_0_conv3,), kwargs = {}) %layer4_0_downsample_0 : [#users=1] = call_module[target=layer4.0.downsample.0](args = (%layer3_5_relu_2,), kwargs = {}) %layer4_0_downsample_1 : [#users=1] = call_module[target=layer4.0.downsample.1](args = (%layer4_0_downsample_0,), kwargs = {}) %add_13 : [#users=1] = call_function[target=operator.add](args = (%layer4_0_bn3, %layer4_0_downsample_1), kwargs = {}) %layer4_0_relu_2 : [#users=2] = call_module[target=layer4.0.relu](args = (%add_13,), kwargs = {}) %layer4_1_conv1 : [#users=1] = call_module[target=layer4.1.conv1](args = (%layer4_0_relu_2,), kwargs = {}) %layer4_1_bn1 : [#users=1] = call_module[target=layer4.1.bn1](args = (%layer4_1_conv1,), kwargs = {}) %layer4_1_relu : [#users=1] = call_module[target=layer4.1.relu](args = (%layer4_1_bn1,), kwargs = {}) %layer4_1_conv2 : [#users=1] = call_module[target=layer4.1.conv2](args = (%layer4_1_relu,), kwargs = {}) %layer4_1_bn2 : [#users=1] = call_module[target=layer4.1.bn2](args = (%layer4_1_conv2,), kwargs = {}) %layer4_1_relu_1 : [#users=1] = call_module[target=layer4.1.relu](args = (%layer4_1_bn2,), kwargs = {}) %layer4_1_conv3 : [#users=1] = call_module[target=layer4.1.conv3](args = (%layer4_1_relu_1,), kwargs = {}) %layer4_1_bn3 : [#users=1] = call_module[target=layer4.1.bn3](args = (%layer4_1_conv3,), kwargs = {}) %add_14 : [#users=1] = call_function[target=operator.add](args = (%layer4_1_bn3, %layer4_0_relu_2), kwargs = {}) %layer4_1_relu_2 : [#users=2] = call_module[target=layer4.1.relu](args = (%add_14,), kwargs = {}) %layer4_2_conv1 : [#users=1] = call_module[target=layer4.2.conv1](args = (%layer4_1_relu_2,), kwargs = {}) %layer4_2_bn1 : [#users=1] = call_module[target=layer4.2.bn1](args = (%layer4_2_conv1,), kwargs = {}) %layer4_2_relu : [#users=1] = call_module[target=layer4.2.relu](args = (%layer4_2_bn1,), kwargs = {}) %layer4_2_conv2 : [#users=1] = call_module[target=layer4.2.conv2](args = (%layer4_2_relu,), kwargs = {}) %layer4_2_bn2 : [#users=1] = call_module[target=layer4.2.bn2](args = (%layer4_2_conv2,), kwargs = {}) %layer4_2_relu_1 : [#users=1] = call_module[target=layer4.2.relu](args = (%layer4_2_bn2,), kwargs = {}) %layer4_2_conv3 : [#users=1] = call_module[target=layer4.2.conv3](args = (%layer4_2_relu_1,), kwargs = {}) %layer4_2_bn3 : [#users=1] = call_module[target=layer4.2.bn3](args = (%layer4_2_conv3,), kwargs = {}) %add_15 : [#users=1] = call_function[target=operator.add](args = (%layer4_2_bn3, %layer4_1_relu_2), kwargs = {}) %layer4_2_relu_2 : [#users=1] = call_module[target=layer4.2.relu](args = (%add_15,), kwargs = {}) %avgpool : [#users=1] = call_module[target=avgpool](args = (%layer4_2_relu_2,), kwargs = {}) %flatten : [#users=1] = call_function[target=torch.flatten](args = (%avgpool, 1), kwargs = {}) %fc : [#users=1] = call_module[target=fc](args = (%flatten,), kwargs = {}) return fc [print_raw_fx_graph] Print the intermediate representation (IR) with Torch.FX in a table format `print_tabular` relies on the library `tabulate`, which could not be found on this machine. Run `pip install tabulate` to install the library. --------------------------------------------------------------------------- AttributeError Traceback (most recent call last) File ~/.local/lib/python3.8/site-packages/apex/contrib/sparsity/asp.py:224, in ASP.compute_sparse_masks(cls) 223 try: --> 224 offline_permutation_fx_graph, success_in_build_offline_permutation_graph = Permutation.build_offline_permutation_graph(cls.__model.module, dump_fx_graph=cls.__save_permutation_graph, save_dumped_fx_graph=os.path.join(cls.__permutation_output_dir, 'model_offline_permutation_graph.json')) 225 print("\n[compute_sparse_masks] build offline permutation graph on distributed model.") File ~/.local/lib/python3.8/site-packages/torch/nn/modules/module.py:1185, in Module.__getattr__(self, name) 1184 return modules[name] -> 1185 raise AttributeError("'{}' object has no attribute '{}'".format( 1186 type(self).__name__, name)) AttributeError: 'ResNet' object has no attribute 'module' During handling of the above exception, another exception occurred: UnboundLocalError Traceback (most recent call last) Cell In[7], line 1 ----> 1 ASP.prune_trained_model(model, optimizer) File ~/.local/lib/python3.8/site-packages/apex/contrib/sparsity/asp.py:303, in ASP.prune_trained_model(cls, model, optimizer) 301 cls.init_model_for_pruning(model, mask_calculator="m4n2_1d", verbosity=2, whitelist=[torch.nn.Linear, torch.nn.Conv2d], allow_recompute_mask=False) 302 cls.init_optimizer_for_pruning(optimizer) --> 303 cls.compute_sparse_masks() File ~/.local/lib/python3.8/site-packages/apex/contrib/sparsity/asp.py:227, in ASP.compute_sparse_masks(cls) 225 print("\n[compute_sparse_masks] build offline permutation graph on distributed model.") 226 except AttributeError: --> 227 offline_permutation_fx_graph, success_in_build_offline_permutation_graph = Permutation.build_offline_permutation_graph(cls.__model, dump_fx_graph=cls.__save_permutation_graph, save_dumped_fx_graph=os.path.join(cls.__permutation_output_dir, 'model_offline_permutation_graph.json')) 228 print("\n[compute_sparse_masks] build offline permutation graph on none-distributed model.") 229 duration_build_offline_permutation_graph = time.perf_counter() - start_time_build_offline_permutation_graph File ~/.local/lib/python3.8/site-packages/apex/contrib/sparsity/permutation_lib.py:241, in Permutation.build_offline_permutation_graph(cls, model, dump_fx_graph, save_dumped_fx_graph) 239 extract_output_dir=os.path.split(save_dumped_fx_graph)[0] 240 cls.__permutation_output_dir = extract_output_dir --> 241 fx_graph, success_in_build_fx_graph = cls.build_fx_graph(model, dump_fx_graph=dump_fx_graph, save_dumped_fx_graph=save_dumped_fx_graph) 242 if success_in_build_fx_graph: 243 fx_graph_after_find_real_parents = cls.find_real_parents(fx_graph) File ~/.local/lib/python3.8/site-packages/apex/contrib/sparsity/permutation_lib.py:836, in Permutation.build_fx_graph(cls, model, dump_fx_graph, save_dumped_fx_graph) 833 module_name_group_conv_dict[name] = 'None' 834 continue --> 836 graph_module = cls.print_raw_fx_graph(model, print_tabular=True) 838 # keep track of children and parents for each layer (could be call_module or call_function) 839 print("\n[build_fx_graph] Print the children and parents relationship for each layer") File ~/.local/lib/python3.8/site-packages/apex/contrib/sparsity/permutation_lib.py:910, in Permutation.print_raw_fx_graph(cls, model, print_tabular, generate_python_code) 908 print("\n[print_raw_fx_graph] Print the intermediate representation (IR) with Torch.FX in a table format") 909 try: --> 910 symbolic_traced.graph.print_tabular() 911 except AttributeError: # to avoid the AttributeError: 'Graph' object has no attribute 'print_tabular' 912 print("[print_raw_fx_graph][Warning] \'print_tabular\' function is not supported in current Torch version. Skip!") File ~/.local/lib/python3.8/site-packages/torch/fx/graph.py:1088, in Graph.print_tabular(self) 1083 print("`print_tabular` relies on the library `tabulate`, " 1084 "which could not be found on this machine. Run `pip " 1085 "install tabulate` to install the library.") 1086 node_specs = [[n.op, n.name, n.target, n.args, n.kwargs] 1087 for n in self.nodes] -> 1088 print(tabulate(node_specs, 1089 headers=['opcode', 'name', 'target', 'args', 'kwargs'])) UnboundLocalError: local variable 'tabulate' referenced before assignment