SageMaker 管理的 AWS ml.p2.xlarge 实例上的 Keras/Tensorflow 未检测到 GPU

jer*_*orx 5 gpu keras amazon-sagemaker

我使用自定义 Docker 容器与ml.p2.xlarge实例上的 SageMaker 配合使用。

基础镜像是tiangolo/python-machine-learning:cuda9.1-python3.7,它通常附带所需的 CUDA 工具包。python 包通过 conda 使用以下极简安装environment.yaml

dependencies:
  - boto3
  - joblib
  - keras
  - numpy
  - pandas
  - scikit-learn
  - scipy
  - tensorflow=2.0
Run Code Online (Sandbox Code Playgroud)

但是,当我为小型lenet5CNN 运行训练作业时,我在日志中看不到任何 GPU 活动(并且训练持续时间与非 GPU 实例一样长)。

更让人担心的是,len(tf.config.experimental.list_physical_devices('GPU')返回时0K.tensorflow_backend._get_available_gpus()却是空的。最后,如果我检查tf.debugging.set_log_device_placement(True)基本操作的设备放置(使用 ),如下所示:

a = tf.constant([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]])
b = tf.constant([[1.0, 2.0], [3.0, 4.0], [5.0, 6.0]])
c = tf.matmul(a, b)
print(c)
Run Code Online (Sandbox Code Playgroud)

我明白了

Executing op _MklMatMul in device /job:localhost/replica:0/task:0/device:CPU:0
Run Code Online (Sandbox Code Playgroud)

确认操作已在 CPU 上进行。

起初我以为我的用例太轻而无法触发 GPU 使用,但似乎根本没有检测到 GPU!我是否缺少此功能所需的任何步骤或组件?

Oli*_*ant 4

我建议从 SageMaker 提供的环境开始,以确保您拥有经过测试、最新且可用于生产的设置。特别是,对于 Tensorflow 和 Keras 来说: