From 59e9f50ec6cfc39be04434ca708a9ecc0dcfd6fa Mon Sep 17 00:00:00 2001 From: Mikhail Ryzhov Date: Thu, 14 Dec 2023 17:14:51 +0100 Subject: [PATCH] [GHA] Windows pytest optimizations (#21650) * parallel runs * enabled pip cache * pip cache fix --- .github/workflows/windows.yml | 44 ++++++++++++++++------------------- 1 file changed, 20 insertions(+), 24 deletions(-) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index b7be898cd188af..0515030f8d71fb 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -12,6 +12,7 @@ concurrency: cancel-in-progress: true env: + PIP_CACHE_PATH: /mount/caches/pip/win PYTHON_VERSION: '3.11' jobs: @@ -88,8 +89,10 @@ jobs: uses: ./openvino/.github/actions/setup_python with: version: ${{ env.PYTHON_VERSION }} - should-setup-pip-paths: 'false' - self-hosted-runner: 'false' + pip-cache-path: ${{ env.PIP_CACHE_PATH }} + should-setup-pip-paths: 'true' + self-hosted-runner: 'true' + show-cache-info: 'true' - name: Install python dependencies run: | @@ -249,7 +252,7 @@ jobs: with: version: ${{ env.PYTHON_VERSION }} should-setup-pip-paths: 'false' - self-hosted-runner: 'false' + self-hosted-runner: 'true' - name: Build cpp samples run: | @@ -287,7 +290,7 @@ jobs: defaults: run: shell: pwsh - runs-on: aks-win-4-cores-8gb + runs-on: aks-win-8-cores-16gb env: OPENVINO_REPO: "${{ github.workspace }}\\openvino" OPENVINO_CONTRIB_REPO: "${{ github.workspace }}\\openvino_contrib" @@ -330,8 +333,9 @@ jobs: uses: ./openvino/.github/actions/setup_python with: version: ${{ env.PYTHON_VERSION }} + pip-cache-path: ${{ env.PIP_CACHE_PATH }} should-setup-pip-paths: 'false' - self-hosted-runner: 'false' + self-hosted-runner: 'true' - name: Install OpenVINO Python wheels run: | @@ -345,6 +349,9 @@ jobs: - name: Install Python API tests dependencies run: | + # To enable pytest parallel features + python3 -m pip install pytest-xdist[psutil] + # For torchvision to OpenVINO preprocessing converter python3 -m pip install -r ${{ env.INSTALL_TEST_DIR }}/python/preprocess/torchvision/requirements.txt @@ -370,13 +377,17 @@ jobs: run: | python3 -m pytest -s ${{ env.INSTALL_TEST_DIR }}/mo/unit_tests --ignore=${{ env.INSTALL_TEST_DIR }}/mo/unit_tests/mo/front/mxnet --junitxml=${{ env.INSTALL_TEST_DIR }}/TEST-ModelOptimizer.xml + - name: Install Python Layer tests dependencies + run: | + # layer test requirements + python3 -m pip install -r ${{ env.LAYER_TESTS_INSTALL_DIR }}/requirements.txt + # Ticket - 115085 - name: PyTorch Layer Tests if: ${{ 'false' }} shell: cmd run: | - python3 -m pip install -r ${{ env.LAYER_TESTS_INSTALL_DIR }}/requirements.txt - python3 -m pytest ${{ env.LAYER_TESTS_INSTALL_DIR }}/pytorch_tests -m precommit --junitxml=${{ env.INSTALL_TEST_DIR }}/TEST-pytorch.xml + python3 -m pytest ${{ env.LAYER_TESTS_INSTALL_DIR }}/pytorch_tests -n logical -m precommit --junitxml=${{ env.INSTALL_TEST_DIR }}/TEST-pytorch.xml env: TEST_DEVICE: CPU @@ -384,11 +395,9 @@ jobs: if: fromJSON(needs.smart_ci.outputs.affected_components).ONNX_FE.test shell: cmd run: | - python3 -m pip install -r ${{ env.LAYER_TESTS_INSTALL_DIR }}/requirements.txt - :: requires 'unit_tests' from 'tools/mo' set PYTHONPATH=${{ env.INSTALL_TEST_DIR }}\mo;%PYTHONPATH% - python3 -m pytest ${{ env.LAYER_TESTS_INSTALL_DIR }}/onnx_tests -m "not launch_only_if_manually_specified and precommit" --junitxml=${INSTALL_TEST_DIR}/TEST-onnx.xml + python3 -m pytest ${{ env.LAYER_TESTS_INSTALL_DIR }}/onnx_tests -n logical -m "not launch_only_if_manually_specified and precommit" --junitxml=${INSTALL_TEST_DIR}/TEST-onnx.xml env: TEST_DEVICE: CPU TEST_PRECISION: FP16 @@ -397,8 +406,6 @@ jobs: if: fromJSON(needs.smart_ci.outputs.affected_components).TF_FE.test shell: cmd run: | - python3 -m pip install -r ${{ env.LAYER_TESTS_INSTALL_DIR }}/requirements.txt - :: requires 'unit_tests' from 'tools/mo' set PYTHONPATH=${{ env.INSTALL_TEST_DIR }}\mo;%PYTHONPATH% python3 -m pytest ${{ env.LAYER_TESTS_INSTALL_DIR }}/tensorflow_tests/ --use_new_frontend -m precommit_tf_fe --junitxml=${{ env.INSTALL_TEST_DIR }}/TEST-tf_fe.xml @@ -410,8 +417,6 @@ jobs: if: fromJSON(needs.smart_ci.outputs.affected_components).TF_FE.test shell: cmd run: | - python3 -m pip install -r ${{ env.LAYER_TESTS_INSTALL_DIR }}/requirements.txt - :: requires 'unit_tests' from 'tools/mo' set PYTHONPATH=${{ env.INSTALL_TEST_DIR }}\mo;%PYTHONPATH% @@ -423,14 +428,12 @@ jobs: if: fromJSON(needs.smart_ci.outputs.affected_components).TF_FE.test shell: cmd run: | - python3 -m pip install -r ${{ env.LAYER_TESTS_INSTALL_DIR }}/requirements.txt python3 -m pytest ${{ env.LAYER_TESTS_INSTALL_DIR }}/tensorflow_tests/test_tf_Roll.py --ir_version=10 --junitxml=${{ env.INSTALL_TEST_DIR }}/TEST-tf_Roll.xml - name: TensorFlow 2 Layer Tests - Legacy FE if: fromJSON(needs.smart_ci.outputs.affected_components).TF_FE.test shell: cmd run: | - python3 -m pip install -r ${{ env.LAYER_TESTS_INSTALL_DIR }}/requirements.txt python3 -m pytest ${{ env.LAYER_TESTS_INSTALL_DIR }}/tensorflow2_keras_tests/test_tf2_keras_activation.py --ir_version=11 --junitxml=${{ env.INSTALL_TEST_DIR }}/TEST-tf2_Activation.xml -k "sigmoid" env: TEST_DEVICE: CPU @@ -440,7 +443,6 @@ jobs: if: fromJSON(needs.smart_ci.outputs.affected_components).TFL_FE.test shell: cmd run: | - python3 -m pip install -r ${{ env.LAYER_TESTS_INSTALL_DIR }}/requirements.txt python3 -m pytest ${{ env.LAYER_TESTS_INSTALL_DIR }}/tensorflow_lite_tests/ --junitxml=${{ env.INSTALL_TEST_DIR }}/TEST-tfl_fe.xml env: TEST_DEVICE: CPU @@ -460,8 +462,6 @@ jobs: if: fromJSON(needs.smart_ci.outputs.affected_components).MO.test shell: cmd run: | - python3 -m pip install -r ${{ env.LAYER_TESTS_INSTALL_DIR }}/requirements.txt - :: Used for 'test_utils' installed in '\python\openvino\test_utils' set PYTHONPATH=${{ env.INSTALL_TEST_DIR }}\python\openvino\test_utils;${{ env.INSTALL_TEST_DIR }}\python;%PYTHONPATH% @@ -474,8 +474,6 @@ jobs: if: fromJSON(needs.smart_ci.outputs.affected_components).MO.test shell: cmd run: | - python3 -m pip install -r ${{ env.LAYER_TESTS_INSTALL_DIR }}/requirements.txt - :: Used for 'test_utils' installed in '\python\openvino\test_utils' set PYTHONPATH=${{ env.INSTALL_TEST_DIR }}\python\openvino\test_utils;${{ env.INSTALL_TEST_DIR }}\python;%PYTHONPATH% @@ -490,8 +488,6 @@ jobs: fromJSON(needs.smart_ci.outputs.affected_components).PDPD_FE.test shell: cmd run: | - python3 -m pip install -r ${{ env.LAYER_TESTS_INSTALL_DIR }}/requirements.txt - call "${{ env.INSTALL_DIR }}\\setupvars.bat" && python3 -m pytest ${{ env.LAYER_TESTS_INSTALL_DIR }}/py_frontend_tests --junitxml=${{ env.INSTALL_TEST_DIR }}/TEST-test_py_fontend.xml - name: OVC unit tests @@ -778,7 +774,7 @@ jobs: with: version: ${{ env.PYTHON_VERSION }} should-setup-pip-paths: 'false' - self-hosted-runner: 'false' + self-hosted-runner: 'true' - name: Install python dependencies shell: cmd