Hot Chips 30において、Mythicというスタートアップ企業がアナログ演算を使う「IPU(Intelligence Processor Unit)」と呼ぶ低電力、高性能のAIの推論(Inference)用のチップを発表した。

  • MythicのDave Fick CTO

    Hot Chips 30においてMythicのAI Inferenceチップを発表する同社のDave Fick CTO

ディープラーニングの推論は、入力ベクタと重み(Weight)マトリクスを掛けるという処理が演算の主要な部分を占める。この演算では入力Xiは同じものが何度も使用されるが、マトリクスの要素は再利用されないので、1回の演算ごとにメモリから読み出す必要があるので、多くのメモリアクセスを必要とする。

  • ディープラーニングの演算はベクタとマトリクスの乗算が主要な計算となる

    ディープラーニングの演算はベクタとマトリクスの乗算が主要な計算となるが、この時、マトリクスの要素は1回の演算に1回の読み出しが必要になる (出典:このレポートのすべての図は、Hot Chips 30におけるMythicのDave Fick CTOの発表スライドのコピーである)

次の図の中の表に、AlexNetを始めとする5種のDNN(Deep Neural Network)の諸元がリストされているが、一番小さいResNet-18でも1100万個の重みを使っている。そして、この表の中では最大のVGG-19は1億4400万個の重みを必要とする。そして毎秒30フレームを処理する場合、積和演算の回数はAlexNetの場合でも毎秒22B回になる。

このため、エッジデバイスで許容される電力(例えば5W程度)の消費電力で高性能を実現できる高エネルギー効率の計算処理ができることが重要である。

  • 右の表は5種のDNNの重み、MAC演算の回数、毎秒30フレームの処理を行う場合のMAC演算の回数を示している

    右の表は5種のDNNの重み、MAC演算の回数、毎秒30フレームの処理を行う場合のMAC演算の回数を示している。重みの数は10M以上、毎秒のMAC演算回数は20Bを超える。エッジデバイスでは高性能でエネルギー効率が高く、全体がエッジデバイスで許容される電力で動作することが求められる

重みの読み出しエネルギーの低減が重要であることは以前から認識されており、いろいろなエネルギー低減手法が考えられてきた。

1つのアプローチは、重みの再利用で読み出し回数を減らすという方法である。CNNにフォーカスして複数のウインドウで重みを共用する方法があるが、CNN以外のニューラルネットでは使えない。バッチのサイズを大きくして、重みの読み出し回数を減らす方法もあるが、エッジデバイスではバッチサイズは通常1であり、バッチサイズを増やすとレーテンシーが長くなるという問題がある。

もう1つのアプローチは重みの数を減らすというやり方である。必要な重みの数が少ない、より簡単化したモデルを使う方法があるが、これは認識能力が低下する恐れがある。重みマトリクスの要素は0または非常に小さい値が多いので、それらを除いて計算するという方法は広く用いられているが、減らしすぎると認識能力が低下する恐れがある。また、重みの表現を、例えば32bit浮動小数点数であったものを8bit整数にするとかで、重みのbit数を切り詰める方法も広く用いられているが、これもやりすぎると認識能力が低下する恐れがある。

  • Mythicの問題点

    メモリから読み込んだ重みの再利用回数を増やす、あるいは、重みの数を減らした簡単化したモデルを使う、0あるいは小さな値の重みを計算から省く、重みを表現するビット数を減らすなどの方法が使われているが、うまく適用できない場合や、認識能力が低下するなど、問題が出る場合もある

AIエンジンを設計する場合の基本的な選択として、DRAMを使うのか使わないのかがある。DRAMを使えば、モデルに必要な大量の重みを格納でき、チップ上に必要なSRAMの容量も小さくできる。

一方、DRAMの読み出しには大きなエネルギーが必要になる。また、DRAMのメモリバンド幅が重みの読み出し、ひいてはマトリクスの積和演算の性能を制約することになる。また、性能やエネルギー効率がアプリケーションにより変動するなどの問題がある。

  • DRAMを使うかどうかは設計の大きな分かれ道

    DRAMを使うかどうかは設計の大きな分かれ道。DRAMを使えば重みの記憶領域は十分で、SRAMも小さくて済む。しかし、DRAMはアクセスに必要なエネルギーが大きく、メモリバンド幅が性能の制約になる場合もある

次の図は各種の設計ポイントのメモリ、電力、精度、性能などを比較した表で、左の列から順に、DRAM使用のエンタプライズ向け、DRAM無しのエンタプライズ向け、DRAM使用のエッジ向け、DRAM無しのエッジ向けの設計の諸元を示す。

エンタプライズ向けは消費電力は大きいが高い性能が得られる。エッジ向けは、非常に性能が低く、DRAM無しでは精度も低いという問題がある。

それに対して、右端のMythicのアプローチは、DRAM不要で精度が高く、性能も高い。それで消費電力は1-5Wに収まっている。

  • DRAMの有無とMythicのアプローチ

    エンタプライズ向けDRAMあり、エンタプライズ向けDRAM無し、エッジ向けDRAMあり、エッジ向けDRAM無しとMythicのアプローチの諸元の比較。エンタプライズ向けは性能は高いが消費電力が大きい。エッジ向けは性能が低く、DRAM無しでは精度も低いという問題がある。Mythicのアプローチは性能が高く、精度も保て、消費電力も1-5Wでエッジ向けに使用できる電力である

Mythicは行列積メモリという新しいアプローチを導入している。次の図の右側に見られるように、ビット線とワード線の交点にMOSトランジスタが並んでいるのが、簡単化して書いた行列積メモリの回路図である。このトランジスタは富士通の40nmのFlashメモリテクノロジで作られ、MOSトランジスタのゲート絶縁膜(あるいはフローティングゲート)に溜めた電荷で重みの情報を記憶することができる。

そうなると、積和演算器のセル自体が重みを記憶するので、重みを記憶するDRAMやSRAMメモリが不要になり、重みメモリを読むためのエネルギーも不要になるので、良いことづくめである。

  • Mythicの行列積メモリの構造

    Mythicの行列積メモリは、組み込みFlash技術を使うトランジスタでMACアレイを作る。重みをFlashトランジスタが記憶し、自動的に重みの値が使われるので、読み出しのエネルギーも不要である

MOSトランジスタは、Vds(Drain-Source間電圧)がVgs-Vth(Gate-Souce間電圧 - しきい値電圧)より小さい領域ではDrain-Source間は線形の抵抗に見える。したがって、トランジスタを流れる電流は、Vds×Pgsとなる。ここでPgsは抵抗Ωgsの逆数である。

ここで、Pgsを重みとし、Vdsを入力としてやれば掛け算が行えることになる。そして、加算される項の全部のトランジスタのSourceを1本の線にまとめれば、電流の合計で加算が実行できる。

Flashメモリの場合はQLCの場合でも16レベルの書き込みであるが、MythicのIPUでは整数8bitに対応する256レベルの書き込みを行う。Flashメモリに比べて非常に高い精度の書き込みが要求されるが、一旦書き込んで、書き込まれた値を読み出して、ずれを補正する小さな書き込みを行って誤差を減らという処理を繰り返せば、書き込み時間は掛かるが、書き込み精度を上げることができる。

また、MythicのWebから閲覧できるMicroprocessor Reportによると、記憶セルは2個のトランジスタを使い、2つのトランジスタの差で-128~+128を記憶させているという記述もあり、個々のトランジスタのVthの書き込み精度は、もう少し緩和されるのかも知れない。

また、Flashトランジスタのゲート絶縁膜(あるいはフローティングゲート)に溜められた電荷がリークで逃げるとVthが変化し、重みが変わってしまう。また、温度が変わるとシリコンの電気的特性が影響を受け、重みが影響を受ける。しかし、リークの影響は、毎日の始業時に再書き込みを行うような使い方をすれば問題にならないという。また、温度の影響は補正ソフトウェアを組み込んでいるという。

なお、最初のMythicのチップではDA変換器は持たず、デジタルの近似回路を使っているという。

  • 組み込みFlashトランジスタのアレイでMAC演算器のアレイを作る

    組み込みFlashトランジスタのアレイでMAC演算器のアレイを作る。個々のトランジスタはFlashの書き込みで値を決められる抵抗に見える。そして、入力をアナログ電圧に変換してトランジスタに印加すると、入力電圧×(抵抗値の逆数)に比例した電流が流れて掛け算ができる。この合計の電流をAD変換器でデジタルに変換する

(後編はコチラ)