pytorch_nndct.OFAPruner - 2.5 简体中文

Vitis AI 优化器用户指南 (UG1333)

Document ID
UG1333
Release Date
2022-06-15
Version
2.5 简体中文

此 API 具有下列方法:

  • __init__(model, inputs)
    model
    要进行剪枝的 torch.nn.Module 对象。
    inputs
    单个 torch 或 torch 列表。张量用作为模型推断的输入。输入无需采用真实数据。可以采用随机生成的张量,与真实数据的形状和数据类型相同即可。
  • ofa_model(expand_ratio, channel_divisble=8, excludes=None, auto_add_excludes=True, save_search_space=False)
    expand_ratio
    每个卷积层的剪枝率列表。对于 OFA 模型内的每个卷积层,可在输出通道中使用任意剪枝率。

    此列表中的最大值和最小值分别表示该模型的最大和最小压缩率。其它值则表示要最优化的子网络。默认剪枝率设为 [0.5, 0.75, 0.1]。

    channel_divisible
    可除以给定除数的通道数量。
    excludes
    要从剪枝中排除的模块列表。
    auto_add_excludes
    布尔值。如果该值为 True,那么此方法会自动识别第一个卷积和最后一个卷积,然后将其置于排除列表中。如果该值为 False,则不执行上述操作。默认值为 True。
    save_search_space
    布尔值。如果该值为 True,则将模型的搜索空间保存为“searchspace.config”文件。客户可以检查每个层的搜索空间。默认值为 False。
  • sample_subnet(model, mode)

    返回子网络及其给定模式的配置。该子网络可以使用来自 OFA 模型及其设置的部分权重执行前向/后向传递进程。

    model
    OFA 模型。
    mode
    下列值之一:['random', 'max', 'min']。
  • reset_bn_running_stats_for_calibration(model)

    复位 Batch Normalization 层的运行统计数据。

    model
    OFA 模型。
  • run_evolutionary_search(model, calibration_fn, calib_args, eval_fn, eval_args, evaluation_metric, min_or_max_metric, min_flops, max_flops, flops_step=10, parent_popu_size=16, iteration=10, mutate_size=8, mutate_prob=0.2, crossover_size=4)

    运行进化搜索,查找最佳子网络,该子网络的每秒浮点运算次数 (FLOPs) 在给定范围内。

    model
    OFA 模型。
    calibration_fn
    BatchNormalization 校准函数。所有子网络共享 OFA 模型中的权重,但在训练 OFA 模型时不存储批量归一化统计数据(平均值和方差)。训练完成后,必须使用训练数据为每个采样的子网络重新校准批量归一化统计数据以供评估。
    calib_args
    calibration_fn 的实参。
    eval_fn
    用于对模型进行评估的函数。
    eval_args
    eval_fn 的实参。
    evaluation_metric
    用于记录结果的 evaluation_metric 字符串。
    min_or_max_metric
    下列值之一:['max', 'min']。要记录在进化搜索中的评估指标的最大值或最小值。例如,如果评估指标准确度为 top1,则在进化搜索中记录每次迭代的最大值。但如果评估指标为平均平方误差 (mse) 或平均绝对误差 (mae),则记录最小值。
    min_flops
    已搜索的子网络的最小每秒浮点运算次数。
    max_flops
    已搜索的子网络的最大每秒浮点运算次数。
    flops_step
    搜索每秒浮点运算次数的步骤。将间隔 [min_flops, max flops] 除以 flops_step 以对其进行分段。对于每个段,搜索已达成每秒浮点运算次数与准确度的最佳平衡的子网络。
    parent_popu_size
    对于所含每秒浮点运算次数在给定范围内的随机子网络,此项表示对其进行采样时的初始父填充数。该数值越大,搜索时间越长,并且将获取最佳结果的可能性越高。
    iteration
    搜索的迭代次数或者整个算法的周期数。
    mutate_size
    突变的大小。子网络设置的每个值都被替换为候选值列表的另一个值(概率为 mutate_prob)。
    mutate_prob
    突变的概率。
    crossover_size
    交叉的大小。对两项子网络设置进行采样并对这两项子网络设置中的任意值进行随机交换。
  • save_subnet_config(setting_config, file_name)

    利用 JSON 保存动态/静态子网络设置。

    setting_config
    动态子网络设置的配置。
    file_name
    用于保存子网络设置的文件路径。
  • load_subnet_config(file_name)
    file_name
    用于加载子网络设置的文件路径。