Spaces:
Running
Running
Download ocr-studio/PaddleOCR/.github/workflows/test_gpu.yml from phucsd/cham-ocr-studio: direct link, hf CLI and curl.
- Browser
- Download file 4.9 kB
-
https://huggingface.co/spaces/phucsd/cham-ocr-studio/resolve/main/ocr-studio/PaddleOCR/.github/workflows/test_gpu.yml
- Command line
-
hf download hf://spaces/phucsd/cham-ocr-studio/ocr-studio/PaddleOCR/.github/workflows/test_gpu.yml
-
curl -L -o test_gpu.yml https://huggingface.co/spaces/phucsd/cham-ocr-studio/resolve/main/ocr-studio/PaddleOCR/.github/workflows/test_gpu.yml
4.9 kB
| 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." | |