Xilinxが買収したディープラーニングのスタートアップ

DeePhi Tech(深鉴科技)は清華大学とスタンフォード大学の研究者が、2016年に北京に設立したディープラーニング技術を開発するスタートアップである。コンピュータアーキテクチャ関係のトップクラスの学会である2016年のISCAで最優秀論文賞を受賞するなど、高い技術力を誇る。

DeePhi Techは、その将来性からSamsungやMediaTekなども出資していたが、2018年7月に出資先の1つであったXilinxが買収し、現在はXilinxの一部になっている。DeePhi TechはXilinxのFPGAをディープラーニングのエンジンとして使っており、資本関係だけでなく、研究開発でも両者の関係は深かった。

  • DeePhi TechのSong Yao CEO

    Hot Chips 30でマシンラーニングプラットフォームについて発表するDeePhi TechのSong Yao CEO

新たなネットワーク処理に対応するアクセラレータ

本稿執筆時点は2018年であるが、現在でも1998年に発表されたLeNet-5や2012年のAlexNet、比較的最近のものでも、2014年のVGG-NetやGoogLeNet、2015年のResNetなどがベンチマークに使われている。

  • ニューラルネットの評価に用いられるネットワーク

    現在でもニューラルネットの評価にはこの図に上げた1998年のLeNet-5や2012年のAlexNetのような古いネットが使われている。新しいものでも2014年、2015年のものである (出典:この連載のすべての図は,Hot Chips 30におけるDeePhi TechのSong Yao氏の発表スライドのコピーである)

しかし、現在では、活性化関数は負の値をゼロにするReLUではなく、負の方も小さな係数を掛けて取り入れるPReLUが使われるようになってきている。また、チャネルごとに重みを変えることも行われている。さらに、すべての入力チャネルがすべての出力チャネルにつながっているわけでもないグループ畳み込みや1×1で畳み込むPoint-wise畳み込みや層ごとに分解して畳み込みを行うというやり方で計算量を削減するDepth-wise畳み込みなども広く用いられてきている。

  • 活性化関数

    活性化関数はReLUだけでなくPReLUも広く使われてきている。チャネルごとに重みを変える畳み込みやグループ畳み込み、Depth-wiseとPoint-wiseの畳み込みも良く使われる

また、DenseNetの場合は、各層のデータの利用は必ずしも層の順番にはなっていないし、Dilated Convの場合は、畳み込みカーネルが密でない場合もある。Deformable Convという畳み込みのようにカーネルが長方形でない処理もある。

このような新しい処理は、2015年以前の古いネットワークの処理をターゲットに設計されたアクセラレータではうまく対応できない。

  • 最新のニューラルネットワーク

    DenseNetでは順番になっていない層の結合がある。Dilated Convでは重みが密行列ではない。Deformable Convでは重みが長方形とは限らない

DeePhiはXilinxのFPGAを使って「DPU-V1」、「DPU-V2」、「DPU-V2.5」というアクセラレータを作ってきている。Zynq 7020を使うDPU-V1チップ全体のディープラーニング演算性能は120GOpsであるが、ZU9 FPGAを使うDPU-V2では2700GOpsとなり、おなじZU9 FPGAであるが、DPU-V2.5では4100GOpsまで性能が上がってきている。

改良により、性能が向上

DeePhiは、より良いスケジューリング、高いリソース利用率とサポートする機能の拡充、処理の柔軟性を目指してアクセラレータの改良を続けているという。

  • DeePhiのアクセラレータの諸元の一覧

    DeePhiのアクセラレータの諸元の一覧。ZU9 FPGAを使うDPU-V2.5ではピーク演算性能は4.1Topsに達する

DPU-V1は畳み込みのカーネルは3×3だけで、ストライドは1だけ。プーリングのカーネルは2×2でストライドは2だけで、活性化関数はReLUだけと選択の幅が小さかったが、DPU-V2ではカーネルのサイズやストライドが任意に選べるようになり、DPU命令をフェッチ、デコードして実行していく構造になった。

  • DPU-V1からDPU-V2への進歩

    DPU-V1からDPU-V2への進歩。サポートされている構成が限定されていたDPU-V1に対して、DPU-V2では畳み込みのカーネルのサイズやストライドが任意となったり、プーリングの選択も増えた

そして、DPU-V2.5では入力のフィーチャーマップの持ち方も(a)~(e)のバリエーションがサポートされ、畳み込みにはDeconv、Dilated Conv、Depth-wise Convのサポートが加わっている。活性化関数には、PReLUやLeakey ReLU、Sigmoidなどのサポートが加わっている。

  • DPU-V2.5の概要

    DPU-V2.5ではサポートされるフィーチャーマップの持ち方が増え、畳み込みの計算もDilated ConvやDepth-wise Convがサポートされた

次の図は、Tesla P100を使った場合のReNet-50を基準としたMobileNet-v1とMobileNet-v2のパラメタ数、計算量、実行時間の改善の割合を比較したものである。MobileNet-v1ではパラメタ数は1/6.1に減り、計算量は1/6.8、実行時間は1/3.1になっている。また、MobileNet-v2では、それぞれ1/7.3、1/12.9、1/2.8になっている。いずれも改善されているが、パラメタ数や計算量ほどには実行時間は減っていない。

とは言え、実行時間は1/3程度に短縮されており、実行時間が計算量ほど減っていないからと言ってMobileNetを使わない手はない。

  • MobileNet-v1/v2の概要

    ResNet-50をベースとして、MobileNet-v1 とMobileNet-v2のパラメタ数、計算量、処理時間の改善の度合い。パラメタ数や計算量の低減に比べて処理時間の改善は小さい

次の図はDeePhiのZU9 FPGAを使ったアクセラレータで各種ネットワークの計算量と実行性能を比較したものである。MobileNet-v2の計算量と、1フレームの処理時間を基準として、VGG-16、GoogLeNet、ResNet-50の計算量と実行時間の長さの度合いを棒グラフで示している。

これらの結果でも計算量が多い割合よりも、処理時間の増加の度合いは小さく、VGG-16、GoogLeNet、ResNet-50はMobileNet-v1よりもハードウェアにとっては処理しやすい。つまり、新しいMobileNetはハードウェアとしては扱いにくいネットワークになっているという傾向が読み取れる。

  • MobileNet-v1の性能概要

    DeePhiのZU9 FPGAを使うアクセラレータでMobileNet-v1を基準として、VGG-16、GoogleNet、ResNet-50の計算量とイメージ処理の1フレームの処理時間を比較したものである。VGG-16などの古いネットは、計算量は大きいが、処理時間は計算量ほどには長くなっておらず、ハードウェアにとっては処理しやすい

次の図の左はVGG-16の各層での通信と計算の比率(CTC Ratio)を示す。右側のグラフはMobileNet-v1のCTC Ratioをしめす。これらを一見して分かるのは、MobileNet-v1ではCTC Ratioが非常に大きいことである。MobileNetでは各層でPoint-wise Convが使われているが、Point-wise Conv はメモリを飛び飛びにアクセスするので、メモリ律速になり、計算が進まないので、CTC Ratioが大きくなっていると考えられる。

  • MobileNet-v1の性能概要

    VGG-16(左)とMobileNet-v1(右)の各層の処理のCTC Ratio。VGG-16の場合は通信比率最大のLayer1でも0.02であるが、MobileNetではPoint-wise Conv層のCTC Ratioはすべて0.1を超えている