def run_alex_prune_compare_soft(dataset_params): multi_history = MultiHistory() exec_param = ExecParams(n_pretrain_epoch=3, n_epoch_retrain=1, n_epoch_total=15, pruner=TaylorExpansionFilterPruner) exec_param_no_prune = ExecParams(n_pretrain_epoch=0, n_epoch_retrain=0, n_epoch_total=15, pruner=TaylorExpansionFilterPruner) exec_name = "Alexnet 0%" h, s = exec_alexnet(exec_name, PruningParams(max_percent_per_iteration=0.0, prune_ratio=None), exec_params=exec_param_no_prune, dataset_params=dataset_params) multi_history.append_history(exec_name, h) exec_name = "Alexnet 10%" h, s = exec_alexnet(exec_name, PruningParams(max_percent_per_iteration=0.01, prune_ratio=0.1), exec_params=exec_param, dataset_params=dataset_params) multi_history.append_history(exec_name, h) exec_name = "Alexnet 30%" h, s = exec_alexnet(exec_name, PruningParams(max_percent_per_iteration=0.03, prune_ratio=0.3), exec_params=exec_param, dataset_params=dataset_params) multi_history.append_history(exec_name, h) exec_name = "Alexnet 50%" h, s = exec_alexnet(exec_name, PruningParams(max_percent_per_iteration=0.05, prune_ratio=0.5), exec_params=exec_param, dataset_params=dataset_params) multi_history.append_history(exec_name, h) exec_name = "Alexnet 75%" h, s = exec_alexnet(exec_name, PruningParams(max_percent_per_iteration=0.075, prune_ratio=0.75), exec_params=exec_param, dataset_params=dataset_params) multi_history.append_history(exec_name, h) save_obj(multi_history, "history_alex_soft") multi_history.display_single_key( History.VAL_ACC_KEY, title="Comparing AlexNet by Level of Pruning")
def run_fast_validation(dataset_params): multi_history = MultiHistory() exec_param = ExecParams(n_pretrain_epoch=1, n_epoch_retrain=1, n_epoch_total=3, pruner=ActivationMeanFilterPruner) exec_name = "Alexnet test" h, s = exec_alexnet(exec_name, PruningParams(max_percent_per_iteration=0.2, prune_ratio=0.2), exec_params=exec_param, dataset_params=dataset_params) multi_history.append_history(exec_name, h) multi_history.display_single_key(History.VAL_ACC_KEY, title="TEST_RUN")
def run_compare_pruning(dataset_params, retrain, total, split_ratio=1.0): debug_params = DebugHelper(only_test_end=True) pruning_param_no_prune = PruningParams(max_percent_per_iteration=0.0, prune_ratio=0.0) exec_param = ExecParams(n_pretrain_epoch=0, n_epoch_retrain=retrain, n_epoch_total=total, batch_size=64, pruner=CompleteTaylorExpansionFilterPruner) exec_param_large = ExecParams(n_pretrain_epoch=0, n_epoch_retrain=retrain, n_epoch_total=total, batch_size=32, pruner=CompleteTaylorExpansionFilterPruner) all_scores = {} exec_name = "AlexNet-degrad" score = [] exec_param.best_result_save_path = "../saved/AlexNet-base/Pruned.pth".format( exec_name) exec_param.retrain_if_weight_loaded = True for i in range(0, 11): desired_pruning = (5.0 * i) / 100.0 if desired_pruning != 0.0: pruning_param_no_prune.max_percent_per_iteration = desired_pruning * split_ratio pruning_param_no_prune.prune_ratio = desired_pruning else: pruning_param_no_prune.max_percent_per_iteration = None pruning_param_no_prune.prune_ratio = None h, s = exec_alexnet(exec_name, pruning_params=pruning_param_no_prune, exec_params=exec_param, dataset_params=dataset_params, debug_params=debug_params) score.append(s) all_scores["AlexNet"] = score display_graphs(score, all_scores, "AlexNet") exec_name = "ResNet18-degrad" score = [] exec_param.best_result_save_path = "../saved/ResNet18-base/Pruned.pth".format( exec_name) exec_param.retrain_if_weight_loaded = True for i in range(0, 11): desired_pruning = (5.0 * i) / 100.0 if desired_pruning != 0.0: pruning_param_no_prune.max_percent_per_iteration = desired_pruning * split_ratio pruning_param_no_prune.prune_ratio = desired_pruning else: pruning_param_no_prune.max_percent_per_iteration = None pruning_param_no_prune.prune_ratio = None h, s = exec_resnet18(exec_name, pruning_params=pruning_param_no_prune, exec_params=exec_param, dataset_params=dataset_params, debug_params=debug_params) score.append(s) all_scores["ResNet18"] = score display_graphs(score, all_scores, "ResNet18") # exec_name = "ResNet34-degrad" # score = [] # exec_param.best_result_save_path = "../saved/ResNet34-base/Pruned.pth".format(exec_name) # exec_param.retrain_if_weight_loaded = True # for i in range(0, 11): # desired_pruning = (5.0 * i)/100.0 # if desired_pruning != 0.0: # pruning_param_no_prune.max_percent_per_iteration = desired_pruning * split_ratio # pruning_param_no_prune.prune_ratio = desired_pruning # else: # pruning_param_no_prune.max_percent_per_iteration = None # pruning_param_no_prune.prune_ratio = None # h, s = exec_resnet34(exec_name, pruning_params=pruning_param_no_prune, exec_params=exec_param, # dataset_params=dataset_params, debug_params=debug_params) # score.append(s) # # all_scores["ResNet34"] = score # display_graphs(score, all_scores, "ResNet34") # # exec_name = "ResNet50-degrad" # score = [] # exec_param.best_result_save_path = "../saved/ResNet50-base/Pruned.pth".format(exec_name) # exec_param.retrain_if_weight_loaded = True # for i in range(0, 11): # desired_pruning = (5.0 * i)/100.0 # if desired_pruning != 0.0: # pruning_param_no_prune.max_percent_per_iteration = desired_pruning * split_ratio # pruning_param_no_prune.prune_ratio = desired_pruning # else: # pruning_param_no_prune.max_percent_per_iteration = None # pruning_param_no_prune.prune_ratio = None # h, s = exec_resnet50(exec_name, pruning_params=pruning_param_no_prune, exec_params=exec_param, # dataset_params=dataset_params, debug_params=debug_params) # score.append(s) # # all_scores["ResNet50"] = score # display_graphs(score, all_scores, "ResNet50") exec_name = "VGG16-degrad" score = [] exec_param.best_result_save_path = "../saved/VGG16-base/Pruned.pth".format( exec_name) exec_param.retrain_if_weight_loaded = True for i in range(0, 11): desired_pruning = (5.0 * i) / 100.0 if desired_pruning != 0.0: pruning_param_no_prune.max_percent_per_iteration = desired_pruning * split_ratio pruning_param_no_prune.prune_ratio = desired_pruning else: pruning_param_no_prune.max_percent_per_iteration = None pruning_param_no_prune.prune_ratio = None h, s = exec_dense_net(exec_name, pruning_params=pruning_param_no_prune, exec_params=exec_param_large, dataset_params=dataset_params, debug_params=debug_params) score.append(s) all_scores["VGG16"] = score display_graphs(score, all_scores, "VGG16") exec_name = "DenseNet121-degrad" score = [] exec_param.best_result_save_path = "../saved/DenseNet121-base/Pruned.pth".format( exec_name) exec_param.retrain_if_weight_loaded = True for i in range(0, 11): desired_pruning = (5.0 * i) / 100.0 if desired_pruning != 0.0: pruning_param_no_prune.max_percent_per_iteration = desired_pruning * split_ratio pruning_param_no_prune.prune_ratio = desired_pruning else: pruning_param_no_prune.max_percent_per_iteration = None pruning_param_no_prune.prune_ratio = None h, s = exec_dense_net(exec_name, pruning_params=pruning_param_no_prune, exec_params=exec_param_large, dataset_params=dataset_params, debug_params=debug_params) score.append(s) all_scores["DenseNet121"] = score display_graphs(score, all_scores, "DenseNet121")
def run_strategy_prune_compare(dataset_params): exec_param_no_prune_large = ExecParams(n_pretrain_epoch=0, n_epoch_retrain=0, n_epoch_total=15, batch_size=16, pruner=TaylorExpansionFilterPruner) exec_param_no_prune_medium = ExecParams(n_pretrain_epoch=0, n_epoch_retrain=0, n_epoch_total=15, batch_size=32, pruner=TaylorExpansionFilterPruner) exec_param_w_prune_large = ExecParams(n_pretrain_epoch=5, n_epoch_retrain=1, n_epoch_total=15, batch_size=16, pruner=TaylorExpansionFilterPruner) exec_param_w_prune_medium = ExecParams(n_pretrain_epoch=5, n_epoch_retrain=1, n_epoch_total=15, batch_size=32, pruner=TaylorExpansionFilterPruner) exec_param_no_prune = ExecParams(n_pretrain_epoch=0, n_epoch_retrain=0, n_epoch_total=15, batch_size=64, pruner=TaylorExpansionFilterPruner) exec_param_w_prune = ExecParams(n_pretrain_epoch=5, n_epoch_retrain=1, n_epoch_total=15, batch_size=64, pruner=TaylorExpansionFilterPruner) exec_param_w_prune_squeeze = ExecParams(n_pretrain_epoch=5, n_epoch_retrain=1, n_epoch_total=15, batch_size=64, pruner=TaylorExpansionFilterPruner, force_forward_view=True) pruning_param_no_prune = PruningParams(max_percent_per_iteration=0.0, prune_ratio=None) pruning_param_w_prune = PruningParams(max_percent_per_iteration=0.05, prune_ratio=0.3) multi_history = MultiHistory() exec_name = "SqueezeNet-0" h, s = exec_squeeze_net(exec_name, pruning_params=pruning_param_no_prune, exec_params=exec_param_no_prune, dataset_params=dataset_params) multi_history.append_history(exec_name, h) exec_name = "SqueezeNet-30" h, s = exec_squeeze_net(exec_name, pruning_params=pruning_param_w_prune, exec_params=exec_param_w_prune_squeeze, dataset_params=dataset_params) multi_history.append_history(exec_name, h) multi_history.display_single_key(History.VAL_ACC_KEY, title="Comparing Models at 30% Pruning") exec_name = "densenet 121-0" h, s = exec_dense_net(exec_name, pruning_params=pruning_param_no_prune, exec_params=exec_param_no_prune_large, dataset_params=dataset_params) multi_history.append_history(exec_name, h) exec_name = "densenet 121-30" h, s = exec_dense_net(exec_name, pruning_params=pruning_param_w_prune, exec_params=exec_param_w_prune_large, dataset_params=dataset_params) multi_history.append_history(exec_name, h) multi_history.display_single_key(History.VAL_ACC_KEY, title="Comparing Models at 30% Pruning") exec_name = "Resnet 50-0" h, s = exec_resnet50(exec_name, pruning_params=pruning_param_no_prune, exec_params=exec_param_no_prune_medium, dataset_params=dataset_params, out_count=10) multi_history.append_history(exec_name, h) exec_name = "Resnet 50-30" h, s = exec_resnet50(exec_name, pruning_params=pruning_param_w_prune, exec_params=exec_param_w_prune_medium, dataset_params=dataset_params, out_count=10) multi_history.append_history(exec_name, h) multi_history.display_single_key(History.VAL_ACC_KEY, title="Comparing Models at 30% Pruning") #create a second history since I am not sure it will look nice in one graph multi_history2 = MultiHistory() exec_name = "vgg16 0" h, s = exec_vgg16(exec_name, pruning_params=pruning_param_no_prune, exec_params=exec_param_no_prune_medium, dataset_params=dataset_params) multi_history.append_history(exec_name, h) multi_history2.append_history(exec_name, h) exec_name = "vgg16 30" h, s = exec_vgg16(exec_name, pruning_params=pruning_param_w_prune, exec_params=exec_param_w_prune_medium, dataset_params=dataset_params) multi_history.append_history(exec_name, h) multi_history2.append_history(exec_name, h) exec_name = "Resnet 18-0" h, s = exec_resnet18(exec_name, pruning_params=pruning_param_no_prune, exec_params=exec_param_no_prune, dataset_params=dataset_params, out_count=10) multi_history.append_history(exec_name, h) multi_history2.append_history(exec_name, h) exec_name = "Resnet 18-30" h, s = exec_resnet18(exec_name, pruning_params=pruning_param_w_prune, exec_params=exec_param_w_prune, dataset_params=dataset_params, out_count=10) multi_history.append_history(exec_name, h) multi_history2.append_history(exec_name, h) exec_name = "Alexnet 0" h, s = exec_alexnet(exec_name, pruning_params=pruning_param_no_prune, exec_params=exec_param_no_prune, dataset_params=dataset_params) multi_history.append_history(exec_name, h) multi_history2.append_history(exec_name, h) exec_name = "Alexnet 30" h, s = exec_alexnet(exec_name, pruning_params=pruning_param_w_prune, exec_params=exec_param_w_prune, dataset_params=dataset_params) multi_history.append_history(exec_name, h) multi_history2.append_history(exec_name, h) save_obj(multi_history, "history_compare") multi_history.display_single_key(History.VAL_ACC_KEY, title="Comparing Models at 30% Pruning") multi_history2.display_single_key(History.VAL_ACC_KEY, title="Comparing Models at 30% Pruning")
def train_models(dataset_params): pruning_param_no_prune = PruningParams(max_percent_per_iteration=0.0, prune_ratio=None) exec_param_no_prune = ExecParams(n_pretrain_epoch=0, n_epoch_retrain=0, n_epoch_total=15, batch_size=32, pruner=None) multi_history = MultiHistory() exec_name = "AlexNet-base" h, s = exec_alexnet(exec_name, pruning_params=pruning_param_no_prune, exec_params=exec_param_no_prune, dataset_params=dataset_params) multi_history.append_history(exec_name, h) multi_history.display_single_key(History.VAL_ACC_KEY, title="Models training without pruning") exec_name = "ResNet18-base" h, s = exec_resnet18(exec_name, pruning_params=pruning_param_no_prune, exec_params=exec_param_no_prune, dataset_params=dataset_params) multi_history.append_history(exec_name, h) multi_history.display_single_key(History.VAL_ACC_KEY, title="Models training without pruning") exec_name = "ResNet34-base" h, s = exec_resnet34(exec_name, pruning_params=pruning_param_no_prune, exec_params=exec_param_no_prune, dataset_params=dataset_params) multi_history.append_history(exec_name, h) multi_history.display_single_key(History.VAL_ACC_KEY, title="Models training without pruning") exec_name = "ResNet50-base" h, s = exec_resnet50(exec_name, pruning_params=pruning_param_no_prune, exec_params=exec_param_no_prune, dataset_params=dataset_params) multi_history.append_history(exec_name, h) multi_history.display_single_key(History.VAL_ACC_KEY, title="Models training without pruning") exec_name = "Squeeze-base" h, s = exec_squeeze_net(exec_name, pruning_params=pruning_param_no_prune, exec_params=exec_param_no_prune, dataset_params=dataset_params) multi_history.append_history(exec_name, h) multi_history.display_single_key(History.VAL_ACC_KEY, title="Models training without pruning") exec_name = "DenseNet121-base" h, s = exec_dense_net(exec_name, pruning_params=pruning_param_no_prune, exec_params=exec_param_no_prune, dataset_params=dataset_params) multi_history.append_history(exec_name, h) multi_history.display_single_key(History.VAL_ACC_KEY, title="Models training without pruning") exec_name = "VGG16-base" h, s = exec_vgg16(exec_name, pruning_params=pruning_param_no_prune, exec_params=exec_param_no_prune, dataset_params=dataset_params) multi_history.append_history(exec_name, h) multi_history.display_single_key(History.VAL_ACC_KEY, title="Models training without pruning")