目录
1.2.4 替换cudnn(如果没有指定版本,忽略该部分内容)
1.2.7 离线下载RUN安装的cuda组件(如果在线制作顺利,忽略该部分)
一、基础镜像
因为基础镜像都需要安装cuda、cudnn等深度学习必备组件,如果客户使用的镜像对操作系统版本(官方镜像操作系统都是最新的)、cudnn版本没有要求,以及要求操作系统是ubuntu系统,都可以去NGC官网,下载指定cuda版本的基础镜像,具体参考1.1。
如果客户指定操作系统版本为centos,或指定cuda、cudnn版本,NGC官方没有该基础镜像,则需要客户自制带指定操作系统或cuda版本的基础镜像,具体参考1.2。
本文档,以某客户定制镜像,作为示例,其它客户定制需求,参考此文档,进行灵活制作,不用过于教条,客户定制要求:
操作系统:centos7.4
numpy==1.15.4
opencv-python==3.4.3.18
tenserflow-gpu==1.8.0
Keras==2.2.4
python3.6.6
cudnn 7.0
cuda9.0
注意:
制作镜像,需要在联网环境,如果不能联网,需要自己到联网环境,下载离线包,再拷贝到离线环境制作镜像,但是不推荐,因为,安装的组件,依赖包比较多,少下载一个,就可能导致离线安装组件失败,如果经验比较丰富,在线和离线都可以。本文以在线制作镜像为主,会提供离线下载组件和离线安装组件命令。
按照要求定制或者制作的镜像,只安装了客户需要的组件,由于镜像中的操作系统都是MINI版,客户实际使用过程中,需要的各种库或者依赖包,一般在线安装定制组件的时候,有些共享库或者组件包,并不会被自动安装,需要专门指定安装。如果客户指定,我们都会安装,如果客户没有指定,我们只安装客户指定的组件,像共享库或者依赖组件,由于和实际的使用和训练场景有关,对于具体需要什么共享库和依赖,我们制作人员都是未知的,所以,不提供安装。如果,客户在实际使用中,需要安装所需的共享库或者依赖组件,本文档会提供思路,具体问题需要具体分析。如果,经过尝试,实在解决不了,可以请求我们的技术人员协助,远程协助你们安装所需组件。
如果没有最终失败,Dockerfile在线制作镜像输出的红色内容,请忽略,不影响最终制作的镜像。
1.1 NGC官方基础镜像
ubuntu的cuda基础镜像,都可以在NGC官方拉取,一般不需要单独制作,单独制作只针对centos版本。
NGC官方基础镜像下载地址:
点击Pull Tag获取pull镜像命令,下载需要的基础镜像:
docker pull nvcr.io/nvidia/cuda:9.0-cudnn7-devel-centos7
1.2 自制带cuda的基础镜像
由于客户定制的镜像,指定了操作系统,NGC官方镜像没有该基础镜像,需要自制基础镜像。
1.2.1 下载Dockerfile
下载指定版本的cuda和操作系统的Dockerfile和cuda.repo,然后再修改Dockerfile.
dist · master · nvidia / container-images / cuda · GitLab
点击centos7进入cuda版本选择,选择cuda9.0
下载后,如图所示:
gitlab cuda9.0下面,有base、devel、runtime目录,我们需要将每个下面的Dockerfile文件,汇总成一个Dockerfile文件,制作一个最全的cuda镜像,防止镜像使用GPU训练时出现问题。base、devel和runtime官方解释,如下:
CUDA images come in three flavors and are available through the NVIDIA public hub repository.
base: starting from CUDA 9.0, contains the bare minimum (libcudart) to deploy a pre-built CUDA application.
Use this image if you want to manually select which CUDA packages you want to install.runtime: extends the base image by adding all the shared libraries from the CUDA toolkit.
Use this image if you have a pre-built application using multiple CUDA libraries.