GKE中的GPU部署:tensorflow_model_server:加载共享库时出错:/usr/lib/x86_64-linux-gnu/libcuda.so.1:文件太短

时间:2019-07-15 10:07:46

标签: docker deployment kubernetes google-kubernetes-engine

我正尝试在具有使用GPU的Tensorflow模型的GKE上部署模型。我使用docker创建了一个容器,它在云VM上运行良好。我正在尝试使用GKE进行扩展,但是部署存在上述错误。

我使用GPU(Tesla T4)创建了只有1个节点的GKE集群。我根据docs

安装了驱动程序

据我所知,这似乎是成功的(名为nvidia-driver-installer-tckv4的pod已添加到节点的pod列表中,并且正在正常运行)

接下来,我创建了部署:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: reph-deployment
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: reph
    spec:
      containers:
      - name: reph-container
        image: gcr.io/<project-id>/reph_serving_gpu
        resources:
          limits:
            nvidia.com/gpu: 1
        ports:
        - containerPort: 8500
        args:
        - "--runtime=nvidia"

然后我运行kubectl create -f d1.yaml,并且在日志中出现上述错误的情况下退出了容器。

我还尝试将os从cos切换到ubuntu并从docs运行示例

这次我为ubuntu安装了上述驱动程序。并应用了从GKE文档中提取的Yaml(仅更改了要消耗的GPU数量):

apiVersion: v1
kind: Pod
metadata:
  name: my-gpu-pod
spec:
  containers:
  - name: my-gpu-container
    image: nvidia/cuda:10.0-runtime-ubuntu18.04
    resources:
      limits:
       nvidia.com/gpu: 1

这次我得到的是CrashLoopBackOff,而日志中没有更多内容。

有什么主意吗?我是kubernetes和docker的新手,所以我可能缺少一些琐碎的东西,但我确实尝试坚持使用GKE文档。

1 个答案:

答案 0 :(得分:1)

好的,我认为文档尚不十分清楚,但是似乎缺少的是在/usr/local/nvidia/lib64环境变量中包含LD_LIBRARY_PATH。 以下yaml文件成功运行:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: reph-deployment
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: reph
    spec:
      containers:
      - name: reph-container
        env: 
        - name: LD_LIBRARY_PATH
          value: "$LD_LIBRARY_PATH:/usr/local/nvidia/lib64"
        image: gcr.io/<project-id>/reph_serving_gpu
        imagePullPolicy: IfNotPresent
        resources:
          limits:
            nvidia.com/gpu: 1
          requests:
            nvidia.com/gpu: 1
        ports:
        - containerPort: 8500
        args:
        - "--runtime=nvidia"

这是GKE docs

中的相关部分