docker + pytorch + jupyter 环境配置


docker 很强,很得劲,很上头

0x01 背景

因为来自东方的神秘原因,现在需要用到 pytorch。

“工欲善其身,必先利其器”

本文仅介绍 pytorch 在docker 的 jupyter 中如何成功运行,

具体详细的学习 pytorch 的教程网上大佬有过很多高质量的分享。

0x02 环境选择

# 检验是否使用 GPU
import torch

torch.cuda.is_available()

深度学习框架不外乎有三种方式,

  • 第一种,安装在本地,也是我在自己电脑上装的,比较适合单人开发、不需要太多的版本管理。

通过 pip 安装。优点很明显。但是缺点也很明显。

如果你是 cpu,没有显卡,可以无视以下缺点。

缺点1:需要手动安装 cuda 和 cudnn。现在可以选择 .deb 安装,算是很友好了。

缺点2:需要注意显卡驱动和 cuda 和 cudnn 之间的版本关系。

缺点3:一旦某个项目需要特定的深度学习框架版本,就需要重新安装。

缺点4:torch 的依赖库和其他深度学习框架的依赖库版本有冲突。(我到现在还没有解决,能用,就不管了)

  • 第二种,通过 Anaconda 安装,推荐单人使用。

一旦电脑上使用的用户多起来了以后,硬盘内存管理简直就是个灾难。

而且一不注意,他的整个文件夹的占用的内存很容易超过 10G。而我整个硬盘容量才 250G,再往里面塞一些数据集妥妥爆炸。

现在我自己电脑上有在使用的是 miniconda,使用体验以后来补充。

优点也很明显,无需安装 cuda 和 cudnn,它会自动适配对应的版本。懒人最爱。

  • 第三种,通过 docker 安装。因为公司服务器是多人使用,人一多之后,各种问题都会冒出来。

再维修了n次的系统环境之后,我忍受不住了。我是一个算法工程师啊,不是运维工程师啊。

上什么conda,统一上 docker。用了之后是真香。推荐个人和公司使用

优点:不用担心版本兼容,不用担心环境突然故障,内存占用比 conda 少,而且好管理。随便用,使劲霍霍,用炸了算我输。

缺点:上手的学习成本有点高。这也是我之前为什么不用他的主要原因。我会使用docker,但是同事不会啊。


最近也在选择键盘,在看很多款,我自用的是宁芝静电容,想要把家里的升级一下。看中了cherry的mx8和hhkb。

看了很多测评,其中有一句话说的很正:

“当你买了一个价格相对廉价的键盘之后,那么它的优点是价格便宜,剩下全是缺点;

当你买了一个价格相对昂贵的键盘之后,那么它的缺点是价格昂贵,剩下全是优点”

用在docker上是一样的,缺点就是学习周期长了点,剩下全是优点。

这就是我这篇文章的意义,加速让你上手 docker 使用 pytorch。

0x03 docker 安装

3.1 安装docker

官网链接: https://docs.docker.com/engine/install/ubuntu/

3.2 安装nvidia-docker

官网链接:https://github.com/NVIDIA/nvidia-docker

3.3 镜像加速

阿里云:https://cr.console.aliyun.com, 点进去注册账号,管理中心,左侧有个镜像加速器,找到网址,替换。

请在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件)

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["<https://xxxxxx.mirror.aliyuncs.com>"]
}
EOF

注意,一定要保证该文件符合 json 规范,否则 Docker 将不能启动. 之后重新启动服务。

$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

# 查看是否生效
$ docker info

3.4 测试

$ docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi

0x04 获取 pytorch 镜像

官方镜像仓库:https://hub.docker.com/

torch镜像:搜索torch,选择适合你系统的版本。我选的是图片中的版本。下载下来是 4.4 G

命令行运行:

$ docker pull pytorch/pytorch:1.9.0-cuda10.2-cudnn7-runtime

image-20210825125304592

0x05 快速开始一个新的docker容器

拉取了镜像之后需要创建一个容器,之后我们所有的工作都是在容器中运行。

一旦容器炸了,我们就把容器删掉,重新建一个即可

# 假设已经有 pytorch/pytorch:1.9.0-cuda10.2-cudnn7-runtime 镜像在本地了
$ docker run -it --gpus all -p 7777:8898 --name torch -v /home/lebhoryi/lebhoryi:/home/lebhoryi pytorch/pytorch:1.9.0-cuda10.2-cudnn7-runtime

命令解析:

  1. run 新建一个容器并且运行命令
  2. -i 交互式,连接网络
  3. -t tty 打开终端
  4. –gpus all 使用服务器的所有显卡
  5. 7777:8888 将容器的8888端口映射到服务器的7777端口,这个在用jupyter会用到
  6. –name torch 该容器命名为torch
  7. -v 本地绝对路径:容器绝对路径 设置共享文件夹
  8. pytorch/pytorch:1.9.0-cuda10.2-cudnn7-runtime 本地镜像

当有一个容器创建好之后,想要启动容器并且进去,推荐使用 docker start torch && docker attach torch

正常流程: 创建 --> 启动 --> 进入

# 创建
$ docker create -it --gpus all -p 7777:8898 --name torch -v /home/lebhoryi/lebhoryi:/home/lebhoryi pytorch/pytorch:1.9.0-cuda10.2-cudnn7-runtime

# 启动 进入
$ docker start torch && docker attach torch

# 验证
$ nvidia-smi

# 挂起  ctrl + p + q
# 返回容器
docker attach <name>

0x06 docker + jupyter

假定你的容器已经创建好了。

# 进入容器
$ docker attach torch

# 容器中运行
$ apt update && apt install git vim 
$ pip install jupyter
$ jupyter notebook --generate-config  # 记录 config.py 文件的位置和文件名

设置 jupyter 密码,

$ ipython

# In [1]: from notebook.auth import passwd
# In [2]: passwd()
# Enter password: 
# Verify password: 
# Out[2]: 'argon2:$argon2id$v=xxxxxx'

修改 config.py 文件,新增:

#  service
c.NotebookApp.allow_remote_access = True  # 允许远程
c.NotebookApp.ip = '*'   # 允许其他ip接入
c.NotebookApp.port = 7777  # 容器端口
c.NotebookApp.password =  'argon2:$argon2id$v=xxxxxx'  # 密
c.NotebookApp.open_browser = False   # 默认不打开浏览器
c.NotebookApp.allow_root = True  # 使用root
c.NotebookApp.notebook_dir = '/home/lebhoryi'  # 默认打开路径

最后命令行中输入:jupyter notebook 即可。

在本地输入 服务器的ip:7777

0x07 其他常用的命令

docker --help
docker create name  # 创建容器
docker start name    # 开启容器
docker pause name    # 暂停容器
docker kill name    # 杀死容器
docker restart name    # 重启容器
docker attach name    # 终端进入已经开启的容器
docker inspect name    # 查看容器的详细信息
docker logs name    # 查看容器日志
docker ps    # 查看正在运行的容器
docker ps -a    #查看所有容器
docker rm name    # 删除容器
docker rmi name    # 删除镜像
docker images    # 管理镜像
  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值