diff --git a/.github/workflows/call_precommit.yml b/.github/workflows/call_precommit.yml new file mode 100644 index 00000000000..e49f57ff955 --- /dev/null +++ b/.github/workflows/call_precommit.yml @@ -0,0 +1,233 @@ +name: call-precommit +permissions: read-all + +on: + workflow_call: + inputs: + python_version: + description: 'Python version' + type: string + required: true + gpu_enabled: + description: 'Enable gpu tests' + type: boolean + default: false + required: true + +jobs: + common: + timeout-minutes: 40 + runs-on: ubuntu-20.04 + defaults: + run: + shell: bash + steps: + - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + with: + lfs: true + - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 + with: + python-version: ${{ inputs.python_version }} + cache: pip + - name: Install NNCF and test requirements + run: make install-common-test + - name: Print installed modules + run: pip list + - name: Run common precommit test scope + run: make test-common + env: + NUM_WORKERS: 2 + + onnx: + timeout-minutes: 40 + runs-on: ubuntu-20.04-8-cores + defaults: + run: + shell: bash + steps: + - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + with: + lfs: true + - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 + with: + python-version: ${{ inputs.python_version }} + - name: Install NNCF and test requirements + run: make install-onnx-test + - name: Print installed modules + run: pip list + - name: Run ONNX precommit test scope + run: make test-onnx + env: + NUM_WORKERS: 4 + + openvino: + timeout-minutes: 40 + runs-on: ubuntu-20.04-8-cores + defaults: + run: + shell: bash + steps: + - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + with: + lfs: true + - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 + with: + python-version: ${{ inputs.python_version }} + cache: pip + - name: Install NNCF and test requirements + run: make install-openvino-test + - name: Print installed modules + run: pip list + - name: Run OV precommit test scope + run: make test-openvino + env: + NUM_WORKERS: 4 + + pytorch-cpu: + timeout-minutes: 40 + runs-on: ubuntu-20.04-8-cores + defaults: + run: + shell: bash + env: + DEBIAN_FRONTEND: noninteractive + steps: + - name: Install dependencies + run : | + sudo apt-get update + sudo apt-get --assume-yes install gcc g++ build-essential ninja-build libgl1-mesa-dev libglib2.0-0 + - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + with: + lfs: true + - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 + with: + python-version: ${{ inputs.python_version }} + cache: pip + - name: Runner info + continue-on-error: true + run: | + cat /etc/*release + cat /proc/cpuinfo + - name: Install NNCF and test requirements + run: make install-torch-test + - name: Print installed modules + run: pip list + - name: Run PyTorch precommit test scope + run: | + make test-torch-cpu + env: + NUM_WORKERS: 4 + + pytorch-cuda: + timeout-minutes: 40 + runs-on: aks-linux-4-cores-28gb-gpu-tesla-t4 + if: ${{ inputs.gpu_enabled == true }} + defaults: + run: + shell: bash + env: + DEBIAN_FRONTEND: noninteractive + steps: + - name: Install dependencies + run : | + sudo apt-get update + sudo apt-get --assume-yes install build-essential ninja-build libgl1-mesa-dev libglib2.0-0 wget make + - name: Download CUDA + run: | + wget -q https://developer.download.nvidia.com/compute/cuda/12.4.0/local_installers/cuda_12.4.0_550.54.14_linux.run + sudo sh cuda_12.4.0_550.54.14_linux.run --toolkit --silent + - name: Runner info + continue-on-error: true + run: | + export PATH=/usr/local/cuda-12.4/bin${PATH:+:${PATH}} + export LD_LIBRARY_PATH=/usr/local/cuda-12.4/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} + nvidia-smi + cat /proc/cpuinfo + nvcc --version + - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + with: + lfs: true + - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 + with: + python-version: ${{ inputs.python_version }} + cache: pip + - name: Install NNCF and test requirements + run: make install-torch-test + - name: Print installed modules + run: pip list + - name: Check CUDA + run: | + python -c "import torch; print(torch.cuda.is_available())" + - name: Run PyTorch precommit test scope + run: | + export PATH=/usr/local/cuda-12.4/bin${PATH:+:${PATH}} + export LD_LIBRARY_PATH=/usr/local/cuda-12.4/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} + make test-torch-cuda + + tensorflow: + timeout-minutes: 40 + runs-on: ubuntu-20.04-8-cores + defaults: + run: + shell: bash + env: + DEBIAN_FRONTEND: noninteractive + steps: + - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + with: + lfs: true + - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 + with: + python-version: ${{ inputs.python_version }} + cache: pip + - name: Install NNCF and test requirements + run: make install-tensorflow-test + - name: Print installed modules + run: pip list + - name: Run TensorFlow precommit test scope + run: make test-tensorflow + env: + NUM_WORKERS: 6 + + tools: + timeout-minutes: 40 + runs-on: ubuntu-20.04 + defaults: + run: + shell: bash + steps: + - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + with: + lfs: true + - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 + with: + python-version: ${{ inputs.python_version }} + cache: pip + - name: Install NNCF and test requirements + run: pip install -r tests/tools/requirements.txt + - name: Print installed modules + run: pip list + - name: Run tools precommit test scope + run: pytest -ra tests/tools + + pytorch2-cpu: + timeout-minutes: 40 + runs-on: ubuntu-20.04 + defaults: + run: + shell: bash + steps: + - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + with: + lfs: true + - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 + with: + python-version: ${{ inputs.python_version }} + cache: pip + - name: Install NNCF and test requirements + run: | + pip install -r tests/torch2/requirements.txt -e . + - name: Print installed modules + run: pip list + - name: Run torch2 precommit test scope + run: pytest -ra tests/torch2 -m "not cuda" diff --git a/.github/workflows/precommit.yml b/.github/workflows/precommit.yml index 6dd6bff293d..c257cdc2f6a 100644 --- a/.github/workflows/precommit.yml +++ b/.github/workflows/precommit.yml @@ -2,212 +2,24 @@ name: precommit permissions: read-all on: - pull_request: - types: - - opened - - reopened - - synchronize - paths-ignore: - - '**/*.md' - - 'docs/**/*' - - 'tests/post_training/*' # post_training tests runs on Jenkins - - 'tests/torch/sota_checkpoints_eval.json' # reference for PT e2e - - 'tests/tensorflow/sota_checkpoints_eval.json' # reference for TF e2e - - 'tests/cross_fw/examples/*' # examples tests runs in separate workflow -jobs: - common: - runs-on: ubuntu-20.04 - steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - with: - lfs: true - - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 - with: - python-version: 3.10.14 - cache: pip - - name: Install NNCF and test requirements - run: make install-common-test - - name: Print installed modules - run: pip list - - name: Run common precommit test scope - run: make test-common - env: - NUM_WORKERS: 2 - - onnx: - runs-on: ubuntu-20.04-8-cores - steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - with: - lfs: true - - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 - with: - python-version: 3.10.14 - - name: Install NNCF and test requirements - run: make install-onnx-test - - name: Print installed modules - run: pip list - - name: Run ONNX precommit test scope - run: make test-onnx - env: - NUM_WORKERS: 4 - - openvino: - runs-on: ubuntu-20.04-8-cores - steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - with: - lfs: true - - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 - with: - python-version: 3.10.14 - cache: pip - - name: Install NNCF and test requirements - run: make install-openvino-test - - name: Print installed modules - run: pip list - - name: Run OV precommit test scope - run: make test-openvino - env: - NUM_WORKERS: 4 - - pytorch-cpu: - timeout-minutes: 40 - defaults: - run: - shell: bash - runs-on: ubuntu-20.04-8-cores - env: - DEBIAN_FRONTEND: noninteractive - steps: - - name: Install dependencies - run : | - sudo apt-get update - sudo apt-get --assume-yes install gcc g++ build-essential ninja-build libgl1-mesa-dev libglib2.0-0 - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - with: - lfs: true - - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 - with: - python-version: 3.10.14 - cache: pip - - name: Runner info - continue-on-error: true - run: | - cat /etc/*release - cat /proc/cpuinfo - - name: Install NNCF and test requirements - run: make install-torch-test - - name: Print installed modules - run: pip list - - name: Run PyTorch precommit test scope - run: | - make test-torch-cpu - env: - NUM_WORKERS: 4 + workflow_dispatch: + pull_request_target: # TODO: remove + # pull_request: + # types: + # - opened + # - reopened + # - synchronize + # paths-ignore: + # - '**/*.md' + # - 'docs/**/*' + # - 'tests/post_training/*' # post_training tests runs on Jenkins + # - 'tests/torch/sota_checkpoints_eval.json' # reference for PT e2e + # - 'tests/tensorflow/sota_checkpoints_eval.json' # reference for TF e2e + # - 'tests/cross_fw/examples/*' # examples tests runs in separate workflow - pytorch-cuda: - timeout-minutes: 40 - defaults: - run: - shell: bash - runs-on: aks-linux-4-cores-28gb-gpu-tesla-t4 - env: - DEBIAN_FRONTEND: noninteractive - steps: - - name: Install dependencies - run : | - sudo apt-get update - sudo apt-get --assume-yes install build-essential ninja-build libgl1-mesa-dev libglib2.0-0 wget make - - name: Download CUDA - run: | - wget -q https://developer.download.nvidia.com/compute/cuda/12.4.0/local_installers/cuda_12.4.0_550.54.14_linux.run - sudo sh cuda_12.4.0_550.54.14_linux.run --toolkit --silent - - name: Runner info - continue-on-error: true - run: | - export PATH=/usr/local/cuda-12.4/bin${PATH:+:${PATH}} - export LD_LIBRARY_PATH=/usr/local/cuda-12.4/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} - nvidia-smi - cat /proc/cpuinfo - nvcc --version - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - with: - lfs: true - - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 - with: - python-version: 3.10.14 - cache: pip - - name: Install NNCF and test requirements - run: make install-torch-test - - name: Print installed modules - run: pip list - - name: Check CUDA - run: | - python -c "import torch; print(torch.cuda.is_available())" - - name: Run PyTorch precommit test scope - run: | - export PATH=/usr/local/cuda-12.4/bin${PATH:+:${PATH}} - export LD_LIBRARY_PATH=/usr/local/cuda-12.4/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} - make test-torch-cuda - - tensorflow: - timeout-minutes: 40 - defaults: - run: - shell: bash - runs-on: ubuntu-20.04-8-cores - env: - DEBIAN_FRONTEND: noninteractive - steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - with: - lfs: true - - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 - with: - python-version: 3.10.14 - cache: pip - - name: Install NNCF and test requirements - run: make install-tensorflow-test - - name: Print installed modules - run: pip list - - name: Run TensorFlow precommit test scope - run: make test-tensorflow - env: - NUM_WORKERS: 6 - - tools: - runs-on: ubuntu-20.04 - steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - with: - lfs: true - - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 - with: - python-version: 3.10.14 - cache: pip - - name: Install NNCF and test requirements - run: pip install -r tests/tools/requirements.txt - - name: Print installed modules - run: pip list - - name: Run tools precommit test scope - run: PYTHONPATH=./ pytest -ra tests/tools - - pytorch2-cpu: - runs-on: ubuntu-20.04 - steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - with: - lfs: true - - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 - with: - python-version: 3.10.14 - cache: pip - - name: Install NNCF and test requirements - run: | - pip install -e . - pip install -r tests/torch2/requirements.txt - - name: Print installed modules - run: pip list - - name: Run torch2 precommit test scope - run: pytest -ra tests/torch2 -m "not cuda" +jobs: + precommit: + uses: ./.github/workflows/call_precommit.yml + with: + python_version: "3.10.14" + gpu_enabled: true diff --git a/.github/workflows/weekly.yml b/.github/workflows/weekly.yml new file mode 100644 index 00000000000..8e3156f08a7 --- /dev/null +++ b/.github/workflows/weekly.yml @@ -0,0 +1,19 @@ +name: nightly +permissions: read-all + +on: + workflow_dispatch: + schedule: + - cron: '0 0 * * 0' + pull_request_target: # TODO: remove + +jobs: + precommit: + strategy: + fail-fast: false + matrix: + python_version: ["3.9", "3.11", "3.12"] + uses: ./.github/workflows/call_precommit.yml + with: + python_version: ${{ matrix.python_version }} + gpu_enabled: false