cpu-torch-latest #8839
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: cpu-torch-latest | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| torch_preset: | |
| description: PyTorch CPU preset to install for manual runs | |
| required: false | |
| default: '2.10.0-cpu' | |
| type: choice | |
| options: | |
| - '2.7.1-cpu' | |
| - '2.8.0-cpu' | |
| - '2.9.1-cpu' | |
| - '2.10.0-cpu' | |
| # Used only when a manual workflow_dispatch explicitly selects | |
| # transformers_source=pypi. Scheduled nightlies and default manual runs | |
| # install Transformers from Git and ignore this value. | |
| transformers_version: | |
| description: Hugging Face Transformers PyPI package version to install | |
| required: false | |
| default: '4.51.3' | |
| type: string | |
| transformers_source: | |
| description: Hugging Face Transformers source for manual runs | |
| required: false | |
| default: 'git' | |
| type: choice | |
| options: | |
| - 'pypi' | |
| - 'git' | |
| transformers_ref: | |
| description: Hugging Face Transformers git ref to install when source is git | |
| required: false | |
| default: 'main' | |
| type: string | |
| pull_request: | |
| merge_group: | |
| branches: [ master ] | |
| schedule: | |
| - cron: "0 0 * * *" | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| check-paths: | |
| name: cpu-torch-latest / check paths | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| pull-requests: read | |
| outputs: | |
| should_run: ${{ steps.non_pr.outputs.should_run || steps.filter.outputs.run_tests }} | |
| steps: | |
| - id: non_pr | |
| if: github.event_name != 'pull_request' | |
| run: echo "should_run=true" >> "$GITHUB_OUTPUT" | |
| - uses: actions/checkout@v7 | |
| if: github.event_name == 'pull_request' | |
| - uses: dorny/paths-filter@v4 | |
| id: filter | |
| if: github.event_name == 'pull_request' | |
| with: | |
| predicate-quantifier: every | |
| filters: | | |
| run_tests: | |
| - '**' | |
| - '!docs/**' | |
| - '!blogs/**' | |
| - '!deepspeed/inference/v2/**' | |
| - '!tests/unit/inference/v2/**' | |
| unit-tests: | |
| name: cpu-torch-latest / unit tests | |
| needs: check-paths | |
| if: ${{ !cancelled() && (needs.check-paths.result != 'success' || needs.check-paths.outputs.should_run == 'true') }} | |
| runs-on: ubuntu-24.04 | |
| env: | |
| DEFAULT_TORCH_PRESET: '2.10.0-cpu' | |
| DEFAULT_TRANSFORMERS_SOURCE: 'git' | |
| # Manual PyPI fallback only; scheduled and default manual runs use Git. | |
| DEFAULT_TRANSFORMERS_VERSION: '4.51.3' | |
| DEFAULT_TRANSFORMERS_REF: 'main' | |
| steps: | |
| - name: Fail if path filter failed | |
| if: needs.check-paths.result != 'success' | |
| run: exit 1 | |
| - uses: actions/checkout@v7 | |
| - id: setup-venv | |
| uses: ./.github/workflows/setup-venv | |
| - name: Install system packages | |
| run: | | |
| sudo apt-get install -y numactl pdsh | |
| - name: Resolve dependency inputs | |
| env: | |
| GITHUB_EVENT_NAME: ${{ github.event_name }} | |
| MANUAL_TORCH_PRESET: ${{ github.event.inputs.torch_preset || '' }} | |
| MANUAL_TRANSFORMERS_SOURCE: ${{ github.event.inputs.transformers_source || '' }} | |
| MANUAL_TRANSFORMERS_VERSION: ${{ github.event.inputs.transformers_version || '' }} | |
| MANUAL_TRANSFORMERS_REF: ${{ github.event.inputs.transformers_ref || '' }} | |
| run: | | |
| if [ "$GITHUB_EVENT_NAME" = 'workflow_dispatch' ] && [ -n "$MANUAL_TORCH_PRESET" ]; then | |
| selected_preset="$MANUAL_TORCH_PRESET" | |
| else | |
| selected_preset="$DEFAULT_TORCH_PRESET" | |
| fi | |
| if [ "$GITHUB_EVENT_NAME" = 'workflow_dispatch' ] && [ -n "$MANUAL_TRANSFORMERS_SOURCE" ]; then | |
| transformers_source="$MANUAL_TRANSFORMERS_SOURCE" | |
| else | |
| transformers_source="$DEFAULT_TRANSFORMERS_SOURCE" | |
| fi | |
| if [ "$GITHUB_EVENT_NAME" = 'workflow_dispatch' ] && [ -n "$MANUAL_TRANSFORMERS_VERSION" ]; then | |
| transformers_version="$MANUAL_TRANSFORMERS_VERSION" | |
| else | |
| transformers_version="$DEFAULT_TRANSFORMERS_VERSION" | |
| fi | |
| if [ "$GITHUB_EVENT_NAME" = 'workflow_dispatch' ] && [ -n "$MANUAL_TRANSFORMERS_REF" ]; then | |
| transformers_ref="$MANUAL_TRANSFORMERS_REF" | |
| else | |
| transformers_ref="$DEFAULT_TRANSFORMERS_REF" | |
| fi | |
| if [ "$transformers_source" = 'git' ] && [ -z "$transformers_ref" ]; then | |
| transformers_ref='main' | |
| fi | |
| case "$selected_preset" in | |
| '2.7.1-cpu') | |
| torch_install_version='2.7.1' | |
| torchvision_install_version='0.22.1' | |
| torch_test_version='2.7' | |
| ;; | |
| '2.8.0-cpu') | |
| torch_install_version='2.8.0' | |
| torchvision_install_version='0.23.0' | |
| torch_test_version='2.8' | |
| ;; | |
| '2.9.1-cpu') | |
| torch_install_version='2.9.1' | |
| torchvision_install_version='0.24.1' | |
| torch_test_version='2.9' | |
| ;; | |
| '2.10.0-cpu') | |
| torch_install_version='2.10.0' | |
| torchvision_install_version='0.25.0' | |
| torch_test_version='2.10' | |
| ;; | |
| *) | |
| echo "Unsupported torch_preset: $selected_preset" >&2 | |
| exit 1 | |
| ;; | |
| esac | |
| { | |
| echo "SELECTED_TORCH_PRESET=$selected_preset" | |
| echo "TORCH_INSTALL_VERSION=$torch_install_version" | |
| echo "TORCHVISION_INSTALL_VERSION=$torchvision_install_version" | |
| echo "TORCH_TEST_VERSION=$torch_test_version" | |
| echo "PYTORCH_INDEX_URL=https://download.pytorch.org/whl/cpu" | |
| echo "TRANSFORMERS_SOURCE=$transformers_source" | |
| echo "TRANSFORMERS_VERSION=$transformers_version" | |
| echo "TRANSFORMERS_REF=$transformers_ref" | |
| } >> "$GITHUB_ENV" | |
| echo "Selected PyTorch preset: $selected_preset" | |
| echo "Resolved install tuple: torch==$torch_install_version torchvision==$torchvision_install_version" | |
| echo "Resolved test expectation: torch=$torch_test_version" | |
| echo "Resolved Transformers source: $transformers_source" | |
| if [ "$transformers_source" = 'git' ]; then | |
| echo "Requested Transformers PyPI version: N/A" | |
| echo "Requested Transformers git ref: $transformers_ref" | |
| else | |
| echo "Requested Transformers PyPI version: $transformers_version" | |
| echo "Requested Transformers git ref: N/A" | |
| fi | |
| - name: Install PyTorch | |
| run: | | |
| pip install \ | |
| torch=="$TORCH_INSTALL_VERSION" \ | |
| torchvision=="$TORCHVISION_INSTALL_VERSION" \ | |
| --index-url "$PYTORCH_INDEX_URL" | |
| python -c "import torch; print('torch:', torch.__version__, torch)" | |
| python -c "import torch; print('CUDA available:', torch.cuda.is_available())" | |
| - name: Install Transformers | |
| run: | | |
| case "$TRANSFORMERS_SOURCE" in | |
| 'pypi') | |
| pip install "transformers==$TRANSFORMERS_VERSION" | |
| echo "TRANSFORMERS_RESOLVED_REF=N/A" >> "$GITHUB_ENV" | |
| ;; | |
| 'git') | |
| git clone --filter=blob:none https://github.com/huggingface/transformers /tmp/transformers | |
| cd /tmp/transformers | |
| git checkout "$TRANSFORMERS_REF" | |
| resolved_ref="$(git rev-parse HEAD)" | |
| echo "TRANSFORMERS_RESOLVED_REF=$resolved_ref" >> "$GITHUB_ENV" | |
| echo "Resolved Transformers git ref: $resolved_ref" | |
| pip install . | |
| ;; | |
| *) | |
| echo "Unsupported TRANSFORMERS_SOURCE: $TRANSFORMERS_SOURCE" >&2 | |
| exit 1 | |
| ;; | |
| esac | |
| python -c "import transformers; print('transformers:', transformers.__version__, transformers)" | |
| - name: Install deepspeed | |
| run: | | |
| pip install .[dev,autotuning] | |
| ds_report | |
| - name: Reinstall selected Transformers | |
| run: | | |
| case "$TRANSFORMERS_SOURCE" in | |
| 'pypi') | |
| pip install --no-deps --force-reinstall "transformers==$TRANSFORMERS_VERSION" | |
| ;; | |
| 'git') | |
| cd /tmp/transformers | |
| pip install --no-deps --force-reinstall . | |
| ;; | |
| *) | |
| echo "Unsupported TRANSFORMERS_SOURCE: $TRANSFORMERS_SOURCE" >&2 | |
| exit 1 | |
| ;; | |
| esac | |
| installed_version="$(python -c 'import transformers; print(transformers.__version__)')" | |
| if [ "$TRANSFORMERS_SOURCE" = 'git' ]; then | |
| requested_version='N/A' | |
| requested_ref="$TRANSFORMERS_REF" | |
| resolved_ref="$TRANSFORMERS_RESOLVED_REF" | |
| else | |
| requested_version="$TRANSFORMERS_VERSION" | |
| requested_ref='N/A' | |
| resolved_ref='N/A' | |
| fi | |
| { | |
| echo "Transformers source: $TRANSFORMERS_SOURCE" | |
| echo "Requested Transformers PyPI version: $requested_version" | |
| echo "Requested Transformers git ref: $requested_ref" | |
| echo "Resolved Transformers git SHA: $resolved_ref" | |
| echo "Imported Transformers version: $installed_version" | |
| } | tee /dev/stderr | |
| { | |
| echo "### Transformers provenance" | |
| echo "" | |
| echo "- Source: \`$TRANSFORMERS_SOURCE\`" | |
| echo "- Requested PyPI version: \`$requested_version\`" | |
| echo "- Requested git ref: \`$requested_ref\`" | |
| echo "- Resolved git SHA: \`$resolved_ref\`" | |
| echo "- Imported version: \`$installed_version\`" | |
| } >> "$GITHUB_STEP_SUMMARY" | |
| - name: Python environment | |
| run: | | |
| pip list | |
| - name: Unit tests | |
| run: | | |
| unset TORCH_CUDA_ARCH_LIST # only jit compile for current arch | |
| cd tests | |
| HF_HOME=/tmp/hf_home/ pytest $PYTEST_OPTS --forked -n 4 unit/ --torch_ver="$TORCH_TEST_VERSION" | |
| HF_HOME=/tmp/hf_home/ pytest $PYTEST_OPTS --forked -m 'sequential' unit/ --torch_ver="$TORCH_TEST_VERSION" |