From d2a3c518bd9d9b3b5836118b0f386fd9264b6806 Mon Sep 17 00:00:00 2001 From: Jay Zhang Date: Tue, 25 Jun 2024 16:36:49 +0000 Subject: [PATCH] Add required jobs for keras2onnx application test. Signed-off-by: Jay Zhang --- .../actions/keras_application_test/action.yml | 78 +++++----- .github/actions/keras_unit_test/action.yml | 2 +- .../actions/pretrained_model_test/action.yml | 2 +- .../workflows/keras_application_test_ci.yml | 138 ++++++++---------- .github/workflows/keras_unit_test_ci.yml | 24 ++- .../workflows/pretrained_model_test_ci.yml | 12 +- .github/workflows/unit_test_ci.yml | 12 +- 7 files changed, 123 insertions(+), 145 deletions(-) diff --git a/.github/actions/keras_application_test/action.yml b/.github/actions/keras_application_test/action.yml index f3d0ea1e7..c383bfa52 100644 --- a/.github/actions/keras_application_test/action.yml +++ b/.github/actions/keras_application_test/action.yml @@ -1,8 +1,6 @@ -name: Unit Test Run +name: Keras2onnx Application Test Run inputs: - os: - description: 'OS type' tf_version: description: 'TensorFlow version' python_version: @@ -11,10 +9,6 @@ inputs: description: 'ONNXRuntime version' onnx_version: description: 'ONNX version' - opset_version: - description: 'OPSET version' - skip_tflite: - description: 'Skip TFLite tests' runs: using: "composite" @@ -27,38 +21,46 @@ runs: - name: Install dependencies (TF-v${{ inputs.tf_version }}) shell: bash run: | - chmod +x ./tests/utils/setup_test_env.sh - ./tests/utils/setup_test_env.sh ${{ inputs.tf_version }} ${{ inputs.ort_version }} ${{ inputs.onnx_version }} + python -m pip install --upgrade pip + pip install onnxconverter-common + pip install onnx==${{ matrix.onnx_version }} + pip uninstall -y protobuf + pip install "protobuf~=3.20" + pip install h5py==3.7.0 + pip install parameterized + pip install timeout-decorator + pip install coloredlogs flatbuffers + pip install tensorflow==${{ matrix.tf_version }} + pip install onnxruntime==${{ matrix.ort_version }} + pip install Pillow==8.2.0 + pip install opencv-python + pip install tqdm + pip install keras-segmentation==0.2.0 + git clone https://github.com/matterport/Mask_RCNN + cd Mask_RCNN + pip install -r requirements.txt + python setup.py install + cd .. + pip install matplotlib + git clone https://github.com/qqwweee/keras-yolo3 + pip install keras-resnet + pip install git+https://www.github.com/keras-team/keras-contrib.git + pip install keras-tcn==2.8.3 + pip install git+https://github.com/qubvel/efficientnet + pip install transformers==4.2.0 + pip install keras-self-attention + pip install pytest pytest-cov pytest-runner + pip install "numpy<2" - - name: Fix Paths (Windows only) - shell: pwsh - if: runner.os == 'Windows' - run: | - $site_dir = python -c "import site; print(site.getsitepackages()[1])" - echo "##vso[task.prependpath]$site_dir\numpy\.libs" - $base_dir = python -c "import site; print(site.getsitepackages()[0])" - echo "##vso[task.prependpath]$base_dir/Library/bin" + pip install -e . - - name: Run unit_test (Linux) - shell: bash - if: runner.os == 'Linux' - run: | - export TF2ONNX_TEST_BACKEND=onnxruntime - export TF2ONNX_TEST_OPSET=${{ inputs.opset_version }} - export TF2ONNX_SKIP_TFLITE_TESTS=${{ inputs.skip_tflite }} - export TF2ONNX_SKIP_TFJS_TESTS=True - export TF2ONNX_SKIP_TF_TESTS=False - python -m pytest --cov=tf2onnx --cov-report=term --disable-pytest-warnings -r s tests --cov-append --junitxml=junit/test-results.xml - ls + echo "----- List all of depdencies:" + pip freeze --all - - name: Run unit_test (Windows) - shell: pwsh - if: runner.os == 'Windows' + - name: Run keras_application_test (${{ runner.os }}) + shell: bash run: | - set TF2ONNX_TEST_BACKEND=onnxruntime - set TF2ONNX_TEST_OPSET=${{ inputs.opset_version }} - set TF2ONNX_SKIP_TFLITE_TESTS=${{ inputs.skip_tflite }} - set TF2ONNX_SKIP_TFJS_TESTS=True - set TF2ONNX_SKIP_TF_TESTS=False - python -m pytest --cov=tf2onnx --cov-report=term --disable-pytest-warnings -r s tests --cov-append --junitxml=junit/test-results.xml - ls + python -c "import onnxruntime" + pytest tests/keras2onnx_unit_tests --doctest-modules --junitxml=junit/test-results.xml + cd tests/keras2onnx_applications/nightly_build + python run_all_v2.py diff --git a/.github/actions/keras_unit_test/action.yml b/.github/actions/keras_unit_test/action.yml index c0a592d4b..6c8cb0978 100644 --- a/.github/actions/keras_unit_test/action.yml +++ b/.github/actions/keras_unit_test/action.yml @@ -1,4 +1,4 @@ -name: Unit Test Run +name: Keras2onnx Unit Test Run inputs: tf_version: diff --git a/.github/actions/pretrained_model_test/action.yml b/.github/actions/pretrained_model_test/action.yml index 60e2e35b2..f6d69d99a 100644 --- a/.github/actions/pretrained_model_test/action.yml +++ b/.github/actions/pretrained_model_test/action.yml @@ -1,4 +1,4 @@ -name: Unit Test Run +name: Pretrained Model Test Run inputs: tf_version: diff --git a/.github/workflows/keras_application_test_ci.yml b/.github/workflows/keras_application_test_ci.yml index 1e4554f88..5bd0433de 100644 --- a/.github/workflows/keras_application_test_ci.yml +++ b/.github/workflows/keras_application_test_ci.yml @@ -14,91 +14,89 @@ concurrency: cancel-in-progress: true jobs: - run_tests: + Test_min_py_with_min_tf: # Do not change this name because it is used in Ruleset of this repo. + strategy: + fail-fast: false + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Run Tests (Py38-TF2.9) + uses: ./.github/actions/keras_application_test + with: + tf_version: '2.9.0' + python_version: '3.8' + ort_version: '1.16.3' + onnx_version: '1.16.1' + + - name: Upload Test Results + if: always() + uses: actions/upload-artifact@v3 + with: + name: Test Results (Py38-TF2.9-ubuntu) + path: ./**/test-results-*.xml + + Test_max_py_with_latest_tf: # Do not change this name because it is used in Ruleset of this repo. + strategy: + fail-fast: false + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Run Tests (Py310-TF2.15) + uses: ./.github/actions/keras_application_test + with: + tf_version: '2.15.0' + python_version: '3.10' + ort_version: '1.16.3' + onnx_version: '1.16.1' + + - name: Upload Test Results + if: always() + uses: actions/upload-artifact@v3 + with: + name: Test Results (Py310-TF2.15-ubuntu) + path: ./**/test-results-*.xml + + Extra_tests: strategy: fail-fast: false matrix: name: - - 'py38-tf2.9' - 'py39-tf2.10' - 'py39-tf2.15' os: ['ubuntu-latest', 'windows-2022'] - opset_version: ['18', '15'] ort_version: ['1.16.3'] onnx_version: ['1.16.1'] include: - - name: 'py38-tf2.9' - tf_version: '2.9.0' - python_version: '3.8' - name: 'py39-tf2.10' tf_version: '2.10.0' python_version: '3.9' - name: 'py39-tf2.15' tf_version: '2.15.0' python_version: '3.9' - runs-on: ${{ matrix.os }} steps: - - name: Set up Python (${{ matrix.python_version }}) - uses: actions/setup-python@v5 - with: - python-version: ${{ matrix.python_version }} - - name: Checkout code uses: actions/checkout@v4 - - name: Install dependencies (TF-v${{ matrix.tf_version }}) - shell: bash - run: | - python -m pip install --upgrade pip - pip install onnxconverter-common - pip install onnx==${{ matrix.onnx_version }} - pip uninstall -y protobuf - pip install "protobuf~=3.20" - pip install h5py==3.7.0 - pip install parameterized - pip install timeout-decorator - pip install coloredlogs flatbuffers - pip install tensorflow==${{ matrix.tf_version }} - pip install onnxruntime==${{ matrix.ort_version }} - pip install Pillow==8.2.0 - pip install opencv-python - pip install tqdm - pip install keras-segmentation==0.2.0 - git clone https://github.com/matterport/Mask_RCNN - cd Mask_RCNN - pip install -r requirements.txt - python setup.py install - cd .. - pip install matplotlib - git clone https://github.com/qqwweee/keras-yolo3 - pip install keras-resnet - pip install git+https://www.github.com/keras-team/keras-contrib.git - pip install keras-tcn==2.8.3 - pip install git+https://github.com/qubvel/efficientnet - pip install transformers==4.2.0 - pip install keras-self-attention - pip install pytest pytest-cov pytest-runner - pip install "numpy<2" - - pip install -e . - - echo "----- List all of depdencies:" - pip freeze --all - - - name: Run keras application tests (${{ matrix.os }}) - run: | - python -c "import onnxruntime" - pytest tests/keras2onnx_unit_tests --doctest-modules --junitxml=junit/test-results.xml - cd tests/keras2onnx_applications/nightly_build - python run_all_v2.py - + - name: Run Tests (Py${{ matrix.python_version }}_TF${{ matrix.tf_version }}_${{ matrix.os }}_${{ matrix.ort_version }}) + uses: ./.github/actions/keras_application_test + with: + tf_version: ${{ matrix.tf_version }} + python_version: ${{ matrix.python_version }} + ort_version: ${{ matrix.ort_version }} + onnx_version: ${{ matrix.onnx_version }} - name: Upload Test Results if: always() uses: actions/upload-artifact@v3 with: - name: Test Results (${{ matrix.tf_version }}-${{ matrix.python_version }}-${{ matrix.os }}) + name: Test Results (${{ matrix.python_version }}-${{ matrix.tf_version }}-${{ matrix.os }}) path: ./**/test-results*.xml run_tests_tf_15: @@ -106,7 +104,6 @@ jobs: matrix: tf_version: ['1.15.0'] python_version: ['3.7'] # Max version that supports tf 1.15 - opset_version: ['18', '15'] ort_version: ['1.14.1'] # Max version that supports python 3.7 onnx_version: ['1.14.1'] # Max version that supports python 3.7 os: ['ubuntu-latest', 'windows-2022'] @@ -179,7 +176,7 @@ jobs: publish-test-results: name: "Publish Tests Results to Github" - needs: run_tests + needs: [Test_min_py_with_min_tf, Test_max_py_with_latest_tf, Extra_tests, run_tests_tf_15] runs-on: ubuntu-latest permissions: checks: write @@ -195,22 +192,3 @@ jobs: uses: EnricoMi/publish-unit-test-result-action@v2 with: files: "artifacts/**/*.xml" - - publish-test-results-tf-15: - name: "Publish Tests Results(TF15) to Github" - needs: run_tests_tf_15 - runs-on: ubuntu-latest - permissions: - checks: write - pull-requests: write - if: always() - steps: - - name: Download Artifacts - uses: actions/download-artifact@v3 - with: - path: artifacts - - - name: Publish Test Results - uses: EnricoMi/publish-unit-test-result-action@v2 - with: - files: "artifacts/**/*.xml" \ No newline at end of file diff --git a/.github/workflows/keras_unit_test_ci.yml b/.github/workflows/keras_unit_test_ci.yml index 5580b5417..35c11d980 100644 --- a/.github/workflows/keras_unit_test_ci.yml +++ b/.github/workflows/keras_unit_test_ci.yml @@ -14,7 +14,6 @@ concurrency: cancel-in-progress: true jobs: - Test_min_py_with_min_tf: # Do not change this name because it is used in Ruleset of this repo. strategy: fail-fast: false @@ -48,11 +47,11 @@ jobs: - name: Checkout code uses: actions/checkout@v4 - - name: Run Tests (Py39-TF2.15) + - name: Run Tests (Py310-TF2.15) uses: ./.github/actions/keras_unit_test with: tf_version: '2.15.0' - python_version: '3.9' + python_version: '3.10' ort_version: '1.16.3' onnx_version: '1.16.1' @@ -60,7 +59,7 @@ jobs: if: always() uses: actions/upload-artifact@v3 with: - name: Test Results (Py39-TF2.15-ubuntu) + name: Test Results (Py310-TF2.15-ubuntu) path: ./**/test-results-*.xml Extra_tests: @@ -69,7 +68,7 @@ jobs: matrix: name: - 'py39-tf2.10' - - 'py310-tf2.15' + - 'py39-tf2.15' os: ['ubuntu-latest', 'windows-2022'] ort_version: ['1.16.3'] onnx_version: ['1.16.1'] @@ -77,9 +76,9 @@ jobs: - name: 'py39-tf2.10' tf_version: '2.10.0' python_version: '3.9' - - name: 'py310-tf2.15' + - name: 'py39-tf2.15' tf_version: '2.15.0' - python_version: '3.10' + python_version: '3.9' runs-on: ${{ matrix.os }} steps: @@ -89,16 +88,15 @@ jobs: - name: Run Tests (Py${{ matrix.python_version }}_TF${{ matrix.tf_version }}_${{ matrix.os }}_${{ matrix.ort_version }}) uses: ./.github/actions/keras_unit_test with: - tf_version: '2.9.0' - python_version: '3.8' - ort_version: '1.16.3' - onnx_version: '1.16.1' - + tf_version: ${{ matrix.tf_version }} + python_version: ${{ matrix.python_version }} + ort_version: ${{ matrix.ort_version }} + onnx_version: ${{ matrix.onnx_version }} - name: Upload Test Results if: always() uses: actions/upload-artifact@v3 with: - name: Test Results (${{ matrix.tf_version }}-${{ matrix.python_version }}-${{ matrix.os }}) + name: Test Results (${{ matrix.python_version }}-${{ matrix.tf_version }}-${{ matrix.os }}) path: ./**/test-results*.xml run_tests_tf_15: diff --git a/.github/workflows/pretrained_model_test_ci.yml b/.github/workflows/pretrained_model_test_ci.yml index 7c48e09d6..e82968fc3 100644 --- a/.github/workflows/pretrained_model_test_ci.yml +++ b/.github/workflows/pretrained_model_test_ci.yml @@ -51,12 +51,12 @@ jobs: - name: Checkout code uses: actions/checkout@v4 - - name: Run Tests (Py39-TF2.15-18) + - name: Run Tests (Py310-TF2.15-18) uses: ./.github/actions/pretrained_model_test with: os: 'ubuntu-latest' tf_version: '2.15.0' - python_version: '3.9' + python_version: '3.10' ort_version: '1.16.3' onnx_version: '1.16.1' opset_version: '18' @@ -66,7 +66,7 @@ jobs: if: always() uses: actions/upload-artifact@v3 with: - name: Test Results (Py39-TF2.15-18-ubuntu) + name: Test Results (Py310-TF2.15-18-ubuntu) path: ./**/test-results-*.xml Extra_tests: @@ -75,7 +75,7 @@ jobs: matrix: name: - 'py38-tf2.13' - - 'py310-tf2.15' + - 'py39-tf2.15' os: ['ubuntu-latest', 'windows-2022'] opset_version: ['18', '15'] ort_version: ['1.16.3'] @@ -85,9 +85,9 @@ jobs: - name: 'py38-tf2.13' tf_version: '2.13.0' python_version: '3.8' - - name: 'py310-tf2.15' + - name: 'py39-tf2.15' tf_version: '2.15.0' - python_version: '3.10' + python_version: '3.9' - name: 'py37-tf1.15' tf_version: '1.15.5' python_version: '3.7' diff --git a/.github/workflows/unit_test_ci.yml b/.github/workflows/unit_test_ci.yml index 82de6441e..1dcbef980 100644 --- a/.github/workflows/unit_test_ci.yml +++ b/.github/workflows/unit_test_ci.yml @@ -51,12 +51,12 @@ jobs: - name: Checkout code uses: actions/checkout@v4 - - name: Run Tests (Py39-TF2.15-18) + - name: Run Tests (Py310-TF2.15-18) uses: ./.github/actions/unit_test with: os: 'ubuntu-latest' tf_version: '2.15.0' - python_version: '3.9' + python_version: '3.10' ort_version: '1.16.3' onnx_version: '1.16.1' opset_version: '18' @@ -66,7 +66,7 @@ jobs: if: always() uses: actions/upload-artifact@v3 with: - name: Test Results (Py39-TF2.15-18-ubuntu) + name: Test Results (Py310-TF2.15-18-ubuntu) path: ./**/test-results-*.xml Extra_tests: @@ -75,7 +75,7 @@ jobs: matrix: name: - 'py38-tf2.13' - - 'py310-tf2.15' + - 'py39-tf2.15' os: ['ubuntu-latest', 'windows-2022'] opset_version: ['18', '15'] ort_version: ['1.16.3'] @@ -85,9 +85,9 @@ jobs: - name: 'py38-tf2.13' tf_version: '2.13.0' python_version: '3.8' - - name: 'py310-tf2.15' + - name: 'py39-tf2.15' tf_version: '2.15.0' - python_version: '3.10' + python_version: '3.9' - name: 'py37-tf1.15' tf_version: '1.15.5' python_version: '3.7'