WSL2使用Docker部署深度学习项目

文章目录

  • 1 安装WSL2
    • apt配置国内源
  • 2 WSL2安装Docker
    • 3 WSL2使用Docker设置 NVIDIA CUDA
    • 4 部署深度学习项目-deeepface

1 安装WSL2

官网: https://learn.microsoft.com/zh-cn/windows/wsl/install

#PowerShell
#查看可用发行版列表
wsl --list --online
#安装,  为要安装的发行版的名称
wsl --install -d <DistroName>  
#检查每个发行版的 WSL 版本
wsl -l -v
#设置为默认的Linux发行版
wsl --setdefault <DistributionName>
#默认版本设置为 WSL 2
wsl --set-default-version 2

apt配置国内源

参考上一篇: Ubuntu 21.04 使用Docker部署深度学习项目(cuda11.2+cudnn8.8+deepface)

2 WSL2安装Docker

官网: https://learn.microsoft.com/zh-cn/windows/wsl/tutorials/wsl-containers

  1. 下载 Docker Desktop并按照安装说明进行操作。
  2. 安装后,在“设置”>“常规”中选中“使用基于 WSL 2 的引擎”。
  3. 设置”>“资源”>“WSL 集成”,从要启用 Docker 集成的已安装 WSL 2 发行版中进行选择。
  4. 若要确认已安装 Docker,请打开 WSL 发行版(例如 Ubuntu),并通过输入 docker --version 来显示版本和内部版本号。
  5. 通过使用 docker run hello-world 运行简单的内置 Docker 映像,测试安装是否正常工作。

3 WSL2使用Docker设置 NVIDIA CUDA

#运行以下命令为 NVIDIA 容器工具包设置稳定存储库:
$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
$ curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-docker-keyring.gpg
$ curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-docker-keyring.gpg] https://#g' | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

#行以下命令安装 NVIDIA 运行时包和依赖项:
$ sudo apt-get update
$ sudo apt-get install -y nvidia-docker2

运行机器学习框架容器和示例

$ docker run --gpus all -it --shm-size=1g --ulimit memlock=-1 --ulimit stack=67108864 nvcr.io/nvidia/tensorflow:20.03-tf2-py3
#运行内置在此容器中的预训练模型示例:
$ cd nvidia-examples/cnn/
$ python resnet.py --batch_size=64

4 部署深度学习项目-deeepface

#docker load -i imageName.tar 用于从文件载入镜像
$ sudo docker load -i my_deepface.tar
#运行容器
#注意在DockerFile中写入的CMD后面的命令不执行主要是因为启动的时候指定了shell,命令末尾不要指定/bin/bash
$ sudo docker run -it --name container_my_deepface -p 80:5000 --gpus all f71edb39a3b1(镜像ID)

注意:启动容器会报错libnvidia-ml.so.1: file exists: unknown,但是这个镜像在其他linux环境可以跑。
参考issue:
https://github.com/NVIDIA/nvidia-docker/issues/1551

# make sure you don't build this new image with nvidia set as the default runtime in your daemon.json file.
#1. docker run --privileged the image
$ sudo docker run --privileged my_deepface.tar
#2.then execute unmount & rm to get rid of libnvidia* and libcuda* files
$ umount /usr/lib/x86_64-linux-gnu/libnvidia-ml.so.1
$ rm -rf /usr/lib/x86_64-linux-gnu/libnvidia-ml.so.1

#3.then docker commit to save a new image
$ sudo docker commit 容器ID deepface_image_new

#4.run this new image with --gpus all --runtime=nvidia options
$ sudo docker run -it --name container_my_deepface_new -p 80:5000 --gpus all ad7547e1cc7e

你可能感兴趣的:(docker,深度学习)