インテル® DAAL 2018 デベロッパー・ガイド

分散処理

ニューラル・ネットワーク訓練に分散処理モードを使用できます。分散処理モードのニューラル・ネットワーク訓練のアプローチは、以下の種類の並列化に基づきます。

ライブラリーは、データベースの並列化をサポートします。

データベースの並列化

データベースの並列化アプローチには、次の特徴があります。

ライブラリーは、データベースの並列化を使用するニューラル・ネットワーク・モデルのパラメーターを更新する次の方法をサポートします。

計算

データベースの並列化を使用するニューラル・ネットワーク・モデルの訓練フローには次のステップが含まれます。

  1. マスターノードの initialize() メソッドを使用してニューラル・ネットワーク・モデルを初期化し、モデルをローカルノードに伝えます。

  2. 「使用モデル: 訓練と予測」 > 「訓練」セクションで説明されているように、ローカルノードの訓練アルゴリズムを実行します。

    • ニューラル・ネットワークの j 番目のノードにサイズ localDataSizej のローカル・データ・セットを提供します。
    • 必要な batchSizej パラメーターを指定します。
    • ローカル・アルゴリズムで別々に処理されるように、ローカルノードのデータセットを localDataSizej/batchSizej データブロックに分割します。
    • 同期計算の場合、batchSizej パラメーターと localDataSizej パラメーターはすべてのローカルノードで同じでなければなりません。非同期計算の場合は異なる値を使用できます。

    次の図の、i 番目のデータブロックに対応する、i 番目の反復を参照してください。ローカルノードの i 番目のデータブロックの計算が完了した後、ローカルの重みとバイアスの導関数をマスターノードに送ります。

    ローカルノードの訓練アルゴリズムには最適化ソルバーは必要ありません。

  3. すべてのローカルノードからローカルの導関数を提供してマスターノードの訓練アルゴリズムを実行します。アルゴリズムは、optimizationSolver パラメーターで提供される最適化ソルバーを使用します。利用可能なアルゴリズムは、「最適化ソルバー」を参照してください。計算が完了した後、モデルの更新された重みとバイアスのパラメーターをすべてのローカルノードに送ります。

    マスターまたはローカルノードの訓練アルゴリズムを実行した後、finalizeCompute() メソッドを呼び出すと、モデルの最新バージョンを取得できます。

  4. すべてのデータブロックに対して計算 2 - 3 を実行します。訓練プロセスが完了した後、マスターノードで訓練されたモデルの getPredictionModel() メソッドを呼び出して検証および予測に使用されるモデルを取得します。


ニューラル・ネットワーク訓練の分散処理の i 番目の反復のワークフロー