ANNは、推論に使用することで効果が得られる。推論は「ANNがタスクを実行する訓練プロセスを完了して得たパラメータを使って、与えられた入力を計算して数値結果を出す」ときに起こることを指す用語だ。推論は高速に、ほぼどこでも行われる。例えば、携帯電話やIoT(モノのインターネット)のエッジデバイスといった低消費電力デバイスでも行われる。
コンピュータサイエンスの観点から見ると、推論は基本的に逐次計算であり(※1)、メモリ帯域幅に制約される。推論が並列化されるのは、例えば、データセンターで大規模な推論演算が多数与えられ、それらがバッチ処理できる場合に限られる。これに対し、訓練は非常に並列的だ。作業の大部分は、訓練用のパラメータセットを全てのサンプルにわたって評価することだからだ。
この逐次と並列の違いは重要だ。その理由は以下の通り。
市販のハードウェアは全て、並列処理を利用して訓練を高速化している。そこで課題となるのが、どのようなデバイスが訓練を高速化し、モデリング時間を最小化してくれるのかを判断することだ。
訓練プロセスの各ステップでは、モデルパラメータセットの候補(ブラックボックス最適化アルゴリズムで決定された)を、訓練データの全てのサンプルそれぞれに適用して推論を行う。この並列演算で生成された値は、エラー(またはエネルギー)を計算するために使われる。エラーは最適化アルゴリズムによって成功を判断したり、次のモデルパラメータセット候補を計算したりするのに使われる。
この評価は、SIMD(Single Instruction Multiple Data)計算モデルを使って非常に効率的に実行できる。目的関数(コスト関数)の推論演算は全て同時並行で行われるからだ。
ここで重要なポイントは次の通り。
ほとんどのデータセットでは、訓練パフォーマンスは浮動小数点演算機能ではなく、キャッシュやメモリの性能によって制限されることが分かっている。
メモリおよびキャッシュシステムが飽和状態になると、浮動小数点演算機能が増強されていても無駄になってしまう。浮動小数点演算性能のピーク値の高さをうたうデバイスの仕様だけを基準にして購入すると、自分の首を絞めることになる。
さもないと、性能が浪費されてしまう。一般に考えられているのとは異なり、CPUは多くの訓練問題で、GPUよりも高い訓練パフォーマンスを提供可能だ。アクセラレータが高い浮動小数点演算性能を発揮するのは、同時実行スレッドが多数ある場合だ。サンプル数が数百から数万のデータセットによる訓練では、アクセラレータの並列処理機構のごく一部しか利用されない可能性がある。
そうした状況では、高速なキャッシュやスタックドメモリサブシステムを備えるメニーコアプロセッサ(「Intel Xeon Phi」プロセッサのような)の方が優れたパフォーマンスを実現するかもしれない。そのため、ハードウェアを選ぶときは、訓練のためにどれだけのデータを用意できるかを検討することが重要だ。
Copyright © ITmedia, Inc. All Rights Reserved.