我正在尝试在具有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包含共享库。 我目前在这里执行任何错误吗
答案 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库文件和资源仅包含在您的容器中。
希望这会有所帮助!