深度学习环境搭建
租用云GPU服务
这里我使用的是AutoDL,主要是价格比较便宜。
在租用GPU时,要注意所需项目的环境,特别是Pytorch和CUDA版本。服务器可以选择你需要的环境,如果没有你想要的环境,可以只选择Miniconda
环境,选择一个使用的Unbantu和Python版本,然后自行下载需要的环境。
vscode连接服务器
- 打开vscode,下载
Remote - SSH
插件。
- 打开最左边的
Remote - SSH
模块,点击+
,添加远程ssh登录指令,并输入AutoDL
实例页面的登录指令,并按回车,再次按回车写入配置文件。
- 点击右下角的
connect
,然后输入AutoDL
示例页面提供的密码,回车,成功连接。
- 在vscode的插件商店中选择
Python
,并为服务器端下载插件。
- 在vscode中按下
command+shift+p
,输入python,选择Python: Select Interpreter
,选择服务器中自动配置好的base
环境。如果在配置实例时只选择了Miniconda
,可以重新建立一个虚拟环境,安装Pytorch大礼包
。
配置服务器免密登录
这里我使用的是Mac操作系统进行配置,Windows具体流程相似。
操作流程:
1
2
|
$ cd ~/.ssh
$ ssh-keygen -t rsa -C "ssh key的注释"
|
此时在.ssh
目录下就会生成两个文件id_rsa
和id_rsa.pub
,分别是私钥和公钥。
- 复制公钥的内容到服务器端
/root/.ssh
目录下的authorized_keys
(有时也是authorized_keys2
):
1
2
|
$ cat ~/.ssh/id_rsa.pub
$ # 然后选中复制,并粘贴到服务器端的目标位置
|
- 配置完成之后,本地进入服务器端就不需要一直输ssh密码了。
上传文件
- 如果我们的文件可以在Github中找到,直接使用
Terminal
进行克隆:
1
|
$ git clone 你的repo的https地址
|
- 如果文件在本机,可以直接将文件拖拽到vscode目录下,也可以通过实例进入
JupyterLab
上传文件。
谷歌Colab白嫖GPU资源
首先登录Colab官网,点击新建笔记本
,点击代码执行程序
,点击下拉列表里的更改运行时类型
,选择GPU,保存。然后就可以开心地白嫖了!
修改Linux服务器文件权限问题
- 给文件所有者和同组用户赋予读写权限,其他用户只有读权限:
1
|
$ chmod -R 755 directory
|
请注意,修改文件或目录的权限需要有足够的权限进行操作。只有文件或目录的所有者或超级用户(root)才能更改权限。
Docker配置深度学习环境
第一步,安装Docker
- 如果没有安装docker,则使用官方提供的脚本进行安装:
1
|
$ curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
|
Docker镜像加速
- 在
/etc/docker/daemon.json
中写入如下内容,如果没有该文件则新建:
1
|
{"registry-mirrors":["https://XXX.mirror.aliyuncs.com/"]}
|
1
2
|
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
|
从Docker Hub下载镜像
- 进入Docker Hub,因为我使用的是pytorch的训练框架,搜索
torch1.9.0-cuda11.1-cudnn8
- 点击左边的
tags
,复制拉取镜像的脚本,在服务器的命令行上运行
运行Docker容器
1
|
$ docker run -it mindest/torch1.9.0-cuda11.1-cudnn8:bevt /bin/bash
|
参数说明:
-i
:交互式操作
-t
:终端
mindest/torch1.9.0-cuda11.1-cudnn8:bevt
:镜像名称:镜像标签
bin/bash
:放在镜像后面的是命令,这里我们希望有个交互式 Shell,因此用的是bin/bash。/bin/bash
的作用是表示载入容器后运行bash ,docker中必须要保持一个进程的运行,要不然整个容器启动后就会马上kill itself,这个/bin/bash
就表示启动容器后启动bash。
在容器内安装所需要的包,并更新镜像
- 安装需要的包,直接使用
pip install
和conda install
- 更新镜像:容器是动态的,镜像是静态的。我们在容器里更新了Python包,为了以后可以持久地使用,还需要使用
commit
将容器打包为镜像。
1
|
$ docker commit -m="update packages" -a="XXX" bb8967093b48 XXX/torch1.9.0-cuda11.1-cudnn8:bevt
|
各个参数说明:
-m
: 提交的描述信息
-a
: 指定镜像作者
bb8967093b48
:容器 ID
XXX/mypymarl:v1
: 指定要创建的目标镜像名(作者名/镜像名:标签)
在本地使用容器运行代码
- 首先我们需要创建一个本地的Ubuntu系统和docker容器共享的文件夹:
1
2
|
$ sudo mkdir /data
$ sudo docker run -v /data:/data -itd caixj/pytorch:v1
|
1
|
$ docker attach 500ad76de1cf
|
安装nvdia-cuda
Docker 默认是不支持在容器内 GPU 加速的,NVIDIA 官方做了个工具箱来支持容器内 GPU 加速运算,这大大方便了深度学习开发者。这里直接根据官方教程安装即可。
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html
安装完nvidia-cuda之后,再创建容器时加上--gpus all
,即可在容器内调用cuda,即
1
|
sudo docker run -v /data:/data -itd --gpus all caixj/pytorch:v1 bash
|
然后跟上述步骤相同,进入容器,然后运行代码就ok。
1
2
3
|
$ docker save -o <your_file_name.tar> <image id>
# 根据测试的反馈来说,最好不用image id进行save
$ docker save -o <your_file_name.tar> <image name:version>
|
1
2
3
4
|
$ docker load < your_file.tar.gz
# 或者
$ docker load --input your_file.tar
# 它的images的名字会变为your_file:latest
|
Docker常用命令
1
|
docker search XXX/image
|
1
|
docker pull XXX/images:tag
|
1
|
docker rmi XXX/images:ta
|
1
|
docker run -it image:tag /bin/bash
|
1
|
docker attach container_ID
|
1
|
docker start container_ID
|
1
|
docker stop container_ID
|
1
|
docker restart container_I
|
最后修改于 2023-05-17
本作品采用
知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。