当前位置: 首页 > 科技观察

使用Docker快速部署GPU环境

时间:2023-03-20 20:58:37 科技观察

在Linux服务器上使用GPU运行深度学习模型很正常。如果我们想用Docker实现同样的需求,我们需要做一些额外的工作。本质上,我们需要能够在容器中看到和使用宿主机上的显卡。在本文中,我们将介绍使用GPU的Docker环境搭建。Nvidia驱动程序使用Ubuntu作为一些命令的示例。首先,必须在主机上安装Nvidia驱动程序。建议从Nvidia官网下载脚本安装。安装卸载方便,适用于任何Linux发行版,包括CentOS、Ubuntu等。NVIDIATelsaGPU的Linux驱动在安装过程中需要编译内核模块,系统需要提前安装gcc并编译包LinuxKernelModule所依赖的,比如kernel-devel-$(uname-r)等。安装gcc和kernel-dev$sudoaptinstallgkernel-dev-y安装Nvidia驱动访问https://www.nvidia.com/Download/Find.aspx,选择对应的操作系统和安装包,点击【SEARCH】搜索driver,选择Downloadeddriverversion3.在上位机下载并执行对应版本的安装脚本$wgethttps://www.nvidia.com/content/DriverDownload-March2009/confirmation.php?url=/tesla/450.80.02/NVIDIA-Linux-x86_64-450.80.02.run&lang=us&type=Tesla$chmod+xNVIDIA-Linux-x86_64-450.80.02.run&&./NVIDIA-Linux-x86_64-450.80.02.run4.使用nvidia-smi命令成功,如果输出类似下图,驱动安装成功。CUDA驱动CUDA(ComputeUnifiedDeviceArchitecture)是显卡厂商NVIDIA推出的计算平台。CUDA?是NVIDIA推出的通用并行计算架构,使GPU能够解决复杂的计算问题。它包括CUDA指令集架构(ISA)和GPU内部的并行计算引擎。这里的安装方法和显卡驱动的安装类似。1.访问官网下载对应版本的安装包,https://developer.nvidia.com/cuda-toolkit-archive2.配置环境变量$echo'exportPATH=/usr/local/cuda/bin:$PATH'|sudotee/etc/profile.d/cuda.sh$source/etc/profilenvidia-docker2Docker的安装这里就不展开了,官方文档很详细。这里直接介绍nvidia-docker2的安装。既然叫nvidia-docker2,就有nvidia-docker1,也就是它的1.0版本目前已经过时了,注意不要装错了。这里简单介绍一下nvidia-docker2的原理。nvidia-docker2的依赖包括以下几个部分。libnvidia-containernvidia-container-toolkitnvidia-container-runtimenvidia-container-runtime在runc-runime-hook(现在叫nvidia-container-toolkit)的基础上实现了nvidia-container,hook在容器启动后执行(已创建命名空间)和启动容器自定义命令(入口点)之前。当检测到NVIDIA_VISIBLE_DEVICES环境变量时,将调用libnvidia-container挂载GPUDevice和CUDADriver。如果未检测到NVIDIA_VISIBLE_DEVICES,将执行默认的runc。分两步安装1.设置存储库和GPG密钥$distribution=$(./etc/os-release;echo$ID$VERSION_ID)$curl-s-Lhttps://nvidia.github.io/nvidia-docker/gpgkey|sudoapt-keyadd-$curl-s-Lhttps://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list|sudotee/etc/apt/sources.list.d/nvidia-docker。清单2.安装$sudoapt-getupdate$sudoapt-getinstall-ynvidia-docker2$sudosystemctlrestartdocker3.验证并执行以下命令:$dockerrun--rm--gpusallnvidia/cuda:10.2-basenvidia-smi如果直接执行输出host如果nvidia-smi一致,则安装成功。如果运行的深度学习模型使用tensorflow,可以在容器中执行:importtensorflowastftf.contrib.eager.num_gpus()如果输出主机上的Nvidia显卡数量,则模型可以使用显卡加速。如果使用的是pytorch,可以在容器中执行:importtorchtorch.cuda.is_available()如果输出为True,则证明环境也成功,可以使用显卡了。4.使用示例使用所有显卡$dockerrun--rm--gpusallnvidia/cudanvidia-smi$dockerrun--rm--runtime=nvidia-eNVIDIA_VISIBLE_DEVICES=allnvidia/cudanvidia-smi指明使用哪些显卡$dockerrun--gpus'"device=1,2"'nvidia/cudanvidia-smi$dockerrun--rm--runtime=nvidia-eNVIDIA_VISIBLE_DEVICES=1,2nvidia/cudanvidia-smi这里介绍下使用Nvidia显卡加速计算的基本环境码头工人。后续可以继续研究K8S下GPU调度的实现。

最新推荐
猜你喜欢