AI技術が発展し、画像認識や自動運転などのAIの社会実装が急速に進む今、便利で安全な生活に向けた取り組みが進んでいる。今後データをさらに高度に利活用していくためには、クラウド処理だけでなく、リアルタイム性が高いエッジAI技術の発展が必要不可欠だ。そのためには、ソフトウェアを中心としたAI技術開発に加え、LSI・FPGAをはじめとするハードウェアの開発や、それらを担う人材の発掘・育成が急務となっている。 そうしたニーズに応えるべく開催されているのが経済産業省・NEDO主催の「AIエッジコンテスト」だ。これまでの開催回数は計6回。難度の高いコンテストながら、毎回専門人材から知見が寄せられ、エッジAI技術を手がける人材を発掘するハブとなりつつある。 2022年8月17日~2023年1月29日に開催された第6回では、RISC-Vを使用した自動車走行時の画像・点群データによる3D物体検出をテーマに、完成度・精度・動作速度の総合点を競うコンテストが実施された。第5回に引き続き、RISC-Vの使用が必須条件であるため、チャレンジングなコンテストとなっていた。 そんな本コンテストで、第2位に輝いたチームReinventTechのお二人に、本コンテストへの参加を決めた経緯や、取り組みにおける工夫点、今後の展望について率直に話を伺った。
今注目されているアーキテクチャの知見を得るため、コンテストへの参加を決意。
加藤さん:高島さんとはもともと前職の同期でした。部署も業務内容も全く関係がなかったのですが、社宅が同じだったため、たまに帰宅時間が被った時に技術的な話をしながら一緒に帰るような関係でした。私が転職するタイミングで高島さんが作ったSlackチャンネルに招待されて転職後も定期的に技術的なやりとりを続けていました。 高島さん:そのときに作ったSlackの名前が今回のチーム名にもなっているReinventTechでして、現在はメンバーは3人所属しています。ReinventTechは小さな技術サークルでして、世の中で広く使われている技術の再構築にチャレンジして、それを通じてさまざまな技術について深く理解していくというのをモットーとしています。 加藤さん:自分はもともと自動運転に興味を持っていたので、コンテストの募集が始まった時にサークル内でも共有したのですが、当時は反応が薄かったのを覚えています。 高島さん:加藤さんからコンテストの話を聞いた時、面白そうだとは感じたのですが、とても難しそうだという印象を抱いてしまって、当時は参加を決意しないまま流れてしまいました。そんな中、今回このコンテストに参加しようと決めたのは、2022年の秋にサークル内のチャットで私が「時代はRISC-Vかもしれない」と呟いたのがきっかけでした。ふと見つけたWeb上の記事でRISC-Vについて紹介されており、「これは今後、社会に大きな価値を発揮するだろう」と思ったんです。そのチャットを読んだ加藤さんからすぐに返信があり、改めてコンテストへの参加を打診され、仮に提出できなかったとしてもRISC-Vの知見が身につける良い機会かもしれないと思い承諾しました。 加藤さん:実は私は別チームで本コンテストの第3回にも参加し3位に入賞したことがあるのですが、その後は本業に集中するためコンテストから離れてしまっていました。しかし、2022年の春頃から自動運転技術への興味が湧き、自動運転技術に関われるコンテストはないかと探していたところで今回のコンテストを知ったのです。かなりハードルが高そうだったため尻込みしていたのですが、高島さんの呟きを見て、チームを組もうとすぐに声をかけました。
分業体制で挑むことに。お互いが挑戦する姿に刺激を受けながら進めていった。
高島さん:さあ取り組むぞと課題やデータに目を通したところ、あまりの難しさに「これを1人で成し遂げる人がいるなら天才だぞ…」と絶句しましたね(笑)。RISC-Vを使ったCPU、FPGA、そして機械学習と3つの大きなテーマがあり、それぞれの難易度が高い。これら3つすべてを期間中に成し遂げるのは骨が折れるだろうと思いました。しかし、あくまでそれは一般論。これまでも、ありとあらゆる分野の技術について調べたり試行錯誤してきたりしてきた私たちであれば、何か提出できるものを作ることはできるはずだと考えました。 加藤さん:難しそうだからこそやる気が出ましたね。ただ、私たちが参加を決めた時点でコンテスト開始から3カ月以上が経っていて時間も足りなかったため、それぞれの得意なこと、好きなことに専念しようということで、私が機械学習を含めたソフトウェア周り、RISC-Vを触ってみたいと言っていた高島さんはハードウェア周りを担当することになりました。 高島さん:私は普段はソフトウェアエンジニアとして働いているためにハードウェアの知識が足りず、知識のキャッチアップに苦労しました。特に苦労したのがFPGAのボードとして推奨されていたKV260の扱い方です。KV260はWeb上に資料がたくさん公開されているのですが、ある程度知識のあるエンジニア向けの物ばかりで、当時の私にはきちんと理解することが難しかったのを覚えています。足りない知識は勉強が必要ということで、基礎から書籍やネットでの学習と、実機上での実験や試行錯誤を繰り返すことに多くの時間を割く必要がありました。今回のコンテスト期間中、作業の8割はこのKV260についての学習に費やしていました。 加藤さん:高島さんがこうしてハードウェアについて一から学びつつ進めてくれたため、少しでも早くソフトウェア周りを完成させて自分も手伝おうと思っていたのですが、なかなか思うようにはいきませんでした。リーダーボードの上位を維持するためのモデルの改善や量子化周りで苦労してしまい、結局ハードウェア周りは高島さんに任せきりになってしまいました。 高島さん:コンテスト参加当初は提出できればラッキーという軽い気持ちでコンテストに参加していました。ところが12月下旬ごろ加藤さんが作ったモデルをリーダーボードに投稿したところ、思ったよりも良い成績を得られたため「もしかしたらこれは入賞できるかもしれない」と思い本格的に提出を目指し始めました。 加藤さん:最初に提出したモデルの精度が思いの外高かったことでチームとしての士気が上がり、高島さんもハードウェアに関する膨大な資料を読み込んでいる姿を見て、「ここまで頑張ってくれているのだから、ソフトウェア周りで足を引っ張りたくない」と一層やる気が出ました。モチベーションの維持という点で考えると、コンテストに挑戦する場合は一緒に切磋琢磨できる誰かとチームで参加することをおすすめしたいです。
チームでの判断軸を定めたり細かく進捗共有をしたりと、チームならではの工夫が功を奏した。
高島さん:今回チームで大切にしていたのはちゃんと動くものを作るということです。本当は最高のシステムを目指したいけど私たちには時間も知識も足りない。そこで無理に優れたシステムを目指すのではなく、シンプルにKV260上でDPUとRISC-Vを動かして、ARMのCPUから制御する構成としました。それでも実用的な速度で動かすためにはメモリアクセス速度や動作クロックなど試行錯誤はたくさん必要でした。 加藤さん:実際に自動車に載せて動かしたときにどうか、機能的・性能的に問題はないかという観点はお互い持ちながら開発を進めていました。チームで取り組む際は、こうした判断軸を定めておくことが大切かもしれません。それだけに、今回開発したシステムの動作速度を十分に上げられなかったことは大きな心残りです。 高島さん:チームで開発を進めるにあたり、お互いの進捗はSlackで報告しあっていました。コンテストに関係なく日頃からSlackで活発に技術的な会話をしていたので、特にお互いの進捗がわからなくて困るということは感じませんでした。ソースコードや調べた技術メモもGitHubで最新のものを共有するようにしていたので、お互いが何をやっているかは把握できていました。実は加藤さんとはリアルでは何年も会っていなくて、今回のコンテストもすべてオンラインで完結していました。 加藤さん:高島さんがGitHubにまとめてくれた各種知見は本当に助かりました。何か困ったことがあると、だいたいそこに既に書いてありました。また、お互いの手元に同じ実機を揃えていたので、完全に同じ環境を再現しながら動作確認をできたのも大きいです。コンテスト期間中は、本当にありとあらゆることをオンラインで共有していました。だからこそ、直接顔を合わせずともスムーズに開発を進めることができたのだと思います。 高島さん:表彰式で数年ぶりに加藤さんと会えるのが楽しみです(笑)。
結果に満足している暇はない。次は、独自プロセッサの開発を目指す。
加藤さん:入賞は果たせたものの、やりきれなかった部分もあります。速度や精度の改良は大きな課題で、そのためにはモデル自体の改善も必要です。そうなると複雑なモデルに対応した独自のニューラルネットワークのプロセッサも作りたくなりますが、同時に独自のモデルコンパイラも必要になってきます。今回はコンテストへの参加を決めたのが遅く、時間に余裕がなかったために既存のプロセッサを使ってしまったのは悔しさを覚えます。 高島さん:私の場合はRISC-Vを扱うことがコンテストの参加の動機だったにも関わらず、あまりRISC-Vを活用できずに終わってしまったのが心残りです。もともとは独自のRISC-Vプロセッサを作ることを目指していたのですが、時間に余裕がなく既存のコアであるVexRiscvをつかってシステムを構築しました。特に今回のシンプルな構成だと無駄なメモリコピーが多数発生してしまうため、独自のRISC-Vプロセッサやニューラルネットワークプロセッサを作って、無駄を極限まで削ることができれば、さらに速度を上げることができたのではないかと思います。 加藤さん:やり残したことも多いですが、今回参加したからこそ得られた気づきや知見もたくさんあります。その一つが、点群処理の可能性。最初にコンテストで配布された点群データを見たときは、「こんなにスパースな点群データで正確な物体検出なんてできるのか」と半信半疑だったのですが、想像の何倍も精度が高く驚きました。点群処理に対する興味がグッと湧いたので、今後自分で実験できるように点群データ用のセンサを購入するのもいいですね。 高島さん:そうですね。私の場合はほぼ未経験の状態でハードウェアを担当したことで、日頃触れる機会が無い低レイヤーの知識を大きく増やすことができました。これまでぼんやりとしか理解できていなかった低レイヤーの部分が、度の合っているメガネをかけた時のようにはっきりと認識できるようになったように感じます。今後仕事や趣味でソフトウェアの困難なバグをにぶつかった時、ソフトウェアの知識だけでは解決できなかった問題も、これからはスムーズに解決できるのでは無いか、コンテストの参加を通じてそういう確かな手応えを得ることができました。 加藤さん:今回参加したことで改めて感じましたが、コンテストというのは自らの持てる技術力を総決算する場であり、あたらしい知見を獲得する良い機会です。このAIエッジコンテストに限らず、面白そうなコンテストがあれば今後も参加してみようと思います。そしていつか、世の中をもっと便利にするソフトウェアやハードウェアを自分たちの手で作り出せたら最高ですね。そんな日を夢見て、チームReinventTechの仲間達とともに、世の中の様々な技術を勉強し研究し再構築しながら、エンジニアとしてのスキルを磨き続けていきたいです。
コンテスト参加を検討している方へのメッセージ
高島さん:今回私は、ハードウェアに関してほぼ知識ゼロの状態で参加しましたが、やってみれば意外となんとかなりました。ですので同じように「ハードウェアの知見がないから……」とか「課題のハードルが高そうだから……」という理由で参加を躊躇してしまっている方は、今すぐ取り掛かってみてほしいです。大丈夫、意外とどうにかなります。 加藤さん:コンテストの課題のハードルが高いということは、参加できる人の数が少なくなり、自ずと入賞の倍率が低くなる。すなわち、入賞して賞金を得るチャンスが大きいとも言えます。ハードルの高さをモチベーションに変えて成長できるエンジニアは強いです。頑張ってください。
<第6回AIエッジコンテスト「RISC-Vを使用した自動車走行時の画像・点群データによる3D物体検出」コンペティションの入賞者レポートはこちら>