当前位置:   article > 正文

Docker部署Yolo v5 / v7项目_docker yolov5

docker yolov5

一:系统环境

1.Ubuntu 22.04.3 LTS

  1. lemon@lemonPrecisionTower:~/my_file/yolo5_docker$ cat /etc/os-release
  2. PRETTY_NAME="Ubuntu 22.04.4 LTS"
  3. NAME="Ubuntu"
  4. VERSION_ID="22.04"
  5. VERSION="22.04.4 LTS (Jammy Jellyfish)"
  6. VERSION_CODENAME=jammy
  7. ID=ubuntu
  8. ID_LIKE=debian
  9. HOME_URL="https://www.ubuntu.com/"
  10. SUPPORT_URL="https://help.ubuntu.com/"
  11. BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
  12. PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
  13. UBUNTU_CODENAME=jammy
  14. lemon@lemonPrecisionTower:~/my_file/yolo5_docker$

2.安装Nvidia驱动以及Cuda驱动

Nvidia驱动下载地址:Official Drivers | NVIDIA

下载对应系统的驱动版本

Cuda驱动:CUDA Toolkit 12.4 Update 1 Downloads | NVIDIA Developer

安装好之后请自行核对驱动是否正确

  1. lemon@lemonPrecisionTower:~/my_file/yolo5_docker$ nvidia-smi
  2. Wed May 1 21:14:55 2024
  3. +---------------------------------------------------------------------------------------+
  4. | NVIDIA-SMI 545.29.06 Driver Version: 545.29.06 CUDA Version: 12.3 |
  5. |-----------------------------------------+----------------------+----------------------+
  6. | GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
  7. | Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
  8. | | | MIG M. |
  9. |=========================================+======================+======================|
  10. | 0 Tesla P40 Off | 00000000:02:00.0 Off | Off |
  11. | N/A 37C P0 52W / 250W | 174MiB / 24576MiB | 0% Default |
  12. | | | N/A |
  13. +-----------------------------------------+----------------------+----------------------+
  14. +---------------------------------------------------------------------------------------+
  15. | Processes: |
  16. | GPU GI CI PID Type Process name GPU Memory |
  17. | ID ID Usage |
  18. |=======================================================================================|
  19. | 0 N/A N/A 1550 G /usr/lib/xorg/Xorg 22MiB |
  20. | 0 N/A N/A 3907 C+G ...libexec/gnome-remote-desktop-daemon 149MiB |
  21. +---------------------------------------------------------------------------------------+
  22. lemon@lemonPrecisionTower:~/my_file/yolo5_docker$ nvcc -V
  23. nvcc: NVIDIA (R) Cuda compiler driver
  24. Copyright (c) 2005-2024 NVIDIA Corporation
  25. Built on Thu_Mar_28_02:18:24_PDT_2024
  26. Cuda compilation tools, release 12.4, V12.4.131
  27. Build cuda_12.4.r12.4/compiler.34097967_0
  28. lemon@lemonPrecisionTower:~/my_file/yolo5_docker$

3.Docker以及Docker-Compose

需要提前安装好Docker,最好Docker版本在19.x.x 以上,19版本以下的需要安装Nvidia-docker

Docker19 和 Docker-compose2.x 开始提供调用显卡的支持,除此之外还需要安装 nvidia-container-toolkit 用于提供Docker Container调用Nvidia显卡的支持。

Docker/Docker-compose的安装可以见我的另一篇博客:Linux离线安装Docker,Docker-compose适用于CentOS7,RockyLinux8,Ubuntu22.04,Ubuntu20.04-CSDN博客

  1. lemon@lemonPrecisionTower:~/my_file/yolo5_docker$ docker -v
  2. Docker version 26.1.0, build 9714adc
  3. lemon@lemonPrecisionTower:~/my_file/yolo5_docker$ docker-compose -v
  4. Docker Compose version v2.26.1
  5. lemon@lemonPrecisionTower:~/my_file/yolo5_docker$

4.nvidia-container-toolkit

  1. distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
  2. curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
  3. curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
  4. sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
  5. sudo systemctl restart docker

二:Dockerfile文件

我这是是基于Ubuntu 20.04 系统 Cuda 12.1 pytorch 2.2.2 版本构建文件

BaseImage

可以去Nvidia的官方Docker 镜像仓库中搜索你需要使用的Cuda版本以及对应系统的镜像

我这里选定的是 12.2.0-base-ubuntu20.04 因为我的系统是Ubuntu 22.04 我比较熟悉Ubuntu系

Python Version

去Python的官方下载地址中选择你所使用的Python版本

我开发使用的是 Python 3.9.18 所以我的Dockerfilw文件中就自动安装了Python 3.9.18版本

PyTorch Version

我选用的是 PyTorch 2.2.2 原本在我写文章测试的时候还是最新版本,现在最新发布了2.3.0

直接进入PyTorch 的历史版本页面,选择你需要的版本:

基于这些基础环境构建Dockerfile文件,基于官方Cuda镜像 nvidia/cuda:12.2.0-base-ubuntu20.04
,安装Python 3.9.18 之后安装Yolo v5运行时所需要的包,并安装PyTorch,其中具体的版本搭配需要看你所需的版本

  1. # CUDA基础镜像
  2. FROM nvidia/cuda:12.2.0-base-ubuntu20.04
  3. # 安装基础包
  4. RUN apt update && \
  5. apt install -y \
  6. wget build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev \
  7. libreadline-dev libffi-dev libsqlite3-dev libbz2-dev liblzma-dev && \
  8. apt clean && \
  9. rm -rf /var/lib/apt/lists/*
  10. WORKDIR /temp
  11. # 下载python
  12. RUN wget https://www.python.org/ftp/python/3.9.18/Python-3.9.18.tgz && \
  13. tar -xvf Python-3.9.18.tgz
  14. # 编译&安装python
  15. RUN cd Python-3.9.18 && \
  16. ./configure --enable-optimizations && \
  17. make && \
  18. make install
  19. WORKDIR /workspace
  20. RUN rm -r /temp && \
  21. ln -s /usr/local/bin/python3 /usr/local/bin/python && \
  22. ln -s /usr/local/bin/pip3 /usr/local/bin/pip
  23. # 安装 pytorch
  24. RUN pip3 install torch==2.2.2 torchvision==0.17.2 torchaudio==2.2.2 --index-url https://download.pytorch.org/whl/cu121
  25. # 安装需要的插件
  26. RUN pip3 install absl-py==2.1.0 Brotli==1.0.9 cachetools==5.3.3 certifi==2024.2.2 \
  27. charset-normalizer==3.3.2 colorama==0.4.6 contourpy==1.1.1 cycler==0.12.1 \
  28. filelock==3.13.1 fonttools==4.49.0 fsspec==2023.4.0 gmpy2==2.1.2 \
  29. google-auth==2.28.1 google-auth-oauthlib==1.0.0 grpcio==1.62.0 idna==3.6 \
  30. importlib-metadata==7.0.1 importlib-resources==6.1.2 Jinja2==3.1.2 \
  31. kiwisolver==1.4.5 Markdown==3.5.2 MarkupSafe==2.1.3 matplotlib==3.7.5 \
  32. mpmath==1.3.0 opencv-python==4.9.0.80 opencv-python-headless==4.9.0.80 \
  33. networkx==3.0 numpy==1.23.5 oauthlib==3.2.2 \
  34. packaging==23.2 pandas==2.0.3 pillow==10.2.0 protobuf==4.25.3 pyasn1==0.5.1 \
  35. pyasn1-modules==0.3.0 pycocotools==2.0.7 pyparsing==3.1.1 PySocks==1.7.1 \
  36. python-dateutil==2.9.0.post0 pytz==2024.1 PyYAML==6.0.1 requests==2.31.0 \
  37. requests-oauthlib==1.3.1 rsa==4.9 scipy==1.10.1 seaborn==0.13.2 \
  38. setuptools==68.2.2 six==1.16.0 sympy==1.12 tensorboard==2.14.0 \
  39. tensorboard-data-server==0.7.2 thop==0.1.1.post2209072238 tqdm==4.66.2 \
  40. triton==2.2.0 typing-extensions==4.8.0 tzdata==2024.1 urllib3==2.1.0 \
  41. Werkzeug==3.0.1 wheel==0.41.2 zipp==3.17.0 && \
  42. rm -r /root/.cache/pip
  43. # 安装 ffmpeg
  44. ENV TZ=Asia/Shanghai \
  45. DEBIAN_FRONTEND=noninteractive
  46. RUN apt-get update && apt-get install ffmpeg libsm6 libxext6 -y
  47. WORKDIR /yoloTrain

构建镜像 

docker build -t image_name:image_tag -f ./dockerfile_path .

  1. lemon@lemonPrecisionTower:~/my_file/yolo5_docker$ docker build -t lemon/pytorch-yolo5:test_2 -f ./Dockerfile-py3918-cuda121-pytorch222 .
  2. [+] Building 0.1s (15/15) FINISHED docker:default
  3. => [internal] load build definition from Dockerfile-py3918-cuda121-pytorch222 0.0s
  4. => => transferring dockerfile: 2.40kB 0.0s
  5. => [internal] load metadata for docker.io/nvidia/cuda:12.2.0-base-ubuntu20.04 0.0s
  6. => [internal] load .dockerignore 0.0s
  7. => => transferring context: 2B 0.0s
  8. => [ 1/11] FROM docker.io/nvidia/cuda:12.2.0-base-ubuntu20.04 0.0s
  9. => CACHED [ 2/11] 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 0.0s
  10. => CACHED [ 3/11] WORKDIR /temp 0.0s
  11. => CACHED [ 4/11] RUN wget https://www.python.org/ftp/python/3.9.18/Python-3.9.18.tgz && tar -xvf Python-3.9.18.tgz 0.0s
  12. => CACHED [ 5/11] RUN cd Python-3.9.18 && ./configure --enable-optimizations && make && make install 0.0s
  13. => CACHED [ 6/11] WORKDIR /workspace 0.0s
  14. => CACHED [ 7/11] RUN rm -r /temp && ln -s /usr/local/bin/python3 /usr/local/bin/python && ln -s /usr/local/bin/pip3 /usr/local/bin/pip 0.0s
  15. => CACHED [ 8/11] RUN pip3 install torch==2.2.2 torchvision==0.17.2 torchaudio==2.2.2 --index-url https://download.pytorch.org/whl/cu121 0.0s
  16. => CACHED [ 9/11] RUN pip3 install absl-py==2.1.0 Brotli==1.0.9 cachetools==5.3.3 certifi==2024.2.2 charset-normalizer==3.3.2 colorama==0.4.6 contourpy==1.1.1 cycler==0.12.1 filelock==3.13.1 fon 0.0s
  17. => CACHED [10/11] RUN apt-get update && apt-get install ffmpeg libsm6 libxext6 -y 0.0s
  18. => CACHED [11/11] WORKDIR /yoloTrain 0.0s
  19. => exporting to image 0.0s
  20. => => exporting layers 0.0s
  21. => => writing image sha256:7a558d670b90c1b8939c735a952e6c31ef51744c945406d0c6da931eb3a43399 0.0s
  22. => => naming to docker.io/lemon/pytorch-yolo5:test_2 0.0s
  23. lemon@lemonPrecisionTower:~/my_file/yolo5_docker$ docker images
  24. REPOSITORY TAG IMAGE ID CREATED SIZE
  25. lemon/pytorch-yolo5 test_1 7a558d670b90 3 hours ago 10.2GB
  26. lemon/pytorch-yolo5 test_2 7a558d670b90 3 hours ago 10.2GB
  27. lemon/pytorch pytorch2.2.2-py3.8.10-cuda12.2.0-ubuntu20.04 0e94c70d8f33 2 days ago 51.9GB
  28. lemon/pytorch-yolo v1 5a9259d2aead 2 days ago 9.9GB
  29. lemon/pytorch_test pytorch2.2.2-py3.8.10-cuda12.2.0-ubuntu20.04 5a9259d2aead 2 days ago 9.9GB
  30. lemon/pytorch 2.2.2-py3.9.10-cuda12.2.0-ubuntu20.04 6ae13bdc8b55 2 days ago 6.29GB
  31. lemon/pytorch pytorch2.2.2-py3.9.10-cuda12.2.0-ubuntu20.04 6ae13bdc8b55 2 days ago 6.29GB
  32. nginx latest 7383c266ef25 7 days ago 188MB
  33. redis latest 7fc37b47acde 3 weeks ago 116MB
  34. mysql latest 6f343283ab56 5 weeks ago 632MB
  35. nvidia/cuda 12.2.0-base-ubuntu20.04 2664f46b9de0 5 months ago 242MB
  36. hello-world latest d2c94e258dcb 12 months ago 13.3kB
  37. mysql 8.0.17 b8fd9553f1f0 4 years ago 445MB
  38. lemon@lemonPrecisionTower:~/my_file/yolo5_docker$

构建成功就可以看到刚才打包的镜像,后续我们基于刚才的镜像运行容器

三:Docker-Compose

准备工作

在Docker-compose文件中我们将Yolo v5的代码挂载进Dockerfile中创建的工作目录 :/yoloTrain

在此之前需要你先调通程序并调试好代码,上面Dockerfile中安装的运行时环境包也可以根据你的运行环境自行更改。

运行容器

  1. version: '3.8'
  2. services:
  3. cuda121_yolo_5:
  4. image: lemon/pytorch-yolo5:test_1
  5. container_name: cuda121_yolo_5
  6. stdin_open: true
  7. tty: true
  8. shm_size: 200G
  9. volumes:
  10. - /etc/localtime:/etc/localtime:ro
  11. - /home/lemon/my_file/yolo_v5/:/yoloTrain/
  12. deploy:
  13. resources:
  14. reservations:
  15. devices:
  16. - driver: nvidia
  17. count: all
  18. capabilities: [gpu]
  1. lemon@lemonPrecisionTower:~/my_file/yolo5_docker$ docker-compose -f docker-compose-yolo5-train.yml up
  2. WARN[0000] /home/lemon/my_file/yolo5_docker/docker-compose-yolo5-train.yml: `version` is obsolete
  3. [+] Running 1/0
  4. Container cuda121_yolo_5 Created 0.0s
  5. Attaching to cuda121_yolo_5

稍后容器启动后进入容器中,尝试运行训练代码:

  1. lemon@lemonPrecisionTower:~/my_file/yolo_v5/yolov5-5.0$ docker ps
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. f6a265b97218 lemon/pytorch-yolo5:test_1 "/bin/bash" 3 hours ago Up 2 minutes cuda121_yolo_5
  4. e5cacb5c9f33 mysql:8.0.17 "docker-entrypoint.s…" 6 days ago Up 12 hours 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql_data-mysql_8_0_17-1
  5. lemon@lemonPrecisionTower:~/my_file/yolo_v5/yolov5-5.0$ docker exec -it cuda121_yolo_5 /bin/bash
  6. root@f6a265b97218:/yoloTrain# cd yolov5-5.0
  7. root@f6a265b97218:/yoloTrain/yolov5-5.0# python train.py

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/858671
推荐阅读
相关标签
  

闽ICP备14008679号