DPU-Vでの処理の流れ
MobileNetでは、まず、層ごとに分解したDepth-wise Convを行い、その後に層間の1×1のPoint-wise Convを行っている。そしてPoint-wise/Depth-wiseのワークロードの比率は棒グラフを見ると3~228まで変動している。このため、DeePhiはDepth-wise ConvとPoint-wise Convの入力バッファを分離し、Depth-wiseは1個のPEで処理し、Point-wiseは4個のPEで並列に処理するアーキテクチャを使うことを考えている。
DeePhiのZU9を使うアクセラレータには2個のコアが載っており、それぞれのコアが1024KBのBRAMを使っている。VGG-16の場合は87.3%の平均リソース使用率であり問題ないが、Inception-v1では36.7%、ResNet-50では39.3%、MobileNet-v1で45.8%とリソースの利用率が低い。しかし、2048KBのBRAMが使えるとして、Depth-wise層とPoint-wise層を融合して処理を行うと、シミュレーションの結果では、Inception-v1は72.1%、ResNet-50は63.9%、MobileNet-v1は63.9%までリソース使用率を高めることができる。
DeePhiではDNNDKという開発環境を提供している。DNNDKは、精度に大きな影響を与えない範囲で、非常に重みの値が小さい枝を削除するプルーニング(枝刈り)や重みの値を量子化し、FP16での処理をINT8での処理に変更するようなネットワークの簡素化を行う。これで必要なメモリを削減し、計算速度が向上し、消費電力も減らせる。
DNNDKの中にあるコンパイラは、次の図に示すようにいろいろな形の層の処理を融合して最適化を行う。また、メモリ割り付け、スケジュール、再利用を促進して実行性能を改善する。
これからのディープラーニングに有利なFPGA
まとめであるが、ディープラーニングのアルゴリズムの進化の速度は加速している。最近のMobileNetなどでは、昔のネットワークに処理に特化したアクセラレータではうまく高速化できないタイプの処理が増えてきている。
このため、DeePhiはコンパイラの最適化でDepth-wiseとPoint-wiseの畳み込みの処理を高速化するというアプローチを提案する。また、今後出てくる新しいネットワークに対しても新しい最適化法を考える必要がある。
ASICのアクセラレータは、設計や製造に時間が掛かるので、進化の速度は遅くなってしまう。これに対してFPGAを使うアクセラレータは構成を変えるたけで最新のディープラーニング技術を利用することができる。
DeePhiは新しいアルゴリズム、新しいアクセラレータを追求する会社であり、急速なディープラーニングの進歩に追従できるFPGAの方がASICやGPUなどを使うよりも効率的であると考えている。