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

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 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盲盒。
    相关文章
    |
    19天前
    |
    负载均衡 网络协议 算法
    Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式
    本文探讨了Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式,以及软件负载均衡器、云服务负载均衡、容器编排工具等实现手段,强调两者结合的重要性及面临挑战的应对措施。
    47 3
    |
    27天前
    |
    机器学习/深度学习 测试技术 PyTorch
    深度学习之测量GPU性能的方式
    在深度学习中,测量GPU性能是一个多方面的任务,涉及运行时间、吞吐量、GPU利用率、内存使用情况、计算能力、端到端性能测试、显存带宽、框架自带性能工具和基准测试工具等多种方法。通过综合使用这些方法,可以全面评估和优化GPU的性能,提升深度学习任务的效率和效果。
    33 5
    |
    1月前
    |
    关系型数据库 MySQL Docker
    docker环境下mysql镜像启动后权限更改问题的解决
    在Docker环境下运行MySQL容器时,权限问题是一个常见的困扰。通过正确设置目录和文件的权限,可以确保MySQL容器顺利启动并正常运行。本文提供了多种解决方案,包括在主机上设置正确的权限、使用Dockerfile和Docker Compose进行配置、在容器启动后手动更改权限以及使用 `init`脚本自动更改权限。根据实际情况选择合适的方法,可以有效解决MySQL容器启动后的权限问题。希望本文对您在Docker环境下运行MySQL容器有所帮助。
    148 1
    |
    2月前
    |
    网络安全 虚拟化 Docker
    SSH后判断当前服务器是云主机、物理机、虚拟机、docker环境
    结合上述方法,您可以对当前环境进行较为准确的判断。重要的是理解每种环境的特征,并通过系统的响应进行综合分析。如果在Docker容器内,通常会有明显的环境标志和受限的资源视图;而在云主机或虚拟机上,虽然它们也可能是虚拟化的,但通常提供更接近物理机的体验,且可通过硬件标识来识别虚拟化平台。物理机则直接反映硬件真实信息,较少有虚拟化痕迹。通过这些线索,您应该能够定位到您所处的环境类型。
    58 2
    |
    2月前
    |
    存储 监控 Shell
    docker的底层原理二:容器运行时环境
    本文深入探讨了Docker容器运行时环境的关键技术,包括命名空间、控制组、联合文件系统、容器运行时以及分离的进程树,这些技术共同确保了容器的隔离性、资源控制和可移植性。
    47 5
    |
    2月前
    |
    jenkins Java 持续交付
    Docker搭建jenkins环境
    这篇文章详细介绍了如何利用Docker搭建Jenkins环境,包括拉取Jenkins镜像、配置端口映射及初始化设置的步骤。
    206 0
    Docker搭建jenkins环境
    |
    3月前
    |
    机器学习/深度学习 自动驾驶 算法
    深度学习之虚拟环境生成
    基于深度学习的虚拟环境生成是利用深度学习技术自动创建复杂的三维虚拟场景和环境。这一领域在游戏开发、虚拟现实(VR)、增强现实(AR)、模拟训练等方面有广泛的应用。
    48 6
    |
    3月前
    |
    NoSQL 关系型数据库 Redis
    mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
    mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
    mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
    |
    3月前
    |
    虚拟化 Docker Windows
    window 10专业版部署docker环境
    本文介绍了如何在Windows 10专业版上部署Docker环境,包括安装步骤、配置镜像加速以及可能遇到的错误处理。
    160 2
    window 10专业版部署docker环境
    |
    2月前
    |
    机器学习/深度学习 数据挖掘 数据处理
    深度学习之卫星图像中的环境监测
    基于深度学习的卫星图像环境监测是指通过使用深度学习模型处理和分析来自卫星的遥感数据,以实现对地球环境的自动化监测和分析。这项技术极大提升了环境监测的效率、精度和规模,应用于气候变化研究、生态保护、自然灾害监测、城市扩张评估等多个领域。
    140 0

    热门文章

    最新文章

    下一篇
    DataWorks