そして、Baidu Speechでの具体的な性能改善については、開発者のBryan Catanzaro氏が登壇して説明を行った。

Baiduの開発者のBryan Catanzaro氏

入力データを読み込むのに必要な時間は54nsで、これは全体の0.2%程度の時間で済む。しかし、ニューロンの各入力の重みは数が多いので、これを読み込むには全体の8%の20μsを必要とする。そして、入力データと重みを掛けて和を取るという計算部分が全体の15%の3.5μs掛かる。

CNNの場合は、全ニューロンの入力の重みを読み込むのに20μs、全体の85%の時間が掛かっている

しかし、RNNの場合は、横方向に並んでいるネットワークの重みは同じであるので、一度読み込んで、すべてのネットワークにコピーしてやれば良い。そうすると、入力データのロードと重みのロードがそれぞれ1.5%の時間で済み、97%の時間を積和計算に使えるようになる。

RNNの場合は、横方向に並んだネットワークの重みは同じであるので一度読めばよい。このため、97%の時間を積和計算に使うことができる

普通のネットワークでは、使用するGPUを100個以上に増やしても50TFlops程度で性能が飽和してしまうが、RNNの場合は、このような処理を行うことにより、スケーラビリティが大幅に改善し、100GPUで190TFlopsと4倍近い性能が得られる。

RNNの場合は重みの読み込みが減り、ストロングスケーリングが可能になる

BaiduやGoogleなどでは、膨大な数のユーザがニューラルネットにアクセスして認識を行う。このため、学習済みのニューラルネットを使うInference処理が大きな負荷となる。普通にCPUで処理する場合は、4人のユーザが居れば、4つのInference処理を並列に実行し、それぞれのユーザに認識結果を返す。

普通のCPUの処理では、ユーザ数だけInference処理を実行する

しかし、Baiduでは4ユーザの処理をまとめてバッチとして処理を行い、その結果を4人のユーザに分配するバッチディスパッチという方法を使っている。バッチ処理の場合は重みの読み込みなどは一回行えば良いので、Inference処理あたりのオーバヘッドを減らすことができる。

GPUを使って、このように処理することにより、同じ応答レーテンシを維持して7倍の数のユーザを処理することができるようになったという。

Baiduは多数の処理をまとめて実行するバッチディスパッチという処理を行っている。これにより、同じ応答時間を維持して7倍のユーザ要求を処理できるようになった

ディープラーニングのトレンドの第2は、より複雑な出力にチャレンジするようになっている点である。E-mailのスパム判定やイメージの認識は実用レベルに達し、現在は、オーディオの言語認識、イメージなら説明文を付けるキャプショニング、異なる言語間の翻訳、文法の崩れたテキストの理解などに開発の主力は向かっている。

しかし、分野が広がるにつれ、正解のラベル付きのデータが少ないことが制約になって来ているという。写真を見て、コーヒーマグが写っているかどうかのYes/Noを付けるのは簡単であるが、いろいろな対象が写っている写真にどのような説明文を付けるのが正解かというのは容易ではない。

簡単な認識から、より複雑な出力を出す問題に研究の対象は移っている。しかし、学習のための正解データが少ないことが問題

このようなAIの発展で影響を受けるのは、どのような分野であろうか? ヘルスケア、製造、メディアやエンタテイメント、運輸などの業界が大きな影響を受けると考えられるが、詳細はNg氏のTwitterを参照いただきたい。

発展するAIは、ヘルスケア、製造、メディアやエンタテイメント、運輸などの業界に大きな影響を与えると考えられるが、詳細はNg氏のTwitterを見て戴きたい