基于docker搭建conda深度学习环境(支持GPU加速)

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 在Ubuntu系统,创建一个docker,然后搭建conda深度学习环境,这样可以用conda或pip安装相关的依赖库了。

 一、创建一个docker

为了方便开发,在Docker Hub官方中选择一个合适的conda docker镜像,然后下载到本地。

我选择了“docker-anaconda”,地址是:Docker Hub

image.gif

下载命令如下:

docker pull continuumio/anaconda3

image.gif

二、进入docker

通常使用 docker run 命令进入docker镜像,例如:

docker run -i -t continuumio/anaconda3 /bin/bash

image.gif

其中 -i: 以交互模式运行容器,通常与 -t 同时使用;


2.1 映射目录

平常进入了docker环境,然后创建或产生的文件,在退出docker环境后会“自动销毁”;或者想运行本地主机的某个程序,发现在docker环境中找不到。

我们可以通过映射目录的方式,把本地主机的某个目录,映射到docker环境中,这样产生的文件会保留在本地主机中。

比如:

docker run -i -t continuumio/anaconda3 -v /home/xxx/xxx/:/home/xxxx:rw /bin/bash

image.gif

通过-v 把本地主机目录 /home/xxx/xxx/ 映射到docker环境中的/home/xxxx 目录;其权限是rw,即能读能写。


2.2 支持GPU

默认是不把GPU加入到docker环境中的,但可以通过参数设置:

--gpus all

image.gif

但我发现,这样有时不能在docker里正常使用GPU;可以使用如下参数,在Pytorch中亲测有效。

--gpus all  -e NVIDIA_DRIVER_CAPABILITIES=compute,utility -e NVIDIA_VISIBLE_DEVICES=all

image.gif

举个例子:

docker run -i -t continuumio/anaconda3 --gpus all  -e NVIDIA_DRIVER_CAPABILITIES=compute,utility -e NVIDIA_VISIBLE_DEVICES=all /bin/bash

image.gif


2.3 设置内存

默认分配很小的内参,在训练模型时不够用,可以通过参数设置:

--shm-size xxG

image.gif

比如,我电脑有32G内参,想放16G到docker中使用,设置为 --shm-size 16G,即:

docker run -i -t continuumio/anaconda3  --shm-size 16G /bin/bash

image.gif

2.4 综合版本

结合映射目录、支持GPU、设置内存,打开docker的命令如下:

docker run -i -t  -v /home/disk1/guopu/:/home/guopu:rw --gpus all --shm-size 16G -e NVIDIA_DRIVER_CAPABILITIES=compute,utility -e NVIDIA_VISIBLE_DEVICES=all continuumio/anaconda3  /bin/bash

image.gif

详细的参数解析如下

    • -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
    • -d: 后台运行容器,并返回容器ID;
    • -i: 以交互模式运行容器,通常与 -t 同时使用;
    • -P: 随机端口映射,容器内部端口随机映射到主机的端口
    • -p: 指定端口映射,格式为:主机(宿主)端口:容器端口
    • -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
    • --name="nginx-lb": 为容器指定一个名称;
    • --dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
    • --dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
    • -h "mars": 指定容器的hostname;
    • -e username="ritchie": 设置环境变量;
    • --env-file=[]: 从指定文件读入环境变量;
    • --cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;
    • -m :设置容器使用内存最大值;
    • --net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
    • --link=[]: 添加链接到另一个容器;
    • --expose=[]: 开放一个端口或一组端口;
    • --volume , -v: 绑定一个卷



    三、检验docker

    进入docker中,首先查看一下GPU,用nvidia-smi命令。正常显示CUDA版本,正常加载了显卡(这里是两张1080ti)。

    image.gif

    使用两张显卡训练YOLOv5时,显示正常;

    image.gif


    四、进入已打开的docker

    思路:首先使用docker ps 查询正在运行docker的ID,然后使用docker exec 命令进入。

    命令如下:

    $ sudo docker ps  
    $ sudo docker exec -it docker_ID /bin/bash

    image.gif

    其中docker_ID,是使用docker ps查询正在运行docker的ID,比如是fe8984f24b79。



    参考文献

    Docker run 命令 | 菜鸟教程

    怎么在docker中使用nvidia显卡 - 思念殇千寻 - 博客园

    关于挂载的本地目录在容器中没有执行权限的问题



    本文只供大家参考与学习,谢谢。

    相关实践学习
    部署Stable Diffusion玩转AI绘画(GPU云服务器)
    本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
    相关文章
    |
    3月前
    |
    机器学习/深度学习 数据采集 TensorFlow
    使用Python实现深度学习模型:智能垃圾分类与环境保护
    使用Python实现深度学习模型:智能垃圾分类与环境保护 【8月更文挑战第7天】
    167 2
    |
    2月前
    |
    机器学习/深度学习 自动驾驶 算法
    深度学习之虚拟环境生成
    基于深度学习的虚拟环境生成是利用深度学习技术自动创建复杂的三维虚拟场景和环境。这一领域在游戏开发、虚拟现实(VR)、增强现实(AR)、模拟训练等方面有广泛的应用。
    42 6
    |
    18天前
    |
    机器学习/深度学习 数据挖掘 数据处理
    深度学习之卫星图像中的环境监测
    基于深度学习的卫星图像环境监测是指通过使用深度学习模型处理和分析来自卫星的遥感数据,以实现对地球环境的自动化监测和分析。这项技术极大提升了环境监测的效率、精度和规模,应用于气候变化研究、生态保护、自然灾害监测、城市扩张评估等多个领域。
    45 0
    |
    25天前
    |
    机器学习/深度学习 人工智能 vr&ar
    深度学习之实时数据驱动的虚拟环境
    基于深度学习的实时数据驱动的虚拟环境是近年来在计算机图形学、人工智能和虚拟现实(VR)领域的热门话题。
    33 0
    |
    2月前
    |
    机器学习/深度学习 测试技术 PyTorch
    深度学习之测量GPU性能的方式
    在深度学习中,测量GPU性能是一个多方面的任务,涉及运行时间、吞吐量、GPU利用率、内存使用情况、计算能力、端到端性能测试、显存带宽、框架自带性能工具和基准测试工具等多种方法。通过综合使用这些方法,可以全面评估和优化GPU的性能,提升深度学习任务的效率和效果。
    169 2
    |
    3月前
    |
    机器学习/深度学习 并行计算 PyTorch
    如何搭建深度学习的多 GPU 服务器
    如何搭建深度学习的多 GPU 服务器
    109 5
    如何搭建深度学习的多 GPU 服务器
    |
    3月前
    |
    机器学习/深度学习 传感器 监控
    深度学习之环境感知模型
    基于深度学习的环境感知模型,旨在通过利用深度学习技术,使系统能够感知、理解并响应其所在的物理或虚拟环境。此类模型在自动驾驶、机器人导航、智能监控、虚拟现实等领域有着广泛的应用。
    55 3
    |
    3月前
    |
    机器学习/深度学习 传感器 算法
    深度学习之环境感知系统
    基于深度学习的环境感知系统是一类能够理解、感知和解读周围环境的智能系统。通过使用深度学习算法,这些系统可以分析多模态数据(如图像、音频、激光雷达数据等),实时感知环境的动态变化,为自动驾驶、机器人、智能家居等领域提供关键支持。
    81 3
    |
    3月前
    |
    机器学习/深度学习 人工智能 调度
    显著提升深度学习 GPU 利用率,阿里云拿下国际网络顶会优胜奖!
    显著提升深度学习 GPU 利用率,阿里云拿下国际网络顶会优胜奖!
    237 7
    |
    3月前
    |
    机器学习/深度学习 自然语言处理 数据处理