TVM_VTA
フィックスターズさんの”実践的!FPGA開発セミナー vol.10”の”Versatile Tensor Accelerator (VTA)
実機検証”をやってみる1
フィックスターズさんの”実践的!FPGA開発セミナー vol.10”の”TVM/VTA
の仕組みから学ぶ (第二回) : Versatile Tensor Accelerator
(VTA)実機検証”をやってみたいと思っていた。フィックスターズさんから”実践的!FPGA開発セミナー
vol.10”の資料をいただいたので、やってみることにした。フィックスターズ様、資料を公開していただいてありがとうございました。
フィックスターズさんの”実践
的!FPGA開発セミナー vol.10”の”Versatile Tensor Accelerator (VTA) 実機検証”をやってみる2
前回は、PYNQ-Z1 用の PYNQ 2.5
のイメージをダウンロードして、MicroSD カードに書いた。今回は、twm を git clone して、設定をし、cmake して make
した。
フィックスターズさんの”実践
的!FPGA開発セミナー vol.10”の”Versatile Tensor Accelerator (VTA) 実機検証”をやってみる3
前回は、、twm を git clone して、設定をし、cmake して make
した。今回は、Ubuntu 18.04 LTS のパソコンで、twm を git clone
し、スクリプトを実行して、ビットストリームを生成した。裏では Vitis HLS と Vivado でハードウェアの合成を行ったようだ。
フィックスターズさんの”実践
的!FPGA開発セミナー vol.10”の”Versatile Tensor Accelerator (VTA) 実機検証”をやってみる4
前回は、Ubuntu 18.04 LTS のパソコンで、twm を git clone
し、スクリプトを実行して、ビットストリームを生成した。裏では Vitis HLS と Vivado
でハードウェアの合成を行ったようだ。今回は、前回生成された Vivado HLS 2020.1 と Vivado 2020.1
のプロジェクトを見た。
フィックスターズさんの”実践
的!FPGA開発セミナー vol.10”の”Versatile Tensor Accelerator (VTA) 実機検証”をやってみる5
前回は、生成された Vivado HLS 2020.1 と Vivado 2020.1
のプロジェクトを見た。今回は、vta_config.json の "LOG_BATCH" を 0 から 1
に変更して、ビットストリームを生成した。次に、vta_config.json の "LOG_BATCH" を 2
に変更して、ビットストリームを生成した。
フィックスターズさんの”実践
的!FPGA開発セミナー vol.10”の”Versatile Tensor Accelerator (VTA) 実機検証”をやってみる6
前回は、vta_config.json の "LOG_BATCH" を 0 から 1
に変更して、ビットストリームを生成する。次に、vta_config.json の "LOG_BATCH" を 2
に変更して、ビットストリームを生成した。今回は、RPCを使ってVTA上でニューラルネットワークを実行しようとしたが、libtvm.so と
libtvm_runtime.so が無いと言われてエラーだった。
Ubuntu 18.04
LTS に特定バージョンの cmake (Version 3.12.0)をインストールした
TVM のコンパイルをしようとしたのだが、cmake のバージョンが 3.12
以降が必要だというメッセージが出てしまった。apt でインストールできる cmake のバージョンは 3.10 ということで、cmake
3.12.0 を”Linuxに特定のバージョンのcmakeをインストール”を参考にインストールした。
フィックスターズさんの”実践
的!FPGA開発セミナー vol.10”の”Versatile Tensor Accelerator (VTA) 実機検証”をやってみる7
ホスト・パソコンの cmake のバージョンが合わないので、”Ubuntu 18.04
LTS に特定バージョンの cmake (Version 3.12.0)をインストールした”で cmake 3.12.0 をインストールしてある。
前回は、RPCを使ってVTA上でニューラルネットワークを実行しようとしたが、libtvm.so と libtvm_runtime.so
が無いと言われてエラーだった。今回は、ホスト・パソコンで tvm を cmake から make
してから、RPCを使ってVTA上でニューラルネットワークを実行しようとした。しかし、test_benchmark_gemm.py を実行したら
target.build.llvm is not enabled でエラーになった。
フィックスターズさんの”実践
的!FPGA開発セミナー vol.10”の”Versatile Tensor Accelerator (VTA) 実機検証”をやってみる8
前回は、ホスト・パソコンで tvm を cmake から make
してから、RPCを使ってVTA上でニューラルネットワークを実行しようとした。しかし、test_benchmark_gemm.py を実行したら
target.build.llvm is not enabled でエラーになった。今回は、tvm の Docs > Installing
TVM > Install from Source に従って LLVM を使用して、cmake, make を行った。
フィックスターズさんの”実践
的!FPGA開発セミナー vol.10”の”Versatile Tensor Accelerator (VTA) 実機検証”をやってみる9
前回は、tvm の Docs > Installing TVM >
Install from Source に従って LLVM を使用して、cmake, make
を行って成功した。今回は、再度、RPCを使ってVTA上でニューラルネットワークを実行しようとしたのだが、PYNQ-Z1 側で”libvta.so:
undefined symbol: VTARuntimeShutdown”になってしまった。
フィックスターズさんの”実践
的!FPGA開発セミナー vol.10”の”Versatile Tensor Accelerator (VTA) 実機検証”をやってみる10
前回は、再度、RPCを使ってVTA上でニューラルネットワークを実行しようとしたのだが、
PYNQ-Z1 側で”libvta.so: undefined symbol:
VTARuntimeShutdown”になってしまった。今回は、tvm/build/CMakeFiles/vta.dir/link.txt
を実行してから、再々度、RPCを使ってVTA上でニューラルネットワークを実行することができた。成功だ。
フィックスターズさんの”実践
的!FPGA開発セミナー vol.10”の”Versatile Tensor Accelerator (VTA) 実機検証”をやってみる11
前回は、tvm/build/CMakeFiles/vta.dir/link.txt
を実行してから、再々度、RPCを使ってVTA上でニューラルネットワークを実行することができた。成功だ。ここで動作したのは、
pynq_1x16_i8w8a32_15_15_18_17 だった。今回は、pynq_2x16_i8w8a32_15_15_18_17
をやってみようと思う。
フィックスターズさんの”実践
的!FPGA開発セミナー vol.10”の”Versatile Tensor Accelerator (VTA) 実機検証”をやってみる12
前回は、pynq_2x16_i8w8a32_15_15_18_17
を実行した所、紆余曲折はあったが成功した。今回は、pynq_4x16_i8w8a32_15_15_18_17 をやってみよう。
TVM/VTA
チュートリアルをやってみる1
今までは、tvm/vta/tests/python/integration
/test_benchmark_gemm.py をやってきたが、その他にも 4 個のチュートリアルがあるので、それをやってみよう。
最初に、test_benchmark_topi_conv2d.py をやってみる。
TVM/VTA
チュートリアルをやってみる2
前回は、test_benchmark_topi_conv2d.py
をやってみたが、コアダンプになってしまった。今回は、test_benchmark_topi_conv2d_transpose.py
を実行したが、”TVMError: Socket SockChannel::Send Error:No route to host”で終了した。
TVM/VTA
チュートリアルをやってみる3
前回は、test_benchmark_topi_conv2d_transpose.py
を実行したが、”TVMError: Socket SockChannel::Send Error:No route to
host”で終了した。今回は、PYNQ-Z1 とホスト・パソコンの
tvm/3rdparty/vta-hw/config/vta_config.json の "LOG_BATCH" を 0
にして、もう一度、test_benchmark_topi_conv2d.py をやって見たが、やはりコアダンプしてしまった。しかし、
"LOG_BATCH" が 2 のときよりもだいぶ先まで実行できた。
TVM/VTA
チュートリアルをやってみる4
前回は、PYNQ-Z1 とホスト・パソコンの
tvm/3rdparty/vta-hw/config/vta_config.json の "LOG_BATCH" を 0
にして、もう一度、test_benchmark_topi_conv2d.py をやって見たが、やはりコアダンプしてしまった。しかし、
"LOG_BATCH" が 2 のときよりもだいぶ先まで実行できた。今回は、PYNQ-Z1 とホスト・パソコンの
tvm/3rdparty/vta-hw/config/vta_config.json の "LOG_BATCH" を 0
にして、もう一度、test_benchmark_topi_conv2d_transpose.py をやってみた。今度は、完走できて、最大 GPOS
値は 49.0348 GOPS だった。
TVM/VTA
チュートリアルをやってみる5
前回は、PYNQ-Z1 とホスト・パソコンの
tvm/3rdparty/vta-hw/config/vta_config.json の "LOG_BATCH" を 0
にして、もう一度、test_benchmark_topi_conv2d_transpose.py をやってみた。今度は、完走できて、最大 GPOS
値は 49.0348 GOPS だった。今回は、PYNQ-Z1 とホスト・パソコンの
tvm/3rdparty/vta-hw/config/vta_config.json の "LOG_BATCH" が 0
で、test_benchmark_topi_dense.py を実行した所、成功したようだ。
TVM/VTA
チュートリアルをやってみる6
前回は、PYNQ-Z1 とホスト・パソコンの
tvm/3rdparty/vta-hw/config/vta_config.json の "LOG_BATCH" が 0
で、test_benchmark_topi_dense.py を実行した所、成功したようだ。今回は、最後の
test_benchmark_topi_group_conv2d.py をやってみて成功した。最大 GOPS 値は 21.7359 GOPS
だった。
”Get Started
with VTA”をやってみる1
今まで TVM/VTA のチュートリアルをやってきて、TVM/VTA
が動作するというのは分かったが、時分の課題を解決するためにどうやって TVM/VTA
を使うのか?ということは分かっていない。そのため、TVM/VTA の使用方法が記述されている”Get Started with
VTA”をやってみようと思う。
”Get Started with VTA”は今までやってきたのと同じ方法で実行することができた。
”Get Started with VTA”はベクトル加算を行うチュートリアルで、手順が丁寧に解説されている。
”Get Started
with VTA”をやってみる2
”Get Started with
VTA”をやってみようということで、前回は、初めから、”ベクトル加算”までの項目を行った。今回は、”結果をキャスト”から”TVM
コンパイル”までの項目を行った。
”Get Started
with VTA”をやってみる3
前回は、”結果をキャスト”から”TVM
コンパイル”までの項目を行った。今回は、”モジュールの保存”から
”Simple Matrix
Multiply”をやってみる1
次
の TVM/VTA のチュートリアルの”Simple Matrix Multiply”をやってみることにした。
”Simple Matrix
Multiply”をやってみる2
前回は、”Simple Matrix Multiply”からダウンロードした
matrix_multiply.py をそのまま実行して成功した。今回は、”Simple Matrix Multiply”に沿って 1 つ 1
つコードを見ながら実行してみよう。
”Simple Matrix
Multiply”をやってみる3
前回は、”Simple Matrix Multiply”に沿って 1 つ 1
つコードを見ながら実行することにした。”RPC 設定”から”データのレイアウト”までを書いた。今回は、”行列の乗算”から”テンソル化”までを書いた。
”Simple Matrix
Multiply”をやってみる4
”Simple Matrix
Multiply”のベクトル乗算をやってみるということで、前回は、”Simple Matrix
Multiply”の”行列の乗算”から”テンソル化”までを書いた。今回は、”TVMコンパイル”、”関数の実行”、”正しさの検証”を行った。
”Deploy
Pretrained Vision Model from MxNet on VTA”をやってみる1
”Deploy Pretrained Vision Model from MxNet
on VTA”をやってみよう。今回は、普通に”Deploy Pretrained Vision Model from MxNet on VTA”
からダウンロードした deploy_classification.py を実行してみよう。
”Deploy
Pretrained Vision Model from MxNet on VTA”をやってみる2
前回は、”Deploy Pretrained Vision Model from
MxNet on VTA” からダウンロードした deploy_classification.py を実行して成功した。今回は、”Deploy
Pretrained Vision Model from MxNet on VTA” の記述を DeepL
翻訳で訳して、動作を少しは確認してみよう。
”Deploy
Pretrained Vision Detection Model from Darknet on VTA”をやってみる1
”Deploy Pretrained Vision Detection Model
from Darknet on VTA”は Darknet YoloV3-tiny
推論をVTAアクセラレータデザイン上で実行し、画像検出タスクを実行する。
”Deploy
Pretrained Vision Detection Model from Darknet on VTA”をやってみる2
”Deploy Pretrained Vision Detection Model
from Darknet on VTA”をやってみようということで、Darknet YoloV3-tiny
推論をVTAアクセラレータデザイン上で実行し、画像検出タスクを実行することができた。今回は、”Deploy Pretrained Vision
Detection Model from Darknet on VTA”の記述を DeepL 翻訳で訳して、動作を少しは確認してみよう。