我尝试在cloud ml (google云平台)上运行带有tensorflow后端的Keras。我发现keras似乎不使用GPU。在我的CPU上运行一个epoch的性能是190秒,等于我在转储的日志中看到的性能。是否有一种方法来识别代码是否在GPU或CPU在keras中运行?有没有人尝试过Keras在Cloud ML与张量流后端运行??
更新:截至2017年3月,gpu是公开可用的。参见刘富阳的回答
gpu目前在CloudML上不可用。然而,他们将在接下来的几个月。
是现在支持。
基本上,您需要在模块中添加一个文件,例如cloudml-gpu.yaml
,并包含以下内容:
trainingInput:
scaleTier: CUSTOM
# standard_gpu provides 1 GPU. Change to complex_model_m_gpu for 4
GPUs
masterType: standard_gpu
runtimeVersion: "1.0"
然后添加一个名为--config=trainer/cloudml-gpu.yaml
的选项(假设您的培训模块在一个名为trainer
的文件夹中)。例如:
export BUCKET_NAME=tf-learn-simple-sentiment
export JOB_NAME="example_5_train_$(date +%Y%m%d_%H%M%S)"
export JOB_DIR=gs://$BUCKET_NAME/$JOB_NAME
export REGION=europe-west1
gcloud ml-engine jobs submit training $JOB_NAME
--job-dir gs://$BUCKET_NAME/$JOB_NAME
--runtime-version 1.0
--module-name trainer.example5-keras
--package-path ./trainer
--region $REGION
--config=trainer/cloudml-gpu.yaml
--
--train-file gs://tf-learn-simple-sentiment/sentiment_set.pickle
你可能还想检查这个url的GPU可用区域和其他信息。
import keras.backend.tensorflow_backend as K
K._set_session(K.tf.Session(config=K.tf.ConfigProto(log_device_placement=True)))
应该使keras将每个张量的设备位置打印到标准输出或标准输出。