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 翻訳で訳して、動作を少しは確認してみよう。




inserted by FC2 system