これからさらにAIの社会実装を進めていくには電力消費量や通信環境などの制限下でも安定的に稼働できるエッジAI技術のさらなる発展が不可欠だ。 そんなエッジAIに関する新しいアイデアや人材を発掘するべく開催されたのが「AIエッジコンテスト」だ。これまでの開催回数は計4回にのぼり、延べ約2000人が参加、5000件近くの応募が集まり、まさにエッジAIの人材のハブとなりつつある。 2020年7月1日〜12月31日に開催された第4回では、FPGAを用いたAIハードウェア開発を行い、「ハードウェア・ソフトウェアを含めたエッジコンピューティングを意識したハードウェアシステム開発」が課題に設定された。 課題で挙げられたのはFPGAを使った自動車走行画像認識だ。車両前方カメラ画像から、ピクセルレベルで物体に対応する領域を分割するアルゴリズム(セマンティックセグメンテーション)を作成し、ハードウェアアクセラレータなどの設計を行い、ターゲットのFPGAボードへのアルゴリズム実装を行う。 今回は全6回のシリーズを通してAIエッジコンテストの受賞者のインタビューをお届けしていく。 本記事ではシリーズの第3回として、経済産業省・NEDO主催 第4回AIエッジコンテスト(実装コンテスト②)においてアイデア賞を獲得した山下さんのインタビューの様子をお届けし、コンペティションでの勝ち筋や工夫点を明らかにする。

image2

▼動画はコチラ▼


Q.まずは簡単に自己紹介をお願いいたします。

ハードウェアエンジニアとして約40年、ビデオカメラに関する仕事をしています。アナログVTRがあった40年前のアナログ時代から仕事をはじめました。 その後、だんだんとデジタル化の流れが来て、アナログもデジタルも両方経験してきました。 現在はメーカーに勤めており、ASICのアナログIPの部分を設計しています。実際にRTLを書くこと自体は仕事でずっとやってきているのでかなり慣れていますが、新たなDNNという分野には色々とてこずりました。 ※ASIC(エーシック)…電子部品の種別の1つ。特定の用途に向けて複数機能の回路を1つにまとめた集積回路の総称 ※RTL…論理回路をハードウェア記述言語で記述する際の手法 FPGAは黎明期である20年前くらいからアナログシステムの開発に使用していました。試作したICを評価する上で非常に便利だったので、FPGAを使って様々な評価システムを作ったりしていました。 FPGAのメリットは、いくらでも書き換えができるので柔軟にシステムが組める点だと思います。最近もずっと評価用システム向けにFPGAを活用しています。 ASICの開発は年々大規模になり、大手企業では頭から評価まで全般を担えることは少なく、仕事が分割されてしまうことも多いのですが、その点ではこれまでにさまざまな経験を積んできたと思います。2021年2月で定年を迎えますが、これまでのキャリアの中で若い人と一緒に設計や評価を行うことも多かったです。 今まで仕事でディープラーニングに触れたことはなく、趣味の範囲内でした。Raspberry PiをWeb上のコードで動かすくらいはしていましたが、今回がほとんど初めてのチャレンジでしたね。 ※Raspberry Pi(ラズベリーパイ)…2012年にイギリスのラズベリーパイ財団により、教育の目的で開発されたワンボードコンピュータ

コンテスト参加への経緯

Q.AIエッジコンテストに参加したきっかけを教えてください。

Webを見ていて、たまたま目にしたのがきっかけです。 今回のテーマは実装コンテストなので、FPGAのRTL設計の経験を活かせると考えて参加を決断し、Ultra 96もすぐに購入しました。 実は、第2回のAIエッジコンテストも参加しようと思っていたのですが実装が間に合わず、見送ることになりました。当時はFP16で組んでいましたが、フローティングポイントを使うと、一致検証がなかなか難しく、納得するレベルまで至りませんでした。 フローティングポイントも一からスクラッチで構築しました。 今回は小さいCPUも入れているのですが、これもスクラッチで構築しました。ISAも独自で構築し、コンパイラもGCGの移植コードを書いて、使える状態にしました。 ※Ultra96…アメリカのXilinx社のプログラマブルSoC「Zynq UltraScale+ MPSoC」を搭載する開発ボード

image5

参加を決めてからの進め方

Q.AIエッジコンテストの準備はどのように進めましたか?

最初は、TensorFlow LiteのDelegateについて調べるところからはじめました。 事前準備では、TensorFlow Lite Delegateの資料が少なく実装の難易度は高かったです。検索しても資料がなかなか出てこず、結局はソースを読んで対処しました。 Pythonと繋ぐこと自体はそこまで難易度は高くありませんでしたが、コンボリューションのパラメーターの受け渡し方を理解するには、ソースを一生懸命読まなければならず、苦労しました。 今回の実装は単純な形で、スピードもあまり速くないのですが、あくまで「きっかけになれば」というイメージでプログラムを組んだので、まだ満足はしていません。 実際に動き出したのは提出期限の1〜2ヶ月前くらいです。論理シミュレーションで一致検証をして全部OKにならないと、実装しても無駄なので、そこでかなり時間がかかりました。土日を中心に稼働して、全体で1年近くかかりましたね。自粛期間も作業時間を増やすきっかけになったと思います。 ※TensorFlow Lite(テンソルフローライト)…GoogleがモバイルやIoTデバイス上で動かすことを想定して開発し、オープンソースで公開している、機械学習用のソフトウェアライブラリ

Q.FPGAのエリアはどれくらい使っていますか?

メモリはほとんど使っていて、LUTが79〜80%ほどです。

コンテストの勝ち筋・工夫したポイント

Q.どこで一番工夫しましたか?

論理シミュレーションの評価用システムの構築に工夫をこらしました。DPI-Cという仕組みを用いて、C言語実装とVerilogの協調検証環境を構築し、基本的な結果の分析はC言語実装を用いることで、検証が大分進みました。CとVerilog実装間でビットワイズでの一致をとるために、C側はFixedの精度で実装しました。 前回FP16で実装してみたのは、FP16からFP8まで簡単に試せて面白いと思ったからですが、検証の大変さで挫折しました。今回は 8bit 固定で実装したので、一致検証が楽になり、完動することが出来ました。今なら、8bitで作り上げて演算器をフローティングに戻すのは可能だと思います。 ※Verilog(ヴェリログ)…IEEE 1364として標準化されているハードウェア記述言語

苦労したポイント

Q.どこで一番苦労しましたか?

TensorFlow Liteのインターフェースに苦労しました。また、FPGAのロジックそのものはたくさん扱ってきましたが、Zynqは今回が初めてでした。ZynqとCPUのやり取りについても充分に資料が見つからず大変でしたね。

今後の展望

image3

Q.今回の経験が今後にどのように活かされると思いますか?

退職後には再就職をするつもりなので、今回の受賞をアピール材料にしたいと考えています。面白いターゲットがあれば、これからもコンテストにチャレンジしてみようと思います。

Q.これからコンペに参加される方にメッセージをお願いいたします。

ASICを作るときはとても緊張しますが、FPGAはいくらでも失敗できます。 失敗の経験は非常に重要です。失敗から学び、積み重ねることで、技術力は高くなると思います。 若い人は論理設計はすぐに立ち上がってくると思いますし、壁は高くないと思います。題材があればどんどんやってみたら良いのではないでしょうか。

第4回AIエッジコンテスト(実装コンテスト②)の入賞者レポートはこちら

この記事をシェアする