Kerasは複数のGPUを指定し、複数のGPUを使ってトレーニングする.
1694 ワード
Keras指定複数GPU
データパラレル https://keras-zh.readthedocs.io/utils/ )
データ並列は、各デバイスにおいてターゲットモデルを複製し、各モデルのコピーを用いて異なる部分の入力データを処理することを含む.
Kerasは、任意のモデルのデータ並列バージョンを生成することができます.8つまでのGPUで準線形加速を実現します.
詳細については、multi ugupumodelのドキュメントを参照してください.ここでは、高速な例です.
モデル保存について
マルチGPUモデルを保存するには、テンプレートモデル(転送先)を使ってください.
model.save(…) ではなく parallel_modell.save(…)
GPUのダイナミック成長は、すべて満遍なく現存し、必要に応じて分配されます.
誤報があるかもしれません.TypeError:can’t pickle thread.lock object
解決方法:ユーザー定義(Model Checkpointチェックポイント)コールバック関数
Reference:https://blog.csdn.net/z5217632/article/details/80952372
import keras.backend.tensorflow_backend as KTF
import tensorflow as tf
import os
os.environ["CUDA_VISIBLE_DEVICES"] = "0,1,4,5,8,9"
複数のGPUを使って訓練します.データパラレル https://keras-zh.readthedocs.io/utils/ )
データ並列は、各デバイスにおいてターゲットモデルを複製し、各モデルのコピーを用いて異なる部分の入力データを処理することを含む.
Kerasは、任意のモデルのデータ並列バージョンを生成することができます.8つまでのGPUで準線形加速を実現します.
詳細については、multi ugupumodelのドキュメントを参照してください.ここでは、高速な例です.
from keras.utils import multi_gpu_model
model = Sequential()
model.add(...)
......
......
# `model` 8 GPU 。
# 8 GPU。
parallel_model = multi_gpu_model(model, gpus=8)
parallel_model.compile(loss='categorical_crossentropy',
optimizer='rmsprop')
# `fit` 8 GPU 。
# batch size 256, GPU 32 。
parallel_model.fit(x, y, epochs=20, batch_size=256)
モデルを保存モデル保存について
マルチGPUモデルを保存するには、テンプレートモデル(転送先)を使ってください.
multi_gpu_model
のパラメータを呼び出します .save(fname)
または .save_weights(fname)
を選択します. multi_gpu_model
モデルを返しますmodel.save(…) ではなく parallel_modell.save(…)
GPUのダイナミック成長は、すべて満遍なく現存し、必要に応じて分配されます.
import keras.backend.tensorflow_backend as KTF
import tensorflow as tf
import os
os.environ["CUDA_VISIBLE_DEVICES"] = "1"
config = tf.ConfigProto()
config.gpu_options.allow_growth=True # ,
sess = tf.Session(config=config)
KTF.set_session(sess)
誤報があるかもしれません.TypeError:can’t pickle thread.lock object
解決方法:ユーザー定義(Model Checkpointチェックポイント)コールバック関数
Reference:https://blog.csdn.net/z5217632/article/details/80952372