π [Refactor] Docker structure, move to docker dir
Browse files- Dockerfile.gpu +0 -129
- .dockerignore β docker/.dockerignore +0 -0
- Dockerfile.cpu β docker/Dockerfile +14 -34
- docker/requirements-locked.txt +5 -0
Dockerfile.gpu
DELETED
|
@@ -1,129 +0,0 @@
|
|
| 1 |
-
FROM nvcr.io/nvidia/tensorrt:24.02-py3
|
| 2 |
-
|
| 3 |
-
ENV DEBIAN_FRONTEND=noninteractive
|
| 4 |
-
ARG USERNAME=user
|
| 5 |
-
ARG WORKDIR=/home/${USERNAME}/workdir
|
| 6 |
-
ARG PYCUDAVER=2022.2.2
|
| 7 |
-
ARG TORCHVER=2.1.0
|
| 8 |
-
ARG TORCHVISIONVER=0.16.0
|
| 9 |
-
ARG ONNXVER=1.16.1
|
| 10 |
-
ARG ONNXRUNTIMEVER=1.18.0
|
| 11 |
-
ARG ONNXSIMVER=0.4.30
|
| 12 |
-
ARG H5PYVER=3.11.0
|
| 13 |
-
ARG PSUTILVER=5.9.8
|
| 14 |
-
ARG CMAKEVER=3.29.3
|
| 15 |
-
ARG FLATBUFFERSVER=23.5.26
|
| 16 |
-
ARG PACKAGINGVER=24.0
|
| 17 |
-
ARG WHEELVER=0.43.0
|
| 18 |
-
|
| 19 |
-
SHELL ["/bin/bash", "-c"]
|
| 20 |
-
|
| 21 |
-
COPY requirements.txt /requirements.txt
|
| 22 |
-
|
| 23 |
-
ENV CUDA_HOME=/usr/local/cuda
|
| 24 |
-
ENV PATH=${PATH}:${CUDA_HOME}/bin
|
| 25 |
-
ENV LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${CUDA_HOME}/lib64
|
| 26 |
-
|
| 27 |
-
RUN apt-get update \
|
| 28 |
-
&& apt-get install -y \
|
| 29 |
-
sudo \
|
| 30 |
-
curl \
|
| 31 |
-
gcc \
|
| 32 |
-
git \
|
| 33 |
-
make \
|
| 34 |
-
wget \
|
| 35 |
-
zlib1g \
|
| 36 |
-
protobuf-compiler \
|
| 37 |
-
libgl1-mesa-dev \
|
| 38 |
-
graphviz \
|
| 39 |
-
python-is-python3 \
|
| 40 |
-
&& apt clean \
|
| 41 |
-
&& rm -rf /var/lib/apt/lists/*
|
| 42 |
-
|
| 43 |
-
# Make user
|
| 44 |
-
RUN echo "root:root" | chpasswd \
|
| 45 |
-
&& useradd \
|
| 46 |
-
--create-home \
|
| 47 |
-
--home-dir /home/${USERNAME} \
|
| 48 |
-
--shell /bin/bash \
|
| 49 |
-
--user-group \
|
| 50 |
-
--groups adm,sudo \
|
| 51 |
-
${USERNAME} \
|
| 52 |
-
&& echo "${USERNAME}:${USERNAME}" | chpasswd \
|
| 53 |
-
&& cat /dev/null > /etc/sudoers.d/${USERNAME} \
|
| 54 |
-
&& echo "%${USERNAME} ALL=(ALL) NOPASSWD: ALL" >> \
|
| 55 |
-
/etc/sudoers.d/${USERNAME} \
|
| 56 |
-
&& mkdir -p ${WORKDIR} \
|
| 57 |
-
&& chown ${USERNAME}:${USERNAME} ${WORKDIR}
|
| 58 |
-
|
| 59 |
-
USER ${USERNAME}
|
| 60 |
-
WORKDIR ${WORKDIR}
|
| 61 |
-
|
| 62 |
-
# Install Torch
|
| 63 |
-
RUN pip install \
|
| 64 |
-
--index-url https://download.pytorch.org/whl/cu121 \
|
| 65 |
-
torch==${TORCHVER} \
|
| 66 |
-
torchvision==${TORCHVISIONVER}
|
| 67 |
-
|
| 68 |
-
# Install other pip packages
|
| 69 |
-
RUN pip install \
|
| 70 |
-
psutil==${PSUTILVER} \
|
| 71 |
-
onnx==${ONNXVER} \
|
| 72 |
-
pycuda==${PYCUDAVER} \
|
| 73 |
-
onnxsim==${ONNXSIMVER} \
|
| 74 |
-
h5py==${H5PYVER} \
|
| 75 |
-
flatbuffers==${FLATBUFFERSVER} \
|
| 76 |
-
cmake==${CMAKEVER} \
|
| 77 |
-
packaging==${PACKAGINGVER} \
|
| 78 |
-
wheel==${WHEELVER} \
|
| 79 |
-
&& sudo rm /usr/local/bin/cmake
|
| 80 |
-
|
| 81 |
-
# Install onnx-tensorrt
|
| 82 |
-
RUN git clone -b release/8.6-GA --recursive https://github.com/onnx/onnx-tensorrt ../onnx-tensorrt \
|
| 83 |
-
&& export PATH=${PATH}:${HOME}/.local/bin \
|
| 84 |
-
&& pushd ../onnx-tensorrt \
|
| 85 |
-
&& mkdir -p build \
|
| 86 |
-
&& pushd build \
|
| 87 |
-
&& cmake .. -DTENSORRT_ROOT=/usr/src/tensorrt \
|
| 88 |
-
&& make -j$(nproc) \
|
| 89 |
-
&& sudo make install \
|
| 90 |
-
&& popd \
|
| 91 |
-
&& popd \
|
| 92 |
-
&& echo 'pushd ../onnx-tensorrt > /dev/null' >> ~/.bashrc \
|
| 93 |
-
# At docker build time, setup.py fails because NVIDIA's physical GPU device cannot be detected.
|
| 94 |
-
# Therefore, a workaround is applied to configure setup.py to run on first access.
|
| 95 |
-
&& echo 'python setup.py install --user 1>/dev/null 2>/dev/null' >> ~/.bashrc \
|
| 96 |
-
&& echo 'popd > /dev/null' >> ~/.bashrc \
|
| 97 |
-
&& echo 'export CUDA_MODULE_LOADING=LAZY' >> ~/.bashrc \
|
| 98 |
-
&& echo 'export PATH=${PATH}:/usr/src/tensorrt/bin:${HOME}/onnx-tensorrt/build' >> ~/.bashrc
|
| 99 |
-
|
| 100 |
-
# Build onnxruntime-gpu / Install onnxruntime-gpu
|
| 101 |
-
RUN git clone -b v${ONNXRUNTIMEVER} https://github.com/microsoft/onnxruntime.git \
|
| 102 |
-
&& pushd onnxruntime \
|
| 103 |
-
&& export PATH=${PATH}:${HOME}/.local/bin \
|
| 104 |
-
&& sudo chmod +x build.sh \
|
| 105 |
-
&& \
|
| 106 |
-
./build.sh \
|
| 107 |
-
--config Release \
|
| 108 |
-
--cudnn_home /usr/lib/x86_64-linux-gnu/ \
|
| 109 |
-
--cuda_home /usr/local/cuda \
|
| 110 |
-
--use_tensorrt \
|
| 111 |
-
--use_cuda \
|
| 112 |
-
--tensorrt_home /usr/src/tensorrt/ \
|
| 113 |
-
--enable_pybind \
|
| 114 |
-
--build_wheel \
|
| 115 |
-
--parallel $(nproc) \
|
| 116 |
-
--skip_tests \
|
| 117 |
-
&& pip install nvidia-pyindex \
|
| 118 |
-
&& pip install onnx-graphsurgeon \
|
| 119 |
-
&& pip install simple_onnx_processing_tools \
|
| 120 |
-
&& pip uninstall onnxruntime onnxruntime-gpu \
|
| 121 |
-
&& pip install --user build/Linux/Release/dist/onnxruntime_gpu-${ONNXRUNTIMEVER}-cp310-cp310-linux_x86_64.whl \
|
| 122 |
-
&& popd \
|
| 123 |
-
&& rm -rf onnxruntime
|
| 124 |
-
|
| 125 |
-
# Install requirements
|
| 126 |
-
RUN pip install -r /requirements.txt
|
| 127 |
-
|
| 128 |
-
# Setting pip package path
|
| 129 |
-
RUN echo 'export PATH=${PATH}:${HOME}/.local/bin' >> ~/.bashrc
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.dockerignore β docker/.dockerignore
RENAMED
|
File without changes
|
Dockerfile.cpu β docker/Dockerfile
RENAMED
|
@@ -1,23 +1,11 @@
|
|
| 1 |
-
|
|
|
|
| 2 |
|
| 3 |
-
ENV DEBIAN_FRONTEND=noninteractive
|
| 4 |
ARG USERNAME=user
|
| 5 |
-
ARG WORKDIR=/home/${USERNAME}/
|
| 6 |
-
ARG TORCHVER=2.1.0
|
| 7 |
-
ARG TORCHVISIONVER=0.16.0
|
| 8 |
-
ARG ONNXVER=1.16.1
|
| 9 |
-
ARG ONNXRUNTIMEVER=1.18.0
|
| 10 |
-
ARG ONNXSIMVER=0.4.30
|
| 11 |
-
ARG H5PYVER=3.11.0
|
| 12 |
-
ARG PSUTILVER=5.9.8
|
| 13 |
-
ARG CMAKEVER=3.29.3
|
| 14 |
-
ARG FLATBUFFERSVER=23.5.26
|
| 15 |
-
ARG PACKAGINGVER=24.0
|
| 16 |
-
ARG WHEELVER=0.43.0
|
| 17 |
|
| 18 |
SHELL ["/bin/bash", "-c"]
|
| 19 |
|
| 20 |
-
COPY requirements.txt /requirements.txt
|
| 21 |
|
| 22 |
ENV CUDA_HOME=/usr/local/cuda
|
| 23 |
ENV PATH=${PATH}:${CUDA_HOME}/bin
|
|
@@ -59,26 +47,18 @@ RUN echo "root:root" | chpasswd \
|
|
| 59 |
USER ${USERNAME}
|
| 60 |
WORKDIR ${WORKDIR}
|
| 61 |
|
| 62 |
-
|
| 63 |
-
|
| 64 |
-
--index-url https://download.pytorch.org/whl/cpu \
|
| 65 |
-
torch==${TORCHVER} \
|
| 66 |
-
torchvision==${TORCHVISIONVER}
|
| 67 |
|
| 68 |
-
# Install
|
| 69 |
-
RUN pip install
|
| 70 |
-
|
| 71 |
-
onnx==${ONNXVER} \
|
| 72 |
-
onnxruntime==${ONNXRUNTIMEVER} \
|
| 73 |
-
onnxsim==${ONNXSIMVER} \
|
| 74 |
-
h5py==${H5PYVER} \
|
| 75 |
-
flatbuffers==${FLATBUFFERSVER} \
|
| 76 |
-
cmake==${CMAKEVER} \
|
| 77 |
-
packaging==${PACKAGINGVER} \
|
| 78 |
-
wheel==${WHEELVER}
|
| 79 |
|
| 80 |
-
# Install requirements
|
| 81 |
-
RUN pip install -r /requirements.txt
|
| 82 |
|
| 83 |
-
|
|
|
|
|
|
|
| 84 |
RUN echo 'export PATH=${PATH}:${HOME}/.local/bin' >> ~/.bashrc
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
ARG BASE_IMG=nvidia/cuda:12.4.1-devel-ubuntu22.04
|
| 2 |
+
FROM ${BASE_IMG}
|
| 3 |
|
|
|
|
| 4 |
ARG USERNAME=user
|
| 5 |
+
ARG WORKDIR=/home/${USERNAME}/YOLO
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 6 |
|
| 7 |
SHELL ["/bin/bash", "-c"]
|
| 8 |
|
|
|
|
| 9 |
|
| 10 |
ENV CUDA_HOME=/usr/local/cuda
|
| 11 |
ENV PATH=${PATH}:${CUDA_HOME}/bin
|
|
|
|
| 47 |
USER ${USERNAME}
|
| 48 |
WORKDIR ${WORKDIR}
|
| 49 |
|
| 50 |
+
COPY docker/requirements-locked.txt /app/requirements-locked.txt
|
| 51 |
+
COPY requirements.txt /app/requirements.txt
|
|
|
|
|
|
|
|
|
|
| 52 |
|
| 53 |
+
# Install any needed packages specified in requirements.txt
|
| 54 |
+
RUN pip install --no-cache-dir -r /app/requirements-locked.txt
|
| 55 |
+
RUN pip install --no-cache-dir -r /app/requirements.txt
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 56 |
|
|
|
|
|
|
|
| 57 |
|
| 58 |
+
RUN git clone https://github.com/WongKinYiu/YOLO.git .
|
| 59 |
+
|
| 60 |
+
# Ensure pip-installed packages are available in the PATH
|
| 61 |
RUN echo 'export PATH=${PATH}:${HOME}/.local/bin' >> ~/.bashrc
|
| 62 |
+
|
| 63 |
+
# Optional: Source .bashrc to apply changes in the current session
|
| 64 |
+
RUN source ~/.bashrc
|
docker/requirements-locked.txt
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
pycocotools==2.0.7
|
| 2 |
+
torch==2.2.1
|
| 3 |
+
torchvision==0.17.1
|
| 4 |
+
setuptools>=60.0
|
| 5 |
+
numpy==1.23.5
|