GPU配置太麻烦?来试试Docker一键配置GPU深度学习开发环境吧

简介: docker环境无需安装cuda、cuDNN,docker镜像安装完毕后,就都好了,一键部署好之后,可以随意迁移,再也不用环境发愁了。

这是机器未来的第3篇文章,由机器未来原创

写在前面:

• 博客简介:专注AIoT领域,追逐未来时代的脉搏,记录路途中的技术成长!

• 专栏简介:记录博主从0到1掌握物体检测工作流的过程,具备自定义物体检测器的能力

• 面向人群:具备深度学习理论基础的学生或初级开发者

• 专栏计划:接下来会逐步发布跨入人工智能的系列博文,敬请期待

• Python零基础快速入门系列

• 快速入门Python数据科学系列

• 人工智能开发环境搭建系列

• 机器学习系列

• 物体检测快速入门系列

• 自动驾驶物体检测系列

• ......

@[toc]

1. 概述

在《物体检测快速入门系列(2)-Windows部署GPU深度学习开发环境》一文中已经描述了如何在Windows环境下部署GPU深度学习开发环境,但是要我推荐的话,我还是倾向于docker环境,无需安装cuda、cuDNN,docker镜像安装完毕后,就都好了,一键部署好之后,可以随意迁移,再也不用环境发愁了。

Docker运行于linux环境,windows环境一直兼容不好,鉴于博主没有安装双系统,研究了一下如何在Windows上部署Docker开发环境,发现真可行,微软的WIN10的linux子系统WSL2已经可以支持GPU映射到Docker了。

好了,开搞!

编辑

搜图

Moby-run-900x551.png

2. 安装linux子系统

windows目前已支持WSL2,可支持将主机的GPU映射到docker中运行。

  • • 查看windows平台可支持的linux子系统列表

1

wsl--list--online

1

PSC:\Users\25267>wsl.exe--list--online

2

以下是可安装的有效分发的列表。

3

请使用“wsl--install-d<分发>”安装。

4

NAME            FRIENDLYNAME

5

Ubuntu          Ubuntu

6

Debian          DebianGNU/Linux

7

kali-linux      KaliLinuxRolling

8

openSUSE-42     openSUSELeap42

9

SLES-12         SUSELinuxEnterpriseServerv12

10

Ubuntu-16.04    Ubuntu16.04LTS

11

Ubuntu-18.04    Ubuntu18.04LTS

12

Ubuntu-20.04    Ubuntu20.04LTS

  • • 安装子系统 推荐安装Ubuntu20.04

1

PSC:\Users\25267>wsl--install-d  Ubuntu-20.04

2

Ubuntu20.04LTS已安装。

3

正在启动Ubuntu20.04LTS…

  • • 设置默认子系统

1

PSC:\Users\25267>wsl--setdefaultUbuntu-20.04

2

PSC:\Users\25267>wsl-l-v

3

 NAME                   STATE           VERSION

4

*Ubuntu-20.04           Stopped         2   # *标识的就是默认子系统

5

 docker-desktop-data    Stopped         2

6

 Ubuntu-18.04           Stopped         2

7

 docker-desktop         Stopped         2

3. 安装Windows平台Docker-Desktop

  • • 下载 下载链接:点击此处
  • • 安装 安装过程略,无脑安装即可。

4. 安装GPU的Docker镜像

4.1 拉取Docker镜像

1

dockerpulltensorflow/tensorflow:2.8.0rc1-gpu-jupyter

其它镜像查询地址:传送门

  • • 查看下载后的镜像

1

dockerimages

1

PSC:\Users\25267>dockerimages

2

REPOSITORY               TAG                              IMAGEID       CREATED         SIZE

3

mongo                    latest                           27dd1be4bed1   2weeksago     700MB

4

ubuntu                   20.04                            825d55fb6340   5weeksago     72.8MB

5

pytorch/pytorch          1.11.0-cuda11.3-cudnn8-runtime   ca04e7f7c8e5   2monthsago    5.82GB

6

docker/getting-started   latest                           bd9a9f733898   3monthsago    28.8MB

7

tensorflow/tensorflow    2.8.0-gpu-jupyter                cc9a9ae2a5af   3monthsago    5.99GB

8

tanliyuan123/artipub     1.2.0                            475119ff846a   14monthsago   1.71GB

9

pytorch/pytorch          1.6.0-cuda10.1-cudnn7-devel      bb833e4d631f   21monthsago   7.04GB

10

pytorch/pytorch          1.3-cuda10.1-cudnn7-runtime      ba2da111b833   2yearsago     4.32GB

tensorflow/tensorflow:2.8.0-gpu-jupyter既是拉取的镜像

4.2 基于镜像创建容器

1

dockerrun--gpusall-itd-ve:/dockerdir/docker_work/:/home/zhou/-p8888:8888--ipc=hostcc9a9ae2a5afjupyternotebook--no-browser--ip=0.0.0.0--allow-root--NotebookApp.token=--notebook-dir='/home/zhou/'

参数详解: --gpus all:不加此选项,nvidia-smi命令会不可用
-i: 交互式操作。
-t: 终端。
-p:端口映射,[Host Port]:[Container Port]
--ipc=host,启用进程间通讯
cc9a9ae2a5af:镜像ID
-d:后台运行,需要使用【docker exec -it 容器id /bin/bash】进入容器

  • • jupyternotebook启动命令:

1

jupyternotebook--no-browser--ip=0.0.0.0--allow-root--NotebookApp.token=--notebook-dir='/home/zhou/'

4.3 查询容器ID

1

dockerps

编辑

搜图

1

进入容器

1

dockerexec-itcc58e655b170

1

PSC:\Users\25267>dockerexec-itcc58e655b170/bin/bash

2

________                               _______________

3

___  __/__________________________________  ____/__  /________      __

4

__  /  _  _ \_  __ \_  ___/  __ \_  ___/_  /_   __  /_  __ \_|/| //

5

_  /   /  __/  // /(__  )//_//  /   _  __/   _  // /_//_ |/|/ /

6

/_/    \___//_/ /_//____/ \____//_/    /_/      /_/  \____/____/|__/

7

WARNING: Youarerunningthiscontainerasroot, whichcancausenewfilesin

8

mountedvolumestobecreatedastherootuseronyourhostmachine.

9

Toavoidthis, runthecontainerbyspecifyingyouruser's userid:

10

$dockerrun-u$(id-u):$(id-g) args...

4.4 查询docker是否已经支持GPU

  • • 查询cuda版本

1

root@bbe3199deccc:/# nvidia-smi

2

SunMay1514:19:512022      

3

+-----------------------------------------------------------------------------+

4

|NVIDIA-SMI470.85       DriverVersion: 472.47       CUDAVersion: 11.4     |

5

|-------------------------------+----------------------+----------------------+

6

|GPU  Name        Persistence-M|Bus-Id        Disp.A|VolatileUncorr. ECC|

7

|Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage|GPU-Util  ComputeM. |

8

|                               |                      |               MIGM. |

9

|===============================+======================+======================|

10

|   0  NVIDIAGeForce...  Off  |00000000:01:00.0  On|                  N/A|

11

|N/A   62C    P8     5W/  N/A|   1356MiB/  6144MiB|    ERR!      Default|

12

|                               |                      |                  N/A|

13

+-------------------------------+----------------------+----------------------+

14

+-----------------------------------------------------------------------------+

15

|Processes:                                                                  |

16

|  GPU   GI   CI        PID   Type   Processname                  GPUMemory|

17

|        ID   ID                                                   Usage      |

18

|=============================================================================|

19

|  Norunningprocessesfound                                                 |

20

+-----------------------------------------------------------------------------+

  • • 查询cuDNN版本

1

root@bbe3199deccc:/# nvcc -V

2

nvcc: NVIDIA (R) Cudacompilerdriver

3

Copyright (c) 2005-2021NVIDIACorporation

4

BuiltonSun_Feb_14_21:12:58_PST_2021

5

Cudacompilationtools, release11.2, V11.2.152

6

Buildcuda_11.2.r11.2/compiler.29618528_0

5. 安装VsCode Docker支持

5.1 安装VsCode

安装过程略。

5.2 安装Docker插件

编辑

搜图

image-20220515215552303

5.3 附着容器映射到VsCode

编辑

搜图

image-20220515215822873

  • • 附着到VsCode后的效果,已经连接到Docker容器

5.4 安装python支持到容器

在已经链接到容器的VsCode界面中,添加Python支持

5.5 安装jupyter插件到容器VsCode

编辑

搜图

image-20220515220526516

5.6 新建或打开notebook文件选择内核

编辑

搜图

image-20220515220742997

5.7 测试GPU训练模型

1

importnumpyasnp

2

importtensorflowastf

3

fromtensorflowimportkeras

4

fromtensorflow.keras.modelsimportSequential

5

fromtensorflow.keras.layersimportDense

6

fromtensorflow.keras.optimizersimportSGD

7

importtime

8

# config=tf.ConfigProto()

9

# config.gpu_options.allow_growth=True

10

# session=tf.Session(config=config)

11

# 启用GPU

12

fromtensorflow.compat.v1importConfigProto# tf2.x的写法

13

config=ConfigProto()

14

config.gpu_options.per_process_gpu_memory_fraction=0.6

15

tf.compat.v1.Session(config=config)

16

# 构建数据集

17

X_data=np.linspace(-1,1,1000)[:, np.newaxis]

18

noise=np.random.normal(0,0.05,X_data.shape)

19

y_data=np.square(X_data) +noise+0.5

20

print("shape")

21

print(X_data.shape)

22

# 构建神经网络

23

model=Sequential()

24

model.add(Dense(10, input_shape=(1,), kernel_initializer='normal', activation='relu'))

25

#model.add(Dense(5, activation='relu'))

26

# vs分类为softmax激活

27

model.add(Dense(10000, kernel_initializer='normal'))

28

model.add(Dense(10000, kernel_initializer='normal'))

29

model.add(Dense(100, kernel_initializer='normal'))

30

model.add(Dense(1, kernel_initializer='normal'))

31

#sgd=SGD(lr=0.001)

32

model.compile(loss='mean_squared_error', optimizer="sgd") #adam

33

# 训练epoch=10, 30, 50, viewtheresults

34

start=time.time()

35

model.fit(X_data, y_data, epochs=50, batch_size=16, verbose=1)

36

end=time.time()

37

# 在原数据上预测

38

y_predict=model.predict(X_data)

39

#print(y_predict)

40

model.summary()

41

print("training time {}".format(end-start))

训练效果及GPU使用情况见下图

编辑

搜图

9

这就是Docker的优势,可以直接安装已经配置好开发环境的linux镜像。

至此,Windows部署Docker GPU深度学习开发环境搭建完毕!

《物体检测快速入门系列》快速导航:

  • • 物体检测快速入门系列(1)-基于Tensorflow2.x Object Detection API构建自定义物体检测器
  • • 物体检测快速入门系列(2)-Windows部署GPU深度学习开发环境
  • 物体检测快速入门系列(3)-Windows部署Docker GPU深度学习开发环境
  • 物体检测快速入门系列(4)-TensorFlow 2.x Object Detection API快速安装手册

编辑

搜图

slogon-2


相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
相关文章
|
22天前
|
机器学习/深度学习 测试技术 PyTorch
深度学习之测量GPU性能的方式
在深度学习中,测量GPU性能是一个多方面的任务,涉及运行时间、吞吐量、GPU利用率、内存使用情况、计算能力、端到端性能测试、显存带宽、框架自带性能工具和基准测试工具等多种方法。通过综合使用这些方法,可以全面评估和优化GPU的性能,提升深度学习任务的效率和效果。
56 2
|
1月前
|
机器学习/深度学习 并行计算 PyTorch
如何搭建深度学习的多 GPU 服务器
如何搭建深度学习的多 GPU 服务器
73 5
如何搭建深度学习的多 GPU 服务器
|
1月前
|
机器学习/深度学习 人工智能 调度
显著提升深度学习 GPU 利用率,阿里云拿下国际网络顶会优胜奖!
显著提升深度学习 GPU 利用率,阿里云拿下国际网络顶会优胜奖!
171 7
|
28天前
|
持续交付 测试技术 jenkins
JSF 邂逅持续集成,紧跟技术热点潮流,开启高效开发之旅,引发开发者强烈情感共鸣
【8月更文挑战第31天】在快速发展的软件开发领域,JavaServer Faces(JSF)这一强大的Java Web应用框架与持续集成(CI)结合,可显著提升开发效率及软件质量。持续集成通过频繁的代码集成及自动化构建测试,实现快速反馈、高质量代码、加强团队协作及简化部署流程。以Jenkins为例,配合Maven或Gradle,可轻松搭建JSF项目的CI环境,通过JUnit和Selenium编写自动化测试,确保每次构建的稳定性和正确性。
43 0
|
30天前
|
机器学习/深度学习 计算机视觉 Python
深度学习项目中在yaml文件中定义配置,以及使用的python的PyYAML库包读取解析yaml配置文件
深度学习项目中在yaml文件中定义配置,以及使用的python的PyYAML库包读取解析yaml配置文件
38 0
|
3月前
|
机器学习/深度学习 并行计算 算法框架/工具
为什么深度学习模型在GPU上运行更快?
为什么深度学习模型在GPU上运行更快?
61 2
|
3月前
|
机器学习/深度学习 并行计算 PyTorch
【从零开始学习深度学习】20. Pytorch中如何让参数与模型在GPU上进行计算
【从零开始学习深度学习】20. Pytorch中如何让参数与模型在GPU上进行计算
|
1月前
|
机器学习/深度学习 编解码 人工智能
阿里云gpu云服务器租用价格:最新收费标准与活动价格及热门实例解析
随着人工智能、大数据和深度学习等领域的快速发展,GPU服务器的需求日益增长。阿里云的GPU服务器凭借强大的计算能力和灵活的资源配置,成为众多用户的首选。很多用户比较关心gpu云服务器的收费标准与活动价格情况,目前计算型gn6v实例云服务器一周价格为2138.27元/1周起,月付价格为3830.00元/1个月起;计算型gn7i实例云服务器一周价格为1793.30元/1周起,月付价格为3213.99元/1个月起;计算型 gn6i实例云服务器一周价格为942.11元/1周起,月付价格为1694.00元/1个月起。本文为大家整理汇总了gpu云服务器的最新收费标准与活动价格情况,以供参考。
阿里云gpu云服务器租用价格:最新收费标准与活动价格及热门实例解析
|
15天前
|
机器学习/深度学习 存储 人工智能
阿里云GPU云服务器实例规格gn6v、gn7i、gn6i实例性能及区别和选择参考
阿里云的GPU云服务器产品线在深度学习、科学计算、图形渲染等多个领域展现出强大的计算能力和广泛的应用价值。本文将详细介绍阿里云GPU云服务器中的gn6v、gn7i、gn6i三个实例规格族的性能特点、区别及选择参考,帮助用户根据自身需求选择合适的GPU云服务器实例。
阿里云GPU云服务器实例规格gn6v、gn7i、gn6i实例性能及区别和选择参考
|
1月前
|
编解码 分布式计算 Linux
最新阿里云服务器、轻量应用服务器、GPU云服务器活动价格参考
阿里云服务器产品包含云服务器、轻量应用服务器、GPU云服务器等,本文汇总了这些云服务器当下最新的实时活动价格情况,包含经济型e实例云服务器价格、通用算力型u1实例云服务器价格、第七代云服务器价格、轻量应用服务器最新价格、GPU云服务器价格,以供大家参考。
最新阿里云服务器、轻量应用服务器、GPU云服务器活动价格参考