pytorch gpu docker 镜像下的无法正常启动应用分析

栏目: Python · 发布时间: 7年前

内容简介:在使用了按照以往的经验 ,无非是没有使用

目录

  • 发现
  • 分析
  • 解决
  • 总结

发现

在使用了 nvidia/cuda:9.0-cudnn7-devel-ubuntu16.04 作为底层镜像后,重新构建了 pytorch 的底层镜像做为应用的基础镜像,一切都构建的很顺利,就是在正常启动镜像的时候,出现了如下的错误

CUDA driver version is insufficient for CUDA runtime version

分析

按照以往的经验 ,无非是没有使用 nvidia-docker 启动,又或者当前实体机的nvidia driver 版本和 docker 镜像内的版本不一致,那我们一个一个排除,在使用nvidia-docker 启动镜像后,正常使用docker-compose启动应用,使用命令查看cuda和cudnn版本

nvcc --version
 

输出

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2017 NVIDIA Corporation
Built on Fri_Sep__1_21:08:03_CDT_2017
Cuda compilation tools, release 9.0, V9.0.176
 

这里对比cuda 版本都是一致的,进一步查看cudnn版本

cat /usr/include/x86_64-linux-gnu/cudnn_v*.h | grep CUDNN_MAJOR -A 2
 

输出

#define CUDNN_MAJOR 7
#define CUDNN_MINOR 1
#define CUDNN_PATCHLEVEL 4
--
#define CUDNN_VERSION    (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)
 

这里最奇怪的是cudnn版本也是一致的…

解决

分析到这里,我想应该有同学猜到,可能是环境变量不一致导致的,查找关于cuda的所有环境变量发现

实体机:

LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64
 

docker 内部

LD_LIBRARY_PATH=/usr/local/nvidia/lib:/usr/local/nvidia/lib64
 

为了验证这个想法,这一次不直接使用docker-compose 直接启动应用,使用nvidia-docker run 镜像方式进入docker 内部,正常启动程序,没想启动成功了,OK,那可以完全肯定是环境变量导致的这个问题,为了进一步解决这个问题,我们有两种方式,一是每次部署的时候都要写好环境变量,二是在dockerfile 里面写好ENV,比如

FROM brucedone/torch:gpu
 
MAINTAINER nicefish66@gmail.com
 
ENV LD_LIBRARY_PATH /usr/local/nvidia/lib:/usr/local/nvidia/lib64
ENV LIBRARY_PATH /usr/local/cuda/lib64/stubs
RUN mkdir /workdir
 
COPY . /workdir
RUN pip install -r /workdir/requirements.txt
 
WORKDIR /workdir
 

总结

这一次我们主要从错误的提示出发,验证了我们对于错误的猜想,时刻记住,对于docker host 的程序 ,环境变量对于应用程序来说相当重要。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

代码之髓

代码之髓

[日] 西尾泰和 / 曾一鸣 / 人民邮电出版社 / 2014-8 / 45.00元

《代码之髓:编程语言核心概念》作者从编程语言设计的角度出发,围绕语言中共通或特有的核心概念,通过语言演变过程中的纵向比较和在多门语言中的横向比较,清晰地呈现了程序设计语言中函数、类型、作用域、类、继承等核心知识。本书旨在帮助读者更好地理解各种概念是因何而起,并在此基础上更好地判断为何使用、何时使用及怎样使用。同时,在阅读本书后,读者对今后不断出现的新概念的理解能力也将得到提升。 《代码之髓:......一起来看看 《代码之髓》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具