深度学习Docker使用, (Pytorch/TensorRT/DeepStream),标记上传制作自己的DockerHub

1. 更新最新的Nvidia驱动

# 检查机器驱动建议
ubuntu-drivers devices

# 装12.0驱动
sudo apt install nvidia-driver-525

# 重启
sudo reboot
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 525.105.17   Driver Version: 525.105.17   CUDA Version: 12.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  Tesla T4            On   | 00000000:00:08.0 Off |                    0 |
| N/A   38C    P8     9W /  70W |      2MiB / 15360MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

2. Docker的安装官方版本

https://docs.docker.com/engine/install/ubuntu/

Set Up

# 删掉之前的docker
sudo apt-get remove docker docker-engine docker.io containerd runc

# Update the apt package index and install packages to allow apt to use a repository over HTTPS:
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg

# Add Docker’s official GPG key:
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# Use the following command to set up the repository:
echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Install Docker Engine

# Update the apt package index:
sudo apt-get update

# To install the latest version, run:
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# Verify that the Docker Engine installation is successful by running the hello-world image.
sudo docker run hello-world

安装nvidia cuda tookit

# 安装nvidia tookit
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
      && curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
      && curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \
            sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
            sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit

# 安装完toolkit要重启
sudo systemctl restart docker

4. 把docker加入User Group(选做)

 sudo usermod -aG docker $USER

加入了之后重启了才能使用

sudo reboot

5. 查看docker 挂载路径的目录

docker info | grep 'Docker Root Dir'

Docker Root Dir: /data/docker
我的docker数据的挂载就是在/data/docker下面的

6. 更改挂载的目录(选做)

# 查看路径
docker info | grep 'Docker Root Dir'
# 更改文件
sudo mkdir /data/docker
sudo vim /etc/docker/daemon.json


# 添加
{
    
    
    "data-root": "/data/docker"
}

# 重启docker
sudo systemctl restart docker

7. 拉取Pytorch训练的镜像

https://catalog.ngc.nvidia.com/containers

全部镜像都是在NVIDIA官方找的

docker run --gpus all -it --name env_pyt_1.12 -v $(pwd):/app nvcr.io/nvidia/pytorch:22.03-py3 

8. 拉取TensorRT的镜像

docker run --gpus all -it --name env_trt -v $(pwd):/app nvcr.io/nvidia/tensorrt:22.08-py3

9. 拉取DeepStream的镜像

docker run --gpus all -v `pwd`:/app -p 8556:8554  --name deepstream_env -it nvcr.io/nvidia/deepstream:6.1.1-devel bash

10. 打包镜像上传到DockerHub

登陆自己的账号

docker login --username easonbob

标记自己的镜像

docker tag nvcr.io/nvidia/pytorch:22.03-py3 easonbob/my_torch1-pytorch:22.03-py3

docker tag nvcr.io/nvidia/tensorrt:22.08-py3 easonbob/my_trt-tensorrt:22.08-py3

在这里面22.03和22.08分别是Nvidia容器对于镜像的标签, 在后面自己的仓库中沿用了这个标签,也告诉自己这个就是跟官方一样的容器,一个仓库中可以有很多个镜像,这些镜像用标签来做区分。

推送自己的镜像

docker push easonbob/my_torch1-pytorch:22.03-py3
docker push easonbob/my_trt-tensorrt:22.08-py3

11. 拉取并且运行自己的镜像

拉取自己的pytorch镜像

docker run --gpus all -it --name my_torch -v $(pwd):/app easonbob/my_torch1-pytorch:22.03-py3

拉取自己的TensorRT镜像

docker run --gpus all -it --name my_trt -v $(pwd):/app easonbob/my_trt-tensorrt:22.08-py3

12. pytorch镜像的使用方法(yolov5为例子)

找到conda在哪里

root@46f879adf741:/app/yolo_train/yolov5# whereis conda
conda: /opt/conda/bin/conda

使用conda init

/opt/conda/bin/conda init

克隆yolov5并且安装依赖项

# 克隆地址
git clone https://github.com/ultralytics/yolov5.git
# 进入目录
cd yolov5 
# 选择分支,这里使用了特定版本的yolov5,主要是避免出现兼容问题
git checkout a80dd66efe0bc7fe3772f259260d5b7278aab42f

# 安装依赖(如果是docker环境,要进入容器环境后再安装)
pip3 install -r requirements.txt  

有的时候opencv怎么装都会出问题,这个时候使用特定版本

pip3 install "opencv-python-headless<4.3"

测试yolov5

python detect.py --source ./data/images/ --weights weights/yolov5s.pt --conf-thres 0.4

13. 更改自己的镜像(以yolov5为例子)

  1. 提交容器更改:首先,您需要使用 docker commit 命令将更改后的容器提交为新的镜像。将 container-id 替换为您要提交的容器 ID,将 new-image-name 替换为新的镜像名称。

  2. 标记新的镜像:使用 docker tag 命令为新的镜像添加标签,以便将其推送到 Docker Hub。将 new-image-name 替换为您在上一步中使用的名称,将 your-username 和 your-repo-name 替换为您的 Docker Hub 用户名和仓库名称。

  3. 推送新的镜像:使用 docker push 命令将新的镜像推送到 Docker Hub。这将覆盖之前的镜像。

实操

# 提交容器更改
docker commit 46f879adf741 torch_yolov5

# 标记新的容器
docker tag torch_yolov5 easonbob/my_torch1-pytorch:22.03-py3-yolov5-6.0

# 推送新的容器
docker push easonbob/my_torch1-pytorch:22.03-py3-yolov5-6.0

使用推送上去的新的镜像

docker run --gpus all -it --name my_yolo -v $(pwd):/app easonbob/my_torch1-pytorch:22.03-py3-yolov5-6.0

测试这个镜像是否能用

python detect.py --source ./data/images/ --weights weights/yolov5s.pt --conf-thres 0.4

跑出结果了就说明我们使用的确实是自己之前安装了requirment.txt和headless版本opencv的镜像

猜你喜欢

转载自blog.csdn.net/bobchen1017/article/details/130594626