mirror of
https://github.com/huggingface/transformers.git
synced 2025-07-03 21:00:08 +06:00

* toctree * not-doctested.txt * collapse sections * feedback * update * rewrite get started sections * fixes * fix * loading models * fix * customize models * share * fix link * contribute part 1 * contribute pt 2 * fix toctree * tokenization pt 1 * Add new model (#32615) * v1 - working version * fix * fix * fix * fix * rename to correct name * fix title * fixup * rename files * fix * add copied from on tests * rename to `FalconMamba` everywhere and fix bugs * fix quantization + accelerate * fix copies * add `torch.compile` support * fix tests * fix tests and add slow tests * copies on config * merge the latest changes * fix tests * add few lines about instruct * Apply suggestions from code review Co-authored-by: Arthur <48595927+ArthurZucker@users.noreply.github.com> * fix * fix tests --------- Co-authored-by: Arthur <48595927+ArthurZucker@users.noreply.github.com> * "to be not" -> "not to be" (#32636) * "to be not" -> "not to be" * Update sam.md * Update trainer.py * Update modeling_utils.py * Update test_modeling_utils.py * Update test_modeling_utils.py * fix hfoption tag * tokenization pt. 2 * image processor * fix toctree * backbones * feature extractor * fix file name * processor * update not-doctested * update * make style * fix toctree * revision * make fixup * fix toctree * fix * make style * fix hfoption tag * pipeline * pipeline gradio * pipeline web server * add pipeline * fix toctree * not-doctested * prompting * llm optims * fix toctree * fixes * cache * text generation * fix * chat pipeline * chat stuff * xla * torch.compile * cpu inference * toctree * gpu inference * agents and tools * gguf/tiktoken * finetune * toctree * trainer * trainer pt 2 * optims * optimizers * accelerate * parallelism * fsdp * update * distributed cpu * hardware training * gpu training * gpu training 2 * peft * distrib debug * deepspeed 1 * deepspeed 2 * chat toctree * quant pt 1 * quant pt 2 * fix toctree * fix * fix * quant pt 3 * quant pt 4 * serialization * torchscript * scripts * tpu * review * model addition timeline * modular * more reviews * reviews * fix toctree * reviews reviews * continue reviews * more reviews * modular transformers * more review * zamba2 * fix * all frameworks * pytorch * supported model frameworks * flashattention * rm check_table * not-doctested.txt * rm check_support_list.py * feedback * updates/feedback * review * feedback * fix * update * feedback * updates * update --------- Co-authored-by: Younes Belkada <49240599+younesbelkada@users.noreply.github.com> Co-authored-by: Arthur <48595927+ArthurZucker@users.noreply.github.com> Co-authored-by: Quentin Gallouédec <45557362+qgallouedec@users.noreply.github.com>
225 lines
10 KiB
YAML
225 lines
10 KiB
YAML
version: 2.1
|
|
setup: true
|
|
orbs:
|
|
continuation: circleci/continuation@0.1.0
|
|
|
|
parameters:
|
|
nightly:
|
|
type: boolean
|
|
default: false
|
|
|
|
jobs:
|
|
# Ensure running with CircleCI/huggingface
|
|
check_circleci_user:
|
|
docker:
|
|
- image: python:3.10-slim
|
|
resource_class: small
|
|
parallelism: 1
|
|
steps:
|
|
- run: echo $CIRCLE_PROJECT_USERNAME
|
|
- run: |
|
|
if [ "$CIRCLE_PROJECT_USERNAME" = "huggingface" ]; then
|
|
exit 0
|
|
else
|
|
echo "The CI is running under $CIRCLE_PROJECT_USERNAME personal account. Please follow https://support.circleci.com/hc/en-us/articles/360008097173-Troubleshooting-why-pull-requests-are-not-triggering-jobs-on-my-organization- to fix it."; exit -1
|
|
fi
|
|
# Fetch the tests to run
|
|
fetch_tests:
|
|
working_directory: ~/transformers
|
|
docker:
|
|
- image: huggingface/transformers-quality
|
|
parallelism: 1
|
|
steps:
|
|
- checkout
|
|
- run: if [[ "$CIRCLE_PULL_REQUEST" == "" && "$CIRCLE_BRANCH" != "main" && "$CIRCLE_BRANCH" != *-release ]]; then echo "Not a PR, not the main branch and not a release branch, skip test!"; circleci-agent step halt; fi
|
|
- run: 'curl -L -H "Accept: application/vnd.github+json" -H "X-GitHub-Api-Version: 2022-11-28" https://api.github.com/repos/$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME/pulls/${CIRCLE_PULL_REQUEST##*/} >> github.txt'
|
|
- run: cat github.txt
|
|
- run: (python3 -c 'import json; from datetime import datetime; fp = open("github.txt"); data = json.load(fp); fp.close(); f = "%Y-%m-%dT%H:%M:%SZ"; created = datetime.strptime(data["created_at"], f); updated = datetime.strptime(data["updated_at"], f); s = (updated - created).total_seconds(); print(int(s))' || true) > elapsed.txt
|
|
- run: if [ "$(cat elapsed.txt)" == "" ]; then echo 60 > elapsed.txt; fi
|
|
- run: cat elapsed.txt
|
|
- run: if [ "$(cat elapsed.txt)" -lt "30" ]; then echo "PR is just opened, wait some actions from GitHub"; sleep 30; fi
|
|
- run: 'if grep -q "\"draft\": true," github.txt; then echo "draft mode, skip test!"; circleci-agent step halt; fi'
|
|
- run: uv pip install -U -e .
|
|
- run: echo 'export "GIT_COMMIT_MESSAGE=$(git show -s --format=%s)"' >> "$BASH_ENV" && source "$BASH_ENV"
|
|
- run: mkdir -p test_preparation
|
|
- run: python utils/tests_fetcher.py | tee tests_fetched_summary.txt
|
|
- run: python utils/tests_fetcher.py --filter_tests
|
|
- run: export "GIT_COMMIT_MESSAGE=$(git show -s --format=%s)" && echo $GIT_COMMIT_MESSAGE && python .circleci/create_circleci_config.py --fetcher_folder test_preparation
|
|
- run: |
|
|
if [ ! -s test_preparation/generated_config.yml ]; then
|
|
echo "No tests to run, exiting early!"
|
|
circleci-agent step halt
|
|
fi
|
|
|
|
- store_artifacts:
|
|
path: test_preparation
|
|
|
|
- run:
|
|
name: "Retrieve Artifact Paths"
|
|
# [reference] https://circleci.com/docs/api/v2/index.html#operation/getJobArtifacts
|
|
# `CIRCLE_TOKEN` is defined as an environment variables set within a context, see `https://circleci.com/docs/contexts/`
|
|
command: |
|
|
project_slug="gh/${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}"
|
|
job_number=${CIRCLE_BUILD_NUM}
|
|
url="https://circleci.com/api/v2/project/${project_slug}/${job_number}/artifacts"
|
|
curl -o test_preparation/artifacts.json ${url} --header "Circle-Token: $CIRCLE_TOKEN"
|
|
- run:
|
|
name: "Prepare pipeline parameters"
|
|
command: |
|
|
python utils/process_test_artifacts.py
|
|
|
|
# To avoid too long generated_config.yaml on the continuation orb, we pass the links to the artifacts as parameters.
|
|
# Otherwise the list of tests was just too big. Explicit is good but for that it was a limitation.
|
|
# We used:
|
|
|
|
# https://circleci.com/docs/api/v2/index.html#operation/getJobArtifacts : to get the job artifacts
|
|
# We could not pass a nested dict, which is why we create the test_file_... parameters for every single job
|
|
|
|
- store_artifacts:
|
|
path: test_preparation/transformed_artifacts.json
|
|
- store_artifacts:
|
|
path: test_preparation/artifacts.json
|
|
- continuation/continue:
|
|
parameters: test_preparation/transformed_artifacts.json
|
|
configuration_path: test_preparation/generated_config.yml
|
|
|
|
# To run all tests for the nightly build
|
|
fetch_all_tests:
|
|
working_directory: ~/transformers
|
|
docker:
|
|
- image: huggingface/transformers-quality
|
|
parallelism: 1
|
|
steps:
|
|
- checkout
|
|
- run: uv pip install -U -e .
|
|
- run: echo 'export "GIT_COMMIT_MESSAGE=$(git show -s --format=%s)"' >> "$BASH_ENV" && source "$BASH_ENV"
|
|
- run: mkdir -p test_preparation
|
|
- run: python utils/tests_fetcher.py --fetch_all | tee tests_fetched_summary.txt
|
|
- run: python utils/tests_fetcher.py --filter_tests
|
|
- run: export "GIT_COMMIT_MESSAGE=$(git show -s --format=%s)" && echo $GIT_COMMIT_MESSAGE && python .circleci/create_circleci_config.py --fetcher_folder test_preparation
|
|
- run: |
|
|
if [ ! -s test_preparation/generated_config.yml ]; then
|
|
echo "No tests to run, exiting early!"
|
|
circleci-agent step halt
|
|
fi
|
|
|
|
- store_artifacts:
|
|
path: test_preparation
|
|
|
|
- run:
|
|
name: "Retrieve Artifact Paths"
|
|
env:
|
|
CIRCLE_TOKEN: ${{ secrets.CI_ARTIFACT_TOKEN }}
|
|
command: |
|
|
project_slug="gh/${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}"
|
|
job_number=${CIRCLE_BUILD_NUM}
|
|
url="https://circleci.com/api/v2/project/${project_slug}/${job_number}/artifacts"
|
|
curl -o test_preparation/artifacts.json ${url}
|
|
- run:
|
|
name: "Prepare pipeline parameters"
|
|
command: |
|
|
python utils/process_test_artifacts.py
|
|
|
|
# To avoid too long generated_config.yaml on the continuation orb, we pass the links to the artifacts as parameters.
|
|
# Otherwise the list of tests was just too big. Explicit is good but for that it was a limitation.
|
|
# We used:
|
|
|
|
# https://circleci.com/docs/api/v2/index.html#operation/getJobArtifacts : to get the job artifacts
|
|
# We could not pass a nested dict, which is why we create the test_file_... parameters for every single job
|
|
|
|
- store_artifacts:
|
|
path: test_preparation/transformed_artifacts.json
|
|
- store_artifacts:
|
|
path: test_preparation/artifacts.json
|
|
- continuation/continue:
|
|
parameters: test_preparation/transformed_artifacts.json
|
|
configuration_path: test_preparation/generated_config.yml
|
|
|
|
check_code_quality:
|
|
working_directory: ~/transformers
|
|
docker:
|
|
- image: huggingface/transformers-quality
|
|
resource_class: large
|
|
environment:
|
|
TRANSFORMERS_IS_CI: yes
|
|
PYTEST_TIMEOUT: 120
|
|
parallelism: 1
|
|
steps:
|
|
- checkout
|
|
- run: uv pip install -e ".[quality]"
|
|
- run:
|
|
name: Show installed libraries and their versions
|
|
command: pip freeze | tee installed.txt
|
|
- store_artifacts:
|
|
path: ~/transformers/installed.txt
|
|
- run: python -c "from transformers import *" || (echo '🚨 import failed, this means you introduced unprotected imports! 🚨'; exit 1)
|
|
- run: ruff check examples tests src utils
|
|
- run: ruff format tests src utils --check
|
|
- run: python utils/custom_init_isort.py --check_only
|
|
- run: python utils/sort_auto_mappings.py --check_only
|
|
- run: python utils/check_doc_toc.py
|
|
- run: python utils/check_docstrings.py --check_all
|
|
|
|
check_repository_consistency:
|
|
working_directory: ~/transformers
|
|
docker:
|
|
- image: huggingface/transformers-consistency
|
|
resource_class: large
|
|
environment:
|
|
TRANSFORMERS_IS_CI: yes
|
|
PYTEST_TIMEOUT: 120
|
|
parallelism: 1
|
|
steps:
|
|
- checkout
|
|
- run: uv pip install -e ".[quality]"
|
|
- run:
|
|
name: Show installed libraries and their versions
|
|
command: pip freeze | tee installed.txt
|
|
- store_artifacts:
|
|
path: ~/transformers/installed.txt
|
|
- run: python utils/check_copies.py
|
|
- run: python utils/check_modular_conversion.py
|
|
- run: python utils/check_dummies.py
|
|
- run: python utils/check_repo.py
|
|
- run: python utils/check_inits.py
|
|
- run: python utils/check_config_docstrings.py
|
|
- run: python utils/check_config_attributes.py
|
|
- run: python utils/check_doctest_list.py
|
|
- run: make deps_table_check_updated
|
|
- run: python utils/update_metadata.py --check-only
|
|
- run: python utils/check_docstrings.py
|
|
|
|
workflows:
|
|
version: 2
|
|
setup_and_quality:
|
|
when:
|
|
and:
|
|
- equal: [<<pipeline.project.git_url>>, https://github.com/huggingface/transformers]
|
|
- not: <<pipeline.parameters.nightly>>
|
|
jobs:
|
|
- check_circleci_user
|
|
- check_code_quality
|
|
- check_repository_consistency
|
|
- fetch_tests
|
|
|
|
setup_and_quality_2:
|
|
when:
|
|
not:
|
|
equal: [<<pipeline.project.git_url>>, https://github.com/huggingface/transformers]
|
|
jobs:
|
|
- check_circleci_user
|
|
- check_code_quality
|
|
- check_repository_consistency
|
|
- fetch_tests:
|
|
# [reference] https://circleci.com/docs/contexts/
|
|
context:
|
|
- TRANSFORMERS_CONTEXT
|
|
|
|
nightly:
|
|
when: <<pipeline.parameters.nightly>>
|
|
jobs:
|
|
- check_circleci_user
|
|
- check_code_quality
|
|
- check_repository_consistency
|
|
- fetch_all_tests
|