【问题标题】:Kubernetes Deployment with GPU使用 GPU 部署 Kubernetes
【发布时间】:2019-04-11 10:34:33
【问题描述】:

我正在尝试在带有 GPU 的 Kubernetes 引擎上部署 ML 应用程序。我使用 nvidia/cuda:9.0-runtime 创建了 docker 映像,并在它之上构建了我的应用程序。当我将映像部署到 Kubernetes Engine 时,我收到一条错误消息,指出它无法导入 libcuda.so.1。

ImportError: libcuda.so.1: cannot open shared object file: No such file or directory

我查看了一些发布的解决方案,但似乎没有一个有效。

在尝试这些解决方案时,我还发现

提到的路径

echo $LD_LIBRARY_PATH

这给了

/usr/local/nvidia/lib:/usr/local/nvidia/lib64

似乎不存在。

此外,文件系统中的任何位置都没有名称为 libcuda.so.1(或任何数字)的文件。 /usr/lib/cuda/lib64 包含共享库。 我目前在这里执行什么错误

【问题讨论】:

  • 能否分享您的应用程序 Dockerfile 和应用程序 pod/daemonset/deployment YAML?

标签: docker tensorflow kubernetes


【解决方案1】:

您正面临该问题,因为您尚未在集群上安装 CUDA 驱动程序。请按照此link 中的安装驱动程序部分进行操作。要验证安装,您可以运行此命令并检查。

kubectl logs -n kube-system ds/nvidia-driver-installer -c nvidia-driver-installer 

【讨论】:

    【解决方案2】:

    Kubernetes 上缺少的 libcuda.so 库问题通常与使用不正确的容器映像运行 GPU 工作负载有关。考虑到您已经在使用 CUDA docker 映像,尝试将您的 CUDA 版本更改为与您的工作负载兼容的版本。我遇到了需要 10.0 的工作负载的问题,该问题抛出了 CUDA9.0 基本映像中找不到的库。

    大多数云提供商使用 containerd/Docker 来运行其 CPU 工作负载,并使用 nvidia-docker 来提供 GPU 支持。 nvidia-docker 是一个运行在 NVIDIA 驱动程序之上的薄层,并且与 CUDA 无关。所有 CUDA 库文件和资源都单独包含在您的容器中。

    希望这会有所帮助!

    【讨论】:

    • 会的。我使用了 cuda 9.0,因为他们在 Crou 引用的文档中提到了最新支持的版本是 CUDA 9.0
    【解决方案3】:

    我假设您在 Google Cloud 网站上浏览了有关 GPUs 的文档。他们继续描述了使用 GPU 创建新集群、安装驱动程序和配置 Pod 的整个过程。

    您似乎错误地安装了该库,或者它以某种方式损坏了。

    至于你的图片,你应该使用here中的一张。

    关于 CUDA 库

    CUDA® 是 NVIDIA 的 GPU 并行计算平台和编程模型。您在集群中安装的 NVIDIA 设备驱动程序包括 CUDA libraries。

    CUDA 库和调试实用程序在容器内分别位于 /usr/local/nvidia/lib64 和 /usr/local/nvidia/bin。

    在使用 NVIDIA GPU 的 Pod 中运行的 CUDA 应用程序需要动态发现 CUDA 库。这需要在LD_LIBRARY_PATH 环境变量中包含/usr/local/nvidia/lib64。

    您应该将Ubuntu-based CUDA Docker base images 用于 GKE 中的 CUDA 应用程序,其中 LD_LIBRARY_PATH 已正确设置。支持的最新 CUDA 版本是9.0。

    【讨论】:

      猜你喜欢
      • 2018-01-28
      • 2020-01-16
      • 1970-01-01
      • 2016-04-18
      • 2019-04-25
      • 2020-08-11
      • 2018-08-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多