levihsu's picture
Upload 624 files
5a486d6 verified
raw
history blame
5.17 kB
# Python CircleCI 2.0 configuration file
#
# Check https://circleci.com/docs/2.0/language-python/ for more details
#
version: 2
# -------------------------------------------------------------------------------------
# Environments to run the jobs in
# -------------------------------------------------------------------------------------
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
# -------------------------------------------------------------------------------------
# Re-usable commands
# -------------------------------------------------------------------------------------
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 to run
# -------------------------------------------------------------------------------------
jobs:
cpu_tests:
<<: *cpu
working_directory: ~/detectron2
steps:
- checkout
- <<: *setup_venv
# Cache the venv directory that contains dependencies
- 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
#nightly_test:
#jobs:
#- gpu_tests
#triggers:
#- schedule:
#cron: "0 0 * * *"
#filters:
#branches:
#only:
#- master