# Python CircleCI 2.0 configuration file # # Check https://circleci.com/docs/2.0/language-python/ for more details # # Adopted from # https://github.com/facebookresearch/detectron2/blob/master/.circleci/config.yml version: 2 # ------------------------------------------------------------------------------------- # Environments to run the jobs in # ------------------------------------------------------------------------------------- cpu: &cpu docker: - image: circleci/python:3.7 resource_class: medium gpu: &gpu environment: CUDA_VERSION: "10.1" machine: image: ubuntu-1604-cuda-10.1:201909-23 resource_class: gpu.large # ------------------------------------------------------------------------------------- # Re-usable commands # ------------------------------------------------------------------------------------- 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 torch==1.5.1+cu101 -f https://download.pytorch.org/whl/torch_stable.html pip install --progress-bar off -r requirements-test.txt python -c 'import torch; print("Torch version:", torch.__version__)' python -m torch.utils.collect_env install_repo: &install_repo - run: name: Install Repository command: | python setup.py build develop run_unittests: &run_unittests - run: name: Run Unit Tests command: | pytest --junitxml=test-results/junit.xml --verbose run_flake8: &run_flake8 - run: name: Run Linter (flake8) command: | flake8 --show-source --statistics run_transformer_benchmark: &run_transformer_benchmark - run: name: Run Transformer Benchmark command: | python benchmarks/transformer.py # ------------------------------------------------------------------------------------- # Jobs to run # ------------------------------------------------------------------------------------- jobs: cpu_tests: <<: *cpu working_directory: ~/fairscale steps: - checkout - <<: *setup_venv # Cache the venv directory that contains dependencies - restore_cache: keys: - cache-key-cpu-{{ checksum "setup.py"}}-{{ checksum "requirements-test.txt"}} - <<: *install_dep - save_cache: paths: - ~/venv key: cache-key-cpu-{{ checksum "setup.py"}}-{{ checksum "requirements-test.txt"}} - <<: *install_repo - run: name: Run Linter (isort) command: | isort --check-only - run: name: Run Linter (black) command: | black --check . - run: name: Run type-checking (mypy) command: | mypy --pretty . - <<: *run_flake8 - <<: *run_unittests - store_test_results: path: test-results gpu_tests: <<: *gpu working_directory: ~/fairscale steps: - checkout - run: nvidia-smi - run: pyenv global 3.7.0 - <<: *setup_venv # Cache the venv directory that contains dependencies - restore_cache: keys: - cache-key-gpu-{{ checksum "setup.py"}}-{{ checksum "requirements-test.txt"}} - <<: *install_dep - save_cache: paths: - ~/venv key: cache-key-gpu-{{ checksum "setup.py"}}-{{ checksum "requirements-test.txt"}} - <<: *install_repo - <<: *run_unittests - store_test_results: path: test-results benchmarks: <<: *gpu working_directory: ~/fairscale steps: - checkout - run: nvidia-smi - run: pyenv global 3.7.0 - <<: *setup_venv # Cache the venv directory that contains dependencies - restore_cache: keys: - cache-key-gpu-{{ checksum "setup.py"}}-{{ checksum "requirements-test.txt"}} - <<: *install_dep - save_cache: paths: - ~/venv key: cache-key-gpu-{{ checksum "setup.py"}}-{{ checksum "requirements-test.txt"}} - <<: *install_repo - <<: *run_transformer_benchmark workflows: version: 2 build: jobs: - cpu_tests - gpu_tests - benchmarks