Spaces:
Running
Running
version: 2.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 | |
jobs: | |
lint: | |
docker: | |
- image: cimg/python:3.7.4 | |
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-magic --ignore-regex "__repr__" --fail-under 90 mmyolo | |
build_cpu: | |
parameters: | |
# The python version must match available image tags in | |
# https://circleci.com/developer/images/image/cimg/python | |
python: | |
type: string | |
torch: | |
type: string | |
torchvision: | |
type: string | |
docker: | |
- image: cimg/python:<< parameters.python >> | |
resource_class: large | |
steps: | |
- checkout | |
- run: | |
name: Install Libraries | |
command: | | |
sudo apt-get update | |
sudo apt-get install -y ninja-build libglib2.0-0 libsm6 libxrender-dev libxext6 libgl1-mesa-glx libjpeg-dev zlib1g-dev libtinfo-dev libncurses5 | |
- run: | |
name: Configure Python & pip | |
command: | | |
pip install --upgrade pip | |
pip install wheel | |
- run: | |
name: Install PyTorch | |
command: | | |
python -V | |
pip install torch==<< parameters.torch >>+cpu torchvision==<< parameters.torchvision >>+cpu -f https://download.pytorch.org/whl/torch_stable.html | |
- run: | |
name: Install ONNXRuntime | |
command: | | |
pip install onnxruntime==1.8.1 | |
wget https://github.com/microsoft/onnxruntime/releases/download/v1.8.1/onnxruntime-linux-x64-1.8.1.tgz | |
tar xvf onnxruntime-linux-x64-1.8.1.tgz | |
- run: | |
name: Install mmyolo dependencies | |
command: | | |
pip install -U openmim | |
mim install git+https://github.com/open-mmlab/mmengine.git@main | |
mim install 'mmcv >= 2.0.0' | |
mim install git+https://github.com/open-mmlab/mmdetection.git@dev-3.x | |
pip install -r requirements/albu.txt | |
pip install -r requirements/tests.txt | |
- run: | |
name: Install mmdeploy | |
command: | | |
pip install setuptools | |
git clone -b dev-1.x --depth 1 https://github.com/open-mmlab/mmdeploy.git mmdeploy --recurse-submodules | |
wget https://github.com/Kitware/CMake/releases/download/v3.20.0/cmake-3.20.0-linux-x86_64.tar.gz | |
tar -xzvf cmake-3.20.0-linux-x86_64.tar.gz | |
sudo ln -sf $(pwd)/cmake-3.20.0-linux-x86_64/bin/* /usr/bin/ | |
cd mmdeploy && mkdir build && cd build && cmake .. -DMMDEPLOY_TARGET_BACKENDS=ort -DONNXRUNTIME_DIR=/home/circleci/project/onnxruntime-linux-x64-1.8.1 && make -j8 && make install | |
export LD_LIBRARY_PATH=/home/circleci/project/onnxruntime-linux-x64-1.8.1/lib:${LD_LIBRARY_PATH} | |
cd /home/circleci/project/mmdeploy && python -m pip install -v -e . | |
- run: | |
name: Build and install | |
command: | | |
pip install -e . | |
- run: | |
name: Run unittests | |
command: | | |
export LD_LIBRARY_PATH=/home/circleci/project/onnxruntime-linux-x64-1.8.1/lib:${LD_LIBRARY_PATH} | |
pytest tests/ | |
# coverage run --branch --source mmyolo -m pytest tests/ | |
# coverage xml | |
# coverage report -m | |
build_cuda: | |
parameters: | |
torch: | |
type: string | |
cuda: | |
type: enum | |
enum: ["10.1", "10.2", "11.0", "11.7"] | |
cudnn: | |
type: integer | |
default: 7 | |
machine: | |
image: ubuntu-2004-cuda-11.4:202110-01 | |
# docker_layer_caching: true | |
resource_class: gpu.nvidia.small | |
steps: | |
- checkout | |
- run: | |
# Cloning repos in VM since Docker doesn't have access to the private key | |
name: Clone Repos | |
command: | | |
git clone -b main --depth 1 https://github.com/open-mmlab/mmengine.git /home/circleci/mmengine | |
git clone -b dev-3.x --depth 1 https://github.com/open-mmlab/mmdetection.git /home/circleci/mmdetection | |
- run: | |
name: Build Docker image | |
command: | | |
docker build .circleci/docker -t mmyolo:gpu --build-arg PYTORCH=<< parameters.torch >> --build-arg CUDA=<< parameters.cuda >> --build-arg CUDNN=<< parameters.cudnn >> | |
docker run --gpus all -t -d -v /home/circleci/project:/mmyolo -v /home/circleci/mmengine:/mmengine -v /home/circleci/mmdetection:/mmdetection -w /mmyolo --name mmyolo mmyolo:gpu | |
- run: | |
name: Install mmyolo dependencies | |
command: | | |
docker exec mmyolo pip install -U openmim | |
docker exec mmyolo mim install -e /mmengine | |
docker exec mmyolo mim install 'mmcv >= 2.0.0' | |
docker exec mmyolo pip install -e /mmdetection | |
docker exec mmyolo pip install -r requirements/albu.txt | |
docker exec mmyolo pip install -r requirements/tests.txt | |
- run: | |
name: Build and install | |
command: | | |
docker exec mmyolo pip install -e . | |
- run: | |
name: Run unittests | |
command: | | |
docker exec mmyolo pytest tests/ | |
workflows: | |
pr_stage_lint: | |
when: << pipeline.parameters.lint_only >> | |
jobs: | |
- lint: | |
name: lint | |
filters: | |
branches: | |
ignore: | |
- main | |
pr_stage_test: | |
when: | |
not: << pipeline.parameters.lint_only >> | |
jobs: | |
- lint: | |
name: lint | |
filters: | |
branches: | |
ignore: | |
- main | |
- build_cpu: | |
name: minimum_version_cpu | |
torch: 1.8.0 | |
torchvision: 0.9.0 | |
python: 3.8.0 # The lowest python 3.7.x version available on CircleCI images | |
requires: | |
- lint | |
- build_cpu: | |
name: maximum_version_cpu | |
# mmdeploy not supported | |
# torch: 2.0.0 | |
# torchvision: 0.15.1 | |
torch: 1.12.1 | |
torchvision: 0.13.1 | |
python: 3.9.0 | |
requires: | |
- minimum_version_cpu | |
- hold: | |
type: approval | |
requires: | |
- maximum_version_cpu | |
- build_cuda: | |
name: mainstream_version_gpu | |
torch: 1.8.1 | |
# Use double quotation mark to explicitly specify its type | |
# as string instead of number | |
cuda: "10.2" | |
requires: | |
- hold | |
- build_cuda: | |
name: maximum_version_gpu | |
torch: 2.0.0 | |
cuda: "11.7" | |
cudnn: 8 | |
requires: | |
- hold | |
merge_stage_test: | |
when: | |
not: << pipeline.parameters.lint_only >> | |
jobs: | |
- build_cuda: | |
name: minimum_version_gpu | |
torch: 1.7.0 | |
# Use double quotation mark to explicitly specify its type | |
# as string instead of number | |
cuda: "11.0" | |
cudnn: 8 | |
filters: | |
branches: | |
only: | |
- main | |