Spaces:
Running
on
Zero
Running
on
Zero
# 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: | |
docker: | |
- image: circleci/python:3.6.8-stretch | |
resource_class: medium | |
gpu: | |
machine: | |
image: ubuntu-1604:201903-01 | |
docker_layer_caching: true | |
resource_class: gpu.small | |
# ------------------------------------------------------------------------------------- | |
# Re-usable commands | |
# ------------------------------------------------------------------------------------- | |
install_python: | |
- run: | |
name: Install Python | |
working_directory: ~/ | |
command: | | |
pyenv install 3.6.1 | |
pyenv global 3.6.1 | |
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: | |
- 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: | |
- run: | |
name: Install Detectron2 | |
command: | | |
gcc --version | |
pip install -U --progress-bar off -e .[dev] | |
python -m detectron2.utils.collect_env | |
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: | |
name: Run Unit Tests | |
command: | | |
python -m unittest discover -v -s tests | |
# ------------------------------------------------------------------------------------- | |
# Jobs to run | |
# ------------------------------------------------------------------------------------- | |
jobs: | |
cpu_tests: | |
<<: | |
working_directory: ~/detectron2 | |
steps: | |
- checkout | |
- <<: | |
# Cache the venv directory that contains dependencies | |
- restore_cache: | |
keys: | |
- cache-key-{{ .Branch }}-ID-20200425 | |
- <<: | |
- save_cache: | |
paths: | |
- ~/venv | |
key: cache-key-{{ .Branch }}-ID-20200425 | |
- <<: | |
- run: | |
name: isort | |
command: | | |
isort -c -sp . | |
- run: | |
name: black | |
command: | | |
black --check -l 100 . | |
- run: | |
name: flake8 | |
command: | | |
flake8 . | |
- <<: | |
gpu_tests: | |
<<: | |
working_directory: ~/detectron2 | |
steps: | |
- checkout | |
- <<: | |
- 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 | |