2022-06-29 12:05:56 +08:00
# Use the latest 2.1 version of CircleCI pipeline process engine.
# See: https://circleci.com/docs/2.0/configuration-reference
version : 2.1
orbs :
win : circleci/windows@4.1
# the default pipeline parameters, which will be updated according to
# the results of the path-filtering orb
parameters :
lint_only :
type : boolean
default : true
executors :
ubuntu-2004-cpu :
machine :
image : ubuntu-2004:202010-01
resource_class : large
working_directory : ~
ubuntu-2004-cu114 :
machine :
image : ubuntu-2004-cuda-11.4:202110-01
docker_layer_caching : true
resource_class : gpu.nvidia.medium
working_directory : ~
# MMDeploy Rules
# - In the command section, each command is requested to be os platform independent. Any command related to OS platform should be put in `scripts` folder
# - Use `python` instead of `python3` since there is no `python3` on Windows platform
# - DO NOT use `\` to break the line, as it is not identified correctly on Windows platform. So just don't break the line :)
commands :
checkout_full :
description : "Checkout mmdeploy"
steps :
- checkout :
path : mmdeploy # relative to `working_directory`
- run :
name : Checkout submodule
command : |
cd mmdeploy
git submodule sync
git submodule update --init
upgrade_pip :
steps :
- run :
name : Upgrade pip
command : python -m pip install --upgrade pip
install_pytorch :
parameters :
platform :
type : string
default : cpu
torch :
type : string
default : 1.8 .0
torchvision :
type : string
default : 0.9 .0
steps :
- run :
name : Install PyTorch
command : |
python -m pip install torch==<< parameters.torch >>+<< parameters.platform >> torchvision==<< parameters.torchvision >>+<< parameters.platform >> -f https://download.pytorch.org/whl/torch_stable.html
install_mmcv_cpu :
parameters :
version :
type : string
default : 1.5 .0
torch :
type : string
default : 1.8 .0
steps :
- run :
name : Install mmcv-full
command : |
2023-04-05 14:28:00 +08:00
python -m pip install opencv-python==4.5.4.60 opencv-contrib-python==4.5.4.60 opencv-python-headless==4.5.4.60
2022-06-29 12:05:56 +08:00
python -m pip install mmcv-full==<< parameters.version >> -f https://download.openmmlab.com/mmcv/dist/cpu/torch<< parameters.torch >>/index.html
install_mmcv_cuda :
parameters :
version :
type : string
default : 1.5 .0
cuda :
type : string
default : cu111
torch :
type : string
default : 1.8 .0
steps :
- run :
name : Install mmcv-full
command : |
2023-04-05 14:28:00 +08:00
python -m pip install opencv-python==4.5.4.60 opencv-contrib-python==4.5.4.60 opencv-python-headless==4.5.4.60
2022-06-29 12:05:56 +08:00
python -m pip install mmcv-full==<< parameters.version >> -f https://download.openmmlab.com/mmcv/dist/<< parameters.cuda >>/torch<< parameters.torch >>/index.html
install_mmdeploy :
description : "Install MMDeploy"
steps :
- run :
name : Install MMDeploy
command : |
cd mmdeploy
python -m pip install -v -e .
install_model_converter_req :
steps :
- run :
name : Install requirements
command : |
cd mmdeploy
python -m pip install -r requirements/codebases.txt
python -m pip install -r requirements/tests.txt
python -m pip install -r requirements/runtime.txt
python -m pip install -U numpy
cd ..
perform_model_converter_ut :
steps :
- run :
name : Perform Model Converter unittests
command : |
cd mmdeploy
coverage run --branch --source mmdeploy -m pytest -rsE tests
coverage xml
coverage report -m
cd ..
jobs :
lint :
# Specify the execution environment. You can specify an image from Dockerhub or use one of our Convenience Images from CircleCI's Developer Hub.
# See: https://circleci.com/docs/2.0/configuration-reference/#docker-machine-macos-windows-executor
docker :
- image : cimg/python:3.7.4
# Add steps to the job
# See: https://circleci.com/docs/2.0/configuration-reference/#steps
steps :
- checkout
- run :
name : Install pre-commit hook
command : |
pip install pre-commit
pre-commit install
- run :
name : Linting
command : pre-commit run --all-files
- run :
name : Check docstring coverage
command : |
pip install interrogate
interrogate -v --ignore-init-method --ignore-module --ignore-nested-functions --ignore-regex "__repr__" --fail-under 80 mmdeploy
test_linux_tensorrt :
executor : ubuntu-2004-cu114
steps :
- checkout_full
- run :
name : Build docker
command : |
docker build mmdeploy/.circleci/docker/ -t mmdeploy:gpu
- run :
name : Build MMDeploy
command : |
docker run --gpus all -t -d -v /home/circleci/project/:/project -w /project --name mmdeploy mmdeploy:gpu
docker exec mmdeploy bash mmdeploy/.circleci/scripts/linux/build.sh cuda trt -Dpplcv_DIR=/workspace/ppl.cv/cuda-build/install/lib/cmake/ppl
- run :
name : Install MMDeploy
# https://stackoverflow.com/questions/28037802/docker-exec-failed-cd-executable-file-not-found-in-path
command : |
docker exec -i mmdeploy bash -c "cd mmdeploy && pip install -v -e ."
- run :
name : Install requirements
command : |
docker exec mmdeploy pip install onnxruntime==1.8.1
docker exec mmdeploy pip install -r mmdeploy/requirements/codebases.txt
docker exec mmdeploy pip install -r mmdeploy/requirements/tests.txt
docker exec mmdeploy pip install -r mmdeploy/requirements/runtime.txt
docker exec mmdeploy pip install -U numpy
- run :
name : Perform Model Converter unittests
command : |
docker exec -i mmdeploy bash -c "cd mmdeploy && coverage run --branch --source mmdeploy -m pytest -rsE tests && coverage xml && coverage report -m"
- run :
name : Run SDK unittests
command : |
docker exec mmdeploy mkdir -p mmdeploy_test_resources/transform
docker exec mmdeploy cp mmdeploy/demo/resources/human-pose.jpg mmdeploy_test_resources/transform
docker exec mmdeploy ./mmdeploy/build/bin/mmdeploy_tests
test_windows_onnxruntime :
parameters :
version :
type : string
default : 1.8 .1
executor :
name : win/default
steps :
- checkout_full
- upgrade_pip
- install_pytorch
- install_mmcv_cpu
- run :
name : Install ONNX Runtime
command : mmdeploy/.circleci/scripts/windows/install_onnxruntime.ps1 cpu << parameters.version >>
- run :
name : Install OpenCV
command : mmdeploy/.circleci/scripts/windows/install_opencv.ps1
- run :
name : Build MMDeploy
command : |
$env:path = "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin;" + $env:path
$env:ONNXRUNTIME_DIR = "$pwd\onnxruntime"
$env:OPENCV_PACKAGE_DIR = "$(pwd)\opencv"
$env:MMDEPLOY_DIR = "$(pwd)\mmdeploy"
cd mmdeploy
mkdir build -ErrorAction SilentlyContinue
cd build
cmake .. -G "Visual Studio 16 2019" -A x64 -T v142 `
-DCMAKE_SYSTEM_VERSION="10.0.18362.0" `
-DMMDEPLOY_BUILD_SDK=ON `
-DMMDEPLOY_BUILD_TEST=ON `
-DMMDEPLOY_BUILD_SDK_PYTHON_API=ON `
2022-10-26 19:35:59 +08:00
-DMMDEPLOY_BUILD_EXAMPLES=ON `
2022-06-29 12:05:56 +08:00
-DMMDEPLOY_BUILD_SDK_CSHARP_API=ON `
-DMMDEPLOY_TARGET_BACKENDS="ort" `
-DOpenCV_DIR="$env:OPENCV_PACKAGE_DIR"
cmake --build . --config Release -- /m
cmake --install . --config Release
- install_mmdeploy
- install_model_converter_req
- perform_model_converter_ut
- run :
name : Perform SDK Unittests
command : |
$env:path = "$(pwd)\onnxruntime\lib;" + $env:path
$env:path = "$(pwd)\opencv\x64\vc16\bin;" + $env:path
mkdir mmdeploy_test_resources\transform
cp .\mmdeploy\demo\resources\human-pose.jpg mmdeploy_test_resources\transform
.\mmdeploy\build\bin\Release\mmdeploy_tests.exe
test_linux_onnxruntime :
parameters :
version :
type : string
default : 1.8 .1
executor : ubuntu-2004-cpu
steps :
- checkout_full
- run :
name : Re-install Python
command : bash mmdeploy/.circleci/scripts/linux/install_python.sh
- upgrade_pip
- install_pytorch
- install_mmcv_cpu
- run :
name : Install ONNX Runtime
command : bash mmdeploy/.circleci/scripts/linux/install_onnxruntime.sh cpu << parameters.version >>
- run :
name : Build MMDeploy
command : |
sudo apt-get update
sudo apt-get install libopencv-dev libpython3.8 python3.8-dev
bash mmdeploy/.circleci/scripts/linux/build.sh cpu ort
- install_mmdeploy
- install_model_converter_req
- perform_model_converter_ut
- run :
name : Perform SDK unittests
command : |
mkdir -p mmdeploy_test_resources/transform
cp -rf ./mmdeploy/demo/resources/human-pose.jpg mmdeploy_test_resources/transform
./mmdeploy/build/bin/mmdeploy_tests
- run :
name : Convert model
command : |
bash mmdeploy/.circleci/scripts/linux/convert_onnxruntime.sh mmcls mmdeploy-models/mmcls/onnxruntime
- run :
name : Inference model by SDK
command : |
2022-10-31 19:24:47 +08:00
./mmdeploy/build/bin/image_classification cpu mmdeploy-models/mmcls/onnxruntime mmclassification/demo/demo.JPEG
2022-06-29 12:05:56 +08:00
# See: https://circleci.com/docs/2.0/configuration-reference/#workflows
workflows :
pr_stage_lint :
when : << pipeline.parameters.lint_only >>
jobs :
- lint
pr_stage_test :
when :
not :
<< pipeline.parameters.lint_only >>
jobs :
- lint
- test_linux_onnxruntime :
version : 1.8 .1
requires :
- lint
- test_windows_onnxruntime :
version : 1.8 .1
requires :
- lint
- hold :
type : approval
requires :
- test_linux_onnxruntime
- test_windows_onnxruntime
- test_linux_tensorrt :
requires :
- hold