在docker上服务的TensorFlow对cuInit的调用失败:CUresult(-1)

时间:2018-07-25 15:08:04

标签: docker tensorflow kubernetes tensorflow-serving

在Kuberenetes上使用图像tensorflow/serving:latest-devel-gpu时,未使用GPU。

我对此没有任何幻想,只需传递server.conf和模型文件即可。

默认运行时为nvidia-docker,我的其他GPU吊舱能够使用GPU。

日志中唯一的错误:

  

E   外部/org_tensorflow/tensorflow/stream_executor/cuda/cuda_driver.cc:397   ]对cuInit的调用失败:CUresult(-1)

有趣的事情:

  

我   外部/org_tensorflow/tensorflow/stream_executor/cuda/cuda_diagnostics.cc:189]   libcuda报告的版本是:找不到:找不到libcuda.so   DSO已加载到该程序中

2 个答案:

答案 0 :(得分:1)

使用

更新您的dockerfile
RUN rm /usr/local/cuda/lib64/stubs/libcuda.so.1

或从docker hub扩展服务开发gpu映像,额外增加一行

FROM tensorflow/serving:1.9.0-devel-gpu
RUN rm /usr/local/cuda/lib64/stubs/libcuda.so.1

答案 1 :(得分:0)

跟踪器上有几个问题:#394#2882#646

总之,有些解决方案效果很好(一次尝试一种):

  1. 运行:

    $ sudo apt-get install nvidia-modprobe  
    $ sudo reboot
    
  2. 运行:

    $ nvidia-cuda-mps-server
    
  3. 运行following

    $ sudo modinfo nvidia-<driver_version_num>-uvm (with driver_version_num as 384 in my case)
    $ sudo modprobe --force-modversion nvidia-<nvidia-version>-uvm
    
  4. I was on CUDA-8 and CuDNN-6.0
    I moved to CUDA-9 and CuDNN-7.0

当您将Tensorflow作为Pod运行时,我猜想解决方案123应该应用于工作节点,而解决方案{{1} },您可能需要更新Tensorflow docker映像。a