|
|
|
|
|
|
|
|
|
version: 2 |
|
|
|
|
|
|
|
|
|
cpu: &cpu |
|
docker: |
|
- image: circleci/python:3.6.8-stretch |
|
resource_class: medium |
|
|
|
gpu: &gpu |
|
machine: |
|
image: ubuntu-1604:201903-01 |
|
docker_layer_caching: true |
|
resource_class: gpu.small |
|
|
|
|
|
|
|
|
|
install_python: &install_python |
|
- run: |
|
name: Install Python |
|
working_directory: ~/ |
|
command: | |
|
pyenv install 3.6.1 |
|
pyenv global 3.6.1 |
|
|
|
setup_venv: &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 |
|
|
|
install_dep: &install_dep |
|
- run: |
|
name: Install Dependencies |
|
command: | |
|
pip install --progress-bar off -U 'git+https://github.com/facebookresearch/fvcore' |
|
pip install --progress-bar off cython opencv-python |
|
pip install --progress-bar off 'git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI' |
|
pip install --progress-bar off torch torchvision |
|
|
|
install_detectron2: &install_detectron2 |
|
- run: |
|
name: Install Detectron2 |
|
command: | |
|
gcc --version |
|
pip install -U --progress-bar off -e .[dev] |
|
python -m detectron2.utils.collect_env |
|
|
|
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 |
|
|
|
run_unittests: &run_unittests |
|
- run: |
|
name: Run Unit Tests |
|
command: | |
|
python -m unittest discover -v -s tests |
|
|
|
|
|
|
|
|
|
jobs: |
|
cpu_tests: |
|
<<: *cpu |
|
|
|
working_directory: ~/detectron2 |
|
|
|
steps: |
|
- checkout |
|
- <<: *setup_venv |
|
|
|
|
|
- restore_cache: |
|
keys: |
|
- cache-key-{{ .Branch }}-ID-20200425 |
|
|
|
- <<: *install_dep |
|
|
|
- save_cache: |
|
paths: |
|
- ~/venv |
|
key: cache-key-{{ .Branch }}-ID-20200425 |
|
|
|
- <<: *install_detectron2 |
|
|
|
- run: |
|
name: isort |
|
command: | |
|
isort -c -sp . |
|
- run: |
|
name: black |
|
command: | |
|
black --check -l 100 . |
|
- run: |
|
name: flake8 |
|
command: | |
|
flake8 . |
|
|
|
- <<: *run_unittests |
|
|
|
gpu_tests: |
|
<<: *gpu |
|
|
|
working_directory: ~/detectron2 |
|
|
|
steps: |
|
- checkout |
|
- <<: *install_nvidia_driver |
|
|
|
- run: |
|
name: Install nvidia-docker |
|
working_directory: ~/ |
|
command: | |
|
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - |
|
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) |
|
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | \ |
|
sudo tee /etc/apt/sources.list.d/nvidia-docker.list |
|
sudo apt-get update && sudo apt-get install -y nvidia-docker2 |
|
# reload the docker daemon configuration |
|
sudo pkill -SIGHUP dockerd |
|
|
|
- run: |
|
name: Launch docker |
|
working_directory: ~/detectron2/docker |
|
command: | |
|
nvidia-docker build -t detectron2:v0 -f Dockerfile-circleci . |
|
nvidia-docker run -itd --name d2 detectron2:v0 |
|
docker exec -it d2 nvidia-smi |
|
|
|
- run: |
|
name: Build Detectron2 |
|
command: | |
|
docker exec -it d2 pip install 'git+https://github.com/facebookresearch/fvcore' |
|
docker cp ~/detectron2 d2:/detectron2 |
|
# This will build d2 for the target GPU arch only |
|
docker exec -it d2 pip install -e /detectron2 |
|
docker exec -it d2 python3 -m detectron2.utils.collect_env |
|
docker exec -it d2 python3 -c 'import torch; assert(torch.cuda.is_available())' |
|
|
|
- run: |
|
name: Run Unit Tests |
|
command: | |
|
docker exec -e CIRCLECI=true -it d2 python3 -m unittest discover -v -s /detectron2/tests |
|
|
|
workflows: |
|
version: 2 |
|
regular_test: |
|
jobs: |
|
- cpu_tests |
|
- gpu_tests |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|