Some checks failed
Self-hosted runner (nightly-past-ci-caller) / Get number (push) Has been cancelled
Self-hosted runner (nightly-past-ci-caller) / TensorFlow 2.11 (push) Has been cancelled
Self-hosted runner (nightly-past-ci-caller) / TensorFlow 2.10 (push) Has been cancelled
Self-hosted runner (nightly-past-ci-caller) / TensorFlow 2.9 (push) Has been cancelled
Self-hosted runner (nightly-past-ci-caller) / TensorFlow 2.8 (push) Has been cancelled
Self-hosted runner (nightly-past-ci-caller) / TensorFlow 2.7 (push) Has been cancelled
Self-hosted runner (nightly-past-ci-caller) / TensorFlow 2.6 (push) Has been cancelled
Self-hosted runner (nightly-past-ci-caller) / TensorFlow 2.5 (push) Has been cancelled
Self-hosted runner (benchmark) / Benchmark (aws-g5-4xlarge-cache) (push) Has been cancelled
Build documentation / build (push) Has been cancelled
Build documentation / build_other_lang (push) Has been cancelled
CodeQL Security Analysis / CodeQL Analysis (push) Has been cancelled
New model PR merged notification / Notify new model (push) Has been cancelled
PR CI / pr-ci (push) Has been cancelled
Slow tests on important models (on Push - A10) / Get all modified files (push) Has been cancelled
Secret Leaks / trufflehog (push) Has been cancelled
Update Transformers metadata / build_and_package (push) Has been cancelled
Slow tests on important models (on Push - A10) / Model CI (push) Has been cancelled
Check Tiny Models / Check tiny models (push) Has been cancelled
Self-hosted runner (Intel Gaudi3 scheduled CI caller) / Model CI (push) Has been cancelled
Self-hosted runner (Intel Gaudi3 scheduled CI caller) / Pipeline CI (push) Has been cancelled
Self-hosted runner (Intel Gaudi3 scheduled CI caller) / Example CI (push) Has been cancelled
Self-hosted runner (Intel Gaudi3 scheduled CI caller) / DeepSpeed CI (push) Has been cancelled
Self-hosted runner (Intel Gaudi3 scheduled CI caller) / Trainer/FSDP CI (push) Has been cancelled
Nvidia CI - Flash Attn / Setup (push) Has been cancelled
Nvidia CI - Flash Attn / Model CI (push) Has been cancelled
Nvidia CI / Setup (push) Has been cancelled
Nvidia CI / Model CI (push) Has been cancelled
Nvidia CI / Torch pipeline CI (push) Has been cancelled
Nvidia CI / Example CI (push) Has been cancelled
Nvidia CI / Trainer/FSDP CI (push) Has been cancelled
Nvidia CI / DeepSpeed CI (push) Has been cancelled
Nvidia CI / Quantization CI (push) Has been cancelled
Nvidia CI / Kernels CI (push) Has been cancelled
Doctests / Setup (push) Has been cancelled
Doctests / Call doctest jobs (push) Has been cancelled
Doctests / Send results to webhook (push) Has been cancelled
Extras Smoke Test / Get supported Python versions (push) Has been cancelled
Extras Smoke Test / Test extras on Python ${{ matrix.python-version }} (push) Has been cancelled
Extras Smoke Test / Check Slack token availability (push) Has been cancelled
Extras Smoke Test / Notify failures to Slack (push) Has been cancelled
Self-hosted runner (AMD scheduled CI caller) / Trigger Scheduled AMD CI (push) Has been cancelled
Stale Bot / Close Stale Issues (push) Has been cancelled
220 lines
8.3 KiB
YAML
220 lines
8.3 KiB
YAML
name: model jobs
|
|
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
folder_slices:
|
|
required: true
|
|
type: string
|
|
machine_type:
|
|
required: true
|
|
type: string
|
|
slice_id:
|
|
required: true
|
|
type: number
|
|
docker:
|
|
required: true
|
|
type: string
|
|
commit_sha:
|
|
required: false
|
|
type: string
|
|
report_name_prefix:
|
|
required: false
|
|
default: run_models_gpu
|
|
type: string
|
|
runner_type:
|
|
required: false
|
|
type: string
|
|
report_repo_id:
|
|
required: false
|
|
type: string
|
|
pytest_marker:
|
|
required: false
|
|
type: string
|
|
|
|
env:
|
|
HF_HOME: /mnt/cache
|
|
TRANSFORMERS_IS_CI: yes
|
|
OMP_NUM_THREADS: 8
|
|
MKL_NUM_THREADS: 8
|
|
RUN_SLOW: yes
|
|
# For gated repositories, we still need to agree to share information on the Hub repo. page in order to get access.
|
|
# This token is created under the bot `hf-transformers-bot`.
|
|
HF_TOKEN: ${{ secrets.HF_HUB_READ_TOKEN }}
|
|
TF_FORCE_GPU_ALLOW_GROWTH: true
|
|
CUDA_VISIBLE_DEVICES: 0,1
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
run_models_gpu:
|
|
name: " "
|
|
strategy:
|
|
max-parallel: 8
|
|
fail-fast: false
|
|
matrix:
|
|
folders: ${{ fromJson(inputs.folder_slices)[inputs.slice_id] }}
|
|
runs-on:
|
|
group: '${{ inputs.machine_type }}'
|
|
container:
|
|
image: ${{ inputs.docker }}
|
|
options: --gpus all --shm-size "16gb" --ipc host -v /mnt/cache/.cache/huggingface:/mnt/cache/
|
|
outputs:
|
|
machine_type: ${{ steps.set_machine_type.outputs.machine_type }}
|
|
steps:
|
|
- name: Echo input and matrix info
|
|
shell: bash
|
|
env:
|
|
folder_slices: ${{ inputs.folder_slices }}
|
|
matrix_folders: ${{ matrix.folders }}
|
|
slice_data: ${{ toJson(fromJson(inputs.folder_slices)[inputs.slice_id]) }}
|
|
run: |
|
|
echo "$folder_slices"
|
|
echo "$matrix_folders"
|
|
echo "$slice_data"
|
|
|
|
- name: Echo folder ${{ matrix.folders }}
|
|
shell: bash
|
|
# For folders like `models/bert`, set an env. var. (`matrix_folders`) to `models_bert`, which will be used to
|
|
# set the artifact folder names (because the character `/` is not allowed).
|
|
env:
|
|
matrix_folders_raw: ${{ matrix.folders }}
|
|
run: |
|
|
echo "$matrix_folders_raw"
|
|
matrix_folders="${matrix_folders_raw/'models/'/'models_'}"
|
|
echo "$matrix_folders"
|
|
echo "matrix_folders=$matrix_folders" >> $GITHUB_ENV
|
|
|
|
- name: Update clone
|
|
working-directory: /transformers
|
|
env:
|
|
commit_sha: ${{ inputs.commit_sha || github.sha }}
|
|
run: |
|
|
git fetch origin "$commit_sha" && git checkout "$commit_sha"
|
|
|
|
- name: Reinstall transformers in edit mode (remove the one installed during docker image build)
|
|
working-directory: /transformers
|
|
run: python3 -m pip uninstall -y transformers && python3 -m pip install -e .
|
|
|
|
- name: Update / Install some packages (for Past CI)
|
|
if: ${{ contains(inputs.docker, '-past-') }}
|
|
working-directory: /transformers
|
|
run: |
|
|
python3 -m pip install -U datasets
|
|
|
|
- name: Update / Install some packages (for Past CI)
|
|
if: ${{ contains(inputs.docker, '-past-') && contains(inputs.docker, '-pytorch-') }}
|
|
working-directory: /transformers
|
|
run: |
|
|
python3 -m pip install --no-cache-dir git+https://github.com/huggingface/accelerate@main#egg=accelerate
|
|
|
|
- name: NVIDIA-SMI
|
|
run: |
|
|
nvidia-smi
|
|
|
|
- name: Environment
|
|
working-directory: /transformers
|
|
run: |
|
|
python3 utils/print_env.py
|
|
|
|
- name: Show installed libraries and their versions
|
|
working-directory: /transformers
|
|
run: pip freeze
|
|
|
|
- name: Set `machine_type` for report and artifact names
|
|
id: set_machine_type
|
|
working-directory: /transformers
|
|
shell: bash
|
|
env:
|
|
input_machine_type: ${{ inputs.machine_type }}
|
|
run: |
|
|
echo "$input_machine_type"
|
|
|
|
if [ "$input_machine_type" = "aws-g5-4xlarge-cache" ]; then
|
|
machine_type=single-gpu
|
|
elif [ "$input_machine_type" = "aws-g5-12xlarge-cache" ]; then
|
|
machine_type=multi-gpu
|
|
else
|
|
machine_type="$input_machine_type"
|
|
fi
|
|
|
|
echo "$machine_type"
|
|
echo "machine_type=$machine_type" >> $GITHUB_ENV
|
|
echo "machine_type=$machine_type" >> $GITHUB_OUTPUT
|
|
|
|
- name: Create report directory if it doesn't exist
|
|
shell: bash
|
|
env:
|
|
report_name_prefix: ${{ inputs.report_name_prefix }}
|
|
run: |
|
|
mkdir -p "/transformers/reports/${machine_type}_${report_name_prefix}_${matrix_folders}_test_reports"
|
|
echo "dummy" > "/transformers/reports/${machine_type}_${report_name_prefix}_${matrix_folders}_test_reports/dummy.txt"
|
|
ls -la "/transformers/reports/${machine_type}_${report_name_prefix}_${matrix_folders}_test_reports"
|
|
|
|
- name: Run all tests on GPU
|
|
working-directory: /transformers
|
|
env:
|
|
report_name_prefix: ${{ inputs.report_name_prefix }}
|
|
pytest_marker: ${{ inputs.pytest_marker }}
|
|
model: ${{ matrix.folders }}
|
|
run: |
|
|
# Map short names to actual test paths for trainer/distributed tests
|
|
test_path="tests/${model}"
|
|
if [ "$model" = "fsdp" ]; then
|
|
test_path="tests/trainer/distributed/test_trainer_distributed_fsdp.py"
|
|
elif [ "$model" = "ddp" ]; then
|
|
test_path="tests/trainer/distributed/test_trainer_distributed_ddp.py"
|
|
elif [ "$model" = "trainer" ] && [ "$report_name_prefix" = "run_trainer_and_fsdp_gpu" ]; then
|
|
test_path="tests/trainer --ignore=tests/trainer/distributed"
|
|
fi
|
|
script -q -c "PATCH_TESTING_METHODS_TO_COLLECT_OUTPUTS=yes _PATCHED_TESTING_METHODS_OUTPUT_DIR=/transformers/reports/${machine_type}_${report_name_prefix}_${matrix_folders}_test_reports python3 -m pytest -rsfE -v -m '${pytest_marker}' --make-reports=${machine_type}_${report_name_prefix}_${matrix_folders}_test_reports ${test_path}" test_outputs.txt
|
|
ls -la
|
|
# Extract the exit code from the output file
|
|
EXIT_CODE=$(tail -1 test_outputs.txt | grep -o 'COMMAND_EXIT_CODE="[0-9]*"' | cut -d'"' -f2)
|
|
exit ${EXIT_CODE:-1}
|
|
|
|
- name: Failure short reports
|
|
if: ${{ failure() }}
|
|
# This step is only to show information on Github Actions log.
|
|
# Always mark this step as successful, even if the report directory or the file `failures_short.txt` in it doesn't exist
|
|
continue-on-error: true
|
|
env:
|
|
report_name_prefix: ${{ inputs.report_name_prefix }}
|
|
run: cat "/transformers/reports/${machine_type}_${report_name_prefix}_${matrix_folders}_test_reports/failures_short.txt"
|
|
|
|
- name: Captured information
|
|
if: ${{ failure() }}
|
|
continue-on-error: true
|
|
env:
|
|
report_name_prefix: ${{ inputs.report_name_prefix }}
|
|
run: |
|
|
cat "/transformers/reports/${machine_type}_${report_name_prefix}_${matrix_folders}_test_reports/captured_info.txt"
|
|
|
|
- name: Copy test_outputs.txt
|
|
if: ${{ always() }}
|
|
continue-on-error: true
|
|
env:
|
|
report_name_prefix: ${{ inputs.report_name_prefix }}
|
|
run: |
|
|
cp /transformers/test_outputs.txt "/transformers/reports/${machine_type}_${report_name_prefix}_${matrix_folders}_test_reports"
|
|
|
|
- name: "Test suite reports artifacts: ${{ env.machine_type }}_${{ inputs.report_name_prefix }}_${{ env.matrix_folders }}_test_reports"
|
|
if: ${{ always() }}
|
|
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
|
with:
|
|
name: ${{ env.machine_type }}_${{ inputs.report_name_prefix }}_${{ env.matrix_folders }}_test_reports
|
|
path: /transformers/reports/${{ env.machine_type }}_${{ inputs.report_name_prefix }}_${{ env.matrix_folders }}_test_reports
|
|
|
|
collated_reports:
|
|
name: Collated Reports
|
|
if: ${{ always() && inputs.runner_type != '' }}
|
|
needs: run_models_gpu
|
|
uses: huggingface/transformers/.github/workflows/collated-reports.yml@6abd9725ee7d809dc974991f8ff6c958afb63a3a # main
|
|
with:
|
|
job: run_models_gpu
|
|
report_repo_id: ${{ inputs.report_repo_id }}
|
|
gpu_name: ${{ inputs.runner_type }}
|
|
machine_type: ${{ needs.run_models_gpu.outputs.machine_type }}
|
|
secrets: inherit
|