Pytorch In docker
作为一个全新的多人合作的项目,也当作是一个学习使用DL
和GPT
环境配置的过程,甚至是从非常开始的地步,搭建一个可以运行的环境
首先在docker
下拉取ubuntu20.04
的镜像,新建容器
$ docker pull ubuntu:20.04
$ docker run -it --name ubuntu_pytorch ubuntu:20.04
之后就可以使用命令来打开并进入容器:
$ docker start ubuntu-pytorch
$ docker exec -it ubuntu-pytorch /bin/bash
安装好必要的工具:
$ apt-get update
$ apt-get install gcc
$ apt-get install wget
$ apt-get install make
$ apt-get install vim
$ apt-get install zlib*
$ apt-get install libffi-dev
$ apt-get install libssl-dev
$ apt-get install python3
$ apt install python3-pip
安装好以后,因为是以nano GPT
的使用为导向,所以根据其文档,来安装对应版本的库
首先要对pip3
换源(原本的源太折磨了)
$ pip3 install --upgrade pip
$ pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
接着安装其它需要的库(在此之前,需要创建一个普通用户,否则无法正常使用pip安装)
$ pip3 install tqdm==2.2.3
$ pip3 install wandb==0.6.31
$ pip3 install tiktoken==0.3.3
$ pip3 install datasets==2.11.0
$ pip3 install transformers==2.9.0
$ pip3 install numpy==1.24.2
后面就是,比较麻烦的部分:
因为显卡资源在主机上,所以无法在docker
中直接被调用,如果想要使用,就不像在宿主机中,直接安装驱动那么简单,需要在主机上,安装适用于docker
的驱动
本来到了这一步,已经安装了只适用于CPU
版本的pytorch
,打算凑合用了,或者直接使用已经封装好的,还有CUDA
的镜像,后来发现了一个,在WSL
中,透传使用显卡
于是在docker
中查看了一下ubuntu
的版本,发现也是基于WSL
的:
$ uname -r
5.10.102.1-microsoft-standard-WSL2
决定尝试安装对应的驱动,在docker
中,透传使用GPU
先在官网中,找到适用于WSL
的驱动程序,发现Nvidia for WSL2
已经下架了,反而在最新的驱动程序中,描述其适用于WSL
,所以在主机上安装好对应的驱动(操作较为简单,并且在不同主机,版本不同,这里就不加赘述)
在WSL
中,官方文档的描述是,下载安装新的驱动,会覆盖掉WSL
中的CUDA
库,所以需要另外安装官方提供的CUDA
工具包:
$ wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-keyring_1.0-1_all.deb
$ sudo dpkg -i cuda-keyring_1.0-1_all.deb
$ sudo apt-get update
$ sudo apt-get -y install cuda
使用docker
保存好镜像后,重新使用其GPU
功能(docker nvidia的替代)
,创建新的容器:
$ docker run -it --gpus all d1mhs1mm32/nanogpt:wsl -name env_test
$ docker exec -it env_test /bin/bash
$ nvidia-smi
再安装GPU
版本的pytorch:
$ sudo pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
最后检查CUDA
是否可以被成功调用:
# test.py
import torch
print(torch.__version__)
print(torch.cuda.is_available())
print(torch.cuda.device_count())
print(torch.version.cuda)
$ python test.py
成功安装pytorch
,并且可以正常调用Nvidia
显卡:Get force 2060T
Demo
本来都已经注册好microsoft
的内测机会,下载好未发布的win11
了,最后跑步时候仔细想了一下,总觉得没道理一定要win10
,回来重新加载了一下,就可以运行了