项目指定MindSpore为推理框架,可惜该框架不支持在Windows系统中调用gpu,于是想通过Docker在Win10中调用MindSpore的Linux镜像,本文记录一下配置过程。
Docker的基础原理和安装可参考我之前的博文Docker学习笔记 Docker-desktop官网下载:https://www.docker.com/products/docker-desktop
MindSpore官网:https://www.mindspore.cn/install 在MindSpore官网拉取GPU版本的镜像,相关设置如下图所示:
运行安装命令:
docker pull swr.cn-south-1.myhuaweicloud.com/mindspore/mindspore-gpu-cuda11.1:2.2.14
输入以下命令启动容器:
docker run -it --gpus all --name mind -p 10023:23 swr.cn-south-1.myhuaweicloud.com/mindspore/mindspore-gpu-cuda11.1:2.2.14 /bin/bash
--gpus all
表示该容器可以调用主机所有GPU--name mind
表示将该容器重命名为mind-p 10023:23
表示将主机端口10023映射到容器端口23,方面后续通过ssh来进行通信为了后续方便在Pycharm中启动容器,以及和容器进行通信,在Pycharm中安装Docker
和Source Synchronizer
两个插件。
安装完Docker插件后,在Pycharm的Services中,可以找到新建立的容器,并进行一键启动。
启动之后,点击Teminal
进入终端,即可在容器内部进行相关操作。
为了方便后续主机和容器进行文件的传输,在容器中配置ssh服务。 在容器中输入以下命令:
apt update
apt upgrade
apt install -y openssh-server
之后,为容器设置密码:
passwd
修改ssh配置文件:
vi /etc/ssh/sshd_config
主要对以下四行内容取消注释,并进行修改:
Port 23
PermitRootLogin yes
PubkeyAuthentication yes
MaxStartups 10:30:60
修改完之后输入:wq
保存退出。
重启ssh服务:
service ssh restart
最后,在主机端进行ssh连接测试:
ssh root@127.0.0.1 -p 10023
出现以下内容,表示顺利连接:
下面在Pycharm中,利用Source Synchronizer
进行ssh配置,在右上角点开编辑文件:
输入下列信息:
设置完成之后,就可以直接在编辑器中,通过右键,一键将文件上传到/home
路径中。
根据MindSpore官网的描述,可用以下代码进行环境验证:
import mindspore
mindspore.set_context(device_target='GPU')
mindspore.run_check()
将该文件上传到容器中进行运行,出现下列内容表示通过验证:
该插件上传比较方便,如需下载文件,可以用ssh连接软件去连接docker,也可采用命令行的方式,比如,需要将容器中的mind:/home/mindyolo/model.ckpt
文件下载到C:\Users\zxy\Desktop\cp
路径下,可执行:
docker cp mind:/home/mindyolo/check.py C:\Users\zxy\Desktop\cp
配置完环境后,发现C盘少了50多个G,仔细检查发现docker会把镜像和容器文件存放在C:\Users\zxy\AppData\Local\Docker
这个路径下,因此需要将其迁移到其它盘。
这里迁移千万不能直接手动复制文件夹,如果出错则会导致容器镜像丢失,下面用管理员命令打开控制台:
wsl --shutdown
wsl --export docker-desktop D:\Docker\temp\docker-desktop.tar
wsl --export docker-desktop-data D:\Docker\temp\docker-desktop-data.tar
wsl --unregister docker-desktop
wsl --unregister docker-desktop-data
wsl --import docker-desktop D:\Docker\wsl\docker-desktop D:\Docker\temp\docker-desktop.tar
wsl --import docker-desktop-data D:\Docker\wsl\docker-desktop-data D:\Docker\temp\docker-desktop-data.tar
完成之后,C盘存储压力消除,其它一切正常。
1.Source Synchronizer:https://plugins.jetbrains.com/plugin/7374-source-synchronizer 2.Window端Autogluon环境(Pycharm+Docker)搭建教程:https://zhuanlan.zhihu.com/p/370999648?utm_id=0 3.wsl2 docker 数据迁移步骤:https://zhuanlan.zhihu.com/p/581145587