config.in.yml 5.54 KB
Newer Older
facebook-github-bot's avatar
facebook-github-bot committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
version: 2.1

#examples:
#https://github.com/facebookresearch/ParlAI/blob/master/.circleci/config.yml
#https://github.com/facebookresearch/hydra/blob/master/.circleci/config.yml
#https://github.com/facebookresearch/habitat-api/blob/master/.circleci/config.yml

#drive tests with nox or tox or pytest?

# -------------------------------------------------------------------------------------
# environments where we run our jobs
# -------------------------------------------------------------------------------------


setupcuda: &setupcuda
  run:
    name: Setup CUDA
    working_directory: ~/
    command: |
      # download and install nvidia drivers, cuda, etc
Jeremy Reizenstein's avatar
Jeremy Reizenstein committed
21
22
      wget --no-verbose --no-clobber -P ~/nvidia-downloads https://developer.download.nvidia.com/compute/cuda/11.3.1/local_installers/cuda_11.3.1_465.19.01_linux.run
      sudo sh ~/nvidia-downloads/cuda_11.3.1_465.19.01_linux.run --silent
facebook-github-bot's avatar
facebook-github-bot committed
23
24
25
      echo "Done installing CUDA."
      pyenv versions
      nvidia-smi
Jeremy Reizenstein's avatar
Jeremy Reizenstein committed
26
      pyenv global 3.9.1
facebook-github-bot's avatar
facebook-github-bot committed
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48

binary_common: &binary_common
  parameters:
    # Edit these defaults to do a release`
    build_version:
      description: "version number of release binary; by default, build a nightly"
      type: string
      default: ""
    pytorch_version:
      description: "PyTorch version to build against; by default, use a nightly"
      type: string
      default: ""
    # Don't edit these
    python_version:
      description: "Python version to build against (e.g., 3.7)"
      type: string
    cu_version:
      description: "CUDA version to build against, in CU format (e.g., cpu or cu100)"
      type: string
    wheel_docker_image:
      description: "Wheel only: what docker image to use"
      type: string
49
      default: "pytorch/manylinux-cuda101"
Jeremy Reizenstein's avatar
Jeremy Reizenstein committed
50
51
52
53
    conda_docker_image:
      description: "what docker image to use for docker"
      type: string
      default: "pytorch/conda-cuda"
facebook-github-bot's avatar
facebook-github-bot committed
54
55
56
57
58
  environment:
    PYTHON_VERSION: << parameters.python_version >>
    BUILD_VERSION: << parameters.build_version >>
    PYTORCH_VERSION: << parameters.pytorch_version >>
    CU_VERSION: << parameters.cu_version >>
Jeremy Reizenstein's avatar
Jeremy Reizenstein committed
59
    TESTRUN_DOCKER_IMAGE: << parameters.conda_docker_image >>
facebook-github-bot's avatar
facebook-github-bot committed
60
61
62

jobs:
  main:
Jeremy Reizenstein's avatar
Jeremy Reizenstein committed
63
64
65
    environment:
      CUDA_VERSION: "11.3"
    resource_class: gpu.nvidia.small.multi
facebook-github-bot's avatar
facebook-github-bot committed
66
    machine:
Jeremy Reizenstein's avatar
Jeremy Reizenstein committed
67
      image: ubuntu-2004:202101-01
facebook-github-bot's avatar
facebook-github-bot committed
68
69
70
    steps:
      - checkout
      - <<: *setupcuda
71
      - run: pip3 install --progress-bar off imageio wheel matplotlib 'pillow<7'
Jeremy Reizenstein's avatar
Jeremy Reizenstein committed
72
      - run: pip3 install --progress-bar off torch==1.10.0+cu113 torchvision==0.11.1+cu113 -f https://download.pytorch.org/whl/cu113/torch_stable.html
facebook-github-bot's avatar
facebook-github-bot committed
73
74
75
76
77
      # - run: conda create -p ~/conda_env python=3.7 numpy
      # - run: conda activate ~/conda_env
      # - run: conda install -c pytorch pytorch torchvision

      - run: pip3 install --progress-bar off 'git+https://github.com/facebookresearch/fvcore'
Jeremy Reizenstein's avatar
Jeremy Reizenstein committed
78
      - run: pip3 install --progress-bar off 'git+https://github.com/facebookresearch/iopath'
79
80
81
      - run:
          name: build
          command: |
Jeremy Reizenstein's avatar
Jeremy Reizenstein committed
82
            export LD_LIBRARY_PATH=$LD_LIBARY_PATH:/usr/local/cuda-11.3/lib64
83
            python3 setup.py build_ext --inplace
Jeremy Reizenstein's avatar
Jeremy Reizenstein committed
84
      - run: LD_LIBRARY_PATH=$LD_LIBARY_PATH:/usr/local/cuda-11.3/lib64 python -m unittest discover -v -s tests -t .
facebook-github-bot's avatar
facebook-github-bot committed
85
86
87
88
89
90
      - run: python3 setup.py bdist_wheel

  binary_linux_wheel:
    <<: *binary_common
    docker:
      - image: << parameters.wheel_docker_image >>
Jeremy Reizenstein's avatar
Jeremy Reizenstein committed
91
92
93
        auth:
          username: $DOCKERHUB_USERNAME
          password: $DOCKERHUB_TOKEN
facebook-github-bot's avatar
facebook-github-bot committed
94
95
96
    resource_class: 2xlarge+
    steps:
      - checkout
97
      - run: MAX_JOBS=15 packaging/build_wheel.sh
facebook-github-bot's avatar
facebook-github-bot committed
98
99
100
101
102
103
104
105
106
107
      - store_artifacts:
          path: dist
      - persist_to_workspace:
          root: dist
          paths:
            - "*"

  binary_linux_conda:
    <<: *binary_common
    docker:
Jeremy Reizenstein's avatar
Jeremy Reizenstein committed
108
      - image: "<< parameters.conda_docker_image >>"
Jeremy Reizenstein's avatar
Jeremy Reizenstein committed
109
110
111
        auth:
          username: $DOCKERHUB_USERNAME
          password: $DOCKERHUB_TOKEN
facebook-github-bot's avatar
facebook-github-bot committed
112
113
114
115
116
    resource_class: 2xlarge+
    steps:
      - checkout
      # This is building with cuda but no gpu present,
      # so we aren't running the tests.
Jeremy Reizenstein's avatar
Jeremy Reizenstein committed
117
118
119
      - run:
          name: build
          no_output_timeout: 20m
120
          command: MAX_JOBS=15 TEST_FLAG=--no-test python3 packaging/build_conda.py
facebook-github-bot's avatar
facebook-github-bot committed
121
122
123
124
125
126
127
128
129
130
      - store_artifacts:
          path: /opt/conda/conda-bld/linux-64
      - persist_to_workspace:
          root: /opt/conda/conda-bld/linux-64
          paths:
            - "*"

  binary_linux_conda_cuda:
    <<: *binary_common
    machine:
Jeremy Reizenstein's avatar
Jeremy Reizenstein committed
131
      image: ubuntu-1604-cuda-10.2:202012-01
Jeremy Reizenstein's avatar
Jeremy Reizenstein committed
132
    resource_class: gpu.nvidia.small.multi
facebook-github-bot's avatar
facebook-github-bot committed
133
134
135
136
137
138
    steps:
    - checkout

    - run:
        name: Pull docker image
        command: |
Jeremy Reizenstein's avatar
Jeremy Reizenstein committed
139
          nvidia-smi
facebook-github-bot's avatar
facebook-github-bot committed
140
          set -e
Jeremy Reizenstein's avatar
Jeremy Reizenstein committed
141
142
143

          { docker login -u="$DOCKERHUB_USERNAME" -p="$DOCKERHUB_TOKEN" ; } 2> /dev/null

Jeremy Reizenstein's avatar
Jeremy Reizenstein committed
144
145
          echo Pulling docker image $TESTRUN_DOCKER_IMAGE
          docker pull $TESTRUN_DOCKER_IMAGE
facebook-github-bot's avatar
facebook-github-bot committed
146
147
    - run:
        name: Build and run tests
Jeremy Reizenstein's avatar
Jeremy Reizenstein committed
148
        no_output_timeout: 20m
facebook-github-bot's avatar
facebook-github-bot committed
149
150
151
152
153
        command: |
          set -e

          cd ${HOME}/project/

Jeremy Reizenstein's avatar
Jeremy Reizenstein committed
154
155
          export JUST_TESTRUN=1
          VARS_TO_PASS="-e PYTHON_VERSION -e BUILD_VERSION -e PYTORCH_VERSION -e CU_VERSION -e JUST_TESTRUN"
facebook-github-bot's avatar
facebook-github-bot committed
156

157
          docker run --gpus all  --ipc=host -v $(pwd):/remote -w /remote ${VARS_TO_PASS} ${TESTRUN_DOCKER_IMAGE} python3 ./packaging/build_conda.py
facebook-github-bot's avatar
facebook-github-bot committed
158
159
160
161
162

workflows:
  version: 2
  build_and_test:
    jobs:
Jeremy Reizenstein's avatar
Jeremy Reizenstein committed
163
164
      # - main:
      #     context: DOCKERHUB_TOKEN
facebook-github-bot's avatar
facebook-github-bot committed
165
      {{workflows()}}
Jeremy Reizenstein's avatar
Jeremy Reizenstein committed
166
      - binary_linux_conda_cuda:
Jeremy Reizenstein's avatar
Jeremy Reizenstein committed
167
          name: testrun_conda_cuda_py38_cu102_pyt190
Jeremy Reizenstein's avatar
Jeremy Reizenstein committed
168
          context: DOCKERHUB_TOKEN
Jeremy Reizenstein's avatar
Jeremy Reizenstein committed
169
          python_version: "3.8"
170
          pytorch_version: '1.9.0'
Jeremy Reizenstein's avatar
Jeremy Reizenstein committed
171
          cu_version: "cu102"