Reduce CER up to 20% under page skew: fix sorted_boxes' 10px threshold bug (7 langs) #1403
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: PaddleOCR PR Tests GPU | |
| on: | |
| push: | |
| branches: ["main"] | |
| pull_request: | |
| branches: ["main"] | |
| workflow_dispatch: | |
| env: | |
| PR_ID: ${{ github.event.pull_request.number }} | |
| COMMIT_ID: ${{ github.event.pull_request.head.sha || github.sha }} | |
| work_dir: /workspace/PaddleOCR | |
| PADDLENLP_ROOT: /workspace/PaddleOCR | |
| TASK: paddleocr-CI-${{ github.event.pull_request.number }} | |
| BRANCH: ${{ github.event.pull_request.base.ref }} | |
| AGILE_COMPILE_BRANCH: ${{ github.event.pull_request.base.ref }} | |
| DIR_NAME: ${{ github.repository }} | |
| permissions: | |
| contents: read | |
| jobs: | |
| detect-changes: | |
| runs-on: ubuntu-latest | |
| outputs: | |
| docs_only: ${{ steps.detect.outputs.docs_only }} | |
| steps: | |
| - uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| - id: detect | |
| uses: ./.github/actions/detect-docs-only | |
| test-pr-gpu-impl: | |
| runs-on: [self-hosted, GPU-2Card-OCR] | |
| needs: detect-changes | |
| if: needs.detect-changes.outputs.docs_only != 'true' | |
| steps: | |
| - name: run test | |
| env: | |
| py_version: "3.10" | |
| paddle_whl: https://paddle-qa.bj.bcebos.com/paddle-pipeline/Develop-GpuSome-LinuxCentos-Gcc82-Cuda118-Cudnn86-Trt85-Py310-CINN-Compile/latest/paddlepaddle_gpu-0.0.0-cp310-cp310-linux_x86_64.whl | |
| docker_image: ccr-2vdh3abv-pub.cnc.bj.baidubce.com/paddlepaddle/paddle:latest-dev-cuda11.8-cudnn8.6-trt8.5-gcc82 | |
| run: | | |
| work_dir=$RANDOM | |
| mkdir $work_dir | |
| cd $work_dir | |
| git clone --depth=1 https://github.com/PaddlePaddle/PaddleOCR.git -b main | |
| cd PaddleOCR | |
| if [ -n "${PR_ID}" ]; then | |
| git fetch origin pull/${PR_ID}/head:ci_build | |
| git checkout ci_build | |
| else | |
| git fetch --depth=1 origin "${COMMIT_ID}" | |
| git checkout "${COMMIT_ID}" | |
| fi | |
| docker run --gpus all --rm -i --name PaddleOCR_CI_$RANDOM \ | |
| --shm-size=128g --net=host \ | |
| -v $PWD:/workspace -w /workspace \ | |
| -e "py_version=${py_version}" \ | |
| -e "paddle_whl=${paddle_whl}" \ | |
| ${docker_image} /bin/bash -c ' | |
| ldconfig; | |
| nvidia-smi | |
| df -hl | |
| echo ${py_version} | |
| rm -rf run_env | |
| mkdir run_env | |
| ln -s $(which python${py_version}) run_env/python | |
| ln -s $(which python${py_version}) run_env/python3 | |
| ln -s $(which pip${py_version}) run_env/pip | |
| export PATH=$PWD/run_env:${PATH} | |
| git config --global --add safe.directory /workspace | |
| python -m pip install paddlepaddle-gpu==3.1.0 -i https://www.paddlepaddle.org.cn/packages/stable/cu118/ | |
| python -c "import paddle; paddle.version.show()" | |
| python -m pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple | |
| python -m pip install pytest | |
| if [ -f requirements.txt ]; then python -m pip install -r requirements.txt; fi | |
| PADDLEX_SERIES=$(grep -oE "paddlex\[[^]]+\]>=[0-9]+\.[0-9]+" pyproject.toml | head -1 | grep -oE "[0-9]+\.[0-9]+") | |
| if [ -z "$PADDLEX_SERIES" ]; then | |
| echo "Failed to determine PaddleX version requirement from pyproject.toml" >&2 | |
| exit 1 | |
| fi | |
| PADDLEX_BRANCH="release/${PADDLEX_SERIES}" | |
| echo "Installing PaddleX from branch: ${PADDLEX_BRANCH}" | |
| python -m pip install -e ".[all]" "paddlex@git+https://github.com/PaddlePaddle/PaddleX.git@${PADDLEX_BRANCH}" | |
| python -c "import paddlex; print(f\"Installed paddlex version: {paddlex.__version__}\")" | |
| python -m pytest --verbose tests/ | |
| ' | |
| # Aggregator: produces a single check named `test-pr-gpu` so branch | |
| # protection (which requires the literal context `test-pr-gpu`) is satisfied | |
| # even when the heavy GPU job is skipped (e.g. docs-only changes). Without | |
| # this, a SKIPPED conclusion on the GPU job leaves the required check | |
| # unsatisfied and blocks merge. | |
| test-pr-gpu: | |
| runs-on: ubuntu-latest | |
| needs: [detect-changes, test-pr-gpu-impl] | |
| if: always() | |
| steps: | |
| - name: Verify required jobs | |
| run: | | |
| if [ "${{ needs.detect-changes.result }}" != "success" ]; then | |
| echo "detect-changes did not succeed: ${{ needs.detect-changes.result }}" | |
| exit 1 | |
| fi | |
| if [ "${{ needs.detect-changes.outputs.docs_only }}" = "true" ]; then | |
| echo "Docs-only change; treating GPU tests as not required." | |
| exit 0 | |
| fi | |
| if [ "${{ needs.test-pr-gpu-impl.result }}" != "success" ]; then | |
| echo "test-pr-gpu-impl concluded with: ${{ needs.test-pr-gpu-impl.result }}" | |
| exit 1 | |
| fi | |
| echo "GPU tests passed." |