Hot Chips 31においてAlibaba Groupは「Ouroboros」と呼ぶテキストからスピーチに変換する推論エンジンを発表した。
Ouroborosは音声で応答する機能をエッジで実現することを目指すものであるが、この発表では実用化されているのかどうかは良く分からなかった。
テキストからスピーチに変換するには、Seq2SeqというGoogleが開発したディープラーニングシステムを使う。Seq2Seqは例えば英文の文字シーケンスを日本語の文字シーケンスに変換するというような機能を持つAIである。ここではテキストの文字シーケンスをMel Spectrogramというものに変換している。
そして、WaveNetというディープラーニングシステムでMel Spectrogramをスピーチに変換している。
次の図は1秒間の音声を出すのにどれだけの計算時間が必要かをデスクトップとサーバのCPUとデスクトップとサーバのGPUで比較したグラフである。青色で示したSeq2Seqの処理時間は短いのであるが、WaveNetのVocoderで音声に変換する緑色の部分に時間が掛っている。エッジで使うには、この部分の処理時間を短縮する必要がある。
Vocoderの処理は、次の図に示したように最下位の入力から隣接するものを纏めていく処理で、これが時系列的に続く。そして毎秒16K回のサンプルを行い、サンプルするごとにニューラルネットの推論計算を行う。結果として、毎秒百万レベルのシーケンシャルな計算を行うことになり、膨大な計算が必要になっている。
それに対する解として発表者などが提案するのはハードウェアのループで、繰り返し処理を実行するというやり方である。このやり方では重みは変わらないので、ニューラルネットの再トレーニングは必要ない。
なお、図の右側に書かれている尾を咥えた蛇がOuroborosである。Ouroborosは始まりも終わりも無い完全なものを意味するそうである。ここではVocoderが円環構造になっていることから名づけられたのではないかと思われる。
次の図のように、Ouroborosは、マトリクスとベクタの積を計算するユニットと各種の関数を計算するユニットとデータバッファでループを作るという構造をとる。
Mel Spectrogramは通常、10msごとにアップデートされ再計算が必要になるが、小さなバッファを設けて、再計算が必要でないときはバッファの値を再利用して、計算を省く。
そして、ハードウェアの構成としては、ReLU、Sigmoid、Tanh、要素ごとの積、要素ごとの和、SoftMaxとランダム選択のユニットをクロスバ経由で接続する。この構造は汎用的で、WaveNet以外にも使用できる。特にWaveRNNとLPCNetはWaveNetと同じオペレータを使っているので、相性が良い。
次の表は、CPU、GPUとCPUと同様にFPGAでFP32で演算した場合、FPGAがINT16で演算した場合の性能等を示している。なお、WaveNet VocoderのトレーニングにはGoogle開発のTacotron2を使っている。
CPUでの実行時間は155.2、GPUでは49.4であるが、FPGAでFP32の場合は実行時間は0.97、INT16の場合は0.33と100倍以上高速になっている。そして、ASICを作りMACを2048個作って800MHzクロックで動作させた場合は0.05となる。また、MAC数を256個に減らしクロックも300MHzとしたASIC-sでは時間は0.47となる。
なお、ASICの性能値は実測ではなくシミュレーションで求めたものである。
次の表は、WaveNetの構成のやり方で性能がどう変わるかを見たもので、ベーシックなWaveNetとTacotron 2を使ってトレーニングしたWaveNetを使った場合のそれぞれの場合で、ハードウェアとしてGPU、FPGA、ASICと小型のASIC-sでの性能を比較している。
そして、赤枠の部分は、GPUの場合を基準にして、それに対して何倍の性能かを示している。
Tacotron 2を使ってWaveNetをトレーニングした場合は、FPGAでは151倍のスピードアップ、ASICは1000倍,ASIC-sは100倍のスピードアップとなった。なお、倍率だけで言うとベーシックなWaveNetの方が大きいが、基準としたGPUの性能が低いので、FPGA、ASICの実性能ではTacotron 2を使った方が速い。
VocoderとしてLPCNetを使った場合、モデルが密か疎かで、CPUを基準にしてFPGA、ASICでの性能向上を比較している。密の場合は、FPGAはCPUの38倍、ASICは54倍の性能である。疎の場合は、FPGAはCPUの16倍、ASICは47倍の性能である。ただし、疎の方がCPUでの実行時間が短いので、FPGAとASICの倍率は小さいが、実行時間では疎の方が短くなっている。
まとめであるが、テキストからスピーチに変換するという処理を取り上げてそれに特化したドメインスペシフィックな処理について検討を行った。その結果、現状のフレームワークを使ってCPUやGPUで実行するというやり方は効率が悪いということが分かった。我々は繰り返しのアルゴリズムの部分の実行にはオンチップのループ用のハードウェアを付加することを提案する。この機構はアクセラレータであり、ニューラルネットの重み自体は変わらないので、モデルを再トレーニングする必要がなく、汎用性が高い。
この論文は、設計スペースを探索したような論文である。しかし、性能を上げ、ドメインスペシフィックな計算のためにハードウェアのアクセラレータを付けるのは、ごく普通の考えである。性能向上案も普通に考えられるようなもので、ちょっと物足りない発表である。
(次回は9月25日に掲載します)