Spaces:
Running
on
Zero
Running
on
Zero
version: 2.1 | |
# ------------------------------------------------------------------------------------- | |
# Environments to run the jobs in | |
# ------------------------------------------------------------------------------------- | |
cpu: | |
machine: | |
image: ubuntu-2004:202107-02 | |
resource_class: medium | |
gpu: | |
machine: | |
# NOTE: use a cuda version that's supported by all our pytorch versions | |
image: ubuntu-1604-cuda-11.1:202012-01 | |
resource_class: gpu.nvidia.small | |
windows-cpu: | |
machine: | |
resource_class: windows.medium | |
image: windows-server-2019-vs2019:stable | |
shell: powershell.exe | |
# windows-gpu: &windows_gpu | |
# machine: | |
# resource_class: windows.gpu.nvidia.medium | |
# image: windows-server-2019-nvidia:stable | |
version_parameters: | |
parameters: | |
pytorch_version: | |
type: string | |
torchvision_version: | |
type: string | |
pytorch_index: | |
type: string | |
# use test wheels index to have access to RC wheels | |
# https://download.pytorch.org/whl/test/torch_test.html | |
default: "https://download.pytorch.org/whl/torch_stable.html" | |
python_version: # NOTE: only affect linux | |
type: string | |
default: '3.8.6' | |
environment: | |
PYTORCH_VERSION: << parameters.pytorch_version >> | |
TORCHVISION_VERSION: << parameters.torchvision_version >> | |
PYTORCH_INDEX: << parameters.pytorch_index >> | |
PYTHON_VERSION: << parameters.python_version>> | |
# point datasets to ~/.torch so it's cached in CI | |
DETECTRON2_DATASETS: ~/.torch/datasets | |
# ------------------------------------------------------------------------------------- | |
# Re-usable commands | |
# ------------------------------------------------------------------------------------- | |
# install_nvidia_driver: &install_nvidia_driver | |
# - run: | |
# name: Install nvidia driver | |
# working_directory: ~/ | |
# command: | | |
# wget -q 'https://s3.amazonaws.com/ossci-linux/nvidia_driver/NVIDIA-Linux-x86_64-430.40.run' | |
# sudo /bin/bash ./NVIDIA-Linux-x86_64-430.40.run -s --no-drm | |
# nvidia-smi | |
add_ssh_keys: | |
# https://circleci.com/docs/2.0/add-ssh-key/ | |
- add_ssh_keys: | |
fingerprints: | |
- "e4:13:f2:22:d4:49:e8:e4:57:5a:ac:20:2f:3f:1f:ca" | |
install_python: | |
- run: | |
name: Install Python | |
working_directory: ~/ | |
command: | | |
# upgrade pyenv | |
cd /opt/circleci/.pyenv/plugins/python-build/../.. && git pull && cd - | |
pyenv install -s $PYTHON_VERSION | |
pyenv global $PYTHON_VERSION | |
python --version | |
which python | |
pip install --upgrade pip | |
setup_venv: | |
- run: | |
name: Setup Virtual Env | |
working_directory: ~/ | |
command: | | |
python -m venv ~/venv | |
echo ". ~/venv/bin/activate" >> $BASH_ENV | |
. ~/venv/bin/activate | |
python --version | |
which python | |
which pip | |
pip install --upgrade pip | |
setup_venv_win: | |
- run: | |
name: Setup Virtual Env for Windows | |
command: | | |
pip install virtualenv | |
python -m virtualenv env | |
.\env\Scripts\activate | |
python --version | |
which python | |
which pip | |
install_linux_dep: | |
- run: | |
name: Install Dependencies | |
command: | | |
# disable crash coredump, so unittests fail fast | |
sudo systemctl stop apport.service | |
# install from github to get latest; install iopath first since fvcore depends on it | |
pip install --progress-bar off -U 'git+https://github.com/facebookresearch/iopath' | |
pip install --progress-bar off -U 'git+https://github.com/facebookresearch/fvcore' | |
# Don't use pytest-xdist: cuda tests are unstable under multi-process workers. | |
# Don't use opencv 4.7.0.68: https://github.com/opencv/opencv-python/issues/765 | |
pip install --progress-bar off ninja opencv-python-headless!=4.7.0.68 pytest tensorboard pycocotools onnx | |
pip install --progress-bar off torch==$PYTORCH_VERSION -f $PYTORCH_INDEX | |
if [[ "$TORCHVISION_VERSION" == "master" ]]; then | |
pip install git+https://github.com/pytorch/vision.git | |
else | |
pip install --progress-bar off torchvision==$TORCHVISION_VERSION -f $PYTORCH_INDEX | |
fi | |
python -c 'import torch; print("CUDA:", torch.cuda.is_available())' | |
gcc --version | |
install_detectron2: | |
- run: | |
name: Install Detectron2 | |
command: | | |
# Remove first, in case it's in the CI cache | |
pip uninstall -y detectron2 | |
pip install --progress-bar off -e .[all] | |
python -m detectron2.utils.collect_env | |
./datasets/prepare_for_tests.sh | |
run_unittests: | |
- run: | |
name: Run Unit Tests | |
command: | | |
pytest -sv --durations=15 tests # parallel causes some random failures | |
uninstall_tests: | |
- run: | |
name: Run Tests After Uninstalling | |
command: | | |
pip uninstall -y detectron2 | |
# Remove built binaries | |
rm -rf build/ detectron2/*.so | |
# Tests that code is importable without installation | |
PYTHONPATH=. ./.circleci/import-tests.sh | |
# ------------------------------------------------------------------------------------- | |
# Jobs to run | |
# ------------------------------------------------------------------------------------- | |
jobs: | |
linux_cpu_tests: | |
<<: | |
<<: | |
working_directory: ~/detectron2 | |
steps: | |
- checkout | |
# Cache the venv directory that contains python, dependencies, and checkpoints | |
# Refresh the key when dependencies should be updated (e.g. when pytorch releases) | |
- restore_cache: | |
keys: | |
- cache-{{ arch }}-<< parameters.pytorch_version >>-{{ .Branch }}-20210827 | |
- <<: | |
- <<: | |
- <<: | |
- <<: | |
- <<: | |
- save_cache: | |
paths: | |
- /opt/circleci/.pyenv | |
- ~/.torch | |
key: cache-{{ arch }}-<< parameters.pytorch_version >>-{{ .Branch }}-20210827 | |
linux_gpu_tests: | |
<<: | |
<<: | |
working_directory: ~/detectron2 | |
steps: | |
- checkout | |
- restore_cache: | |
keys: | |
- cache-{{ arch }}-<< parameters.pytorch_version >>-{{ .Branch }}-20210827 | |
- <<: | |
- <<: | |
- <<: | |
- <<: | |
- <<: | |
- save_cache: | |
paths: | |
- /opt/circleci/.pyenv | |
- ~/.torch | |
key: cache-{{ arch }}-<< parameters.pytorch_version >>-{{ .Branch }}-20210827 | |
windows_cpu_build: | |
<<: | |
<<: | |
steps: | |
- <<: | |
- checkout | |
- <<: | |
# Cache the env directory that contains dependencies | |
- restore_cache: | |
keys: | |
- cache-{{ arch }}-<< parameters.pytorch_version >>-{{ .Branch }}-20210404 | |
- run: | |
name: Install Dependencies | |
command: | | |
pip install certifi --ignore-installed # required on windows to workaround some cert issue | |
pip install numpy cython # required on windows before pycocotools | |
pip install opencv-python-headless pytest-xdist pycocotools tensorboard onnx | |
pip install -U git+https://github.com/facebookresearch/iopath | |
pip install -U git+https://github.com/facebookresearch/fvcore | |
pip install torch==$env:PYTORCH_VERSION torchvision==$env:TORCHVISION_VERSION -f $env:PYTORCH_INDEX | |
- save_cache: | |
paths: | |
- env | |
key: cache-{{ arch }}-<< parameters.pytorch_version >>-{{ .Branch }}-20210404 | |
- <<: | |
# TODO: unittest fails for now | |
workflows: | |
version: 2 | |
regular_test: | |
jobs: | |
- linux_cpu_tests: | |
name: linux_cpu_tests_pytorch1.10 | |
pytorch_version: '1.10.0+cpu' | |
torchvision_version: '0.11.1+cpu' | |
- linux_gpu_tests: | |
name: linux_gpu_tests_pytorch1.8 | |
pytorch_version: '1.8.1+cu111' | |
torchvision_version: '0.9.1+cu111' | |
- linux_gpu_tests: | |
name: linux_gpu_tests_pytorch1.9 | |
pytorch_version: '1.9+cu111' | |
torchvision_version: '0.10+cu111' | |
- linux_gpu_tests: | |
name: linux_gpu_tests_pytorch1.10 | |
pytorch_version: '1.10+cu111' | |
torchvision_version: '0.11.1+cu111' | |
- linux_gpu_tests: | |
name: linux_gpu_tests_pytorch1.10_python39 | |
pytorch_version: '1.10+cu111' | |
torchvision_version: '0.11.1+cu111' | |
python_version: '3.9.6' | |
- windows_cpu_build: | |
pytorch_version: '1.10+cpu' | |
torchvision_version: '0.11.1+cpu' | |