Windows部署Docker GPU深度学习开发环境
文章目录
-
-
-
- 1. 安装linux子系统
- 2. 安装Windows平台Docker-Desktop
- 3. 安装GPU的Docker镜像
- 4. 安装VsCode Docker支持
-
-
1. 安装linux子系统
windows目前已支持WSL2,可支持将主机的GPU映射到docker中运行。
- 查看windows平台可支持的linux子系统列表
wsl --list --online
- 安装子系统
推荐安装Ubuntu18.04,20版本有些软件还不能支持
wsl --install -d Ubuntu-18.04
- 设置默认子系统
wsl --setdefault Ubuntu-18.04
2. 安装Windows平台Docker-Desktop
-
下载
下载链接:点击此处 -
安装
安装过程略,无脑安装即可。
3. 安装GPU的Docker镜像
- 拉取Docker镜像
docker pull tensorflow/tensorflow:2.8.0rc1-gpu-jupyter
其它镜像查询地址:传送门
- 查看下载后的镜像
docker images
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/'
- 查询容器ID
docker ps
- 进入容器
docker exec -it cc58e655b170
4. 安装VsCode Docker支持
-
安装VsCode
安装过程略。 -
安装Docker插件
-
附着容器映射到VsCode
-
安装python支持到容器
-
安装jupyter插件到容器VsCode
-
新建或打开notebook文件选择内核
-
测试GPU训练模型
import numpy as npimport tensorflow as tffrom tensorflow import kerasfrom tensorflow.keras.models import Sequentialfrom tensorflow.keras.layers import Densefrom tensorflow.keras.optimizers import SGDimport time # config = tf.ConfigProto()# config.gpu_options.allow_growth = True# session = tf.Session(config=config)# 启用GPUfrom tensorflow.compat.v1 import ConfigProto# tf 2.x的写法config =ConfigProto()config.gpu_options.per_process_gpu_memory_fraction=0.6tf.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.5print("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 resultsstart = 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))
训练效果及GPU使用情况见下图
至此,Windows部署Docker GPU深度学习开发环境搭建完毕!