AI Engine 与Vitis-AI的区别
引言
赛灵思也推出了自己的FPGA加速芯片-ACAP。ACAP是一款基于7nm工艺,集成了通用处理器(PS),FPGA(PL),math engine以及network-on-chip的革命性芯片。特别是新增的ME结构,是一个类似于GPU的多核并发计算单元,可以大大提高数据处理能力。同时ME支持软件语言C,C++,这有利于扩大FPGA的使用用户,同时方便了设计开发。
在AMD-Xilinx的FPGA和ACAP(自适应计算加速平台)生态系统中,为了满足不同层次的AI加速需求,开发了多种软件工具和平台。其中,AI Engine Training和Vitis-AI是两个经常被提及但容易混淆的概念。虽然它们都与AI开发相关,但在目标、功能和适用范围上有显著差异。本文将详细解析这两个概念及其区别。
图源 Lauren的FPGA
AI Engine Training (Vitis)
定义与目的
AI Engine Training是Vitis统一软件平台中的一部分,专门面向Xilinx Versal ACAP(自适应计算加速平台)中的AI Engine进行编程和优化。AI Engine是Versal架构中的一种专用处理单元,由VLIW(超长指令字)SIMD(单指令多数据)向量处理器阵列组成,设计用于高性能的数据密集型计算。
硬件目标
AI Engine Training专注于针对Versal ACAP中的AI Engine硬件单元进行优化。这些AI Engine是专为加速AI任务和其他数据密集型计算而设计的硬件模块,具有高度并行的计算能力。
主要功能与特点
- 提供用于设计、模拟和调试AI引擎应用的专用工具
- 支持高性能数据流应用的开发,特别是在信号处理和机器学习推理方面
- 允许开发者对AI引擎进行精细编程,以最大化数据处理效率
- 优化代码以充分利用AI Engine的向量处理能力
开发流程与编程方式
AI Engine Training通常使用C/C++编程语言,通过Vitis工具链编译为AI Engine指令。开发流程包括:
- 使用C/C++编写针对AI Engine的代码
- 使用专用编译器将代码编译为AI Engine可执行代码
- 使用模拟器进行验证
- 性能分析和优化
- 部署到Versal ACAP设备
应用场景
AI Engine Training特别适合需要高计算效率的实时应用,如:
- 5G通信系统中的信号处理
- 雷达和声纳系统
- 高性能实时视频处理
- 实时机器学习推理
- 高频交易系统
Vitis-AI
定义与目的
Vitis-AI是Xilinx的综合AI开发平台,为深度学习推理提供优化的开发体验。它是一个完整的端到端工具链,支持主流深度学习框架的模型压缩、优化和部署。
硬件支持范围
与AI Engine Training不同,Vitis-AI支持更广泛的硬件平台,包括:
- 传统FPGA设备
- Zynq SoC和MPSoC设备
- Versal ACAP系列设备
主要功能与特点
- 提供完整的AI模型开发、优化和部署流程
- 支持TensorFlow、PyTorch等主流深度学习框架
- 包含模型量化、剪枝等优化技术
- 提供预优化的深度学习IP库(DPU, Deep Learning Processing Unit)
- 简化AI模型在Xilinx硬件上的部署过程
工具组件与开发流程
Vitis-AI包含多个关键组件:
- Vitis-AI Quantizer:用于模型量化,减少精度以提高性能
- Vitis-AI Optimizer:优化模型结构和参数
- Vitis-AI Compiler:将模型编译为硬件可执行格式
- Vitis-AI Runtime:在目标硬件上运行优化后的模型
- 模型库:预训练和优化的模型集合
典型开发流程包括:
- 使用标准框架(如TensorFlow)训练模型
- 使用Vitis-AI工具进行模型量化和优化
- 编译模型以适配目标硬件
- 在目标硬件上部署和运行
应用场景
Vitis-AI适用于各种AI推理应用,包括:
- 图像分类与识别
- 对象检测
- 语义分割
- 自然语言处理
- 推荐系统
- 异常检测
两者的主要区别
特性 | AI Engine Training (Vitis) | Vitis-AI |
---|---|---|
目标和范围 | 专注于Versal ACAP中AI Engine的编程和优化 | 更广泛的AI开发平台,覆盖从模型训练、优化到部署的全流程 |
硬件适用性 | 仅适用于含有AI Engine的Versal ACAP设备 | 支持更广泛的硬件平台,包括传统FPGA、Zynq系列和Versal ACAP |
应用领域 | 多用于需要高计算效率的信号处理和实时AI推理 | 主要用于各类深度学习模型的优化和部署 |
开发流程 | 通常使用C/C++编程,通过Vitis工具链编译为AI Engine指令 | 支持从高级框架(如TensorFlow)开始,通过量化、编译等步骤生成优化的部署模型 |
工具关系 | 可以视为Vitis统一软件平台的一个组成部分 | 是一个独立的AI专用开发平台,虽然也可以与Vitis平台集成 |
功能重叠与互补
虽然AI Engine Training和Vitis-AI有明确的区别,但它们在某些方面存在功能重叠,并且可以互补使用:
- 预处理和后处理:两个平台都可能用于数据预处理或推理结果的后处理
- 混合部署:复杂系统可能同时使用两个平台,例如使用Vitis-AI部署主要的深度学习模型,而使用AI Engine Training优化特定的信号处理部分
- 开发流程集成:在实际项目中,可能先使用Vitis-AI进行模型开发和初步优化,然后针对特定部分使用AI Engine Training进行深度优化
结论
AI Engine Training和Vitis-AI是AMD-Xilinx AI开发生态系统中的两个重要组成部分,它们各自针对不同的需求和应用场景:
- AI Engine Training专注于为Versal ACAP中的AI Engine编程和优化,主要用于高性能信号处理和实时计算场景,通常使用C/C++进行开发。
- Vitis-AI是一个更全面的AI开发平台,支持各种Xilinx硬件,专注于深度学习模型的优化和部署,支持主流深度学习框架。
选择使用哪个平台应基于具体项目需求、目标硬件平台和开发团队的专业知识。对于需要极致性能的实时信号处理应用,AI Engine Training可能是更好的选择;而对于标准深度学习应用的快速部署,Vitis-AI则更为适合。在某些复杂项目中,两者的结合使用可能会带来最佳效果。