AIMET API 文档(8)


1.1.12 多 GPU指南

目前AIMET支持在数据并行模式下使用Multi-GPU的模型,具有以下功能

  • 跨层均衡(CLE)

  • 量化感知训练 (QAT)

用户可以使用 torch API 创建数据并行模型。例如:

# Instantiate a torch model and pass it to DataParallel API
model = torch.nn.DataParallel(model)

具有 CLE 的多 GPU

对于将多 GPU 与 CLE 结合使用,您可以将上面创建的模型直接传递给 CLE API 跨层均衡 API

注意:CLE 实际上并未使用多 GPU,它仅作为工作流程的一部分集成,因此用户无需将模型在单 GPU 和多 GPU 之间来回移动。

具有量化感知训练的多 GPU

对于使用带有 QAT 的多 GPU,

  1. 使用火炬模型创建 QuantizationSim,如量化模拟 API中所示 (不在 DataParallel 模式下)

  2. 执行计算编码(注意:不要使用将模型移至多 GPU 并返回的前向函数)

  3. 将 sim 模型移至 DataParallel:

    sim.model = torch.nn.DataParallel(sim.model)
    
    
  4. 执行评估/培训

1.2 PyTorch 模型压缩 API

1.2.1 介绍

AIMET 支持 PyTorch 模型的以下模型压缩技术

  • 重量奇异值分解

  • 空间奇异值分解

  • 通道修剪

要了解有关这些模型压缩技术的更多信息,请参阅模型压缩用户指南

对于所有这些压缩技术,您可以通过两种模式调用 AIMET API

  • 自动模式
    在自动模式下,AIMET将确定压缩每一层的最佳方式
    该模型给出了总体目标压缩比。贪婪压缩比选择算法用于为每层选择合适的压缩比。

  • 手动模式
    在手动模式下,用户可以传入所需的每层压缩比
    到艾美特。AIMET 将为每一层应用指定的压缩技术,以实现每层所需的压缩比。建议用户从自动模式开始,然后根据需要使用手动模式调整每层压缩比。

1.2.2 用于压缩的顶级 API

class aimet_torch.compress.ModelCompressor

AIMET 模型压缩器:使用各种方案启用模型压缩

static ModelCompressor.compress_model(模型、eval_callback、eval_iterations、input_shape、compress_scheme、cost_metric、参数、trainer=None、visualization_url=None )

使用指定参数压缩给定模型

参数

  • model ( Module) – 要压缩的模型

  • eval_callback ( Callable[[ Any, Optional[ int], bool], float]) – 评估回调。预期签名是评估(模型,迭代,use_cuda)。预计返回准确度指标。

  • eval_iterations – 运行评估的迭代

  • trainer – 训练类:包含可调用的 train_model,它采用模型、正在微调的层和可选参数 train_flag 作为参数 None:如果在创建最终压缩模型时不需要每层微调

  • input_shape ( Tuple) – 模型输入张量的形状

  • compress_scheme ( CompressionScheme) – 压缩方案。请参阅枚举以获取允许的值

  • cost_metric ( CostMetric) – 用于压缩比的成本度量(mac 或内存)

  • 参数( Union[ SpatialSvdParameters, WeightSvdParameters, ChannelPruningParameters]) – 特定于给定压缩方案的压缩参数

  • Visualization_url – 用户需要输入可视化出现位置的 url

返回类型
Tuple[ Module, CompressionStats]

退货
压缩模型的元组和压缩统计信息

1.2.3 贪心选择参数

类 aimet_common.defs.GreedySelectionParameters(target_comp_ratio、num_comp_ratio_candidates=10、use_monotonic_fit=False、saving_eval_scores_dict=None )

贪婪压缩比选择算法的配置参数

变量

  • target_comp_ratio – 目标压缩比。表示为 0 到 1 之间的值。压缩比是压缩模型的成本与原始模型的成本之比。

  • num_comp_ratio_candidates – 每层分析的比较比候选数。更多候选数允许更细粒度的压缩分布,但代价是分析期间增加的运行时间。默认值=10。值应大于 1。

  • use_monotonic_fit – 如果为 True,则 eval 字典中的 eval 分数将适合单调递增函数。如果您看到某些层的 eval dict 分数不是单调递增的,这非常有用。默认情况下,此选项设置为 False。

  • save_eval_scores_dict – 上次运行中保存的 eval_scores 字典 pickle 文件的路径。例如,当尝试不同的目标压缩比时,这对于加速实验很有用。aimet 会自动将 eval_scores 字典 pickle 文件保存在相对于当前路径的 ./data 目录中。使用此选项时,num_comp_ratio_candidates 参数将被忽略。

1.2.4 TAR 选择参数

类 aimet_torch.defs.TarRankSelectionParameters(num_rank_indices )

TAR压缩比选择算法的配置参数

变量
num_rank_indices – 用于比率选择的排名索引数。

1.2.5 空间 SVD 配置

类 aimet_torch.defs.SpatialSvdParameters(模式,参数,多重性=1 )

空间 svd 压缩的配置参数

参数

  • 模式( Mode) – 自动模式或手动模式

  • params ( Union[ ManualModeParams, AutoModeParams]) – 所选模式的参数

  • 多重性– 排名/输入通道将被舍入的多重性。默认值:1

类 AutoModeParams(greedy_select_params,modules_to_ignore=None )

自动模式压缩的配置参数

参数

  • gredy_select_params ( GreedySelectionParameters) – 贪婪比较比选择算法的参数

  • module_to_ignore ( Optional[ List[ Module]]) – 要忽略的模块列表(None 表示没有要忽略的内容)

类 ManualModeParams(模块压缩比对列表)

手动模式空间 svd 压缩的配置参数

参数

  • list_of_module_comp_ratio_pairs ( List[ ModuleCompRatioPair]) – (模块、比较比率)对列表

类 Mode

模式枚举

  • auto= 2
    自动模式

  • manual= 1
    手动模式

1.2.6 权重 SVD 配置

类 aimet_torch.defs.ChannelPruningParameters(data_loader,num_reconstruction_samples,allow_custom_downsample_ops,模式,参数,多重性=1 )

权重 svd 压缩的配置参数

参数

  • 模式( Mode) – 自动模式或手动模式

  • params ( Union[ ManualModeParams, AutoModeParams]) – 所选模式的参数

  • 多重性– 排名/输入通道将被舍入的多重性。默认值:1

类 AutoModeParams(rank_select_scheme、select_params、modules_to_ignore=无)

自动模式压缩的配置参数

参数

  • rank_select_scheme ( RankSelectScheme) – 支持两个选项 gredy 和 tar

  • select_params ( Union[ GreedySelectionParameters, TarRankSelectionParameters]) – 贪婪/TAR 比较选择算法的参数

  • module_to_ignore ( Optional[ List[ Module]]) – 要忽略的模块列表(None 表示没有要忽略的内容)

类 ManualModeParams(模块压缩比对列表)

手动模式权重 svd 压缩的配置参数

参数

  • list_of_module_comp_ratio_pairs ( List[ ModuleCompRatioPair]) – (模块、比较比率)对列表

类 Mode

模式枚举

  • auto= 2
    自动模式

  • manual= 1
    手动模式

1.2.7 通道修剪配置

通道修剪压缩的配置参数

类 AutoModeParams(greedy_select_params,modules_to_ignore=None )

自动模式压缩的配置参数

参数

  • gredy_select_params ( GreedySelectionParameters) – 贪婪比较比选择算法的参数

  • module_to_ignore ( Optional[ List[ Module]]) – 要忽略的模块列表(None 表示没有要忽略的内容)

类 ManualModeParams(模块压缩比对列表)

手动模式通道修剪压缩的配置参数

参数

  • list_of_module_comp_ratio_pairs ( List[ ModuleCompRatioPair]) – (模块、比较比率)对列表

类 Mode

模式枚举

  • auto= 2
    自动模式:AIMET 计算每层的最佳比较率

  • manual= 1
    手动模式:用户指定每层的比例

猜你喜欢

转载自blog.csdn.net/weixin_38498942/article/details/133308711