使用GPU进行Kubernetes部署

时间:2019-04-11 10:34:33

标签: docker tensorflow kubernetes

我正在尝试在具有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包含共享库。 我目前在这里执行任何错误吗

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:-1)

我假设您已经遍历了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库。这要求在/usr/local/nvidia/lib64环境变量中包含LD_LIBRARY_PATH

     

对于已经适当设置LD_LIBRARY_PATH的GKE中的CUDA应用程序,应使用Ubuntu-based CUDA Docker base images。受支持的最新CUDA版本是9.0

答案 2 :(得分:-1)

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

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

希望这会有所帮助!