バックナンバーはこちら

today&tomorrow

What's New in DesignWare IP?

2018 vol.111

消費電力に制約のある機器に高性能なディープ・ラーニングを実装する方法

シノプシス EVプロセッサ製品マーケティング・マネージャー Gordon Cooper

顔認証機能を搭載したスマートフォン、ユーザーの手と部屋の状況を識別してゲーム画面に重ね合わせるAR/MRヘッドセット、歩行者や自動車を認識する自動運転車など、高性能かつ低消費電力のエンベデッド・ビジョン・プロセッサを搭載したアプリケーションは至るところに見られます。組込みアプリケーションにディープ・ラーニング(深層学習)を実装するには、消費電力を最小限に抑えながら非常に強力な処理性能を達成する必要があります。これは、エンベデッド・ビジョン・アプリケーションを支える最先端技術である畳み込みニューラル・ネットワーク(CNN)を実行するために強力な処理性能が必要であると同時に、ユーザー体験の向上と製品差別化の観点から消費電力の削減が欠かせないためです。先進運転支援システム(ADAS)などで使用するASICやシステム・オン・チップ(SoC)でCNNグラフの性能を最大限に高めつつ消費電力を最小化する手段として、多くの設計者が専用のCNNエンジンに注目するようになっています(図1)。

画像

図1:CNNエンジンを内蔵したシノプシスのDesignWare® EV61エンベデッド・ビジョン・プロセッサでTinyYOLO CNNグラフを実行し、物体検出・分類を行う自動運転および監視アプリケーションの例

ディープ・ラーニングの実装に使用できるデバイスの種類

ディープ・ラーニング・コンピューティングの時代は、GPUによって幕を開けました。GPUの優れた演算性能とプロセス微細化による性能向上によって、ディープ・ラーニング・アルゴリズムの実行に必要な処理性能がようやく現実のものとなったためです。しかしGPUは元々グラフィックス処理用に開発されたものをディープ・ラーニングに転用しているため、ダイ・サイズと消費電力が大きく、省電力性が重視される組込みアプリケーションへの適用には向きません。
ベクターDSP(VLIW SIMDプロセッサ)は、伝統的なプログラミングによるコンピュータ・ビジョン・アルゴリズムを実行する汎用エンジンとして設計されました。ベクターDSPは積和演算(MAC)を一度で実行できるため、CNNグラフの実行に必要な2次元畳み込みをGPUよりも効率的に実行できます。ベクターDSPのMACユニットの数を増やすと1サイクルあたりに処理できるCNNの数が増え、フレーム・レートが向上します。ベクターDSPに専用のCNNアクセラレータを追加すると、消費電力と面積の効率が更に向上します。

しかし最も効率がよいのは、ベクターDSPと柔軟な専用CNNエンジンの組み合わせです。専用のCNNエンジンは単なる畳み込みのアクセラレーションだけでなく、一般的なCNN演算(畳み込み、プーリング、要素ごとの演算など)をすべてサポートできます。また、これらのパラメータに合わせたカスタム設計が可能なため、面積と消費電力も最小に抑えることができます。この場合、ベクターDSPはビデオ・イメージの前処理と後処理に使用します。

専用のCNNエンジンでは、毎秒のMAC演算回数を増やすだけでなく、メモリーとレジスタの再利用を考慮して最適化することも重要となります。プロセッサからこれらのMACに十分なデータを供給できるだけの帯域幅とメモリー・アーキテクチャがなければ、システム性能を最大限には発揮できません。専用のCNNエンジンなら、ResNet、Inception、YOLO、MobileNetなど最先端のネットワークでメモリーとレジスタを再利用できるように最適化が可能です。

更に消費電力を削減するには、ハードワイヤードASICデザインを使用します。これは、規格が標準化されている場合は理想的なソリューションとなります。たとえばH.264を使用したビデオ圧縮は、規格が標準化される前はプログラマブル・デバイスで実装されていましたが、現在はASICで実装されるようになっています。CNNはエンベデッド・ビジョン処理を支える最先端技術として台頭していますが、その実装方法はまだ確定していないため、将来の変更が可能な柔軟なソリューションが求められます。

実機完成前にシステム消費電力を計測する方法

高い省電力性が要求されるエンベデッド・ビジョン・アプリケーションで消費電力の目標を達成するには、専用のCNNエンジンを内蔵したビジョン・プロセッサを正しく選択する必要があります。ここで問題になるのが、実機完成前に消費電力をどのようにして計測するかという点です。

たとえば顔認識機能を内蔵したバッテリ駆動型のIoTスマート・ホーム/モバイル機器など、消費電力の制約が厳しいアプリケーションでどれだけの性能が必要かを考えてみましょう。フレーム・サイズ、フレーム・レート、その他のパラメータにもよりますが、顔認識を実行するエンベデッド・ビジョン・プロセッサには数百GMAC/sの処理性能が必要となることがあります。ASIC/SoC設計者は、これだけの処理を数百mWなどの限られた消費電力で実行できるエンベデッド・ビジョン・ソリューションを見つけなければなりません。

しかしビジョン・プロセッサIPの比較はそれほど簡単ではありません。最先端のIPソリューションには、まだ実チップとしての実績がないものも多々あります。しかも消費電力や性能はインプリメンテーションごとに異なるため、これらを計算してIPごとに比較するのは困難です。CNNソリューションの比較に使用できる標準ベンチマークも存在しません。FPGAプロトタイピング・プラットフォームはベンチマークとしては正確かもしれませんが、消費電力の推定精度は高くありません。

消費電力を計算する方法の1つに、RTLまたはネットリスト・ベースのシミュレーションを実行してすべてのロジックのトグルをキャプチャするというものがあります。デザインのレイアウトに基づいたこの情報を使用すると、消費電力を正確に見積もることができます。ただしこのシミュレーションは、組込みRISCコア上でCoreMarkやDhrystoneを実行するなど小規模なデザインなら数時間で完了しますが、大規模なデザインになるとシミュレーション速度が低下します。たとえば高フレーム・レートを必要とする大規模なCNNグラフの場合、このシミュレーションでは定常状態に達して消費電力を計測するまでに数週間かかることもあります。IPベンダがこうした手間を嫌い、小規模なシミュレーション・モデルのみを使用して消費電力を推定した場合、SoCベンダはこの不正確な見積もりに基づいてサインオフを行ってしまうリスクを抱えることになります。

シノプシスのZeBu Server(図2)は、消費電力の解析と計測に関してIP開発者とSoC設計者の双方に非常に大きなメリットがあります。ZeBu Serverは完全なSoCデザインに対応した業界最速のエミュレーション・システムで、パワー・マネージメント検証、包括的なデバッグおよびVerdiとの統合、バーチャル・プロトタイプとのハイブリッド・エミュレーション、アーキテクチャ検討および最適化など、高度な利用モードを数多くサポートしています。ZeBuにはすべてのフリップフロップのスイッチ・レートを求めるためのインストルメンテーションもあり、これを実際のハードウェアにバック・アノテーションすることで消費電力を正確に計算できます。事実、シノプシスはこの機能を使用してエンベデッド・ビジョン・プロセッサの消費電力見積もり精度を最大限に高めています。SoC設計者は、ZeBuを使用してシステム内のすべてのエレメントの消費電力をチューニングできます。これにより、RTLシミュレーションによる消費電力シミュレーションを数週間から数時間に短縮できます。

画像

図2:シノプシスのZeBu Serverを使用すると、SoC内の各エレメントおよびSoCデザイン全体の消費電力を正確に見積もることができます。

アプリケーション・ソフトウェアの消費電力を正確かつ効率よく計測する手段を確立したら、次はデザインのコンフィギュレーションをさまざまに変更して、消費電力が最小となるようにトレードオフ解析を実行します。ZeBuの電力解析フローを使用すれば、これらのトレードオフを1日に何回も反復して最適な設定を見つけることができます。

カテゴリートップ