Docker光速搞定深度学习环境配置!

你是否还在用压缩包打包你的代码,然后在新的机器重新安装软件,配置你的环境,才能跑起来?

特别有这样的情况:诶,在我电脑跑的好好的,怎么这里这么多问题?

当项目比较简单的时候,装个Mysql、Nodejs、Anaconda并不是难事,但如果你的环境更多,新机器更多,你还一个个配置,估计你会疯掉。


还有就是最恶心的深度学习环境,配置Cuda,Cudnn,Pytorch,TensorFlow,Opencv,GDAL就花一天时间,打开百度,弹出来各种各样的教程,为了解决各种Bug眼睛都看花了,找不到一个可以解决你的问题的。

还有前端项目,经常会遇到的Node-Sass缺少Python依赖,还有Nodejs版本问题(狗头)

那么是否有一个东西可以一键部署,不用这么麻烦配置一堆东西的解决方案呢?

Docker!!!Of course!!!

本期就教大家如何用Docker快速,配置最恶心的深度学习环境。考虑大多数人用的是windows,本教程将以win10作为系统进行展开。 Lets GO!!!!!!

前言

Docker是什么?你看Docker的图标就知道了,一个鲸鱼承载了所有的仓库,所有的代码、程序、软件都在Dcoker。


我们抛开Dcoker,先介绍一下两个名字,你一定听过:容器,镜像

容器可以说是一个Linux轻量级的系统,它提供了一种隔离的环境,使得应用程序能够在其中运行,而不受主机系统的影响。

镜像是一个轻量级、独立、可执行的软件包,包含运行应用程序所需的所有内容。

镜像相当于设计稿,Docker根据它可以创建一模一样的产品(容器)。

镜像是容器的基础,我们可以根据已有的镜像A创建自己的容器Container_A,因为容器是个简易系统,我们可以肆意安装东西,再把我们的容器Container_A变成镜像B,别人可以通过我们镜像B创建新的容器Container_B,在这个容器中就复现一模一样的效果啦!

而Docker说白了就是利用容器技术,将应用程序及其依赖项打包到一个系统(容器)中,使得在任何环境中以相同的方式运行,仅此而已。

而有了Docker我们只需要,找到对应的母鸡(镜像),下个蛋(容器)就行。

配置深度学习环境?我才不配!我直接用别人的镜像生成一个容器就行了啊! 你又不是不知道cuda下的多慢,cudnn还要登录!

Docker和虚拟机

那么问题来了,我知道Docker了,那是不是和虚拟机很像啊?我只能说一个鸡蛋一个恐龙蛋。

虚拟机是将一台机器转换为多台机器的物理层的抽象。每个虚拟机都是包含操作系统、应用程序、必要的二进制文件和库的完整副本。

可以看下图右边就是虚拟机架构,每个虚拟机都有自己的系统,而Docker(左)架构,是应用层的抽象,多个容器与其他容器共享一个操作系统内核,这样占用的资源比虚拟机少很多。

光速配置

废话少说,Docker,启动!

安装docker

直接去Docker官网下载exe文件执行就行,Docker非常人性化,不需要你设置安装目录,直接给你装c盘,嘻嘻。

运行Docker,如果你第一次安装,会提示你 WSL 2 installation is incomplete.

这说明我们还需要安装Windows的子系统WSL

安装wsl

Windows Subsystem for Linux(WSL),是适用于Linux的Windows子系统,通过WSL我们可以在Windows里面运行Linux。 CMD命令行运行:

css 复制代码
wsl --install

为了让window支持我们的Linux,控制面板检查一下WSL是否勾选了:


重启电脑!!!

安装Ubuntu(可略)

这下可以安装Linux咯,可以根据自己需要选择Ubuntu版本,打开微软商店下载即可


重启电脑后,可以在Docker设置里集成我们的Linux版本

配置Docker

电脑资源都是有限的,不可能都给Docker,因此需要给Docker分配一下资源上限。 在用户目录(比如:C:\Users\lc)下建立一个新文件,叫做.wslconfig,复制以下内容,给Docker设置它的最大运行内存,CPU核心数

ini 复制代码
[wsl2]
#wsl占用内存
memory=8GB
#交换分区内存(swap类似于Windows的虚拟内存,从硬盘中划分出一个分区,
#在物理内存不够时,就会将硬盘空间虚拟成内存使用,用于解决内存不足的情况。)
swap=8GB
#限制核心数
processors = 6

内存记得别写满,不然卡死,就好给本机留一点,我是16GB的内存,给了Docker一半的容量,也就是Docker再怎么吃内存,不会超过8GB

命令行运行:

arduino 复制代码
wsl --shutdown

重启Docker生效

寻找镜像

Docker Hub给我们准备了很多好用的镜像,像Pytorch、TensorFlow都准备了自己的镜像,里面配置了cuda、cudnn和python,我们选一个需要的就行。


随便起一个终端CMD运行我们复制的命令,然后打开发现,wow,多了一个镜像!

创建容器

继续起一个终端CMD运行以下命令,最后面就是你刚才下载的镜像名

bash 复制代码
# 不使用GPU
docker run -it pytorch/pytorch:1.8.0-cuda11.1-cudnn8-runtime
# 使用GPU
docker run -it --gpus all pytorch/pytorch:1.8.0-cuda11.1-cudnn8-runtime

执行以上命令,就会根据镜像创建一个容器,并且进入容器的命令行,此时尽情安装你需要的东西吧。

首先检测一下Pytorch可不可以检查到GPU吧!哇真的可以耶!

可以在Docker看到可视化的容器


在容器里面可以看到文件目录、资源占用、打印等信息:

Vscode

配合Vscode的Docker插件,我们可以直接进入Docker容器里面编程:

发布镜像

随便起一个终端CMD运行命令:

ruby 复制代码
# 1.容器转镜像
docker commit 【容器名】 【镜像名字:例:myproj】
# 2.镜像打包成压缩包tar文件
docker save -o myproj.tar myproj

引用

www.docker.com/resources/w...

总结

写了一堆,希望能帮助你告别深度学习环境配置的烦恼!

这里是GIS宇宙,我们下期再见!

商业合作请私信公众号

本人其他平台账号:

  • 微信公众号:GIS宇宙
  • CSDN:GIS_宇宙
  • 知乎:GIS宇宙
  • 掘金:GIS宇宙
相关推荐
孙同学要努力6 小时前
全连接神经网络案例——手写数字识别
人工智能·深度学习·神经网络
sniper_fandc8 小时前
深度学习基础—循环神经网络的梯度消失与解决
人工智能·rnn·深度学习
weixin_518285058 小时前
深度学习笔记10-多分类
人工智能·笔记·深度学习
阿_旭9 小时前
基于YOLO11/v10/v8/v5深度学习的维修工具检测识别系统设计与实现【python源码+Pyqt5界面+数据集+训练代码】
人工智能·python·深度学习·qt·ai
YRr YRr9 小时前
深度学习:Cross-attention详解
人工智能·深度学习
阿_旭9 小时前
基于YOLO11/v10/v8/v5深度学习的煤矿传送带异物检测系统设计与实现【python源码+Pyqt5界面+数据集+训练代码】
人工智能·python·深度学习·目标检测·yolo11
算家云10 小时前
如何在算家云搭建Aatrox-Bert-VITS2(音频生成)
人工智能·深度学习·aigc·模型搭建·音频生成·算家云
小言从不摸鱼11 小时前
【NLP自然语言处理】深入解析Encoder与Decoder模块:结构、作用与深度学习应用
人工智能·深度学习·神经网络·机器学习·自然语言处理·transformer·1024程序员节
湫ccc11 小时前
Bert框架详解(上)
人工智能·深度学习·bert
数据智能老司机11 小时前
LLM工程师手册——监督微调
深度学习·架构·llm