任意版本的pytorch、cuda的gpu版本与detectron2、jupyter notebook安装
1. 简介
本文主要介绍pytorch cuda gpu版本与detectron2、jupyter notebook安装, 主要是基于docker构建AI开发/预测用的环境.
优势与不足
-
优势
- 一键安装, 无需手动安装pytorch/cuda/detectron2/jupyter notebook等,尤其是在Windows系统下安装detectron2, 安装过程中会遇到各种问题, 本文避免了这些问题.
- docker运行GPU任务与直接在宿主机器上运行GPU任务性能相当,方便后续移植交付.
-
不足
- 目前只支持NVIDIA的cuda以及x86/amd64架构处理器,缺乏arm架构版本,也未找到opencl版本的base镜像, 后续找到后会更新.
2. 快速启动
主要思路为启动时挂载工程目录, 启动jupyter notebook, 然后在宿主机器上通过浏览器访问jupyter notebook, 从而实现在宿主机器上开发代码, 在容器内运行代码.
-
下载镜像
docker pull zzc932/pytorch:1.13.0-py3.9.12-cuda11.7.1-ubuntu20.04
-
检查GPU是否正常使用
docker run --rm --gpus all -it zzc932/pytorch:1.13.0-py3.9.12-cuda11.7.1-ubuntu20.04 nvidia-smi
参数说明:
- --rm: 容器退出后自动删除
- --gpus all: 使用所有GPU,如果只使用部分GPU,可以使用--gpus device=0,1
- -it: 交互式运行
- zzc932/pytorch:1.13.0-py3.9.12-cuda11.7.1-ubuntu20.04: 镜像名称
- nvidia-smi: 检查Nvidia GPU是否正常使用
- 使用前初始化jupyter密码, 输入两遍新密码
# 初始化jupyter密码
mkdir ~/.jupyter
# 执行后输入两遍新密码
docker run --rm -it -v ~/.jupyter:/root/.jupyter zzc932/pytorch:1.13.0-py3.9.12-cuda11.7.1-ubuntu20.04 bash -c "jupyter notebook password"
Enter password:
Verify password:
- 正式启动jupyter notebook
# 警告: --ip=0.0.0.0 --allow-root 会导致jupyter notebook不安全, 在生产环境使用时请去掉
docker run --name myjupyter -d -v ~/.jupyter:/root/.jupyter -p 8888:8888 zzc932/pytorch:1.13.0-py3.9.12-cuda11.7.1-ubuntu20.04 \
bash -c "jupyter notebook --ip=0.0.0.0 --allow-root"
- 在宿主机器上访问jupyter notebook
宿主机指运行这个docker容器的机器, 一般是本机(http://127.0.0.1:8888), 也可以是远程机器(http://hostname -i
:8888).
3. dockerfile内容
本章节给出dockerfile, 有需要修改特定CPU架构/GPU驱动的需求,可以修改对应命令.
FROM cnstark/pytorch:1.13.0-py3.9.12-cuda11.7.1-ubuntu20.04
# gcc & g++ ≥ 5.4 are required. ninja
RUN pip install ninja
RUN cd /tmp && apt-get update && apt-get install -y git && \
git clone https://github.com/facebookresearch/detectron2.git && \
python -m pip install -e detectron2 jupyter
4. 如何构建任意版本的镜像
python、pytorch、cuda一直在更新, 本文只是给出了一个常用的版本pytorch:1.13.0-py3.9.12-cuda11.7.1-ubuntu20.04,
如果需要构建其他版本的镜像, 则更换base镜像重新构建即可.
以Ubuntu20.04-Python3.9.10-CUDA11.3-Pytorch1.10.2为例,Dockerfile文件如下:
# CUDA基础镜像
FROM nvidia/cuda:11.3.1-cudnn8-runtime-ubuntu20.04
# CPU版本
# FROM ubuntu:20.04
# 安装基础包
RUN apt update && \
apt install -y \
wget build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev \
libreadline-dev libffi-dev libsqlite3-dev libbz2-dev liblzma-dev && \
apt clean && \
rm -rf /var/lib/apt/lists/*
WORKDIR /temp
# 下载python
RUN wget https://www.python.org/ftp/python/3.9.10/Python-3.9.10.tgz && \
tar -xvf Python-3.9.10.tgz
# 编译&安装python
RUN cd Python-3.9.10 && \
./configure --enable-optimizations && \
make && \
make install
WORKDIR /workspace
RUN rm -r /temp && \
ln -s /usr/local/bin/python3 /usr/local/bin/python && \
ln -s /usr/local/bin/pip3 /usr/local/bin/pip
# 安装pytorch
# https://pytorch.org/get-started/locally/
RUN pip3 install torch==1.10.2+cu113 torchvision==0.11.3+cu113 torchaudio==0.10.2+cu113 -f https://download.pytorch.org/whl/cu113/torch_stable.html && \
rm -r /root/.cache/pip