0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Vitis AI优化器用户指南

Xilinx赛灵思官微 来源:Xilinx赛灵思官微 2023-03-29 09:29 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

Vitis AIAMD 开发套件,用于在 AMD 硬件平台上进行 AI 推断。机器学习中的推断是计算密集型流程,需要大量存储器带宽以满足各种应用的低时延和高吞吐量要求。

Vitis AI Optimizer(优化器)支持对神经网络模型进行最优化。当前,Vitis AI 优化器仅包含一项工具,称为“pruner”(剪枝器)。Vitis AI 优化器用于移除神经网络中的冗余内核,从而减少推断的总体计算成本。由 Vitis AI 剪枝器所生成的剪枝后的模型随后由 Vitis AI 量化器进行量化,然后部署到 AMD FPGA、SoC 或 ACAP 器件。

c8fd2186-cdc5-11ed-bfe3-dac502259ad0.png

VAI优化器

本文档涵盖了以下设计进程:机器学习和数据研究——将机器学习模型从 PyTorch、TensorFlow 或其它热门框架导入 Vitis AI,然后对其有效性进行最优化和评估。本文档中适用于此设计进程的主题包括:

•第 2 章:剪枝

•第 3 章:处理 Vitis AI 优化器

由于版面有限,本文选取了剪枝章节中的部分内容进行分享。如果您希望获取完整版用户指南,请至文末扫描二维码下载完整版进行浏览。

剪枝

神经网络通常过度参数化,具有大量冗余。剪枝是消除冗余权重同时尽可能使准确度损失保持处于低位的进程。

c906333e-cdc5-11ed-bfe3-dac502259ad0.png

低精度剪枝和高精度剪枝

行业研究带来了多项有助于降低神经网络推断成本的技术。这些技术包括:

点击查看详细内容

c910fecc-cdc5-11ed-bfe3-dac502259ad0.png

c919ee74-cdc5-11ed-bfe3-dac502259ad0.png

c9289032-cdc5-11ed-bfe3-dac502259ad0.png

迭代剪枝与单步剪枝的对比

下表中显示了这两种方法的对比。

c952b11e-cdc5-11ed-bfe3-dac502259ad0.png

迭代剪枝

剪枝器旨在减少模型参数数量,同时尽可能降低准确度损失。这是通过迭代方式来完成的,如下图所示。剪枝导致准确度降低,重新训练可恢复准确度。剪枝随后重新训练即构成一次迭代。在剪枝的首次迭代中,输入模型是基线模型,并且已经过剪枝和精调。在后续迭代中,从先前迭代所获取的精调后的模型会变为新的基线。此进程通常会重复数次,直至获取期望的稀疏模型。迭代方法是必需的,因为在单次传递中无法在维持准确度的同时进行模型剪枝。如果一次迭代移除的参数过多,那么准确度损失可能过于剧烈,可能无法恢复。

利用迭代剪枝的进程,可以达到更高的剪枝率,同时模型性能不会出现显著损失。

c9675948-cdc5-11ed-bfe3-dac502259ad0.png

迭代剪枝

以下描述了迭代剪枝的 4 个主要阶段:

分析:对模型执行敏感度分析,判定最优剪枝策略。

剪枝:减少输入模型中的计算次数。

精调:重新训练已剪枝的模型以恢复准确度。

变换:生成含更低权重的密集模型。

c9730644-cdc5-11ed-bfe3-dac502259ad0.png

迭代剪枝工作流程

步骤1

分析原始基线模型。

步骤2

对模型进行剪枝。

步骤3

对剪枝后的模型进行精调。

步骤4

多次重复步骤 2 和 3,直至在准确度与稀疏度之间达成期望的平衡。

步骤5

将剪枝后的稀疏模型变换为最终密集加密的模型,以供在 Vitis AI 量化器中使用。

单步剪枝

单步剪枝会实现EagleEye1算法。它仅通过采用了一个简单而又高效的评估组件,就得以在不同的已剪枝模型及其对应精调准确度之间引入强大的正关联,这个组件名为自适应批量归一化。它使您无需实际进行模型精调,即可获取可能达成的准确度最高的子网络。简而言之,单步剪枝方法会搜索一群满足所需模型大小的子网络(即,生成的剪枝后模型),并选择其中最有潜力的子网络。随后,通过对所选子网络进行重新训练来恢复准确度。

剪枝步骤如下所示:
1 搜索满足所需剪枝率的子网络。
2 从一群具有评估组件的子网络中选择潜在网络。
3 对剪枝后的模型进行精调。

c98836cc-cdc5-11ed-bfe3-dac502259ad0.png

单步剪枝工作流程

注释:

1.Bailin Li et al., EagleEye: Fast Sub-net Evaluation for Efficient Neural Network Pruning, arXiv:2007.02491

剪枝方法的选择指南

Vitis AI 优化器中为 PyTorch 提供了 3 种剪枝方法。请参阅以下决策树以选择适合您的网络的方法。

c9933658-cdc5-11ed-bfe3-dac502259ad0.png

在PyTorch中选择剪枝方法的流程图

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 神经网络
    +关注

    关注

    42

    文章

    4842

    浏览量

    108184
  • 模型
    +关注

    关注

    1

    文章

    3819

    浏览量

    52272

原文标题:Vitis AI 优化器用户指南

文章出处:【微信号:赛灵思,微信公众号:Xilinx赛灵思官微】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Microchip TC1303B双输出稳压器用户指南详解

    Microchip TC1303B双输出稳压器用户指南详解 一、前言 在电子设备的设计中,电源管理至关重要。Microchip的TC1303B双输出稳压器为需要多电源电压的设备提供了高度集成
    的头像 发表于 04-08 18:00 1088次阅读

    如何使用AMD Vitis硬件在环功能运行Vitis子系统设计

    到目前为止,本文关于 AMD Versal AIE 验证和 AMD Vitis 新的验证功能的研究,所有内容都基于仿真完成。
    的头像 发表于 04-02 10:29 7209次阅读
    如何使用AMD <b class='flag-5'>Vitis</b>硬件在环功能运行<b class='flag-5'>Vitis</b>子系统设计

    AI端侧部署开发(SC171开发套件V2-FAS)

    AI端侧部署开发(SC171开发套件V2-FAS) 序列 课程名称 视频课程时长 视频课程链接 课件链接 工程源码 1 Fibo AI Stack模型转化指南 27分19秒 https
    发表于 02-11 11:44

    AI端侧部署开发(SC171开发套件V3)2026版

    AI端侧部署开发(SC171开发套件V3)2026版 序列 课程名称 视频课程时长 视频课程链接 课件链接 工程源码 1 Fibo AI Stack模型转化指南 27分19秒 https
    发表于 01-15 10:31

    基于Vitis Model Composer完成全流程AI Engine开发

    基于Vitis Model Composer进行AI Engine(AIE)开发,核心优势体现在AIE专属优化、开发流程简化、灵活的适配性、高效验证及量产适配等方面。
    的头像 发表于 12-31 11:20 6327次阅读
    基于<b class='flag-5'>Vitis</b> Model Composer完成全流程<b class='flag-5'>AI</b> Engine开发

    全新AMD Vitis统一软件平台2025.2版本发布

    AMD Vitis统一软件平台 2025.2 版现已推出,此版本为使用 AMD Versal AI Engine 的高性能 DSP 应用提供了更出色的设计环境,还增强了仿真功能以加快复杂设计。
    的头像 发表于 12-12 15:06 860次阅读

    如何在AMD Vitis Unified IDE中使用系统设备树

    您将在这篇博客中了解系统设备树 (SDT) 以及如何在 AMD Vitis Unified IDE 中使用 SDT 维护来自 XSA 的硬件元数据。本文还讲述了如何对 SDT 进行操作,以便在 Vitis Unified IDE 中实现更灵活的使用场景。
    的头像 发表于 11-18 11:13 3323次阅读
    如何在AMD <b class='flag-5'>Vitis</b> Unified IDE中使用系统设备树

    AMD Vitis AI 5.1测试版现已开放下载

    AMD Vitis AI 5.1全新发布——新增了对 AMD Versal AI Edge 系列神经网络处理单元( NPU )的支持。Vitis A
    的头像 发表于 11-08 09:24 1450次阅读

    AMD Vitis AI 5.1测试版发布

    AMD Vitis AI 5.1全新发布——新增了对 AMD Versal AI Edge 系列神经网络处理单元 (NPU) 的支持。Vitis A
    的头像 发表于 10-31 12:46 1000次阅读

    AI赋能6G与卫星通信:开启智能天网新时代

    的\"天网\"更加智能、可靠和高效。 AI驱动的网络优化:让6G网络\"聪明\"起来 想象一下,当城市中突然出现大型活动,如体育赛事或音乐节,6G网络如何应对激增的用户
    发表于 10-11 16:01

    从何处获取 CYBLE-416045-02 用户指南

    亲爱的支持团队 我们希望获得 CYBLE-416045-02 用户指南文档来测试TUV的RF证书,从哪里获得 CYBLE-416045-02 用户指南文档。 非常感谢。
    发表于 07-04 07:59

    全新AMD Vitis统一软件平台2025.1版本发布

    全新 AMD Vitis 统一软件平台 2025.1 版正式上线!此最新版本为使用 AMD Versal AI 引擎的高性能 DSP 应用提供了改进后的设计环境。
    的头像 发表于 06-24 11:44 1944次阅读

    使用AMD Vitis Unified IDE创建HLS组件

    这篇文章在开发者分享|AMD Vitis HLS 系列 1 - AMD Vivado IP 流程(Vitis 传统 IDE) 的基础上撰写,但使用的是 AMD Vitis Unified IDE,而不是之前传统版本的
    的头像 发表于 06-20 10:06 2555次阅读
    使用AMD <b class='flag-5'>Vitis</b> Unified IDE创建HLS组件

    如何使用AMD Vitis HLS创建HLS IP

    本文逐步演示了如何使用 AMD Vitis HLS 来创建一个 HLS IP,通过 AXI4 接口从存储器读取数据、执行简单的数学运算,然后将数据写回存储器。接着会在 AMD Vivado Design Suite 设计中使用此 HLS IP,并使用嵌入式 Vitis
    的头像 发表于 06-13 09:50 2252次阅读
    如何使用AMD <b class='flag-5'>Vitis</b> HLS创建HLS IP

    海思SD3403边缘计算AI数据训练概述

    AI数据训练:基于用户特定应用场景,用户采集照片或视频,通过AI数据训练工程师**(用户公司****员工)** ,进行特征标定后,将标定好的
    发表于 04-28 11:11