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

标签 keras gpu amazon-sagemaker

我在 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,它是:

  • 在 SageMaker 笔记本上,conda_tensorflow_p* jupyter 内核
  • 对于 SageMaker 训练和推理任务,TensorFlow 框架
    容器 ( container on github , orchestration with python sdk )
  • 关于keras - 由 SageMaker 管理的 AWS ml.p2.xlarge 实例上的 Keras/Tensorflow 未检测到 GPU,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60141029/

    相关文章:

    python-3.x - 如何使用 AWS Lambda 在 AWS Sagemaker 中远程启动 Jupyter Notebook

    machine-learning - 为什么不同的批量大小在 Keras 中给出不同的精度?

    python - 如何在 Keras 中使用 TensorFlow 指标

    python - 如何在 Keras 中返回验证丢失的历史记录

    ubuntu - AMD OpenCL 未将 Intel HD 4000 检测为 GPU 设备

    python - SageMaker 创建 PyTorchModel 而不部署

    aws-sdk - 在 aws SageMaker 容器中设置 env 变量(自带容器)

    python - 如何获取 Keras 模型的可训练参数数量?

    architecture - GPU - 系统内存映射

    performance - "Intrinsics"可能在 OpenGL 上的 GPU 上吗?