Vitis を用いたアクセラレータの開発 (5) Vitis Library, Vitis AI とは?

前回までは、Vivado や PetaLinux を使用して Vitis Target Platform の作成、そして Acceleration Application の構築までの一連の流れを簡単にご紹介しました。今回は最終回となる、Vitis Library や Vitis AI Solution についてご紹介いたします。

Vitis Library

Vitis には Software の記述を FPGA に置き換えて高速化することが可能な Tool です。ですが、初めての方に FPGA 高速化専用の記述、所謂 HLS C を記述することは非常に大変です。FPGA についての知識、並列演算についてを考えなくとも XILINX 社が Open Source で誰でも使えるように Vitis Library として Github に公開しております。まず初めての方は、これらの Library を使って見ることをお勧めします。

Design Flow

Vitis Library の Design Flow は、通常の Acceleration Application の Flow と同じです。違いは、Acceleration の部分を User が記述するか、Vitis Library の関数を利用するかしないかの違いになります。Vitis Library 自体は HLS C で書かれており、Source Code も Github に公開されております。

Library の種類

Vitis Library には、FPGA で Acceleration 出来る関数を複数用意しております。Library には DSP や算術演算に始まり、画像処理、機械学習、金融、セキュリティなどがあります。 詳細は、以下の Github をご参照ください。

GitHub - Xilinx/Vitis_Libraries: Vitis Libraries
Vitis Libraries. Contribute to Xilinx/Vitis_Libraries development by creating an account on GitHub.

L3、L2、L1

Vitis Library API (L3)

Host Application から直接呼び出し可能な API として用意されています。Accelerator は 予め Compile して用意した状態なので、User はすぐに Acceleration Application の構築が可能です。

Vitis Library Kernels (L2)

Vitis 上で使えるように Acceleration Application に必要な Interface を備えた形で用意されています。FPGA で Acceleration 出来るようにすでに最適化されており Host Application から OpenCL を使用して呼び出す必要があり、Vitis Tools で Build する必要があります。

Vitis Library Primitives (L1)

algorithm を HLS C で最適化しただけの Source Code になっております。なので、Vitis HLS の Project 形式での提供なので、Vitis Acceleration Application で使用するための Interface が備わっていません。Vitis HLSで Build して、Vivado の IP Integrator などで Interface の接続を行う必要があります。

Vitis AI

最近は AI + FPGA が非常に身近な技術となってきました。XILINX 社では、深層学習の Model を FPGA で処理し高速に推論する方法を Vitis AI として Github で Open Source で公開しております。

Design Flow

Vitis AI の Design Flow ですが、通常の Acceleration Application の Flow とは少々ことなります。Vitis Platform に DPU を搭載することと、Vitis AI という Tool を別途使用する必要があります。

Vitis AI Tool Stack

Vitis AI の Tool Stack は、以下のような構成になっています。

また、Tool 自体は Docker で提供されるため、PC 環境さえあれば環境構築は非常に簡単です。Docker については、Tool Docker と Runtime Docker を用意しており、Tool Docker は、Vitis AI Tool Flow のために使用し、Runtime Docker は ARM Linux の Cross Compile 環境として使用します。詳細は以下の Github をご参照ください。

GitHub - Xilinx/Vitis-AI: Vitis AI is Xilinx’s development stack for AI inference on Xilinx hardware platforms, including both edge devices and Alveo cards.
Vitis AI is Xilinx’s development stack for AI inference on Xilinx hardware platforms, including both edge devices and Alveo cards. - GitHub - Xilinx/Vitis-AI: V...

DPU

DPU は、DeepLearning Processor Unit の略で、FPGA に実装可能な専用の Neural Network の演算専用 Processor となります。DPU は、AI Compiler で Compile した Binary を処理します。DPU の Binary は、Edge 側の場合、Zynq ARM 上の Linux から命令が送られます。命令は専用の Runtime を使用します。

AI Quantizer

通常、深層学習で用意する Neural Network は、Float 型 (浮動小数点32bit) です。この Tool は、Float 型の Neural NetworkをInteger 型 (固定小数点8bit) に変換 (量子化) します。これは、DPU の内部の演算器に対応させるためです。変換されたモデルは、以下のファイル名で出力されます。

  •  Caffe:deploy.prototxt/deploy.caffemodel
  •  TensorFlow:deploy_model.pb

AI Compiler

AI Quantizer で Integer 型 に変換した Neural Network は、AI Compiler を使用して DPU 専用の Instruction に変換します。出力形式は .elf になります。ARM CPU の Application 作成時に、この .elf と Link して ARM CPU と DPU の Hybrid Binary として生成します。

Model Zoo

XILINX 社では、Vitis AI に最適化した深層学習モデルを用意しています。Pruning 有り無し両方のモデルを提供しております。機械学習を取り入れた Application (例えば Face Detection など) を作りたいけど機械学習が初めての方に最適です。詳細は以下の Github をご参照ください。

https://github.com/Xilinx/Vitis-AI/tree/master/models/AI-Model-Zoo

Tool Flow

Vitis AI の Tool Flow は以下の4つの Step で実行します。

  1. Quantize the neural network model.
     AI Quantizer を使用して、NN を圧縮します。
  2. Compile the neural network model.
     AI Compiler を使用して、DPU 用の命令に Compile します。
  3. Program with Vitis AI programming interface.
     Runtime を使用して Application を構築します。
  4. Run and evaluate the deployed DPU application.
     実機上で動作および評価します。

また、Vitis AI では Tutorial を用意しているので、まずは Tutorial を試してみることをお勧めします。

GitHub - Xilinx/Vitis-AI-Tutorials
Contribute to Xilinx/Vitis-AI-Tutorials development by creating an account on GitHub.

以上が、Vitis Library および Vitis AI についての簡単な説明になります。これらの Solution を有効活用し、Application の高速化に役立てていただければ幸いです。

AVNET K.K. 仲見 倫

タイトルとURLをコピーしました