Hot Chips 30において、Mythicというスタートアップ企業がアナログ演算を使う「IPU(Intelligence Processor Unit)」と呼ぶ低電力、高性能のAIの推論(Inference)用のチップを発表した。
ディープラーニングの推論は、入力ベクタと重み(Weight)マトリクスを掛けるという処理が演算の主要な部分を占める。この演算では入力Xiは同じものが何度も使用されるが、マトリクスの要素は再利用されないので、1回の演算ごとにメモリから読み出す必要があるので、多くのメモリアクセスを必要とする。
次の図の中の表に、AlexNetを始めとする5種のDNN(Deep Neural Network)の諸元がリストされているが、一番小さいResNet-18でも1100万個の重みを使っている。そして、この表の中では最大のVGG-19は1億4400万個の重みを必要とする。そして毎秒30フレームを処理する場合、積和演算の回数はAlexNetの場合でも毎秒22B回になる。
このため、エッジデバイスで許容される電力(例えば5W程度)の消費電力で高性能を実現できる高エネルギー効率の計算処理ができることが重要である。
重みの読み出しエネルギーの低減が重要であることは以前から認識されており、いろいろなエネルギー低減手法が考えられてきた。
1つのアプローチは、重みの再利用で読み出し回数を減らすという方法である。CNNにフォーカスして複数のウインドウで重みを共用する方法があるが、CNN以外のニューラルネットでは使えない。バッチのサイズを大きくして、重みの読み出し回数を減らす方法もあるが、エッジデバイスではバッチサイズは通常1であり、バッチサイズを増やすとレーテンシーが長くなるという問題がある。
もう1つのアプローチは重みの数を減らすというやり方である。必要な重みの数が少ない、より簡単化したモデルを使う方法があるが、これは認識能力が低下する恐れがある。重みマトリクスの要素は0または非常に小さい値が多いので、それらを除いて計算するという方法は広く用いられているが、減らしすぎると認識能力が低下する恐れがある。また、重みの表現を、例えば32bit浮動小数点数であったものを8bit整数にするとかで、重みのbit数を切り詰める方法も広く用いられているが、これもやりすぎると認識能力が低下する恐れがある。
AIエンジンを設計する場合の基本的な選択として、DRAMを使うのか使わないのかがある。DRAMを使えば、モデルに必要な大量の重みを格納でき、チップ上に必要なSRAMの容量も小さくできる。
一方、DRAMの読み出しには大きなエネルギーが必要になる。また、DRAMのメモリバンド幅が重みの読み出し、ひいてはマトリクスの積和演算の性能を制約することになる。また、性能やエネルギー効率がアプリケーションにより変動するなどの問題がある。
次の図は各種の設計ポイントのメモリ、電力、精度、性能などを比較した表で、左の列から順に、DRAM使用のエンタプライズ向け、DRAM無しのエンタプライズ向け、DRAM使用のエッジ向け、DRAM無しのエッジ向けの設計の諸元を示す。
エンタプライズ向けは消費電力は大きいが高い性能が得られる。エッジ向けは、非常に性能が低く、DRAM無しでは精度も低いという問題がある。
それに対して、右端のMythicのアプローチは、DRAM不要で精度が高く、性能も高い。それで消費電力は1-5Wに収まっている。
Mythicは行列積メモリという新しいアプローチを導入している。次の図の右側に見られるように、ビット線とワード線の交点にMOSトランジスタが並んでいるのが、簡単化して書いた行列積メモリの回路図である。このトランジスタは富士通の40nmのFlashメモリテクノロジで作られ、MOSトランジスタのゲート絶縁膜(あるいはフローティングゲート)に溜めた電荷で重みの情報を記憶することができる。
そうなると、積和演算器のセル自体が重みを記憶するので、重みを記憶するDRAMやSRAMメモリが不要になり、重みメモリを読むためのエネルギーも不要になるので、良いことづくめである。
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変換器は持たず、デジタルの近似回路を使っているという。