【问题标题】:Docker installing multiple versions of cuda on ubuntu 16.04Docker 在 ubuntu 16.04 上安装多个版本的 cuda
【发布时间】:2021-11-15 16:04:40
【问题描述】:

首先,我还是 docker 的初学者。
我需要运行多个版本的 TensorFlow,每个版本都需要一个特定的 cuda 版本。
我的主机操作系统是 ubuntu 16.04
我需要在我的操作系统上有多个版本的 cuda,因为我正在处理多个项目,每个项目都需要不同版本的 cuda。我尝试使用 conda 和虚拟环境来解决这个问题。过了一会儿,我放弃了,开始寻找替代品。 显然虚拟机无法访问 GPU,只有拥有特定的 gpu 类型才能运行官方的 NVIDIA 可视化器。
我有一个 NVIDIA 1080 gpu。我安装了 Ubuntu 16.04 的新镜像,并开始使用 dockerfiles 为我的项目创建自定义镜像。

我试图避免使用 docker 以避免复杂性,在我安装和运行多个版本的 cuda 失败后,我转向了 docker。显然,如果您不在主机上安装 cuda 驱动程序,您将无法直接通过 docker 访问 cuda。
我仍然不确定是否可以运行与我安装在我的电脑中的 cuda 版本不同的 docker 容器。
如果是这样的话,英伟达就搞砸了。通常,如果他们不需要使用 docker,我们会避免使用它来克服额外的复杂性。当我们需要使用多个环境时,conda 和虚拟环境都失败了。我们前往码头。所以如果 nvidia 将 docker 容器中的使用限制为一个 cuda 版本,他们只打算允许开发人员在每个操作系统上处理一个具有特殊依赖项的项目。
请确认我是否可以运行每个都有特定的容器cuda 版本。

此外,如果有人指出如何使用 conda 环境构建 docker 文件以及如何在 docker 容器中运行 conda env 的指南,我将不胜感激。

【问题讨论】:

  • 不太清楚你在问什么:如果你可以从 Docker 内部运行 CUDA,那么为什么不创建多个镜像,每个镜像都有其特定的 CUDA 版本?相应地标记每个图像(例如,在标记中包含 CUDA 版本)。我认为混淆可能在于 imagecontainer 之间的区别。您基于给定的图像运行容器。您可以使用所需的任何版本的软件构建映像,这些软件将在您运行时执行。
  • 请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。

标签: docker cuda ubuntu-16.04


【解决方案1】:

使用 Docker 可以拥有多个 CUDA 版本。此外,它们都不需要在您的主机上,您可以将 CUDA 放在一个容器中,而 IMO 是它的最佳选择。

要在容器中启用 GPU 支持并在其中使用 CUDA,您需要安装所有这些:

获得这些后,您只需获取官方tensorflow 图像之一(如果内置的python 版本适合您的需要),安装pip 包并在几分钟内开始工作。 CUDA 包含在容器镜像中,您不需要在主机上使用它。

这是一个示例 docker-compose.yml 以使用 tensorflow-gpu 启动容器。容器所做的只是测试是否有任何可用的 GPU 设备。

version: "2.3"  # the only version where 'runtime' option is supported

services:
  test:
    image: tensorflow/tensorflow:2.3.0-gpu
    # Make Docker create the container with NVIDIA Container Toolkit
    # You don't need it if you set 'nvidia' as the default runtime in
    # daemon.json.
    runtime: nvidia
    # the lines below are here just to test that TF can see GPUs
    entrypoint:
      - /usr/local/bin/python
      - -c
    command:
      - "import tensorflow as tf; tf.test.is_gpu_available(cuda_only=False, min_cuda_compute_capability=None)"

使用docker-compose up 运行此程序,您应该会看到其中包含 GPU 规格的一行。它看起来像这样并出现在最后:

test_1 | 2021-01-23 11:02:46.500189:我 tensorflow/core/common_runtime/gpu/gpu_device.cc:1402] 创建了 TensorFlow 设备(/device:GPU:0,内存为 1624 MB)-> 物理 GPU(设备:0,名称:GeForce GTX 1050,pci 总线 ID:0000:01:00.0,计算能力:6.1)

【讨论】:

  • 你的女仆我的一天!非常感谢您的详细解释。我现在按照说明进行操作。完成程序后我会报告。
  • 昨天我安装了所有的包。当我安装 nvidia 驱动程序时。我从官方 nvidia 页面下载了特定的驱动程序。起初,由于 x 服务器,驱动程序不会安装。所以我进入关闭了lightdm服务并安装了驱动程序。安装后,由于显示驱动程序的问题,我的 ubuntu 无法登录。我仍在尝试在 shell 命令中从终端安装新版本。祝我好运
  • @maryam_hallal 驱动程序是最困难的部分。仔细阅读 nvidia 安装说明,祝你好运。
  • 非常感谢。我能够备份所有以前的工作。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-19
  • 1970-01-01
相关资源
最近更新 更多