研究紹介

研究分野

キーワード

「素敵」なコンピュータの構造や設計技術、プロセッサやコンピュータそのものの在り方について研究しています。

最近の研究プロジェクト

多様性と環境変化に寄り添うFederated Learningシステム

ドメイン特化アーキテクチャ/機械学習アクセラレータ

コンピュータアーキテクチャ

ハードウェア設計技術・コンパイラ

以下は一部の研究の詳細です。

ニューラルネットワークアクセラレータ (AIチップ)

ニューラルネットワークの推論処理を高速・低消費電力に行うための専用アクセラレータ(AIチップ)のアーキテクチャに関する研究を行っています。これまでに、二値化ニューラルネットワークのインメモリ・プロセッサのBRein Memoryや、対数量子化を用いたビットシリアル型・可変ビット長マルチコアDNNプロセッサのQUESTなど、量子化ニューラルネットワークに適したAIチップの開発に携わってきました。

ハードウェアの構造や捨てられていた情報の活用による軽量・高精度ニューラルネットワーク

重みや活性値を+1/-1で表現する二値化ニューラルネットワーク (Binary Neural Network) は、メモリ量や回路規模の観点では優れていますが、認識精度が低いという課題があります。

本研究では、演算回路内で捨てられてしまっている多ビットの情報を活用することで、二値化ニューラルネットワークのメモリ量や回路規模のメリットを保ったまま、高い認識精度を達成する新しいモデルや活性化関数を開発しました。

Dither NNは、複数のバイナリニューロンを用いて疑似的に中間値を表現する活性化関数を用いることで、ほとんど回路規模を増やすことなく、認識精度の向上を達成しました。

DeltaNetは、複数のニューロンの活性化前の値を比較し、その大小関係で活性化するという、差分二値化という新しい活性化関数を用いることで、ほとんど回路規模を増やすことなく、認識精度の向上を達成しました。

動的無効ニューロン予測によるニューラルネットワーク計算の高速化

近年のニューラルネットワークではReLU (Rectified Linear Unit) と呼ばれる活性化関数を用いることが多いですが、ReLUを通すことにより全ニューロンの半分程度の値が0になることが知られています。このようなニューロンを無効ニューロンと呼びます。無効ニューロンに対して後続の層でどのような重みの乗算を行っても結果は0になるため、そのようなニューロンに関する計算は行う必要がありません。しかし、ニューロンの無効・有効は入力データに依存するため、実際に計算をしてみなければ、本当に無効になるかどうかはわかりません。

本研究では、メインのニューラルネットワークとは別の予測機構を用いることで、各ニューロンが無効になるかどうかを、実際の入力データに基づいて実行時に予測し、無効ニューロンと予想されるものに関する計算を動的に省略するという方式について研究しています。

Veriloggen: Pythonによるマルチパラダイム高位合成フレームワーク

ユーザーが回路構成を変更することができる「やわらかいハードウェア」のFPGAは、IoT/組み込みシステムからクラウド、スパコンまで、様々な用途で用いられています。FPGA上に実現する回路設計には、ハードウェア記述言語 (Hardware Description Language) という、回路構成を詳細に設計するための言語を用いることが一般的でしたが、詳細設計するため高性能な回路を実現できる一方、開発コストが大きいという課題があります。そこで近年は、開発を効率的に行うための技術として、CやC++といったソフトウェアのプログラミング言語による設計方式である高位合成 (High Level Synthesis) が普及しつつあります。

本研究では、Pythonによるハードウェア設計フレームワークVeriloggenを開発し、オープンソースにて公開しています。Veriloggenの特徴として、従来のハードウェア記述言語と同等のRTL (Register Transfer Level) での詳細設計、一般の手続き型プログラミング言語と同じように手順として振る舞いを設計する逐次型高位合成、ストリーム計算というデータの流れに着目して計算パイプラインを設計するストリーム型高位合成、の3つのパラダイムをサポートしており、FPGAの良さを引き出した高効率なハードウェアアクセラレータを効率的に設計することができます。Veriloggenは、Pythonによる回路・アクセラレータ記述から、Verilog HDLのソースコードおよび設定ファイルのIP-XACTを生成するため、特定のFPGAベンダーに依存せず、様々な用途で利用可能です。

Veriloggenを単体で用いるだけではなく、より抽象度の高い高位合成コンパイラのバックエンドとしても利用することができます。そのため、いくつかの研究プロジェクトでは縁の下の力持ちとして用いられています。

https://github.com/PyHDI/veriloggen

NNgen: ニューラルネットワークのモデル特化ハードウェアを生成する高位合成コンパイラ

FPGAを用いることで、ニューラルネットワークのアクセラレータと各種演算・制御回路を1チップに集積する、高度なシステムを低コストで実現することができます。そのようなシステムの開発では、学習済みのニューラルネットワークのモデルを、FPGAの回路資源量や要求性能を考慮してハードウェア化する必要がありますが、ニューラルネットワークに関する知識と、FPGA・ハードウェアに関する知識の両方を必要とし、開発コストが大きいです。

本研究では、TensorflowやPytorchといったニューラルネットワークのフレームワークを用いて設計・学習されたモデルから、そのモデルに特化したアクセラレータ回路を生成する、ニューラルネットワークのための高位合成コンパイラNNgenを開発し、オープンソースにて公開しています。プログラマはFPGAの回路を設計する必要ありません。FPGAの規模や要求性能に応じて、演算精度や並列性をチューニングすることができるため、大規模・小規模を問わず、様々な用途で用いることができます。また、NNgenのコード生成部にはVeriloggenを用いているため、特定のFPGAベンダーに依存せず、ポータブルなアクセラレータの実装を可能にします。ニューラルネットワークそのものの研究の発展に伴う、新たなオペレータの追加といった拡張も自由に行うことができます。

https://github.com/NNgen/nngen

企業との共同研究について

ニューラルネットワークのアクセラレータやハードウェア指向アルゴリズム、高位合成コンパイラ、FPGAの利活用に関する共同研究を多くの企業と行っております。頂いた共同研究費は主に、研究室設備の拡充や学生の経済的支援に用いており、安定した研究室運営をする上で重要なものです。学生としても、企業での応用指向の研究に携わる貴重な機会です。

共同研究費の金額およびテーマは柔軟に相談に応じます。ご興味がございましたら、お気軽に高前田までお問い合わせください。