我在 ml.p2.xlarge
上使用自定义 Docker 容器与 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
但是当我为一个小
lenet5
运行训练作业时CNN,我在日志中没有看到任何 GPU 事件(并且训练持续时间与非 GPU 实例一样长)。更令人担忧的是,
len(tf.config.experimental.list_physical_devices('GPU')
返回 0
, 和 K.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)
我得到
Executing op _MklMatMul in device /job:localhost/replica:0/task:0/device:CPU:0
确认操作已在 CPU 上发生。
起初我认为我的用例太轻而无法触发 GPU 使用,但似乎根本没有检测到 GPU!我是否缺少使其工作所需的任何步骤或组件?
最佳答案
我建议从 SageMaker 提供的环境开始,以确保您拥有经过测试的、最新的和生产就绪的设置。特别是,对于 Tensorflow 和 Keras,它是:
conda_tensorflow_p*
jupyter 内核 容器 ( container on github , orchestration with python sdk )
关于keras - 由 SageMaker 管理的 AWS ml.p2.xlarge 实例上的 Keras/Tensorflow 未检测到 GPU,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60141029/