Examples - Backward Compatibility #40
  
    
      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: Examples - Backward Compatibility | |
| permissions: | |
| contents: read | |
| on: | |
| schedule: | |
| # Every day at 6 AM UTC+8 | |
| - cron: '0 22 * * *' | |
| workflow_dispatch: | |
| pull_request_target: | |
| types: [reopened, ready_for_review] | |
| jobs: | |
| label-check: | |
| runs-on: ubuntu-latest | |
| outputs: | |
| should-run: ${{ steps.evaluate.outputs.should-run }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Decide whether to run | |
| id: evaluate | |
| uses: actions/github-script@v7 | |
| with: | |
| script: | | |
| const evaluateTrigger = require('./scripts/trigger_on_label.js'); | |
| evaluateTrigger({ core, context, labelName: 'ci-compat' }); | |
| backward-compatibility: | |
| needs: label-check | |
| if: needs.label-check.outputs.should-run == 'true' | |
| name: Backward Compatibility (Python ${{ matrix.python-version }}, ${{ matrix.setup-script }}) | |
| runs-on: [self-hosted, 1ES.Pool=agl-runner-gpu] | |
| timeout-minutes: 30 | |
| strategy: | |
| matrix: | |
| include: | |
| - python-version: '3.10' | |
| setup-script: 'legacy' | |
| - python-version: '3.12' | |
| setup-script: 'stable' | |
| fail-fast: false | |
| steps: | |
| - name: Check GPU status | |
| run: nvidia-smi | |
| - name: Check disk space | |
| run: df -h | |
| - uses: actions/checkout@v4 | |
| with: | |
| ref: ${{ github.event.pull_request.number && format('refs/pull/{0}/merge', github.event.pull_request.number) || github.ref }} | |
| - uses: astral-sh/setup-uv@v7 | |
| with: | |
| enable-cache: true | |
| python-version: ${{ matrix.python-version }} | |
| - name: Sync dependencies | |
| run: | | |
| uv sync --frozen --no-default-groups --extra apo --extra verl \ | |
| --group dev --group experiment --group agents --group torch-gpu-${{ matrix.setup-script }} | |
| - name: Freeze dependencies | |
| run: | | |
| set -ex | |
| uv pip freeze | tee requirements-freeze.txt | |
| echo "UV_LOCKED=1" >> $GITHUB_ENV | |
| echo "UV_NO_SYNC=1" >> $GITHUB_ENV | |
| - name: Upload dependencies artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: dependencies-backward-compatibility-${{ matrix.python-version }}-${{ matrix.setup-script }} | |
| path: requirements-freeze.txt | |
| compression-level: 0 | |
| - name: Launch LiteLLM Proxy | |
| run: | | |
| ./scripts/litellm_run.sh | |
| env: | |
| AZURE_API_BASE: ${{ secrets.AZURE_GROUP_SUBSCRIPTION_API_BASE }} | |
| AZURE_API_KEY: ${{ secrets.AZURE_GROUP_SUBSCRIPTION_API_KEY }} | |
| - name: Prepare Calc-X dataset | |
| run: | | |
| set -ex | |
| cd examples/calc_x | |
| uv run gdown --fuzzy https://drive.google.com/file/d/1FQMyKLLd6hP9dw9rfZn1EZOWNvKaDsqw/view | |
| unzip calc-x-data.zip -d data | |
| rm calc-x-data.zip | |
| - name: APO example (legacy client-server style) | |
| run: | | |
| set -ex | |
| cd examples/apo | |
| uv run legacy_apo_client.py & | |
| sleep 3 # Wait for the client to be up | |
| uv run legacy_apo_server.py | |
| pkill -f legacy_apo_client.py && echo "SIGTERM sent to legacy_apo_client.py" || echo "No legacy_apo_client.py process found" | |
| while pgrep -f legacy_apo_client.py; do | |
| echo "Waiting for legacy_apo_client.py to finish..." | |
| sleep 5 | |
| done | |
| echo "legacy_apo_client.py has finished." | |
| sleep 10 | |
| env: | |
| OPENAI_API_BASE: http://localhost:12306/ | |
| OPENAI_API_KEY: dummy | |
| - name: Calc-X MCP sanity check | |
| run: | | |
| set -ex | |
| cd examples/calc_x | |
| uv run tests/test_mcp_calculator.py | |
| env: | |
| OPENAI_API_BASE: http://localhost:12306/ | |
| OPENAI_API_KEY: dummy | |
| - name: Calc-X sanity check | |
| run: | | |
| set -ex | |
| cd examples/calc_x | |
| uv run legacy_calc_agent_debug.py | |
| env: | |
| OPENAI_BASE_URL: http://localhost:12306/ | |
| OPENAI_API_KEY: dummy | |
| - name: Calc-X training (legacy client-server style) | |
| run: | | |
| set -ex | |
| source .venv/bin/activate | |
| cd examples/calc_x | |
| ../../scripts/restart_ray.sh | |
| sleep 5 | |
| PYTHONUNBUFFERED=1 python legacy_calc_agent.py & | |
| bash legacy_train.sh | |
| pkill -f legacy_calc_agent.py && echo "SIGTERM sent to legacy_calc_agent.py" || echo "No legacy_calc_agent.py process found" | |
| while pgrep -f legacy_calc_agent.py; do | |
| echo "Waiting for legacy_calc_agent.py to finish..." | |
| sleep 5 | |
| done | |
| echo "legacy_calc_agent.py has finished." | |
| sleep 10 | |
| shell: bash | |
| env: | |
| WANDB_BASE_URL: ${{ secrets.MSR_WANDB_BASE_URL }} | |
| WANDB_API_KEY: ${{ secrets.MSR_WANDB_API_KEY }} | |
| id: calc_x_train | |
| - name: Validate Calc-X training | |
| run: | | |
| set -ex | |
| uv run scripts/validate_example_wandb.py ${{ steps.calc_x_train.outputs.project_name }} ${{ steps.calc_x_train.outputs.run_name }} | |
| env: | |
| WANDB_BASE_URL: ${{ secrets.MSR_WANDB_BASE_URL }} | |
| WANDB_API_KEY: ${{ secrets.MSR_WANDB_API_KEY }} |