class chainer.training.updaters.MultiprocessParallelUpdater(iterators, optimizer, converter=<function concat_examples>, devices=None)[source]

マルチプロセス並列 GPU Updaterの実装。

 

これは複数のGPUを複数プロセスでデータを並列処理する Updater の実装です。 複数の GPU間でコミュニケーションするために Nvidia NCCL を使用します。これは StandardUpdaterのように動作します。

更新ルーチンは1台のマシンにおける複数のGPUでのデータ並列処理をサポートするために変更されます。これは、synchronous parallel SGD(同時並列確率的勾配降下法)に基いています。つまり、ミニバッチへ行われる勾配計算を並列処理し、メイン・デバイスにおいてのみ、パラメータを更新します。

Reporter によってサブデバイスで収集された値は、メインデバイスへ転送されません。ですから、メイン・デバイスで報告された値のみを見ることができます。

 

Parameters:
  • iterators – 訓練データセットのためのDataset iterator のリスト。Iteratorの数は、計算に使用するGPUの数と同数でなければならない。
  • optimizer – 更新パラメータのOptimizer。このモデルはこのOptimizerへ紐付けられる。
  • converter – 入力配列を構築する変換関数。Iteratorによって抽出された各バッチはデバイス間で均等に分割され、 この関数に対応するdevice オプションとともに渡される。 concat_examples() が、デフォルトで用いられる。
  • devices – 訓練データが送られるデバイスの辞書もしくはリスト。マスター・デバイスはリストの先頭になるか、値が  'main' キーに紐付けられる。

 

Methods

static available()[source]
connect_trainer(trainer)[source]

 Updater をTrainerに接続する。

 

のメソッドの一般的な使用方法は。TrainerのReporterの追加のLinkを更に登録することです。このメソッドは、Trainerの初期化の終わりに呼ばれます。デフォルト実装では何も行いません。

 

Parameters: trainer (Trainer) –Updaterが登録されたTrainer オブジェクト
finalize()[source]
get_all_optimizers()[source]

このUpdaterのための全てのOptimizerの辞書を取得する。

 

Returns: 名前をOptimizerにマップする辞書
Return type: dict
get_iterator(name)[source]

与えられた名称のDataset iteratorを取得する。

 

Parameters: name (str) –Dataset iteratorの名称
Returns: 与えられた名称に相応するDataset iterator
Return type: Iterator
get_optimizer(name)[source]

与えられた名称のOptimizerを取得する。

 

Parameters: name (str) – Optimizerの名前
Returns: 与えられた名称に相応するOptimizer
Return type: Optimizer
serialize(serializer)[source]

Updater オブジェクトのカレントステートをシリアル化します。

setup_workers()[source]
update()[source]

ターゲットモデルのパラメータを更新します。

 

このメソッドは訓練タスクのための更新式を実装します。訓練タスクにはデータのロード、順方向/逆方向の計算、実際のパラメータの更新処理を含みます。

このメソッドは訓練ループの各反復処理毎に1回だけ呼び出されます。

update_core()[source]

Attributes

epoch
epoch_detail
is_new_epoch
previous_epoch_detail