[Feature]: Add github workflow based on self hosted runner (#1751)
* add win10 workflow * update * update and add dockerfile * update script * add build docker image script * update * support cuda10.2 * update docker file * update build image tag * add release docker file * update release dockerfile * fix ncnn python build * test docker workflow * remove docker build workflow * fix comments * add conda-incubator * update build script and workflow * fix commentspull/1901/head
parent
754c08012d
commit
2fcc8dc19d
|
@ -2,8 +2,10 @@
|
||||||
|
|
||||||
ARGS=("$@")
|
ARGS=("$@")
|
||||||
|
|
||||||
cd mmdeploy
|
SCRIPT_DIR=$(cd `dirname $0`; pwd)
|
||||||
MMDEPLOY_DIR=$(pwd)
|
MMDEPLOY_DIR=$SCRIPT_DIR/../../..
|
||||||
|
|
||||||
|
cd $MMDEPLOY_DIR
|
||||||
mkdir -p build && cd build
|
mkdir -p build && cd build
|
||||||
cmake .. -DMMDEPLOY_BUILD_SDK=ON -DMMDEPLOY_BUILD_TEST=ON -DMMDEPLOY_BUILD_SDK_PYTHON_API=ON \
|
cmake .. -DMMDEPLOY_BUILD_SDK=ON -DMMDEPLOY_BUILD_TEST=ON -DMMDEPLOY_BUILD_SDK_PYTHON_API=ON \
|
||||||
-DMMDEPLOY_BUILD_EXAMPLES=ON -DMMDEPLOY_BUILD_SDK_CSHARP_API=ON \
|
-DMMDEPLOY_BUILD_EXAMPLES=ON -DMMDEPLOY_BUILD_SDK_CSHARP_API=ON \
|
||||||
|
|
|
@ -0,0 +1,104 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -e
|
||||||
|
# print env
|
||||||
|
#python3 tools/check_env.py
|
||||||
|
backend=${1:-ort}
|
||||||
|
device=${2:-cpu}
|
||||||
|
current_dir=$(cd `dirname $0`; pwd)
|
||||||
|
mmdeploy_dir=$current_dir/../../..
|
||||||
|
cd $mmdeploy_dir
|
||||||
|
|
||||||
|
work_dir=$mmdeploy_dir/work_dir
|
||||||
|
mkdir -p $work_dir $mmdeploy_dir/data
|
||||||
|
|
||||||
|
model_cfg=$work_dir/resnet18_8xb32_in1k.py
|
||||||
|
checkpoint=$work_dir/resnet18_8xb32_in1k_20210831-fbbb1da6.pth
|
||||||
|
sdk_cfg=configs/mmcls/classification_sdk_dynamic.py
|
||||||
|
input_img=tests/data/tiger.jpeg
|
||||||
|
|
||||||
|
python3 -m mim download mmcls --config resnet18_8xb32_in1k --dest $work_dir
|
||||||
|
|
||||||
|
if [ $backend == "ort" ]; then
|
||||||
|
deploy_cfg=configs/mmcls/classification_onnxruntime_dynamic.py
|
||||||
|
model=$work_dir/end2end.onnx
|
||||||
|
elif [ $backend == "trt" ]; then
|
||||||
|
deploy_cfg=configs/mmcls/classification_tensorrt-fp16_dynamic-224x224-224x224.py
|
||||||
|
model=$work_dir/end2end.engine
|
||||||
|
elif [ $backend == "ncnn" ]; then
|
||||||
|
deploy_cfg=configs/mmcls/classification_ncnn_static.py
|
||||||
|
model="$work_dir/end2end.param $work_dir/end2end.bin"
|
||||||
|
else
|
||||||
|
echo "Unsupported Backend=$backend"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "------------------------------------------------------------------------------------------------------------"
|
||||||
|
echo "deploy_cfg=$deploy_cfg"
|
||||||
|
echo "model_cfg=$model_cfg"
|
||||||
|
echo "checkpoint=$checkpoint"
|
||||||
|
echo "device=$device"
|
||||||
|
echo "------------------------------------------------------------------------------------------------------------"
|
||||||
|
|
||||||
|
python3 tools/deploy.py \
|
||||||
|
$deploy_cfg \
|
||||||
|
$model_cfg \
|
||||||
|
$checkpoint \
|
||||||
|
$input_img \
|
||||||
|
--device $device \
|
||||||
|
--work-dir $work_dir \
|
||||||
|
--dump-info
|
||||||
|
|
||||||
|
if [ $backend == "trt" ]; then
|
||||||
|
echo "Running onnx2tensorrt"
|
||||||
|
python3 tools/onnx2tensorrt.py \
|
||||||
|
$deploy_cfg \
|
||||||
|
$work_dir/end2end.onnx \
|
||||||
|
$work_dir/temp
|
||||||
|
fi
|
||||||
|
|
||||||
|
# prepare dataset
|
||||||
|
wget -P data/ https://github.com/open-mmlab/mmdeploy/files/9401216/imagenet-val100.zip
|
||||||
|
unzip data/imagenet-val100.zip -d data/
|
||||||
|
|
||||||
|
echo "Running test with $backend"
|
||||||
|
|
||||||
|
python3 tools/test.py \
|
||||||
|
$deploy_cfg \
|
||||||
|
$model_cfg \
|
||||||
|
--model $model \
|
||||||
|
--device $device \
|
||||||
|
--log2file $work_dir/test_ort.log \
|
||||||
|
--speed-test \
|
||||||
|
--log-interval 50 \
|
||||||
|
--warmup 20 \
|
||||||
|
--batch-size 8
|
||||||
|
|
||||||
|
echo "Running test with sdk"
|
||||||
|
|
||||||
|
# change topk for test
|
||||||
|
sed -i 's/"topk": 5/"topk": 1000/g' work_dir/pipeline.json
|
||||||
|
|
||||||
|
python3 tools/test.py \
|
||||||
|
$sdk_cfg \
|
||||||
|
$model_cfg \
|
||||||
|
--model $work_dir \
|
||||||
|
--device $device \
|
||||||
|
--log2file $work_dir/test_sdk.log \
|
||||||
|
--speed-test \
|
||||||
|
--log-interval 50 \
|
||||||
|
--warmup 20 \
|
||||||
|
--batch-size 8
|
||||||
|
|
||||||
|
# test profiler
|
||||||
|
echo "Profile sdk model"
|
||||||
|
python3 tools/profiler.py \
|
||||||
|
$sdk_cfg \
|
||||||
|
$model_cfg \
|
||||||
|
./data \
|
||||||
|
--model $work_dir \
|
||||||
|
--device $device \
|
||||||
|
--batch-size 8 \
|
||||||
|
--shape 224x224
|
||||||
|
|
||||||
|
echo "All done"
|
|
@ -0,0 +1,110 @@
|
||||||
|
<#
|
||||||
|
.SYNOPSIS
|
||||||
|
A helper script to test tools of MMDeploy Converter on windows.
|
||||||
|
|
||||||
|
.Description
|
||||||
|
-Backend: support ort, trt
|
||||||
|
-Device: support cpu, cuda, cuda:0
|
||||||
|
|
||||||
|
.EXAMPLE
|
||||||
|
PS> .circleci/scripts/linux/test_full_pipeline.sh -Backend ort -Device cpu
|
||||||
|
#>
|
||||||
|
|
||||||
|
param(
|
||||||
|
[Parameter(Mandatory = $true)]
|
||||||
|
[string] $Backend,
|
||||||
|
[string] $Device
|
||||||
|
)
|
||||||
|
|
||||||
|
$MMDeploy_DIR="$PSScriptRoot\..\..\.."
|
||||||
|
Set-Location $MMDeploy_DIR
|
||||||
|
|
||||||
|
$work_dir="work_dir"
|
||||||
|
New-Item -Path $work_dir, .\data -ItemType Directory -Force
|
||||||
|
$model_cfg="$work_dir\resnet18_8xb32_in1k.py"
|
||||||
|
$checkpoint="$work_dir\resnet18_8xb32_in1k_20210831-fbbb1da6.pth"
|
||||||
|
$sdk_cfg="configs\mmcls\classification_sdk_dynamic.py"
|
||||||
|
$input_img="tests\data\tiger.jpeg"
|
||||||
|
|
||||||
|
python -m mim download mmcls --config resnet18_8xb32_in1k --dest $work_dir
|
||||||
|
|
||||||
|
if ($Backend -eq "ort") {
|
||||||
|
$deploy_cfg="configs\mmcls\classification_onnxruntime_dynamic.py"
|
||||||
|
$model="$work_dir\end2end.onnx"
|
||||||
|
} elseif ($Backend -eq "trt") {
|
||||||
|
$deploy_cfg="configs\mmcls\classification_tensorrt-fp16_dynamic-224x224-224x224.py"
|
||||||
|
$model="$work_dir\end2end.engine"
|
||||||
|
} else {
|
||||||
|
Write-Host "Unsupported Backend=$Backend"
|
||||||
|
Exit
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host "--------------------------------------"
|
||||||
|
Write-Host "deploy_cfg=$deploy_cfg"
|
||||||
|
Write-Host "$model_cfg=$model_cfg"
|
||||||
|
Write-Host "$checkpoint=$checkpoint"
|
||||||
|
Write-Host "device=$device"
|
||||||
|
Write-Host "--------------------------------------"
|
||||||
|
|
||||||
|
python tools\deploy.py `
|
||||||
|
$deploy_cfg `
|
||||||
|
$model_cfg `
|
||||||
|
$checkpoint `
|
||||||
|
$input_img `
|
||||||
|
--device $device `
|
||||||
|
--work-dir $work_dir `
|
||||||
|
--dump-info
|
||||||
|
|
||||||
|
# prepare dataset
|
||||||
|
Invoke-WebRequest -Uri https://github.com/open-mmlab/mmdeploy/files/9401216/imagenet-val100.zip -OutFile $pwd\data\imagenet-val100.zip
|
||||||
|
Add-Type -AssemblyName System.IO.Compression.FileSystem ; [System.IO.Compression.ZipFile]::ExtractToDirectory("$pwd\data\imagenet-val100.zip", "$pwd\data\")
|
||||||
|
|
||||||
|
Write-Host "Running test with ort"
|
||||||
|
python tools\test.py `
|
||||||
|
$deploy_cfg `
|
||||||
|
$model_cfg `
|
||||||
|
--model $model `
|
||||||
|
--device $device `
|
||||||
|
--log2file $work_dir\test_ort.log `
|
||||||
|
--speed-test `
|
||||||
|
--log-interval 50 `
|
||||||
|
--warmup 20 `
|
||||||
|
--batch-size 8
|
||||||
|
|
||||||
|
|
||||||
|
Write-Host "Prepare dataset"
|
||||||
|
# change topk for test
|
||||||
|
$src_topk='"topk": 5'
|
||||||
|
$dst_topk='"topk": 1000'
|
||||||
|
$src_pipeline_file="$work_dir\pipeline.json"
|
||||||
|
$tmp_pipeline_file="$work_dir\pipeline_tmp.json"
|
||||||
|
Move-Item $src_pipeline_file $tmp_pipeline_file -force
|
||||||
|
(Get-Content -Path $tmp_pipeline_file) -replace $src_topk, $dst_topk | Add-Content -Path $src_pipeline_file
|
||||||
|
|
||||||
|
Write-Host "test sdk model"
|
||||||
|
|
||||||
|
python tools\test.py `
|
||||||
|
$sdk_cfg `
|
||||||
|
$model_cfg `
|
||||||
|
--model $work_dir `
|
||||||
|
--device $device `
|
||||||
|
--log2file $work_dir\test_sdk.log `
|
||||||
|
--speed-test `
|
||||||
|
--log-interval 50 `
|
||||||
|
--warmup 20 `
|
||||||
|
--batch-size 8`
|
||||||
|
|
||||||
|
# test profiler
|
||||||
|
Write-Host "Profile sdk model"
|
||||||
|
python tools\profiler.py `
|
||||||
|
$sdk_cfg `
|
||||||
|
$model_cfg `
|
||||||
|
.\data `
|
||||||
|
--model $work_dir `
|
||||||
|
--device $device `
|
||||||
|
--batch-size 8 `
|
||||||
|
--shape 224x224
|
||||||
|
|
||||||
|
# remove temp data
|
||||||
|
Remove-Item -Path "$work_dir" -Force -Recurse
|
||||||
|
Write-Host "All done"
|
|
@ -1,67 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -e
|
|
||||||
# print env
|
|
||||||
python tools/check_env.py
|
|
||||||
|
|
||||||
deploy_cfg=configs/mmcls/classification_onnxruntime_dynamic.py
|
|
||||||
device=cpu
|
|
||||||
python -m mim download mmcls --config resnet18_8xb32_in1k --dest ../
|
|
||||||
model_cfg=../resnet18_8xb32_in1k.py
|
|
||||||
checkpoint=../resnet18_8xb32_in1k_20210831-fbbb1da6.pth
|
|
||||||
sdk_cfg=configs/mmcls/classification_sdk_dynamic.py
|
|
||||||
input_img=tests/data/tiger.jpeg
|
|
||||||
work_dir=work_dir
|
|
||||||
|
|
||||||
echo "------------------------------------------------------------------------------------------------------------"
|
|
||||||
echo "deploy_cfg=$deploy_cfg"
|
|
||||||
echo "model_cfg=$model_cfg"
|
|
||||||
echo "checkpoint=$checkpoint"
|
|
||||||
echo "device=$device"
|
|
||||||
echo "------------------------------------------------------------------------------------------------------------"
|
|
||||||
|
|
||||||
mkdir -p $work_dir
|
|
||||||
|
|
||||||
python tools/deploy.py \
|
|
||||||
$deploy_cfg \
|
|
||||||
$model_cfg \
|
|
||||||
$checkpoint \
|
|
||||||
$input_img \
|
|
||||||
--device $device \
|
|
||||||
--work-dir $work_dir \
|
|
||||||
--dump-info
|
|
||||||
|
|
||||||
# prepare dataset
|
|
||||||
wget -P data/ https://github.com/open-mmlab/mmdeploy/files/9401216/imagenet-val100.zip
|
|
||||||
unzip data/imagenet-val100.zip -d data/
|
|
||||||
|
|
||||||
echo "Running test with ort"
|
|
||||||
|
|
||||||
python tools/test.py \
|
|
||||||
$deploy_cfg \
|
|
||||||
$model_cfg \
|
|
||||||
--model $work_dir/end2end.onnx \
|
|
||||||
--device $device \
|
|
||||||
--device $device \
|
|
||||||
--log2file $work_dir/test_ort.log \
|
|
||||||
--speed-test \
|
|
||||||
--log-interval 50 \
|
|
||||||
--warmup 20 \
|
|
||||||
--batch-size 32
|
|
||||||
|
|
||||||
echo "Running test with sdk"
|
|
||||||
|
|
||||||
# change topk for test
|
|
||||||
sed -i 's/"topk": 5/"topk": 1000/g' work_dir/pipeline.json
|
|
||||||
|
|
||||||
python tools/test.py \
|
|
||||||
$sdk_cfg \
|
|
||||||
$model_cfg \
|
|
||||||
--model $work_dir \
|
|
||||||
--device $device \
|
|
||||||
--device $device \
|
|
||||||
--log2file $work_dir/test_sdk.log \
|
|
||||||
--speed-test \
|
|
||||||
--log-interval 50 \
|
|
||||||
--warmup 20 \
|
|
||||||
--batch-size 1
|
|
|
@ -43,4 +43,4 @@ jobs:
|
||||||
export MMDEPLOY_DIR=$(pwd)
|
export MMDEPLOY_DIR=$(pwd)
|
||||||
export ONNXRUNTIME_DIR=$MMDEPLOY_DIR/../mmdeploy-dep/onnxruntime-linux-x64-1.8.1
|
export ONNXRUNTIME_DIR=$MMDEPLOY_DIR/../mmdeploy-dep/onnxruntime-linux-x64-1.8.1
|
||||||
export LD_LIBRARY_PATH=$ONNXRUNTIME_DIR/lib:$MMDEPLOY_DIR/build/install/lib:$LD_LIBRARY_PATH
|
export LD_LIBRARY_PATH=$ONNXRUNTIME_DIR/lib:$MMDEPLOY_DIR/build/install/lib:$LD_LIBRARY_PATH
|
||||||
bash .github/scripts/test_mmcls_full_pipeline.sh
|
bash .circleci/scripts/linux/test_full_pipeline.sh ort cpu
|
||||||
|
|
|
@ -218,3 +218,106 @@ jobs:
|
||||||
env_vars: OS,PYTHON,CPLUS
|
env_vars: OS,PYTHON,CPLUS
|
||||||
name: codecov-umbrella
|
name: codecov-umbrella
|
||||||
fail_ci_if_error: false
|
fail_ci_if_error: false
|
||||||
|
|
||||||
|
build_cuda113_linux:
|
||||||
|
runs-on: [self-hosted, linux-3090]
|
||||||
|
container:
|
||||||
|
image: openmmlab/mmdeploy:ubuntu20.04-cuda11.3
|
||||||
|
options: "--gpus=all --ipc=host"
|
||||||
|
#volumes:
|
||||||
|
# - /data2/checkpoints:/__w/mmdeploy/mmdeploy_checkpoints
|
||||||
|
# - /data2/benchmark:/__w/mmdeploy/data
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
- name: Install dependencies
|
||||||
|
run: |
|
||||||
|
apt update && apt install unzip
|
||||||
|
python3 -V
|
||||||
|
python3 -m pip install opencv-python==4.5.4.60 opencv-python-headless==4.5.4.60 opencv-contrib-python==4.5.4.60
|
||||||
|
python3 -m pip install openmim numpy pycuda clip
|
||||||
|
python3 -m pip install -r requirements.txt
|
||||||
|
python3 -m mim install $(cat requirements/codebases.txt | grep mmcls)
|
||||||
|
python3 -m pip list
|
||||||
|
- name: Build SDK
|
||||||
|
run: |
|
||||||
|
export Torch_DIR=$(python3 -c "import torch;print(torch.utils.cmake_prefix_path + '/Torch')")
|
||||||
|
bash .circleci/scripts/linux/build.sh "cpu;cuda" "ort;trt;ncnn;torchscript" \
|
||||||
|
-Dpplcv_DIR=${pplcv_DIR} \
|
||||||
|
-DTENSORRT_DIR=${TENSORRT_DIR} \
|
||||||
|
-DONNXRUNTIME_DIR=${ONNXRUNTIME_DIR} \
|
||||||
|
-Dncnn_DIR=${ncnn_DIR} \
|
||||||
|
-DTorch_DIR=${Torch_DIR}
|
||||||
|
ls build/lib
|
||||||
|
- name: Install converter
|
||||||
|
run: |
|
||||||
|
rm -rf .eggs && python3 -m pip install -e .
|
||||||
|
export LD_LIBRARY_PATH="/root/workspace/mmdeploy/build/lib:${LD_LIBRARY_PATH}"
|
||||||
|
python3 tools/check_env.py
|
||||||
|
- name: Test TensorRT pipeline
|
||||||
|
run: |
|
||||||
|
export LD_LIBRARY_PATH="/root/workspace/mmdeploy/build/lib:${LD_LIBRARY_PATH}"
|
||||||
|
export LD_LIBRARY_PATH="/root/workspace/mmdeploy/mmdeploy/lib:${LD_LIBRARY_PATH}"
|
||||||
|
bash .circleci/scripts/linux/test_full_pipeline.sh trt cuda
|
||||||
|
|
||||||
|
build_cuda113_windows:
|
||||||
|
runs-on: [self-hosted, win10-3080]
|
||||||
|
env:
|
||||||
|
BASE_ENV: cuda11.3-cudnn8.2-py3.8-torch1.10
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
shell: powershell
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
submodules: 'recursive'
|
||||||
|
- name: Setup Python Environment
|
||||||
|
run: |
|
||||||
|
echo "============================== Info =============================="
|
||||||
|
echo "env:path= $env:path"
|
||||||
|
echo "============================== Info =============================="
|
||||||
|
conda info
|
||||||
|
conda info -e
|
||||||
|
conda create -p $pwd\tmp_env --clone $env:BASE_ENV -y
|
||||||
|
conda activate $pwd\tmp_env
|
||||||
|
python -V
|
||||||
|
python -m pip install openmim
|
||||||
|
python -m pip install -r requirements.txt -r requirements/backends.txt
|
||||||
|
python -m mim install "mmcls>=1.0.0rc2"
|
||||||
|
python -m pip list
|
||||||
|
- name: Build mmdeploy
|
||||||
|
run: |
|
||||||
|
conda activate $pwd\tmp_env
|
||||||
|
python -V
|
||||||
|
mkdir build
|
||||||
|
cd build
|
||||||
|
cmake .. -A x64 -T v142 `
|
||||||
|
-DMMDEPLOY_BUILD_TEST=ON `
|
||||||
|
-DMMDEPLOY_BUILD_SDK_CSHARP_API=ON `
|
||||||
|
-DMMDEPLOY_BUILD_SDK_PYTHON_API=ON `
|
||||||
|
-DMMDEPLOY_BUILD_SDK=ON `
|
||||||
|
-DMMDEPLOY_TARGET_DEVICES='cuda' `
|
||||||
|
-DMMDEPLOY_TARGET_BACKENDS='ort;trt' `
|
||||||
|
-DMMDEPLOY_CODEBASES='all' `
|
||||||
|
-Dpplcv_DIR="$env:PPLCV_DIR\pplcv-build\install\lib\cmake\ppl" `
|
||||||
|
-DOpenCV_DIR="$env:OPENCV_DIR\build\x64\vc15\lib" `
|
||||||
|
-DTENSORRT_DIR="$env:TENSORRT_DIR" `
|
||||||
|
-DONNXRUNTIME_DIR="$env:ONNXRUNTIME_DIR" `
|
||||||
|
-DMMDEPLOY_BUILD_EXAMPLES=ON `
|
||||||
|
-DCUDNN_DIR="$env:CUDNN_DIR"
|
||||||
|
cmake --build . --config Release -- /m
|
||||||
|
cmake --install . --config Release
|
||||||
|
ls $pwd\bin\Release
|
||||||
|
- name: Install mmdeploy converter
|
||||||
|
run: |
|
||||||
|
conda activate $pwd\tmp_env
|
||||||
|
python -m pip install -e .
|
||||||
|
python .\tools\check_env.py
|
||||||
|
- name: Test trt full pipeline
|
||||||
|
run: |
|
||||||
|
conda activate $pwd\tmp_env
|
||||||
|
$env:path = "$pwd\build\bin\Release;" + $env:path
|
||||||
|
.circleci\scripts\windows\test_full_pipeline.ps1 -Backend trt -Device cuda
|
||||||
|
|
|
@ -0,0 +1,110 @@
|
||||||
|
ARG CUDA_INT=113
|
||||||
|
|
||||||
|
FROM nvidia/cuda:11.3.0-cudnn8-devel-ubuntu20.04 AS cuda-113
|
||||||
|
FROM nvidia/cuda:10.2-cudnn8-devel-ubuntu18.04 AS cuda-102
|
||||||
|
|
||||||
|
FROM cuda-${CUDA_INT} AS final
|
||||||
|
|
||||||
|
ARG TORCH_VERSION=1.10.0
|
||||||
|
ARG TORCHVISION_VERSION=0.11.0
|
||||||
|
|
||||||
|
# important dependencies
|
||||||
|
ARG OPENCV_VERSION==4.5.4.60
|
||||||
|
ARG PPLCV_VERSION=0.7.0
|
||||||
|
|
||||||
|
# backends
|
||||||
|
ARG ONNXRUNTIME_VERSION=1.8.1
|
||||||
|
ARG PPLNN_VERSION=0.8.1
|
||||||
|
ARG NCNN_VERSION=20221128
|
||||||
|
ARG TENSORRT_VERSION=8.2.3.0
|
||||||
|
# tensorrt tar file url
|
||||||
|
ARG TENSORRT_URL
|
||||||
|
|
||||||
|
USER root
|
||||||
|
WORKDIR /root/workspace
|
||||||
|
|
||||||
|
ENV DEBIAN_FRONTEND=nointeractive
|
||||||
|
ENV FORCE_CUDA="1"
|
||||||
|
|
||||||
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||||
|
apt-utils \
|
||||||
|
ca-certificates \
|
||||||
|
gcc-7 \
|
||||||
|
g++-7 \
|
||||||
|
git \
|
||||||
|
vim \
|
||||||
|
wget \
|
||||||
|
libopencv-dev \
|
||||||
|
libprotobuf-dev protobuf-compiler \
|
||||||
|
unzip \
|
||||||
|
python3-dev python3-pip \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
ENV CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda
|
||||||
|
ENV LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
|
||||||
|
|
||||||
|
# install jdk, onnxruntime, openvino, and other python packages
|
||||||
|
RUN wget https://download.java.net/java/GA/jdk18/43f95e8614114aeaa8e8a5fcf20a682d/36/GPL/openjdk-18_linux-x64_bin.tar.gz &&\
|
||||||
|
tar xvf openjdk-18_linux-x64_bin.tar.gz && rm -rf openjdk-18_linux-x64_bin.tar.gz && \
|
||||||
|
wget https://github.com/microsoft/onnxruntime/releases/download/v${ONNXRUNTIME_VERSION}/onnxruntime-linux-x64-${ONNXRUNTIME_VERSION}.tgz &&\
|
||||||
|
tar -xzvf onnxruntime-linux-x64-${ONNXRUNTIME_VERSION}.tgz && rm onnxruntime-*.tgz &&\
|
||||||
|
wget https://github.com/Kitware/CMake/releases/download/v3.25.2/cmake-3.25.2-linux-x86_64.tar.gz &&\
|
||||||
|
tar -xzvf cmake-3.25.2-linux-x86_64.tar.gz && rm cmake-*.tar.gz && mv cmake-* cmake &&\
|
||||||
|
export CUDA_INT=$(echo $CUDA_VERSION | awk '{split($0, a, "."); print a[1]a[2]}') &&\
|
||||||
|
python3 -m pip install --no-cache-dir --upgrade pip setuptools wheel &&\
|
||||||
|
python3 -m pip install --no-cache-dir onnxruntime-gpu==${ONNXRUNTIME_VERSION} &&\
|
||||||
|
python3 -m pip install --no-cache-dir openvino openvino-dev[onnx] &&\
|
||||||
|
python3 -m pip install --no-cache-dir opencv-python==${OPENCV_VERSION} opencv-python-headless==${OPENCV_VERSION} opencv-contrib-python==${OPENCV_VERSION} &&\
|
||||||
|
python3 -m pip install --no-cache-dir torch==${TORCH_VERSION}+cu${CUDA_INT} torchvision==${TORCHVISION_VERSION}+cu${CUDA_INT} -f https://download.pytorch.org/whl/torch_stable.html
|
||||||
|
|
||||||
|
# create env
|
||||||
|
ENV JAVA_HOME=/root/workspace/jdk-18
|
||||||
|
ENV PATH=$JAVA_HOME/bin:/root/workspace/cmake/bin:$PATH
|
||||||
|
ENV ONNXRUNTIME_VERSION=${ONNXRUNTIME_VERSION}
|
||||||
|
ENV ONNXRUNTIME_DIR=/root/workspace/onnxruntime-linux-x64-${ONNXRUNTIME_VERSION}
|
||||||
|
ENV LD_LIBRARY_PATH=${ONNXRUNTIME_DIR}/lib:$LD_LIBRARY_PATH
|
||||||
|
|
||||||
|
### install ppl.nn
|
||||||
|
RUN git clone --depth 1 --branch v${PPLNN_VERSION} --recursive https://github.com/openppl-public/ppl.nn.git &&\
|
||||||
|
cd ppl.nn &&\
|
||||||
|
export PYTHON_INCLUDE_DIR=$(python3 -c 'import sysconfig;print(sysconfig.get_paths()["include"])') &&\
|
||||||
|
./build.sh -DPPLNN_USE_X86_64=ON -DPPLNN_USE_CUDA=ON -DPPLNN_ENABLE_PYTHON_API=ON -DPYTHON3_INCLUDE_DIRS=${PYTHON_INCLUDE_DIR} &&\
|
||||||
|
cd ./python/package && \
|
||||||
|
./build.sh && \
|
||||||
|
cd - && mv pplnn-build/install ./ && rm -rf pplnn-build &&\
|
||||||
|
cd /tmp/pyppl-package/dist && \
|
||||||
|
python3 -m pip install pyppl*.whl && rm *.whl
|
||||||
|
|
||||||
|
ENV pplnn_DIR=/root/workspace/ppl.nn/install/lib/cmake/ppl
|
||||||
|
ENV PYTHONPATH=/root/workspace/ppl.nn/install/lib:$PYTHONPATH
|
||||||
|
|
||||||
|
|
||||||
|
### build ncnn
|
||||||
|
RUN git clone --depth 1 --branch ${NCNN_VERSION} --recursive https://github.com/Tencent/ncnn.git &&\
|
||||||
|
python3 -m pip install pybind11 &&\
|
||||||
|
mkdir ncnn/build && cd ncnn/build &&\
|
||||||
|
cmake -DNCNN_VULKAN=OFF -DNCNN_PYTHON=ON -DNCNN_BUILD_TOOLS=OFF -DCMAKE_INSTALL_PREFIX=../install .. &&\
|
||||||
|
make -j $(nproc) && make install &&\
|
||||||
|
cd .. && python3 -m pip install . && rm -rf ./build
|
||||||
|
|
||||||
|
ENV ncnn_DIR=/root/workspace/ncnn/install/lib/cmake/ncnn
|
||||||
|
|
||||||
|
### install ppl.cv
|
||||||
|
RUN git clone --depth 1 --branch v${PPLCV_VERSION} https://github.com/openppl-public/ppl.cv.git &&\
|
||||||
|
cd ppl.cv &&\
|
||||||
|
./build.sh cuda && mv cuda-build/install ./ && rm -rf cuda-build
|
||||||
|
|
||||||
|
ENV pplcv_DIR=/root/workspace/ppl.cv/install/lib/cmake/ppl
|
||||||
|
|
||||||
|
### install tensorrt
|
||||||
|
RUN wget -c $TENSORRT_URL && \
|
||||||
|
tar -zxvf /root/workspace/TensorRT-${TENSORRT_VERSION}*.tar.gz -C /root/workspace &&\
|
||||||
|
rm -rf TensorRT-${TENSORRT_VERSION}*.tar.gz &&\
|
||||||
|
ln -sf /root/workspace/TensorRT-${TENSORRT_VERSION} /root/workspace/TensorRT &&\
|
||||||
|
cd /root/workspace/TensorRT && rm -rf data doc samples uff &&\
|
||||||
|
export PY_VERSION=$(python3 -V | awk '{print $2}' | awk '{split($0, a, "."); print a[1]a[2]}') &&\
|
||||||
|
python3 -m pip install ./python/tensorrt-*-cp${PY_VERSION}-none-linux_x86_64.whl
|
||||||
|
|
||||||
|
ENV TENSORRT_DIR=/root/workspace/TensorRT
|
||||||
|
ENV LD_LIBRARY_PATH=$TENSORRT_DIR/lib:$LD_LIBRARY_PATH
|
||||||
|
ENV PATH=$TENSORRT_DIR/bin:$PATH
|
|
@ -0,0 +1,25 @@
|
||||||
|
FROM openmmlab/mmdeploy:ubuntu20.04-cuda11.3
|
||||||
|
|
||||||
|
ARG MMDEPLOY_VERSION
|
||||||
|
|
||||||
|
ENV BACKUP_LD_LIBRARY_PATH=$LD_LIBRARY_PATH
|
||||||
|
ENV LD_LIBRARY_PATH=/usr/local/cuda/compat:$LD_LIBRARY_PATH
|
||||||
|
|
||||||
|
# build mmdeploy
|
||||||
|
RUN git clone --recursive -b $MMDEPLOY_VERSION --depth 1 https://github.com/open-mmlab/mmdeploy.git &&\
|
||||||
|
export Torch_DIR=$(python3 -c "import torch;print(torch.utils.cmake_prefix_path + '/Torch')") &&\
|
||||||
|
bash mmdeploy/.circleci/scripts/linux/build.sh "cpu;cuda" "ort;trt;ncnn;torchscript" \
|
||||||
|
-Dpplcv_DIR=${pplcv_DIR} \
|
||||||
|
-DTENSORRT_DIR=${TENSORRT_DIR} \
|
||||||
|
-DONNXRUNTIME_DIR=${ONNXRUNTIME_DIR} \
|
||||||
|
-Dncnn_DIR=${ncnn_DIR} \
|
||||||
|
-DTorch_DIR=${Torch_DIR} &&\
|
||||||
|
cd mmdeploy &&\
|
||||||
|
python3 -m pip install -U openmim pycuda &&\
|
||||||
|
python3 -m pip install -r requirements.txt &&\
|
||||||
|
python3 -m pip install -e .
|
||||||
|
|
||||||
|
ENV MMDeploy_DIR="/root/workspace/mmdeploy/build/install/lib/cmake/MMDeploy"
|
||||||
|
ENV LD_LIBRARY_PATH="/root/workspace/mmdeploy/build/lib:${BACKUP_LD_LIBRARY_PATH}"
|
||||||
|
ENV PATH="/root/workspace/mmdeploy/build/bin:${PATH}"
|
||||||
|
ENV PYTHONPATH="/root/workspace/mmdeploy/build/lib:${PYTHONPATH}"
|
|
@ -0,0 +1,37 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
ip=${1}
|
||||||
|
port=${2:8585}
|
||||||
|
|
||||||
|
date_today=`date +'%Y%m%d'`
|
||||||
|
|
||||||
|
# create http server
|
||||||
|
nohup python3 -m http.server --directory /data2/shared/nvidia $port > tmp.log 2>&1
|
||||||
|
|
||||||
|
export TENSORRT_URL=http://$ip:$port/TensorRT-8.2.3.0.Linux.x86_64-gnu.cuda-11.4.cudnn8.2.tar.gz
|
||||||
|
export TENSORRT_VERSION=8.2.3.0
|
||||||
|
export CUDA_INT=113
|
||||||
|
export TAG=ubuntu20.04-cuda11.3
|
||||||
|
|
||||||
|
# build docker image
|
||||||
|
docker build ./docker/Base/ -t openmmlab/mmdeploy:$TAG \
|
||||||
|
--build-arg CUDA_INT=$CUDA_INT \
|
||||||
|
--build-arg TENSORRT_URL=${TENSORRT_URL} \
|
||||||
|
--build-arg TENSORRT_VERSION=${TENSORRT_VERSION}
|
||||||
|
|
||||||
|
docker tag openmmlab/mmdeploy:$TAG openmmlab/mmdeploy:${TAG}-${date_today}
|
||||||
|
|
||||||
|
# test docker image
|
||||||
|
docker run --gpus=all -itd \
|
||||||
|
-v /data2/benchmark:/root/workspace/openmmlab-data \
|
||||||
|
-v /data2/checkpoints:/root/workspace/mmdeploy_checkpoints \
|
||||||
|
-v ~/mmdeploy:/root/workspace/mmdeploy \
|
||||||
|
openmmlab/mmdeploy:$TAG
|
||||||
|
|
||||||
|
|
||||||
|
# push to docker hub
|
||||||
|
docker login
|
||||||
|
docker push openmmlab/mmdeploy:$TAG
|
||||||
|
docker push openmmlab/mmdeploy:$TAG-${date_today}
|
Loading…
Reference in New Issue