Vitis™ AI ver2.0がリリース!新たな機能などを紹介!

-
皆さまこんにちは!TEPPE-AIです!
今回の記事は、検証ではなくVitis™ AI ver2.0に関する紹介です!
ver2.0が2022/1/20にリリースされました。前回のver1.4リリースから約半年ほどの期間が空いていますので、ようやくリリースされた待望のアップデートです!
(ver1.4.1はマイナーアップデートなので今回は考慮せず)
※Vitis™ AI Update履歴
ver1.4:2021/7/27
ver1.4.1:2021/10/27
ver2.0:2022/1/20
新機能含め大きくパワーアップしていますので、自分視点で気になった箇所や、新機能を紹介できればと思います。
この記事の最後に、次回の記事についても記載していますので、是非最後まで見ていってくださいね!
それでは参りましょう!
目次
Vitis™ AI ver2.0
2022年1月20日に、Vitis™ AI ver2.0がリリースされました。
※Release Notesについては、 こちら からご参照ください
出典:GitHub Xilinx/Vitis-AI
https://github.com/Xilinx/Vitis-AI/blob/master/docs/learn/release_notes.md
(参照 2022/2/17)
冒頭で述べた通り、今回は大きなアップデートとなり、全てを紹介するとかなりのボリュームになるため、以下3点に絞って紹介します。
- ・対応フレームワーク及びAI Model Zooボリュームアップ!
- ・新機能「WeGo」
- ・「GraphRunner」を用いたカスタムレイヤー実装方法
対応フレーム及びAI Model Zooボリュームアップ!
ver2.0になったことで、フレームワークやAI Model Zooもグレードアップしました。
Vitis™ AI対応フレームワークとして、「TensorFlow(v1, v2)」「PyTorch」「Caffe」があります。
その中でも「TensorFlow-v2」「PyTorch」がアップデートされ、対応バージョンが拡張されました !
Vitis™ AI | ver 1.4 | ver 2.0 |
---|---|---|
TensorFlow-v2 | 2.3 | 2.3~2.6 |
PyTorch | 1.1~1.7.1 | 1.1~1.9 |
上記表の通り、各々上位Verを含め幅広くサポートしており、開発の敷居がさらに下がった印象を受けました。
個人的には、幅広くサポートしている点がとてもありがたいなと思います。
フレームワークに併せて、AI Model Zooのバリエーションも増えました。
AI Model Zooとは、ザイリンクスが提供している量子化/最適化を施したAIモデルになります。
再学習なモデルも含まれており、ライセンスもApache License ver2.0に対応しています。
使用条件については、Vitis™ AI GitHubの License をご確認ください。
以下、Release Notesの抜粋になります
出典:GitHub Xilinx/Vitis-AI
https://github.com/Xilinx/Vitis-AI/blob/master/docs/learn/release_notes.md
(参照 2022/2/21)
モデル数ももちろんですが、黄色ハイライトにもある通り、分野ごとに様々なAIモデルが採用されている点もバリエーション豊富でいいですよね~
アンカーフリーのYOLOシリーズであるYOLO-Xや、MOTの「FairMOT」など、いろいろと試してみたいモデルが多く魅力的ですが、中でも気になるのが、「OFA models」です。
OFAとは、「Once For All」と呼ばれる、モデルの軽量化を行う手法のことで、とても興味関心がわく技術になっています。
こちらの記事がとても参考になります。
【論文解説】Once for all: Train one network and specialize it for efficient deployment
Release Notesの通り、AI Optimizerにも適用されたようです。 ※現時点でPyTorchのみ対応
出典:GitHub Xilinx/Vitis-AI
https://github.com/Xilinx/Vitis-AI/blob/master/docs/learn/release_notes.md
(参照 2022/2/21)
AI Optimizerは有償となるため、試してみるには敷居が高いです。。
ですが、なんとAI Model Zoo内にOFAが適用されたAIモデルがあり、それが先述した「OFA Models」になります!
※黄色でハイライトした箇所が該当箇所です
※画像クリックで大きな画像が表示されます。
出典:GitHub Xilinx/Vitis-AI
https://github.com/Xilinx/Vitis-AI/tree/master/models/AI-Model-Zoo/model-list
(参照 2022/2/21)
AI Model Zooにあるとなれば、使用するAIモデルのアーキテクチャは限られるものの、無償で性能を試せるので、これはかなり嬉しい対応ですね。
例えば、resnet50については、非OFA verもAI Model Zooにあるので、OFAの有無でどの程度差分があるのか、今後見てみようかなと思います!
新機能「WeGo」
Ver2.0リリースに伴い、新たに追加された機能がWeGo(whole Graph Optimizer)です。
なんと、対応フレームワークで記述された推論コードをそのまま評価ボード上で用いて実行できるとのことです!
現状、評価ボードはVersal、フレームワークはTensorFlow-v1のみとなっていますが、今後の拡張に期待です!
FPGAへのAI実装となると、専用APIを用いて推論コードを作成しなければいけなかったのですが
例えば、PCの検証で用いた推論コードをそのままFPGAで用いることができるので、かなりの工数削減が見込めますね。
「GraphRunner」を用いたカスタムレイヤー実装方法
最後に1つ、個人的にはとても嬉しいアップデートであるカスタムレイヤー実装方法です。
「GraphRunner」は、分割されたDPUサブグラフをCPU OP含め一括化し、複雑なAIモデルのFPGAへの実装を容易にさせる手法です。
こちらはver1.4にて新機能としてリリースされていました。
出典:Xilinx Introduction on Graph_runner with Vitis AI 1.4
https://japan.xilinx.com/developer/articles/introduction-on-graphrunner-with-vitis-ai-1-4.html
(参照 2022/2/21)
カスタムレイヤー実装について、量子化までを行う サンプル は存在していたのですが、 その先のデバイス実装まではなく、苦戦していた最中でした。
実装方法として、ユーザーガイドによると、以下の工程で実装できるとのことです。
- ① 学習済みAIモデル量子化(FP32 → INT8) ←カスタムレイヤー定義
- ② 量子化済みAIモデルコンパイル
- ③ カスタムレイヤーコンパイル
- ④ 「GraphRunner」を用いて実装
出典:Xilinx Vitis AI User Guide UG1414(v2.0)
https://docs.amd.com/viewer/book-attachment/v4ELzeJO__uKTKWDgGwcHA/UTfYATiB81N6iQVW6xVd~Q
(参照 2022/2/21)
対応フレームワークとしては、「TensorFlow-v2」「PyTorch」です。
③、④が当方未知の領域です。
サンプルも存在しているので、ユーザーガイドと併せて作業を進めていき技術習得を試みたいと思います。
ネタバレになってしまいますが、次回の記事ではこのカスタムレイヤー実装方法について、サンプルを参考にしながら、実際にSo-Oneで実行するまでの検証を紹介したいと考えています。
最後に
最後までお読みいただきありがとうございました~
今回はVitis™ AI ver2.0のアップデート情報をお伝えしました。
紹介した内容以外にも様々なアップデート情報があるので、是非皆さまでも見てみてください!
次回は、先ほどの通りカスタムレイヤーを含むAIモデルの実装方法を、サンプルをもとに So-One上で実行するまでの検証を紹介できればと思います!
それではまた!TEPPE-AIでした~