エンジニアがAIアプリ開発に専念できる環境を提供、作り手と使い手の互恵関係を築くGStreamerベースの注目プラットフォーム
GPUまわりの知見や技術力を最大限に活かす
Edge AI Boxのような組込系デバイスでは、コストや消費電力などを抑えようとの想いから潤沢なCPUリソースは用意せずに、アクセラレーター(専用ハードウェア)の技術を積極的に活用しようとの工夫がなされるのが通例だ。その点においてEDGEMATRIXはGPUまわりの技術を巧みに適用・応用している典型と見ることができる。まさにGPUに関する知見や技術力が、同社の躍進を支えていると言っても過言ではないだろう。
「Edge AI Boxには、映像解析に特化した機能を提供するAIアプリケーションの実行環境『EDGEMATRIX Stream』を実装しており、そこには弊社なりの知恵や工夫が凝縮されています」──。そう話すのは、同社の小林和徳氏(P&S開発本部 サービス開発部 シニアエッジAIエンジニア)だ。以下に、具体像を紐解いていこう。
EDGEMATRIX Streamのベースにあるのは、Linux向けのマルチメディア処理ソフトとしてOSSプロジェクトから生まれた「GStreamer」と、推論エンジン「TensorRT」をGStreamerから使えるようにすべくNVIDIAが開発したソフト「DeepStream」だ。
特に骨格を成すのがGStreamerであり、これはプラグインと呼ぶ一塊の処理ロジックを順につなげていくことで目的の機能を具現化するパイプライン構造に立脚しているのが特徴だ。例えば、ビデオファイルを読み込むソースプラグイン、ビデオのデコードを司るフィルタープラグイン、ビデオを表示するシンクプラグインなどをパイプラインでつなぐことによってメディアプレーヤーが出来上がる。「GStreamerは、その単純で分かりやすいフレームワークがあったからこそ普及したと言えます。我々もその特性を活かそうと考えました」(小林氏)。
一方のDeepStreamは、NVIDIAのGPU上で動く深層学習の推論エンジンであるTensorRTを、GStreamerから使えるようにするライブラリだ。TensorRTが、GPUのハードウェアアクセラレーションによって高速に動作する推論エンジンであることは広く知られている。もっとも、TensorRTそのものにはビデオを扱う機能はない。その一方で、GStreamerは外部の機能をプラグインとして持つことで、映像処理の一部としてその機能を利用可能にする。この特性を活用するため、GStreamerのプラグインからTensorRTを呼び、映像に対するAI解析を可能にしたのがDeepStreamである。
「このアイデアは非常に優れていると思いますが、それだけでは足りない機能群、例えばAIアプリとのキメ細かいやり取りやTensorRT以外の推論エンジンへの対応といった部分を弊社独自で開発し、EDGEMATRIX Streamとして拡張しました」と話す小林氏は、そのメリットとして次の3つを挙げる。
- 1つのAIアルゴリズムに縛られない自由度
- 複雑なメディアパイプライン制御の隠蔽
- ハードウェアアクセラレーションによる高速なビデオストリーミング処理と映像解析
「AIのアルゴリズム開発に携わっているエンジニアの多くはビデオやオーディオの処理には精通していないことでしょう。コア領域でない部分はEDGEMATRIX Streamに任せてもらい、彼ら彼女らには持ち前のスキルやノウハウをAI開発に集中させてほしいのです。そんな環境を実現しようとEDGEMATRIX Streamを完成させました」(小林氏)。
パイプライン処理の動的組み替えを具現化
エンジニアがAI開発に専念できる環境を──。言葉でこそ簡単だが、その実現は並大抵のことではなく、EDGEMATRIXの技術力がそこかしこに活かされている。いくつかの具体例を見ていこう。
まずは複雑なパイプライン構成のルーティング制御だ。EDGEMATRIX Streamが、そのベースとなるGStreamerに則ってパイプライン構成のアーキテクチャを採用していることは先述の通り。実際にはカメラ入力、AI推論、WebRTCで送出するためのエンコーダーといった数々のプラグインが綿々とつながっている。ここで、ユーザーのオペレーションに応じてパイプラインを動的に組み替えることができるのだ。
例えば、カメラ映像を取り込んで推論処理を実行している最中に、ユーザーから「カメラ映像を参照したい」というリクエストが来た場合、既存のパイプライン処理の後に、ユーザーにWebRTCで映像を送出するパイプライン処理をつなぐといったことができる。詳細は割愛するが、動的な制御にはパスやシェア、その組み合わせなどのバリエーションがあり、ユーザーの目的に沿ってキメ細かく運用できるし、効率も良い。
複数のパイプラインに分岐するような非同期の制御では、前段からビデオフレームが送られてくるバッファの取り扱いにも注意を払わなければならない。メモリーリークを起こさないようにバッファをクリアするにしても、非同期のパイプラインごとにバッファの参照がいつ終わったかを適切に把握する必要がある。単純な対策としては、それぞれのパイプラインごとに専用のバッファを作ってデータを複製する方法があるものの、メモリーからメモリーにデータをコピーする際のCPU負荷は大きく、できれば避けたい。「EDGEMATRIX Streamの環境下では、複数の参照元から1つのバッファの参照を可能とするGStreamerの機構を駆使し、それぞれのパイプラインがバッファを参照し終えた際に通知を上げ、誰も参照していないことが分かったタイミングでバッファを閉じる工夫が盛り込まれています」(小林氏)。
GPUベースのアルゴリズム資産を
着実に未来へつなぐ
GStreamerは元々はLinux環境におけるマルチメディアフレームワークとして生まれたこともあり、堅牢性の観点では必ずしも十分な配慮がされていない。例えば、ビデオ映像のAI解析を続け、問題が発生したならアラームメールを送るといった用途では24時間365日稼働し続けるのが望ましい。2時間ほどの映画コンテンツを視聴できればよいという用途とは全く異なるのだ。
ここでEDGEMATRIX Streamでは、GStreamerのパイプラインとAIアプリケーションのプロセスを独立させることで、アプリケーションの堅牢性(可用性)を高めている。プロセスとプロセスを、Linuxが備えるプロセス間通信の手段で疎結合型でつないで運用できる。GStreamerのプロセスがクラッシュして落ちても、AIアプリケーションを含む他のプロセスには影響がない。落ちたプロセスを自動で再起動することで、AIアプリケーションはGStreamerのプロセスが落ちたことを知ることなく粛々と稼働を続けることになる。
このようなブラッシュアップを続けてきたEDGEMATRIX Streamに今、市場から熱い視線が送られている。昨今、ビッグデータ解析やデジタル変革といった文脈でAIへの取り組みに本腰を入れる動きがますます活発になっている。何よりもスピードが優先されるだけに、かつての組込系の領域で多く見られた“じっくり作り込む”ような時間感覚では通用せず、GPUに照準を当てたアルゴリズム開発へとシフトする動きも顕著のようだ。そこで、取り組みやすさや既存資産の移植のしやすさなどに鑑みて、EDGEMATRIX Streamへと触肢を伸ばしているのである。
「繰り返しになりますが、当社はエンジニアの方々がAIアプリケーションの開発だけに専念できる環境を用意していますし、作り手も使い手も共にハッピーになれるプラットフォームとして今後も成長させていきます。先々では、映像だけにとどまらず各種のセンサーが生成するデータのAI解析などにも着実に広げ、スマートシティの具現化に向けて皆さんと歩みを共にしていきたいと願っています。何かあればぜひお声がけください」と長谷川氏は取材を締めくくった。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- ハイプサイクルに登場する技術②ー エッジAIや組み込みAI、AIチップ
- “もはやSFではない” すべての産業界にAIコンピューティングを―NVIDIA GTC Japan 2016レポート
- NTTComが製品化したWebRTCベースのSkyWayは離陸するか?
- NVIDIA、5G対応のエッジ向けサーバシリーズ「EGX Edge Supercomputing Platform」を発表
- GPUコンピューティングの歴史とCUDAの誕生
- FacebookとApple、NVIDIAのAIプラットフォーム
- クラスキャット、マルチクラウド対応テレワーク統合サービス「ClassCat Telework v2.0」に新サービスを追加
- OpenStack Days Tokyo 2018開催 ユースケースから見える最新のインフラとクラウドネィティブコンピューティングとは?
- Cognitive ServicesからMachine Learning Servicesまで マイクロソフトの最新AIプラットフォーム総まとめレポート
- FPGAのXilinxが年次カンファレンスを開催。データセンター、5G、自動運転にフォーカスしたキーノートを紹介