- 作者简介:关注AIoT领域的嵌入式开发一枚,追逐未来时代的脉搏,记录路途中的技术成长
- 本文由机器未来原创,首发在CSDN
- 订阅专栏:物体检测快速入门系列
- 面向人群:具备深度学习理论基础的学生或初级开发者
- 专栏计划:接下来会逐步发布跨入人工智能的系列博文,尽情期待
- 14天快速入门Python系列
- 快速入门Python数据科学系列
- 人工智能开发环境搭建系列
- 机器学习系列
- 物体检测快速入门系列
- 自动驾驶物体检测系列
- …
- 如果觉得博主的文章还不错的话,请点赞+收藏⭐️+留言支持一下博主哦
在《物体检测快速入门系列(2)-Windows部署GPU深度学习开发环境》一文中已经描述了如何在Windows环境下部署GPU深度学习开发环境,但是要我推荐的话,我还是倾向于docker环境,无需安装cuda、cuDNN,docker镜像安装完毕后,就都好了,一键部署好之后,可以随意迁移,再也不用环境发愁了。
Docker运行于linux环境,windows环境一直兼容不好,鉴于博主没有安装双系统,研究了一下如何在Windows上部署Docker开发环境,发现真可行,微软的WIN10的linux子系统WSL2已经可以支持GPU映射到Docker了。
好了,开搞!
windows目前已支持WSL2,可支持将主机的GPU映射到docker中运行。
wsl --list --online
PS C:\Users\25267> wsl.exe --list --online
以下是可安装的有效分发的列表。
请使用“wsl --install -d <分发>”安装。
NAME FRIENDLY NAME
Ubuntu Ubuntu
Debian Debian GNU/Linux
kali-linux Kali Linux Rolling
openSUSE-42 openSUSE Leap 42
SLES-12 SUSE Linux Enterprise Server v12
Ubuntu-16.04 Ubuntu 16.04 LTS
Ubuntu-18.04 Ubuntu 18.04 LTS
Ubuntu-20.04 Ubuntu 20.04 LTS
PS C:\Users\25267> wsl --install -d Ubuntu-20.04
Ubuntu 20.04 LTS 已安装。
正在启动 Ubuntu 20.04 LTS…
PS C:\Users\25267> wsl --setdefault Ubuntu-20.04
PS C:\Users\25267> wsl -l -v
NAME STATE VERSION
* Ubuntu-20.04 Stopped 2 # *标识的就是默认子系统
docker-desktop-data Stopped 2
Ubuntu-18.04 Stopped 2
docker-desktop Stopped 2
下载
下载链接:点击此处
安装
安装过程略,无脑安装即可。
docker pull tensorflow/tensorflow:2.8.0rc1-gpu-jupyter
其它镜像查询地址:传送门
docker images
PS C:\Users\25267> docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mongo latest 27dd1be4bed1 2 weeks ago 700MB
ubuntu 20.04 825d55fb6340 5 weeks ago 72.8MB
pytorch/pytorch 1.11.0-cuda11.3-cudnn8-runtime ca04e7f7c8e5 2 months ago 5.82GB
docker/getting-started latest bd9a9f733898 3 months ago 28.8MB
tensorflow/tensorflow 2.8.0-gpu-jupyter cc9a9ae2a5af 3 months ago 5.99GB
tanliyuan123/artipub 1.2.0 475119ff846a 14 months ago 1.71GB
pytorch/pytorch 1.6.0-cuda10.1-cudnn7-devel bb833e4d631f 21 months ago 7.04GB
pytorch/pytorch 1.3-cuda10.1-cudnn7-runtime ba2da111b833 2 years ago 4.32GB
tensorflow/tensorflow:2.8.0-gpu-jupyter既是拉取的镜像
docker run --gpus all -itd -v e:/dockerdir/docker_work/:/home/zhou/ -p 8888:8888 --ipc=host cc9a9ae2a5af jupyter notebook --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启动命令:
```jupyter notebook --no-browser --ip=0.0.0.0 --allow-root --NotebookApp.token= --notebook-dir='/home/zhou/'```
docker ps
docker exec -it cc58e655b170
PS C:\Users\25267> docker exec -it cc58e655b170 /bin/bash
________ _______________
___ __/__________________________________ ____/__ /________ __
__ / _ _ \_ __ \_ ___/ __ \_ ___/_ /_ __ /_ __ \_ | /| / /
_ / / __/ / / /(__ )/ /_/ / / _ __/ _ / / /_/ /_ |/ |/ /
/_/ \___//_/ /_//____/ \____//_/ /_/ /_/ \____/____/|__/
WARNING: You are running this container as root, which can cause new files in
mounted volumes to be created as the root user on your host machine.
To avoid this, run the container by specifying your user's userid:
$ docker run -u $(id -u):$(id -g) args...
root@bbe3199deccc:/# nvidia-smi
Sun May 15 14:19:51 2022
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 470.85 Driver Version: 472.47 CUDA Version: 11.4 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 NVIDIA GeForce ... Off | 00000000:01:00.0 On | N/A |
| N/A 62C P8 5W / N/A | 1356MiB / 6144MiB | ERR! Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
root@bbe3199deccc:/# nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2021 NVIDIA Corporation
Built on Sun_Feb_14_21:12:58_PST_2021
Cuda compilation tools, release 11.2, V11.2.152
Build cuda_11.2.r11.2/compiler.29618528_0
安装过程略。
在已经链接到容器的VsCode界面中,添加Python支持
import numpy as np
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.optimizers import SGD
import time
# config = tf.ConfigProto()
# config.gpu_options.allow_growth = True
# session = tf.Session(config=config)
# 启用GPU
from tensorflow.compat.v1 import ConfigProto# tf 2.x的写法
config =ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction=0.6
tf.compat.v1.Session(config=config)
# 构建数据集
X_data = np.linspace(-1,1,1000)[:, np.newaxis]
noise = np.random.normal(0,0.05,X_data.shape)
y_data = np.square(X_data) + noise + 0.5
print("shape")
print(X_data.shape)
# 构建神经网络
model = Sequential()
model.add(Dense(10, input_shape=(1,), kernel_initializer='normal', activation='relu'))
#model.add(Dense(5, activation='relu'))
# vs 分类为softmax激活
model.add(Dense(10000, kernel_initializer='normal'))
model.add(Dense(10000, kernel_initializer='normal'))
model.add(Dense(100, kernel_initializer='normal'))
model.add(Dense(1, kernel_initializer='normal'))
#sgd = SGD(lr=0.001)
model.compile(loss='mean_squared_error', optimizer="sgd") #adam
# 训练 epoch = 10, 30, 50, view the results
start = time.time()
model.fit(X_data, y_data, epochs=50, batch_size=16, verbose=1)
end = time.time()
# 在原数据上预测
y_predict=model.predict(X_data)
#print(y_predict)
model.summary()
print("training time {}".format(end - start))
这就是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快速安装手册
- 作者简介:关注AIoT领域的嵌入式开发一枚,追逐未来时代的脉搏,记录路途中的技术成长
- 本文由机器未来原创,首发在CSDN
- 订阅专栏:物体检测快速入门系列
- 面向人群:具备深度学习理论基础的学生或初级开发者
- 专栏计划:接下来会逐步发布跨入人工智能的系列博文,尽情期待
- 14天快速入门Python系列
- 快速入门Python数据科学系列
- 人工智能开发环境搭建系列
- 机器学习系列
- 物体检测快速入门系列
- 自动驾驶物体检测系列
- …
- 如果觉得博主的文章还不错的话,请点赞+收藏⭐️+留言支持一下博主哦