Compare commits
6 Commits
ko-deepsee
...
v4.11.1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
54f9d62c61 | ||
|
|
22d3156881 | ||
|
|
9bb3d33a46 | ||
|
|
a05400e020 | ||
|
|
10083244a3 | ||
|
|
11144a3048 |
BIN
._.DS_Store
BIN
._.DS_Store
Binary file not shown.
BIN
._.circleci
BIN
._.circleci
Binary file not shown.
BIN
._.gitattributes
BIN
._.gitattributes
Binary file not shown.
BIN
._.gitignore
BIN
._.gitignore
Binary file not shown.
BIN
._AGENTS.md
BIN
._AGENTS.md
Binary file not shown.
BIN
._CITATION.cff
BIN
._CITATION.cff
Binary file not shown.
Binary file not shown.
BIN
._ISSUES.md
BIN
._ISSUES.md
Binary file not shown.
Binary file not shown.
BIN
._benchmark
BIN
._benchmark
Binary file not shown.
BIN
._examples
BIN
._examples
Binary file not shown.
BIN
._notebooks
BIN
._notebooks
Binary file not shown.
BIN
._templates
BIN
._templates
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,6 +1,6 @@
|
|||||||
# Troubleshooting
|
# Troubleshooting
|
||||||
|
|
||||||
This is a document explaining how to deal with various issues on Circle-CI. The entries may include actual solutions or pointers to Issues that cover those.
|
This is a document explaining how to deal with various issues on Circle-CI. The entries may include actually solutions or pointers to Issues that cover those.
|
||||||
|
|
||||||
## Circle CI
|
## Circle CI
|
||||||
|
|
||||||
|
|||||||
1088
.circleci/config.yml
1088
.circleci/config.yml
File diff suppressed because it is too large
Load Diff
@@ -1,394 +0,0 @@
|
|||||||
# coding=utf-8
|
|
||||||
# Copyright 2022 The HuggingFace Inc. team.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
import argparse
|
|
||||||
import copy
|
|
||||||
import os
|
|
||||||
import random
|
|
||||||
from dataclasses import dataclass
|
|
||||||
from typing import Any, Dict, List, Optional
|
|
||||||
import glob
|
|
||||||
import yaml
|
|
||||||
|
|
||||||
|
|
||||||
COMMON_ENV_VARIABLES = {
|
|
||||||
"OMP_NUM_THREADS": 1,
|
|
||||||
"TRANSFORMERS_IS_CI": True,
|
|
||||||
"PYTEST_TIMEOUT": 120,
|
|
||||||
"RUN_PIPELINE_TESTS": False,
|
|
||||||
# will be adjust in `CircleCIJob.to_dict`.
|
|
||||||
"RUN_FLAKY": True,
|
|
||||||
}
|
|
||||||
# Disable the use of {"s": None} as the output is way too long, causing the navigation on CircleCI impractical
|
|
||||||
COMMON_PYTEST_OPTIONS = {"max-worker-restart": 0, "vvv": None, "rsfE":None}
|
|
||||||
DEFAULT_DOCKER_IMAGE = [{"image": "cimg/python:3.8.12"}]
|
|
||||||
|
|
||||||
# Strings that commonly appear in the output of flaky tests when they fail. These are used with `pytest-rerunfailures`
|
|
||||||
# to rerun the tests that match these patterns.
|
|
||||||
FLAKY_TEST_FAILURE_PATTERNS = [
|
|
||||||
"OSError", # Machine/connection transient error
|
|
||||||
"Timeout", # Machine/connection transient error
|
|
||||||
"ConnectionError", # Connection transient error
|
|
||||||
"FileNotFoundError", # Raised by `datasets` on Hub failures
|
|
||||||
"PIL.UnidentifiedImageError", # Raised by `PIL.Image.open` on connection issues
|
|
||||||
"HTTPError", # Also catches HfHubHTTPError
|
|
||||||
"AssertionError: Tensor-likes are not close!", # `torch.testing.assert_close`, we might have unlucky random values
|
|
||||||
# TODO: error downloading tokenizer's `merged.txt` from hub can cause all the exceptions below. Throw and handle
|
|
||||||
# them under a single message.
|
|
||||||
"TypeError: expected str, bytes or os.PathLike object, not NoneType",
|
|
||||||
"TypeError: stat: path should be string, bytes, os.PathLike or integer, not NoneType",
|
|
||||||
"Converting from Tiktoken failed",
|
|
||||||
"KeyError: <class ",
|
|
||||||
"TypeError: not a string",
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
class EmptyJob:
|
|
||||||
job_name = "empty"
|
|
||||||
|
|
||||||
def to_dict(self):
|
|
||||||
steps = [{"run": 'ls -la'}]
|
|
||||||
if self.job_name == "collection_job":
|
|
||||||
steps.extend(
|
|
||||||
[
|
|
||||||
"checkout",
|
|
||||||
{"run": "pip install requests || true"},
|
|
||||||
{"run": """while [[ $(curl --location --request GET "https://circleci.com/api/v2/workflow/$CIRCLE_WORKFLOW_ID/job" --header "Circle-Token: $CCI_TOKEN"| jq -r '.items[]|select(.name != "collection_job")|.status' | grep -c "running") -gt 0 ]]; do sleep 5; done || true"""},
|
|
||||||
{"run": 'python utils/process_circleci_workflow_test_reports.py --workflow_id $CIRCLE_WORKFLOW_ID || true'},
|
|
||||||
{"store_artifacts": {"path": "outputs"}},
|
|
||||||
{"run": 'echo "All required jobs have now completed"'},
|
|
||||||
]
|
|
||||||
)
|
|
||||||
|
|
||||||
return {
|
|
||||||
"docker": copy.deepcopy(DEFAULT_DOCKER_IMAGE),
|
|
||||||
"resource_class": "small",
|
|
||||||
"steps": steps,
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
|
||||||
class CircleCIJob:
|
|
||||||
name: str
|
|
||||||
additional_env: Dict[str, Any] = None
|
|
||||||
docker_image: List[Dict[str, str]] = None
|
|
||||||
install_steps: List[str] = None
|
|
||||||
marker: Optional[str] = None
|
|
||||||
parallelism: Optional[int] = 0
|
|
||||||
pytest_num_workers: int = 8
|
|
||||||
pytest_options: Dict[str, Any] = None
|
|
||||||
resource_class: Optional[str] = "xlarge"
|
|
||||||
tests_to_run: Optional[List[str]] = None
|
|
||||||
num_test_files_per_worker: Optional[int] = 10
|
|
||||||
# This should be only used for doctest job!
|
|
||||||
command_timeout: Optional[int] = None
|
|
||||||
|
|
||||||
def __post_init__(self):
|
|
||||||
# Deal with defaults for mutable attributes.
|
|
||||||
if self.additional_env is None:
|
|
||||||
self.additional_env = {}
|
|
||||||
if self.docker_image is None:
|
|
||||||
# Let's avoid changing the default list and make a copy.
|
|
||||||
self.docker_image = copy.deepcopy(DEFAULT_DOCKER_IMAGE)
|
|
||||||
else:
|
|
||||||
# BIG HACK WILL REMOVE ONCE FETCHER IS UPDATED
|
|
||||||
print(os.environ.get("GIT_COMMIT_MESSAGE"))
|
|
||||||
if "[build-ci-image]" in os.environ.get("GIT_COMMIT_MESSAGE", "") or os.environ.get("GIT_COMMIT_MESSAGE", "") == "dev-ci":
|
|
||||||
self.docker_image[0]["image"] = f"{self.docker_image[0]['image']}:dev"
|
|
||||||
print(f"Using {self.docker_image} docker image")
|
|
||||||
if self.install_steps is None:
|
|
||||||
self.install_steps = ["uv pip install ."]
|
|
||||||
# Use a custom patched pytest to force exit the process at the end, to avoid `Too long with no output (exceeded 10m0s): context deadline exceeded`
|
|
||||||
self.install_steps.append("uv pip install git+https://github.com/ydshieh/pytest.git@8.4.1-ydshieh")
|
|
||||||
if self.pytest_options is None:
|
|
||||||
self.pytest_options = {}
|
|
||||||
if isinstance(self.tests_to_run, str):
|
|
||||||
self.tests_to_run = [self.tests_to_run]
|
|
||||||
else:
|
|
||||||
test_file = os.path.join("test_preparation" , f"{self.job_name}_test_list.txt")
|
|
||||||
print("Looking for ", test_file)
|
|
||||||
if os.path.exists(test_file):
|
|
||||||
with open(test_file) as f:
|
|
||||||
expanded_tests = f.read().strip().split("\n")
|
|
||||||
self.tests_to_run = expanded_tests
|
|
||||||
print("Found:", expanded_tests)
|
|
||||||
else:
|
|
||||||
self.tests_to_run = []
|
|
||||||
print("not Found")
|
|
||||||
|
|
||||||
def to_dict(self):
|
|
||||||
env = COMMON_ENV_VARIABLES.copy()
|
|
||||||
# Do not run tests decorated by @is_flaky on pull requests
|
|
||||||
env['RUN_FLAKY'] = os.environ.get("CIRCLE_PULL_REQUEST", "") == ""
|
|
||||||
env.update(self.additional_env)
|
|
||||||
|
|
||||||
job = {
|
|
||||||
"docker": self.docker_image,
|
|
||||||
"environment": env,
|
|
||||||
}
|
|
||||||
if self.resource_class is not None:
|
|
||||||
job["resource_class"] = self.resource_class
|
|
||||||
|
|
||||||
all_options = {**COMMON_PYTEST_OPTIONS, **self.pytest_options}
|
|
||||||
pytest_flags = [f"--{key}={value}" if (value is not None or key in ["doctest-modules"]) else f"-{key}" for key, value in all_options.items()]
|
|
||||||
pytest_flags.append(
|
|
||||||
f"--make-reports={self.name}" if "examples" in self.name else f"--make-reports=tests_{self.name}"
|
|
||||||
)
|
|
||||||
# Examples special case: we need to download NLTK files in advance to avoid cuncurrency issues
|
|
||||||
timeout_cmd = f"timeout {self.command_timeout} " if self.command_timeout else ""
|
|
||||||
marker_cmd = f"-m '{self.marker}'" if self.marker is not None else ""
|
|
||||||
junit_flags = f" -p no:warning -o junit_family=xunit1 --junitxml=test-results/junit.xml"
|
|
||||||
joined_flaky_patterns = "|".join(FLAKY_TEST_FAILURE_PATTERNS)
|
|
||||||
repeat_on_failure_flags = f"--reruns 5 --reruns-delay 2 --only-rerun '({joined_flaky_patterns})'"
|
|
||||||
parallel = f' << pipeline.parameters.{self.job_name}_parallelism >> '
|
|
||||||
steps = [
|
|
||||||
"checkout",
|
|
||||||
{"attach_workspace": {"at": "test_preparation"}},
|
|
||||||
{"run": "apt-get update && apt-get install -y curl"},
|
|
||||||
{"run": " && ".join(self.install_steps)},
|
|
||||||
{"run": {"name": "Download NLTK files", "command": """python -c "import nltk; nltk.download('punkt', quiet=True)" """} if "example" in self.name else "echo Skipping"},
|
|
||||||
{"run": {
|
|
||||||
"name": "Show installed libraries and their size",
|
|
||||||
"command": """du -h -d 1 "$(pip -V | cut -d ' ' -f 4 | sed 's/pip//g')" | grep -vE "dist-info|_distutils_hack|__pycache__" | sort -h | tee installed.txt || true"""}
|
|
||||||
},
|
|
||||||
{"run": {
|
|
||||||
"name": "Show installed libraries and their versions",
|
|
||||||
"command": """pip list --format=freeze | tee installed.txt || true"""}
|
|
||||||
},
|
|
||||||
{"run": {
|
|
||||||
"name": "Show biggest libraries",
|
|
||||||
"command": """dpkg-query --show --showformat='${Installed-Size}\t${Package}\n' | sort -rh | head -25 | sort -h | awk '{ package=$2; sub(".*/", "", package); printf("%.5f GB %s\n", $1/1024/1024, package)}' || true"""}
|
|
||||||
},
|
|
||||||
{"run": {"name": "Create `test-results` directory", "command": "mkdir test-results"}},
|
|
||||||
{"run": {"name": "Get files to test", "command":f'curl -L -o {self.job_name}_test_list.txt <<pipeline.parameters.{self.job_name}_test_list>> --header "Circle-Token: $CIRCLE_TOKEN"' if self.name != "pr_documentation_tests" else 'echo "Skipped"'}},
|
|
||||||
{"run": {"name": "Split tests across parallel nodes: show current parallel tests",
|
|
||||||
"command": f"TESTS=$(circleci tests split --split-by=timings {self.job_name}_test_list.txt) && echo $TESTS > splitted_tests.txt && echo $TESTS | tr ' ' '\n'" if self.parallelism else f"awk '{{printf \"%s \", $0}}' {self.job_name}_test_list.txt > splitted_tests.txt"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{"run": {"name": "fetch hub objects before pytest", "command": "python3 utils/fetch_hub_objects_for_ci.py"}},
|
|
||||||
{"run": {
|
|
||||||
"name": "Run tests",
|
|
||||||
"command": f"({timeout_cmd} python3 -m pytest {marker_cmd} -n {self.pytest_num_workers} {junit_flags} {repeat_on_failure_flags} {' '.join(pytest_flags)} $(cat splitted_tests.txt) | tee tests_output.txt)"}
|
|
||||||
},
|
|
||||||
{"run": {"name": "Expand to show skipped tests", "when": "always", "command": f"python3 .circleci/parse_test_outputs.py --file tests_output.txt --skip"}},
|
|
||||||
{"run": {"name": "Failed tests: show reasons", "when": "always", "command": f"python3 .circleci/parse_test_outputs.py --file tests_output.txt --fail"}},
|
|
||||||
{"run": {"name": "Errors", "when": "always", "command": f"python3 .circleci/parse_test_outputs.py --file tests_output.txt --errors"}},
|
|
||||||
{"store_test_results": {"path": "test-results"}},
|
|
||||||
{"store_artifacts": {"path": "test-results/junit.xml"}},
|
|
||||||
{"store_artifacts": {"path": "reports"}},
|
|
||||||
{"store_artifacts": {"path": "tests.txt"}},
|
|
||||||
{"store_artifacts": {"path": "splitted_tests.txt"}},
|
|
||||||
{"store_artifacts": {"path": "installed.txt"}},
|
|
||||||
]
|
|
||||||
if self.parallelism:
|
|
||||||
job["parallelism"] = parallel
|
|
||||||
job["steps"] = steps
|
|
||||||
return job
|
|
||||||
|
|
||||||
@property
|
|
||||||
def job_name(self):
|
|
||||||
return self.name if ("examples" in self.name or "pipeline" in self.name or "pr_documentation" in self.name) else f"tests_{self.name}"
|
|
||||||
|
|
||||||
|
|
||||||
# JOBS
|
|
||||||
torch_job = CircleCIJob(
|
|
||||||
"torch",
|
|
||||||
docker_image=[{"image": "huggingface/transformers-torch-light"}],
|
|
||||||
marker="not generate",
|
|
||||||
parallelism=6,
|
|
||||||
)
|
|
||||||
|
|
||||||
generate_job = CircleCIJob(
|
|
||||||
"generate",
|
|
||||||
docker_image=[{"image": "huggingface/transformers-torch-light"}],
|
|
||||||
# networkx==3.3 (after #36957) cause some issues
|
|
||||||
# TODO: remove this once it works directly
|
|
||||||
install_steps=["uv pip install ."],
|
|
||||||
marker="generate",
|
|
||||||
parallelism=6,
|
|
||||||
)
|
|
||||||
|
|
||||||
tokenization_job = CircleCIJob(
|
|
||||||
"tokenization",
|
|
||||||
docker_image=[{"image": "huggingface/transformers-torch-light"}],
|
|
||||||
parallelism=8,
|
|
||||||
)
|
|
||||||
|
|
||||||
processor_job = CircleCIJob(
|
|
||||||
"processors",
|
|
||||||
docker_image=[{"image": "huggingface/transformers-torch-light"}],
|
|
||||||
parallelism=8,
|
|
||||||
)
|
|
||||||
|
|
||||||
pipelines_torch_job = CircleCIJob(
|
|
||||||
"pipelines_torch",
|
|
||||||
additional_env={"RUN_PIPELINE_TESTS": True},
|
|
||||||
docker_image=[{"image":"huggingface/transformers-torch-light"}],
|
|
||||||
marker="is_pipeline_test",
|
|
||||||
parallelism=4,
|
|
||||||
)
|
|
||||||
|
|
||||||
custom_tokenizers_job = CircleCIJob(
|
|
||||||
"custom_tokenizers",
|
|
||||||
additional_env={"RUN_CUSTOM_TOKENIZERS": True},
|
|
||||||
docker_image=[{"image": "huggingface/transformers-custom-tokenizers"}],
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
examples_torch_job = CircleCIJob(
|
|
||||||
"examples_torch",
|
|
||||||
additional_env={"OMP_NUM_THREADS": 8},
|
|
||||||
docker_image=[{"image":"huggingface/transformers-examples-torch"}],
|
|
||||||
# TODO @ArthurZucker remove this once docker is easier to build
|
|
||||||
install_steps=["uv pip install . && uv pip install -r examples/pytorch/_tests_requirements.txt"],
|
|
||||||
pytest_num_workers=4,
|
|
||||||
)
|
|
||||||
|
|
||||||
hub_job = CircleCIJob(
|
|
||||||
"hub",
|
|
||||||
additional_env={"HUGGINGFACE_CO_STAGING": True},
|
|
||||||
docker_image=[{"image":"huggingface/transformers-torch-light"}],
|
|
||||||
install_steps=[
|
|
||||||
'uv pip install .',
|
|
||||||
'git config --global user.email "ci@dummy.com"',
|
|
||||||
'git config --global user.name "ci"',
|
|
||||||
],
|
|
||||||
marker="is_staging_test",
|
|
||||||
pytest_num_workers=2,
|
|
||||||
resource_class="medium",
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
onnx_job = CircleCIJob(
|
|
||||||
"onnx",
|
|
||||||
docker_image=[{"image":"huggingface/transformers-torch-tf-light"}],
|
|
||||||
install_steps=[
|
|
||||||
"uv pip install .[testing,sentencepiece,onnxruntime,vision,rjieba]",
|
|
||||||
],
|
|
||||||
pytest_options={"k onnx": None},
|
|
||||||
pytest_num_workers=1,
|
|
||||||
resource_class="small",
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
exotic_models_job = CircleCIJob(
|
|
||||||
"exotic_models",
|
|
||||||
docker_image=[{"image":"huggingface/transformers-exotic-models"}],
|
|
||||||
parallelism=4,
|
|
||||||
pytest_options={"durations": 100},
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
repo_utils_job = CircleCIJob(
|
|
||||||
"repo_utils",
|
|
||||||
docker_image=[{"image":"huggingface/transformers-consistency"}],
|
|
||||||
pytest_num_workers=4,
|
|
||||||
resource_class="large",
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
non_model_job = CircleCIJob(
|
|
||||||
"non_model",
|
|
||||||
docker_image=[{"image": "huggingface/transformers-torch-light"}],
|
|
||||||
# networkx==3.3 (after #36957) cause some issues
|
|
||||||
# TODO: remove this once it works directly
|
|
||||||
install_steps=["uv pip install .[serving]"],
|
|
||||||
marker="not generate",
|
|
||||||
parallelism=6,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
# We also include a `dummy.py` file in the files to be doc-tested to prevent edge case failure. Otherwise, the pytest
|
|
||||||
# hangs forever during test collection while showing `collecting 0 items / 21 errors`. (To see this, we have to remove
|
|
||||||
# the bash output redirection.)
|
|
||||||
py_command = 'from utils.tests_fetcher import get_doctest_files; to_test = get_doctest_files() + ["dummy.py"]; to_test = " ".join(to_test); print(to_test)'
|
|
||||||
py_command = f"$(python3 -c '{py_command}')"
|
|
||||||
command = f'echo """{py_command}""" > pr_documentation_tests_temp.txt'
|
|
||||||
doc_test_job = CircleCIJob(
|
|
||||||
"pr_documentation_tests",
|
|
||||||
docker_image=[{"image":"huggingface/transformers-consistency"}],
|
|
||||||
additional_env={"TRANSFORMERS_VERBOSITY": "error", "DATASETS_VERBOSITY": "error", "SKIP_CUDA_DOCTEST": "1"},
|
|
||||||
install_steps=[
|
|
||||||
# Add an empty file to keep the test step running correctly even no file is selected to be tested.
|
|
||||||
"uv pip install .",
|
|
||||||
"touch dummy.py",
|
|
||||||
command,
|
|
||||||
"cat pr_documentation_tests_temp.txt",
|
|
||||||
"tail -n1 pr_documentation_tests_temp.txt | tee pr_documentation_tests_test_list.txt"
|
|
||||||
],
|
|
||||||
tests_to_run="$(cat pr_documentation_tests.txt)", # noqa
|
|
||||||
pytest_options={"-doctest-modules": None, "doctest-glob": "*.md", "dist": "loadfile", "rvsA": None},
|
|
||||||
command_timeout=1200, # test cannot run longer than 1200 seconds
|
|
||||||
pytest_num_workers=1,
|
|
||||||
)
|
|
||||||
|
|
||||||
REGULAR_TESTS = [torch_job, hub_job, onnx_job, tokenization_job, processor_job, generate_job, non_model_job] # fmt: skip
|
|
||||||
EXAMPLES_TESTS = [examples_torch_job]
|
|
||||||
PIPELINE_TESTS = [pipelines_torch_job]
|
|
||||||
REPO_UTIL_TESTS = [repo_utils_job]
|
|
||||||
DOC_TESTS = [doc_test_job]
|
|
||||||
ALL_TESTS = REGULAR_TESTS + EXAMPLES_TESTS + PIPELINE_TESTS + REPO_UTIL_TESTS + DOC_TESTS + [custom_tokenizers_job] + [exotic_models_job] # fmt: skip
|
|
||||||
|
|
||||||
|
|
||||||
def create_circleci_config(folder=None):
|
|
||||||
if folder is None:
|
|
||||||
folder = os.getcwd()
|
|
||||||
os.environ["test_preparation_dir"] = folder
|
|
||||||
jobs = [k for k in ALL_TESTS if os.path.isfile(os.path.join("test_preparation" , f"{k.job_name}_test_list.txt") )]
|
|
||||||
print("The following jobs will be run ", jobs)
|
|
||||||
|
|
||||||
if len(jobs) == 0:
|
|
||||||
jobs = [EmptyJob()]
|
|
||||||
else:
|
|
||||||
print("Full list of job name inputs", {j.job_name + "_test_list":{"type":"string", "default":''} for j in jobs})
|
|
||||||
# Add a job waiting all the test jobs and aggregate their test summary files at the end
|
|
||||||
collection_job = EmptyJob()
|
|
||||||
collection_job.job_name = "collection_job"
|
|
||||||
jobs = [collection_job] + jobs
|
|
||||||
|
|
||||||
config = {
|
|
||||||
"version": "2.1",
|
|
||||||
"parameters": {
|
|
||||||
# Only used to accept the parameters from the trigger
|
|
||||||
"nightly": {"type": "boolean", "default": False},
|
|
||||||
# Only used to accept the parameters from GitHub Actions trigger
|
|
||||||
"GHA_Actor": {"type": "string", "default": ""},
|
|
||||||
"GHA_Action": {"type": "string", "default": ""},
|
|
||||||
"GHA_Event": {"type": "string", "default": ""},
|
|
||||||
"GHA_Meta": {"type": "string", "default": ""},
|
|
||||||
"tests_to_run": {"type": "string", "default": ""},
|
|
||||||
**{j.job_name + "_test_list":{"type":"string", "default":''} for j in jobs},
|
|
||||||
**{j.job_name + "_parallelism":{"type":"integer", "default":1} for j in jobs},
|
|
||||||
},
|
|
||||||
"jobs": {j.job_name: j.to_dict() for j in jobs}
|
|
||||||
}
|
|
||||||
if "CIRCLE_TOKEN" in os.environ:
|
|
||||||
# For private forked repo. (e.g. new model addition)
|
|
||||||
config["workflows"] = {"version": 2, "run_tests": {"jobs": [{j.job_name: {"context": ["TRANSFORMERS_CONTEXT"]}} for j in jobs]}}
|
|
||||||
else:
|
|
||||||
# For public repo. (e.g. `transformers`)
|
|
||||||
config["workflows"] = {"version": 2, "run_tests": {"jobs": [j.job_name for j in jobs]}}
|
|
||||||
with open(os.path.join(folder, "generated_config.yml"), "w") as f:
|
|
||||||
f.write(yaml.dump(config, sort_keys=False, default_flow_style=False).replace("' << pipeline", " << pipeline").replace(">> '", " >>"))
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
parser = argparse.ArgumentParser()
|
|
||||||
parser.add_argument(
|
|
||||||
"--fetcher_folder", type=str, default=None, help="Only test that all tests and modules are accounted for."
|
|
||||||
)
|
|
||||||
args = parser.parse_args()
|
|
||||||
|
|
||||||
create_circleci_config(args.fetcher_folder)
|
|
||||||
75
.circleci/deploy.sh
Executable file
75
.circleci/deploy.sh
Executable file
@@ -0,0 +1,75 @@
|
|||||||
|
cd docs
|
||||||
|
|
||||||
|
function deploy_doc(){
|
||||||
|
echo "Creating doc at commit $1 and pushing to folder $2"
|
||||||
|
git checkout $1
|
||||||
|
pip install -U ..
|
||||||
|
if [ ! -z "$2" ]
|
||||||
|
then
|
||||||
|
if [ "$2" == "master" ]; then
|
||||||
|
echo "Pushing master"
|
||||||
|
make clean && make html && scp -r -oStrictHostKeyChecking=no _build/html/* $doc:$dir/$2/
|
||||||
|
cp -r _build/html/_static .
|
||||||
|
elif ssh -oStrictHostKeyChecking=no $doc "[ -d $dir/$2 ]"; then
|
||||||
|
echo "Directory" $2 "already exists"
|
||||||
|
scp -r -oStrictHostKeyChecking=no _static/* $doc:$dir/$2/_static/
|
||||||
|
else
|
||||||
|
echo "Pushing version" $2
|
||||||
|
make clean && make html
|
||||||
|
rm -rf _build/html/_static
|
||||||
|
cp -r _static _build/html
|
||||||
|
scp -r -oStrictHostKeyChecking=no _build/html $doc:$dir/$2
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "Pushing stable"
|
||||||
|
make clean && make html
|
||||||
|
rm -rf _build/html/_static
|
||||||
|
cp -r _static _build/html
|
||||||
|
scp -r -oStrictHostKeyChecking=no _build/html/* $doc:$dir
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# You can find the commit for each tag on https://github.com/huggingface/transformers/tags
|
||||||
|
deploy_doc "master" master
|
||||||
|
deploy_doc "b33a385" v1.0.0
|
||||||
|
deploy_doc "fe02e45" v1.1.0
|
||||||
|
deploy_doc "89fd345" v1.2.0
|
||||||
|
deploy_doc "fc9faa8" v2.0.0
|
||||||
|
deploy_doc "3ddce1d" v2.1.1
|
||||||
|
deploy_doc "3616209" v2.2.0
|
||||||
|
deploy_doc "d0f8b9a" v2.3.0
|
||||||
|
deploy_doc "6664ea9" v2.4.0
|
||||||
|
deploy_doc "fb560dc" v2.5.0
|
||||||
|
deploy_doc "b90745c" v2.5.1
|
||||||
|
deploy_doc "fbc5bf1" v2.6.0
|
||||||
|
deploy_doc "6f5a12a" v2.7.0
|
||||||
|
deploy_doc "11c3257" v2.8.0
|
||||||
|
deploy_doc "e7cfc1a" v2.9.0
|
||||||
|
deploy_doc "7cb203f" v2.9.1
|
||||||
|
deploy_doc "10d7239" v2.10.0
|
||||||
|
deploy_doc "b42586e" v2.11.0
|
||||||
|
deploy_doc "7fb8bdf" v3.0.2
|
||||||
|
deploy_doc "4b3ee9c" v3.1.0
|
||||||
|
deploy_doc "3ebb1b3" v3.2.0
|
||||||
|
deploy_doc "0613f05" v3.3.1
|
||||||
|
deploy_doc "eb0e0ce" v3.4.0
|
||||||
|
deploy_doc "818878d" v3.5.1
|
||||||
|
deploy_doc "c781171" v4.0.1
|
||||||
|
deploy_doc "bfa4ccf" v4.1.1
|
||||||
|
deploy_doc "7d9a9d0" v4.2.2
|
||||||
|
deploy_doc "bae0c79" v4.3.3
|
||||||
|
deploy_doc "c988db5" v4.4.0
|
||||||
|
deploy_doc "c5d6a28" v4.4.1
|
||||||
|
deploy_doc "6bc89ed" v4.4.2
|
||||||
|
deploy_doc "4906a29" v4.5.0
|
||||||
|
deploy_doc "4bae96e" v4.5.1
|
||||||
|
deploy_doc "25dee4a" v4.6.0
|
||||||
|
deploy_doc "7a6c9fa" v4.7.0
|
||||||
|
deploy_doc "9252a51" v4.8.0
|
||||||
|
deploy_doc "1366172" v4.8.1
|
||||||
|
deploy_doc "96d1cfb" v4.8.2
|
||||||
|
deploy_doc "72aee83" v4.9.0
|
||||||
|
deploy_doc "bff1c71" v4.9.1
|
||||||
|
deploy_doc "41981a2" v4.9.2
|
||||||
|
deploy_doc "39cb6f5" v4.10.0
|
||||||
|
deploy_doc "28e2787" # v4.10.1 Latest stable release
|
||||||
@@ -1,70 +0,0 @@
|
|||||||
import re
|
|
||||||
import argparse
|
|
||||||
|
|
||||||
def parse_pytest_output(file_path):
|
|
||||||
skipped_tests = {}
|
|
||||||
skipped_count = 0
|
|
||||||
with open(file_path, 'r') as file:
|
|
||||||
for line in file:
|
|
||||||
match = re.match(r'^SKIPPED \[(\d+)\] (tests/.*): (.*)$', line)
|
|
||||||
if match:
|
|
||||||
skipped_count += 1
|
|
||||||
test_file, test_line, reason = match.groups()
|
|
||||||
skipped_tests[reason] = skipped_tests.get(reason, []) + [(test_file, test_line)]
|
|
||||||
for k,v in sorted(skipped_tests.items(), key=lambda x:len(x[1])):
|
|
||||||
print(f"{len(v):4} skipped because: {k}")
|
|
||||||
print("Number of skipped tests:", skipped_count)
|
|
||||||
|
|
||||||
def parse_pytest_failure_output(file_path):
|
|
||||||
failed_tests = {}
|
|
||||||
failed_count = 0
|
|
||||||
with open(file_path, 'r') as file:
|
|
||||||
for line in file:
|
|
||||||
match = re.match(r'^FAILED (tests/.*) - (.*): (.*)$', line)
|
|
||||||
if match:
|
|
||||||
failed_count += 1
|
|
||||||
_, error, reason = match.groups()
|
|
||||||
failed_tests[reason] = failed_tests.get(reason, []) + [error]
|
|
||||||
for k,v in sorted(failed_tests.items(), key=lambda x:len(x[1])):
|
|
||||||
print(f"{len(v):4} failed because `{v[0]}` -> {k}")
|
|
||||||
print("Number of failed tests:", failed_count)
|
|
||||||
if failed_count>0:
|
|
||||||
exit(1)
|
|
||||||
|
|
||||||
def parse_pytest_errors_output(file_path):
|
|
||||||
print(file_path)
|
|
||||||
error_tests = {}
|
|
||||||
error_count = 0
|
|
||||||
with open(file_path, 'r') as file:
|
|
||||||
for line in file:
|
|
||||||
match = re.match(r'^ERROR (tests/.*) - (.*): (.*)$', line)
|
|
||||||
if match:
|
|
||||||
error_count += 1
|
|
||||||
_, test_error, reason = match.groups()
|
|
||||||
error_tests[reason] = error_tests.get(reason, []) + [test_error]
|
|
||||||
for k,v in sorted(error_tests.items(), key=lambda x:len(x[1])):
|
|
||||||
print(f"{len(v):4} errored out because of `{v[0]}` -> {k}")
|
|
||||||
print("Number of errors:", error_count)
|
|
||||||
if error_count>0:
|
|
||||||
exit(1)
|
|
||||||
|
|
||||||
def main():
|
|
||||||
parser = argparse.ArgumentParser()
|
|
||||||
parser.add_argument("--file", help="file to parse")
|
|
||||||
parser.add_argument("--skip", action="store_true", help="show skipped reasons")
|
|
||||||
parser.add_argument("--fail", action="store_true", help="show failed tests")
|
|
||||||
parser.add_argument("--errors", action="store_true", help="show failed tests")
|
|
||||||
args = parser.parse_args()
|
|
||||||
|
|
||||||
if args.skip:
|
|
||||||
parse_pytest_output(args.file)
|
|
||||||
|
|
||||||
if args.fail:
|
|
||||||
parse_pytest_failure_output(args.file)
|
|
||||||
|
|
||||||
if args.errors:
|
|
||||||
parse_pytest_errors_output(args.file)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
main()
|
|
||||||
12
.coveragerc
Normal file
12
.coveragerc
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
[run]
|
||||||
|
source=transformers
|
||||||
|
omit =
|
||||||
|
# skip convertion scripts from testing for now
|
||||||
|
*/convert_*
|
||||||
|
*/__main__.py
|
||||||
|
[report]
|
||||||
|
exclude_lines =
|
||||||
|
pragma: no cover
|
||||||
|
raise
|
||||||
|
except
|
||||||
|
register_parameter
|
||||||
12
.gitattributes
vendored
12
.gitattributes
vendored
@@ -1,13 +1,3 @@
|
|||||||
*.py eol=lf
|
*.py eol=lf
|
||||||
*.rst eol=lf
|
*.rst eol=lf
|
||||||
*.md eol=lf
|
*.md eol=lf
|
||||||
*.mdx eol=lf
|
|
||||||
*.model filter=lfs diff=lfs merge=lfs -text
|
|
||||||
*.png filter=lfs diff=lfs merge=lfs -text
|
|
||||||
*.jpg filter=lfs diff=lfs merge=lfs -text
|
|
||||||
*.jpeg filter=lfs diff=lfs merge=lfs -text
|
|
||||||
*.gif filter=lfs diff=lfs merge=lfs -text
|
|
||||||
*.bin filter=lfs diff=lfs merge=lfs -text
|
|
||||||
*.pt filter=lfs diff=lfs merge=lfs -text
|
|
||||||
*.onnx filter=lfs diff=lfs merge=lfs -text
|
|
||||||
*.h5 filter=lfs diff=lfs merge=lfs -text
|
|
||||||
BIN
.github/._ISSUE_TEMPLATE
vendored
BIN
.github/._ISSUE_TEMPLATE
vendored
Binary file not shown.
BIN
.github/._PULL_REQUEST_TEMPLATE.md
vendored
BIN
.github/._PULL_REQUEST_TEMPLATE.md
vendored
Binary file not shown.
BIN
.github/._conda
vendored
BIN
.github/._conda
vendored
Binary file not shown.
BIN
.github/._scripts
vendored
BIN
.github/._scripts
vendored
Binary file not shown.
BIN
.github/._workflows
vendored
BIN
.github/._workflows
vendored
Binary file not shown.
22
.github/ISSUE_TEMPLATE/---new-benchmark.md
vendored
Normal file
22
.github/ISSUE_TEMPLATE/---new-benchmark.md
vendored
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
---
|
||||||
|
name: "\U0001F5A5 New benchmark"
|
||||||
|
about: Benchmark a part of this library and share your results
|
||||||
|
title: "[Benchmark]"
|
||||||
|
labels: ''
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 🖥 Benchmarking `transformers`
|
||||||
|
|
||||||
|
## Benchmark
|
||||||
|
|
||||||
|
Which part of `transformers` did you benchmark?
|
||||||
|
|
||||||
|
## Set-up
|
||||||
|
|
||||||
|
What did you run your benchmarks on? Please include details, such as: CPU, GPU? If using multiple GPUs, which parallelization did you use?
|
||||||
|
|
||||||
|
## Results
|
||||||
|
|
||||||
|
Put your results here!
|
||||||
20
.github/ISSUE_TEMPLATE/--new-model-addition.md
vendored
Normal file
20
.github/ISSUE_TEMPLATE/--new-model-addition.md
vendored
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
name: "\U0001F31F New model addition"
|
||||||
|
about: Submit a proposal/request to implement a new Transformer-based model
|
||||||
|
title: ''
|
||||||
|
labels: New model
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 🌟 New model addition
|
||||||
|
|
||||||
|
## Model description
|
||||||
|
|
||||||
|
<!-- Important information -->
|
||||||
|
|
||||||
|
## Open source status
|
||||||
|
|
||||||
|
* [ ] the model implementation is available: (give details)
|
||||||
|
* [ ] the model weights are available: (give details)
|
||||||
|
* [ ] who are the authors: (mention them, if possible by @gh-username)
|
||||||
BIN
.github/ISSUE_TEMPLATE/._bug-report.yml
vendored
BIN
.github/ISSUE_TEMPLATE/._bug-report.yml
vendored
Binary file not shown.
BIN
.github/ISSUE_TEMPLATE/._config.yml
vendored
BIN
.github/ISSUE_TEMPLATE/._config.yml
vendored
Binary file not shown.
BIN
.github/ISSUE_TEMPLATE/._feature-request.yml
vendored
BIN
.github/ISSUE_TEMPLATE/._feature-request.yml
vendored
Binary file not shown.
BIN
.github/ISSUE_TEMPLATE/._i18n.md
vendored
BIN
.github/ISSUE_TEMPLATE/._i18n.md
vendored
Binary file not shown.
BIN
.github/ISSUE_TEMPLATE/._migration.yml
vendored
BIN
.github/ISSUE_TEMPLATE/._migration.yml
vendored
Binary file not shown.
BIN
.github/ISSUE_TEMPLATE/._new-model-addition.yml
vendored
BIN
.github/ISSUE_TEMPLATE/._new-model-addition.yml
vendored
Binary file not shown.
94
.github/ISSUE_TEMPLATE/bug-report.md
vendored
Normal file
94
.github/ISSUE_TEMPLATE/bug-report.md
vendored
Normal file
@@ -0,0 +1,94 @@
|
|||||||
|
---
|
||||||
|
name: "\U0001F41B Bug Report"
|
||||||
|
about: Submit a bug report to help us improve transformers
|
||||||
|
title: ''
|
||||||
|
labels: ''
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
|
## Environment info
|
||||||
|
<!-- You can run the command `transformers-cli env` and copy-and-paste its output below.
|
||||||
|
Don't forget to fill out the missing fields in that output! -->
|
||||||
|
|
||||||
|
- `transformers` version:
|
||||||
|
- Platform:
|
||||||
|
- Python version:
|
||||||
|
- PyTorch version (GPU?):
|
||||||
|
- Tensorflow version (GPU?):
|
||||||
|
- Using GPU in script?:
|
||||||
|
- Using distributed or parallel set-up in script?:
|
||||||
|
|
||||||
|
### Who can help
|
||||||
|
<!-- Your issue will be replied to more quickly if you can figure out the right person to tag with @
|
||||||
|
If you know how to use git blame, that is the easiest way, otherwise, here is a rough guide of **who to tag**.
|
||||||
|
Please tag fewer than 3 people.
|
||||||
|
|
||||||
|
Models:
|
||||||
|
|
||||||
|
- albert, bert, xlm: @LysandreJik
|
||||||
|
- blenderbot, bart, marian, pegasus, encoderdecoder, t5: @patrickvonplaten, @patil-suraj
|
||||||
|
- longformer, reformer, transfoxl, xlnet: @patrickvonplaten
|
||||||
|
- fsmt: @stas00
|
||||||
|
- funnel: @sgugger
|
||||||
|
- gpt2: @patrickvonplaten, @LysandreJik
|
||||||
|
- rag: @patrickvonplaten, @lhoestq
|
||||||
|
- tensorflow: @Rocketknight1
|
||||||
|
|
||||||
|
Library:
|
||||||
|
|
||||||
|
- benchmarks: @patrickvonplaten
|
||||||
|
- deepspeed: @stas00
|
||||||
|
- ray/raytune: @richardliaw, @amogkam
|
||||||
|
- text generation: @patrickvonplaten
|
||||||
|
- tokenizers: @LysandreJik
|
||||||
|
- trainer: @sgugger
|
||||||
|
- pipelines: @LysandreJik
|
||||||
|
|
||||||
|
Documentation: @sgugger
|
||||||
|
|
||||||
|
Model hub:
|
||||||
|
|
||||||
|
- for issues with a model report at https://discuss.huggingface.co/ and tag the model's creator.
|
||||||
|
|
||||||
|
HF projects:
|
||||||
|
|
||||||
|
- datasets: [different repo](https://github.com/huggingface/datasets)
|
||||||
|
- rust tokenizers: [different repo](https://github.com/huggingface/tokenizers)
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
- maintained examples (not research project or legacy): @sgugger, @patil-suraj
|
||||||
|
- research_projects/bert-loses-patience: @JetRunner
|
||||||
|
- research_projects/distillation: @VictorSanh
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
## Information
|
||||||
|
|
||||||
|
Model I am using (Bert, XLNet ...):
|
||||||
|
|
||||||
|
The problem arises when using:
|
||||||
|
* [ ] the official example scripts: (give details below)
|
||||||
|
* [ ] my own modified scripts: (give details below)
|
||||||
|
|
||||||
|
The tasks I am working on is:
|
||||||
|
* [ ] an official GLUE/SQUaD task: (give the name)
|
||||||
|
* [ ] my own task or dataset: (give details below)
|
||||||
|
|
||||||
|
## To reproduce
|
||||||
|
|
||||||
|
Steps to reproduce the behavior:
|
||||||
|
|
||||||
|
1.
|
||||||
|
2.
|
||||||
|
3.
|
||||||
|
|
||||||
|
<!-- If you have code snippets, error messages, stack traces please provide them here as well.
|
||||||
|
Important! Use code tags to correctly format your code. See https://help.github.com/en/github/writing-on-github/creating-and-highlighting-code-blocks#syntax-highlighting
|
||||||
|
Do not use screenshots, as they are hard to read and (more importantly) don't allow others to copy-and-paste your code.-->
|
||||||
|
|
||||||
|
## Expected behavior
|
||||||
|
|
||||||
|
<!-- A clear and concise description of what you would expect to happen. -->
|
||||||
134
.github/ISSUE_TEMPLATE/bug-report.yml
vendored
134
.github/ISSUE_TEMPLATE/bug-report.yml
vendored
@@ -1,134 +0,0 @@
|
|||||||
name: "\U0001F41B Bug Report"
|
|
||||||
description: Submit a bug report to help us improve transformers
|
|
||||||
labels: [ "bug" ]
|
|
||||||
body:
|
|
||||||
- type: markdown
|
|
||||||
attributes:
|
|
||||||
value: |
|
|
||||||
Thanks for taking the time to fill out this bug report! 🤗
|
|
||||||
|
|
||||||
Before you submit your bug report:
|
|
||||||
|
|
||||||
- If it is your first time submitting, be sure to check our [bug report guidelines](https://github.com/huggingface/transformers/blob/main/CONTRIBUTING.md#did-you-find-a-bug)
|
|
||||||
- Try our [docs bot](https://huggingface.co/spaces/huggingchat/hf-docs-chat) -- it might be able to help you with your issue
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
id: system-info
|
|
||||||
attributes:
|
|
||||||
label: System Info
|
|
||||||
description: Please share your system info with us. You can run the command `transformers env` and copy-paste its output below.
|
|
||||||
placeholder: transformers version, platform, python version, ...
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
id: who-can-help
|
|
||||||
attributes:
|
|
||||||
label: Who can help?
|
|
||||||
description: |
|
|
||||||
Your issue will be replied to more quickly if you can figure out the right person to tag with @
|
|
||||||
If you know how to use git blame, that is the easiest way, otherwise, here is a rough guide of **who to tag**.
|
|
||||||
|
|
||||||
All issues are read by one of the core maintainers, so if you don't know who to tag, just leave this blank and
|
|
||||||
a core maintainer will ping the right person.
|
|
||||||
|
|
||||||
Please tag fewer than 3 people.
|
|
||||||
|
|
||||||
Models:
|
|
||||||
|
|
||||||
- text models: @ArthurZucker
|
|
||||||
- vision models: @amyeroberts, @qubvel
|
|
||||||
- speech models: @eustlb
|
|
||||||
- graph models: @clefourrier
|
|
||||||
|
|
||||||
Library:
|
|
||||||
|
|
||||||
- flax: @gante and @Rocketknight1
|
|
||||||
- generate: @zucchini-nlp (visual-language models) or @gante (all others)
|
|
||||||
- pipelines: @Rocketknight1
|
|
||||||
- tensorflow: @gante and @Rocketknight1
|
|
||||||
- tokenizers: @ArthurZucker and @itazap
|
|
||||||
- trainer: @zach-huggingface @SunMarc
|
|
||||||
|
|
||||||
Integrations:
|
|
||||||
|
|
||||||
- deepspeed: HF Trainer/Accelerate: @SunMarc @zach-huggingface
|
|
||||||
- ray/raytune: @richardliaw, @amogkam
|
|
||||||
- Big Model Inference: @SunMarc
|
|
||||||
- quantization (bitsandbytes, autogpt): @SunMarc @MekkCyber
|
|
||||||
|
|
||||||
Devices/Backends:
|
|
||||||
|
|
||||||
- AMD ROCm: @ivarflakstad
|
|
||||||
- Intel XPU: @IlyasMoutawwakil
|
|
||||||
- Ascend NPU: @ivarflakstad
|
|
||||||
|
|
||||||
Documentation: @stevhliu
|
|
||||||
|
|
||||||
Model hub:
|
|
||||||
|
|
||||||
- for issues with a model, report at https://discuss.huggingface.co/ and tag the model's creator.
|
|
||||||
|
|
||||||
HF projects:
|
|
||||||
|
|
||||||
- accelerate: [different repo](https://github.com/huggingface/accelerate)
|
|
||||||
- datasets: [different repo](https://github.com/huggingface/datasets)
|
|
||||||
- diffusers: [different repo](https://github.com/huggingface/diffusers)
|
|
||||||
- rust tokenizers: [different repo](https://github.com/huggingface/tokenizers)
|
|
||||||
|
|
||||||
Maintained examples (not research project or legacy):
|
|
||||||
|
|
||||||
- Flax: @Rocketknight1
|
|
||||||
- PyTorch: See Models above and tag the person corresponding to the modality of the example.
|
|
||||||
- TensorFlow: @Rocketknight1
|
|
||||||
|
|
||||||
Research projects are not maintained and should be taken as is.
|
|
||||||
|
|
||||||
placeholder: "@Username ..."
|
|
||||||
|
|
||||||
- type: checkboxes
|
|
||||||
id: information-scripts-examples
|
|
||||||
attributes:
|
|
||||||
label: Information
|
|
||||||
description: 'The problem arises when using:'
|
|
||||||
options:
|
|
||||||
- label: "The official example scripts"
|
|
||||||
- label: "My own modified scripts"
|
|
||||||
|
|
||||||
- type: checkboxes
|
|
||||||
id: information-tasks
|
|
||||||
attributes:
|
|
||||||
label: Tasks
|
|
||||||
description: "The tasks I am working on are:"
|
|
||||||
options:
|
|
||||||
- label: "An officially supported task in the `examples` folder (such as GLUE/SQuAD, ...)"
|
|
||||||
- label: "My own task or dataset (give details below)"
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
id: reproduction
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
attributes:
|
|
||||||
label: Reproduction
|
|
||||||
description: |
|
|
||||||
Please provide a code sample that reproduces the problem you ran into. It can be a Colab link or just a code snippet.
|
|
||||||
Please include relevant config information with your code, for example your Trainers, TRL, Peft, and DeepSpeed configs.
|
|
||||||
If you have code snippets, error messages, stack traces please provide them here as well.
|
|
||||||
Important! Use code tags to correctly format your code. See https://help.github.com/en/github/writing-on-github/creating-and-highlighting-code-blocks#syntax-highlighting
|
|
||||||
Do not use screenshots, as they are hard to read and (more importantly) don't allow others to copy-and-paste your code.
|
|
||||||
|
|
||||||
placeholder: |
|
|
||||||
Steps to reproduce the behavior:
|
|
||||||
|
|
||||||
1.
|
|
||||||
2.
|
|
||||||
3.
|
|
||||||
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
id: expected-behavior
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
attributes:
|
|
||||||
label: Expected behavior
|
|
||||||
description: "A clear and concise description of what you would expect to happen."
|
|
||||||
12
.github/ISSUE_TEMPLATE/config.yml
vendored
12
.github/ISSUE_TEMPLATE/config.yml
vendored
@@ -1,12 +0,0 @@
|
|||||||
blank_issues_enabled: true
|
|
||||||
version: 2.1
|
|
||||||
contact_links:
|
|
||||||
- name: Model checkpoints on the Hugging Face Hub
|
|
||||||
url: https://huggingface.co/models
|
|
||||||
about: Open a Pull request / Discussion related to a specific model checkpoint directly on the Hugging Face Hub
|
|
||||||
- name: Website Related
|
|
||||||
url: https://github.com/huggingface/hub-docs/issues
|
|
||||||
about: Feature requests and bug reports related to the website
|
|
||||||
- name: Forum
|
|
||||||
url: https://discuss.huggingface.co/
|
|
||||||
about: General usage questions and community discussions
|
|
||||||
25
.github/ISSUE_TEMPLATE/feature-request.md
vendored
Normal file
25
.github/ISSUE_TEMPLATE/feature-request.md
vendored
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
---
|
||||||
|
name: "\U0001F680 Feature request"
|
||||||
|
about: Submit a proposal/request for a new transformers feature
|
||||||
|
title: ''
|
||||||
|
labels: ''
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 🚀 Feature request
|
||||||
|
|
||||||
|
<!-- A clear and concise description of the feature proposal.
|
||||||
|
Please provide a link to the paper and code in case they exist. -->
|
||||||
|
|
||||||
|
## Motivation
|
||||||
|
|
||||||
|
<!-- Please outline the motivation for the proposal. Is your feature request
|
||||||
|
related to a problem? e.g., I'm always frustrated when [...]. If this is related
|
||||||
|
to another GitHub issue, please link here too. -->
|
||||||
|
|
||||||
|
## Your contribution
|
||||||
|
|
||||||
|
<!-- Is there any way that you could help, e.g. by submitting a PR?
|
||||||
|
Make sure to read the CONTRIBUTING.MD readme:
|
||||||
|
https://github.com/huggingface/transformers/blob/master/CONTRIBUTING.md -->
|
||||||
31
.github/ISSUE_TEMPLATE/feature-request.yml
vendored
31
.github/ISSUE_TEMPLATE/feature-request.yml
vendored
@@ -1,31 +0,0 @@
|
|||||||
name: "\U0001F680 Feature request"
|
|
||||||
description: Submit a proposal/request for a new transformers feature
|
|
||||||
labels: [ "Feature request" ]
|
|
||||||
body:
|
|
||||||
- type: textarea
|
|
||||||
id: feature-request
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
attributes:
|
|
||||||
label: Feature request
|
|
||||||
description: |
|
|
||||||
A clear and concise description of the feature proposal. Please provide a link to the paper and code in case they exist.
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
id: motivation
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
attributes:
|
|
||||||
label: Motivation
|
|
||||||
description: |
|
|
||||||
Please outline the motivation for the proposal. Is your feature request related to a problem? e.g., I'm always frustrated when [...]. If this is related to another GitHub issue, please link here too.
|
|
||||||
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
id: contribution
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
attributes:
|
|
||||||
label: Your contribution
|
|
||||||
description: |
|
|
||||||
Is there any way that you could help, e.g. by submitting a PR? Make sure to read the CONTRIBUTING.MD [readme](https://github.com/huggingface/transformers/blob/main/CONTRIBUTING.md)
|
|
||||||
46
.github/ISSUE_TEMPLATE/i18n.md
vendored
46
.github/ISSUE_TEMPLATE/i18n.md
vendored
@@ -1,46 +0,0 @@
|
|||||||
---
|
|
||||||
name: 🌐 Translating a new language?
|
|
||||||
about: Start a new translation effort in your language
|
|
||||||
title: '[i18n-<languageCode>] Translating docs to <languageName>'
|
|
||||||
labels: WIP
|
|
||||||
assignees: ''
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Note: Please search to see if an issue already exists for the language you are trying to translate.
|
|
||||||
-->
|
|
||||||
|
|
||||||
Hi!
|
|
||||||
|
|
||||||
Let's bring the documentation to all the <languageName>-speaking community 🌐 (currently 0 out of 267 complete)
|
|
||||||
|
|
||||||
Who would want to translate? Please follow the 🤗 [TRANSLATING guide](https://github.com/huggingface/transformers/blob/main/docs/TRANSLATING.md). Here is a list of the files ready for translation. Let us know in this issue if you'd like to translate any, and we'll add your name to the list.
|
|
||||||
|
|
||||||
Some notes:
|
|
||||||
|
|
||||||
* Please translate using an informal tone (imagine you are talking with a friend about transformers 🤗).
|
|
||||||
* Please translate in a gender-neutral way.
|
|
||||||
* Add your translations to the folder called `<languageCode>` inside the [source folder](https://github.com/huggingface/transformers/tree/main/docs/source).
|
|
||||||
* Register your translation in `<languageCode>/_toctree.yml`; please follow the order of the [English version](https://github.com/huggingface/transformers/blob/main/docs/source/en/_toctree.yml).
|
|
||||||
* Once you're finished, open a pull request and tag this issue by including #issue-number in the description, where issue-number is the number of this issue. Please ping @stevhliu for review.
|
|
||||||
* 🙋 If you'd like others to help you with the translation, you can also post in the 🤗 [forums](https://discuss.huggingface.co/).
|
|
||||||
|
|
||||||
## Get Started section
|
|
||||||
|
|
||||||
- [ ] [index.md](https://github.com/huggingface/transformers/blob/main/docs/source/en/index.md) https://github.com/huggingface/transformers/pull/20180
|
|
||||||
- [ ] [quicktour.md](https://github.com/huggingface/transformers/blob/main/docs/source/en/quicktour.md) (waiting for initial PR to go through)
|
|
||||||
- [ ] [installation.md](https://github.com/huggingface/transformers/blob/main/docs/source/en/installation.md).
|
|
||||||
|
|
||||||
## Tutorial section
|
|
||||||
- [ ] [pipeline_tutorial.md](https://github.com/huggingface/transformers/blob/main/docs/source/en/pipeline_tutorial.md)
|
|
||||||
- [ ] [autoclass_tutorial.md](https://github.com/huggingface/transformers/blob/main/docs/source/en/autoclass_tutorial.md)
|
|
||||||
- [ ] [preprocessing.md](https://github.com/huggingface/transformers/blob/main/docs/source/en/preprocessing.md)
|
|
||||||
- [ ] [training.md](https://github.com/huggingface/transformers/blob/main/docs/source/en/training.md)
|
|
||||||
- [ ] [accelerate.md](https://github.com/huggingface/transformers/blob/main/docs/source/en/accelerate.md)
|
|
||||||
- [ ] [model_sharing.md](https://github.com/huggingface/transformers/blob/main/docs/source/en/model_sharing.md)
|
|
||||||
- [ ] [multilingual.md](https://github.com/huggingface/transformers/blob/main/docs/source/en/multilingual.md)
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Keep on adding more as you go 🔥
|
|
||||||
-->
|
|
||||||
58
.github/ISSUE_TEMPLATE/migration.md
vendored
Normal file
58
.github/ISSUE_TEMPLATE/migration.md
vendored
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
---
|
||||||
|
name: "\U0001F4DA Migration from pytorch-pretrained-bert or pytorch-transformers"
|
||||||
|
about: Report a problem when migrating from pytorch-pretrained-bert or pytorch-transformers
|
||||||
|
to transformers
|
||||||
|
title: ''
|
||||||
|
labels: Migration
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 📚 Migration
|
||||||
|
|
||||||
|
## Information
|
||||||
|
|
||||||
|
<!-- Important information -->
|
||||||
|
|
||||||
|
Model I am using (Bert, XLNet ...):
|
||||||
|
|
||||||
|
Language I am using the model on (English, Chinese ...):
|
||||||
|
|
||||||
|
The problem arises when using:
|
||||||
|
* [ ] the official example scripts: (give details below)
|
||||||
|
* [ ] my own modified scripts: (give details below)
|
||||||
|
|
||||||
|
The tasks I am working on is:
|
||||||
|
* [ ] an official GLUE/SQUaD task: (give the name)
|
||||||
|
* [ ] my own task or dataset: (give details below)
|
||||||
|
|
||||||
|
## Details
|
||||||
|
|
||||||
|
<!-- A clear and concise description of the migration issue.
|
||||||
|
If you have code snippets, please provide it here as well.
|
||||||
|
Important! Use code tags to correctly format your code. See https://help.github.com/en/github/writing-on-github/creating-and-highlighting-code-blocks#syntax-highlighting
|
||||||
|
Do not use screenshots, as they are hard to read and (more importantly) don't allow others to copy-and-paste your code.
|
||||||
|
-->
|
||||||
|
|
||||||
|
## Environment info
|
||||||
|
<!-- You can run the command `python transformers-cli env` and copy-and-paste its output below.
|
||||||
|
Don't forget to fill out the missing fields in that output! -->
|
||||||
|
|
||||||
|
- `transformers` version:
|
||||||
|
- Platform:
|
||||||
|
- Python version:
|
||||||
|
- PyTorch version (GPU?):
|
||||||
|
- Tensorflow version (GPU?):
|
||||||
|
- Using GPU in script?:
|
||||||
|
- Using distributed or parallel set-up in script?:
|
||||||
|
|
||||||
|
<!-- IMPORTANT: which version of the former library do you use? -->
|
||||||
|
* `pytorch-transformers` or `pytorch-pretrained-bert` version (or branch):
|
||||||
|
|
||||||
|
|
||||||
|
## Checklist
|
||||||
|
|
||||||
|
- [ ] I have read the migration guide in the readme.
|
||||||
|
([pytorch-transformers](https://github.com/huggingface/transformers#migrating-from-pytorch-transformers-to-transformers);
|
||||||
|
[pytorch-pretrained-bert](https://github.com/huggingface/transformers#migrating-from-pytorch-pretrained-bert-to-transformers))
|
||||||
|
- [ ] I checked if a related official extension example runs on my machine.
|
||||||
72
.github/ISSUE_TEMPLATE/migration.yml
vendored
72
.github/ISSUE_TEMPLATE/migration.yml
vendored
@@ -1,72 +0,0 @@
|
|||||||
name: "\U0001F4DA Migration from pytorch-pretrained-bert or pytorch-transformers"
|
|
||||||
description: Report a problem when migrating from pytorch-pretrained-bert or pytorch-transformers to transformers
|
|
||||||
labels: [ "migration" ]
|
|
||||||
body:
|
|
||||||
- type: textarea
|
|
||||||
id: system-info
|
|
||||||
attributes:
|
|
||||||
label: System Info
|
|
||||||
description: Please share your system info with us. You can run the command `transformers env` and copy-paste its output below.
|
|
||||||
render: shell
|
|
||||||
placeholder: transformers version, platform, python version, ...
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: checkboxes
|
|
||||||
id: information-scripts-examples
|
|
||||||
attributes:
|
|
||||||
label: Information
|
|
||||||
description: 'The problem arises when using:'
|
|
||||||
options:
|
|
||||||
- label: "The official example scripts"
|
|
||||||
- label: "My own modified scripts"
|
|
||||||
|
|
||||||
- type: checkboxes
|
|
||||||
id: information-tasks
|
|
||||||
attributes:
|
|
||||||
label: Tasks
|
|
||||||
description: "The tasks I am working on are:"
|
|
||||||
options:
|
|
||||||
- label: "An officially supported task in the `examples` folder (such as GLUE/SQuAD, ...)"
|
|
||||||
- label: "My own task or dataset (give details below)"
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
id: reproduction
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
attributes:
|
|
||||||
label: Reproduction
|
|
||||||
description: |
|
|
||||||
Please provide a code sample that reproduces the problem you ran into. It can be a Colab link or just a code snippet.
|
|
||||||
If you have code snippets, error messages, stack traces please provide them here as well.
|
|
||||||
Important! Use code tags to correctly format your code. See https://help.github.com/en/github/writing-on-github/creating-and-highlighting-code-blocks#syntax-highlighting
|
|
||||||
Do not use screenshots, as they are hard to read and (more importantly) don't allow others to copy-and-paste your code.
|
|
||||||
|
|
||||||
placeholder: |
|
|
||||||
Steps to reproduce the behavior:
|
|
||||||
|
|
||||||
1.
|
|
||||||
2.
|
|
||||||
3.
|
|
||||||
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
id: expected-behavior
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
attributes:
|
|
||||||
label: Expected behavior
|
|
||||||
description: "A clear and concise description of what you would expect to happen."
|
|
||||||
render: shell
|
|
||||||
|
|
||||||
- type: checkboxes
|
|
||||||
id: checklist
|
|
||||||
attributes:
|
|
||||||
label: Checklist
|
|
||||||
options:
|
|
||||||
- label: "I have read the migration guide in the readme.
|
|
||||||
([pytorch-transformers](https://github.com/huggingface/transformers#migrating-from-pytorch-transformers-to-transformers);
|
|
||||||
[pytorch-pretrained-bert](https://github.com/huggingface/transformers#migrating-from-pytorch-pretrained-bert-to-transformers))"
|
|
||||||
required: true
|
|
||||||
- label: "I checked if a related official extension example runs on my machine."
|
|
||||||
required: true
|
|
||||||
31
.github/ISSUE_TEMPLATE/new-model-addition.yml
vendored
31
.github/ISSUE_TEMPLATE/new-model-addition.yml
vendored
@@ -1,31 +0,0 @@
|
|||||||
name: "\U0001F31F New model addition"
|
|
||||||
description: Submit a proposal/request to implement a new model
|
|
||||||
labels: [ "New model" ]
|
|
||||||
|
|
||||||
body:
|
|
||||||
- type: textarea
|
|
||||||
id: description-request
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
attributes:
|
|
||||||
label: Model description
|
|
||||||
description: |
|
|
||||||
Put any and all important information relative to the model
|
|
||||||
|
|
||||||
- type: checkboxes
|
|
||||||
id: information-tasks
|
|
||||||
attributes:
|
|
||||||
label: Open source status
|
|
||||||
description: |
|
|
||||||
Please note that if the model implementation isn't available or if the weights aren't open-source, we are less likely to implement it in `transformers`.
|
|
||||||
options:
|
|
||||||
- label: "The model implementation is available"
|
|
||||||
- label: "The model weights are available"
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
id: additional-info
|
|
||||||
attributes:
|
|
||||||
label: Provide useful links for the implementation
|
|
||||||
description: |
|
|
||||||
Please provide information regarding the implementation, the weights, and the authors.
|
|
||||||
Please mention the authors by @gh-username if you're aware of their usernames.
|
|
||||||
26
.github/ISSUE_TEMPLATE/question-help.md
vendored
Normal file
26
.github/ISSUE_TEMPLATE/question-help.md
vendored
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
---
|
||||||
|
name: "❓ Questions & Help"
|
||||||
|
about: Post your general questions on the Hugging Face forum: https://discuss.huggingface.co/
|
||||||
|
title: ''
|
||||||
|
labels: ''
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# ❓ Questions & Help
|
||||||
|
|
||||||
|
<!-- The GitHub issue tracker is primarly intended for bugs, feature requests,
|
||||||
|
new models, benchmarks, and migration questions. For all other questions,
|
||||||
|
we direct you to the Hugging Face forum: https://discuss.huggingface.co/ .
|
||||||
|
-->
|
||||||
|
|
||||||
|
## Details
|
||||||
|
|
||||||
|
<!-- Description of your issue -->
|
||||||
|
|
||||||
|
<!-- You should first ask your question on the forum, and only if
|
||||||
|
you didn't get an answer after a few days ask it here on GitHub. -->
|
||||||
|
|
||||||
|
**A link to original question on the forum**:
|
||||||
|
|
||||||
|
<!-- Your issue will be closed if you don't fill this part. -->
|
||||||
49
.github/PULL_REQUEST_TEMPLATE.md
vendored
49
.github/PULL_REQUEST_TEMPLATE.md
vendored
@@ -17,13 +17,13 @@ Fixes # (issue)
|
|||||||
|
|
||||||
## Before submitting
|
## Before submitting
|
||||||
- [ ] This PR fixes a typo or improves the docs (you can dismiss the other checks if that's the case).
|
- [ ] This PR fixes a typo or improves the docs (you can dismiss the other checks if that's the case).
|
||||||
- [ ] Did you read the [contributor guideline](https://github.com/huggingface/transformers/blob/main/CONTRIBUTING.md#create-a-pull-request),
|
- [ ] Did you read the [contributor guideline](https://github.com/huggingface/transformers/blob/master/CONTRIBUTING.md#start-contributing-pull-requests),
|
||||||
Pull Request section?
|
Pull Request section?
|
||||||
- [ ] Was this discussed/approved via a Github issue or the [forum](https://discuss.huggingface.co/)? Please add a link
|
- [ ] Was this discussed/approved via a Github issue or the [forum](https://discuss.huggingface.co/)? Please add a link
|
||||||
to it if that's the case.
|
to it if that's the case.
|
||||||
- [ ] Did you make sure to update the documentation with your changes? Here are the
|
- [ ] Did you make sure to update the documentation with your changes? Here are the
|
||||||
[documentation guidelines](https://github.com/huggingface/transformers/tree/main/docs), and
|
[documentation guidelines](https://github.com/huggingface/transformers/tree/master/docs), and
|
||||||
[here are tips on formatting docstrings](https://github.com/huggingface/transformers/tree/main/docs#writing-source-documentation).
|
[here are tips on formatting docstrings](https://github.com/huggingface/transformers/tree/master/docs#writing-source-documentation).
|
||||||
- [ ] Did you write any new necessary tests?
|
- [ ] Did you write any new necessary tests?
|
||||||
|
|
||||||
|
|
||||||
@@ -39,41 +39,36 @@ members/contributors who may be interested in your PR.
|
|||||||
|
|
||||||
Models:
|
Models:
|
||||||
|
|
||||||
- text models: @ArthurZucker
|
- albert, bert, xlm: @LysandreJik
|
||||||
- vision models: @amyeroberts, @qubvel
|
- blenderbot, bart, marian, pegasus, encoderdecoder, t5: @patrickvonplaten, @patil-suraj
|
||||||
- speech models: @eustlb
|
- longformer, reformer, transfoxl, xlnet: @patrickvonplaten
|
||||||
- graph models: @clefourrier
|
- fsmt: @stas00
|
||||||
|
- funnel: @sgugger
|
||||||
|
- gpt2: @patrickvonplaten, @LysandreJik
|
||||||
|
- rag: @patrickvonplaten, @lhoestq
|
||||||
|
- tensorflow: @LysandreJik
|
||||||
|
|
||||||
Library:
|
Library:
|
||||||
|
|
||||||
- flax: @gante and @Rocketknight1
|
- benchmarks: @patrickvonplaten
|
||||||
- generate: @zucchini-nlp (visual-language models) or @gante (all others)
|
- deepspeed: @stas00
|
||||||
- pipelines: @Rocketknight1
|
|
||||||
- tensorflow: @gante and @Rocketknight1
|
|
||||||
- tokenizers: @ArthurZucker
|
|
||||||
- trainer: @zach-huggingface, @SunMarc and @qgallouedec
|
|
||||||
- chat templates: @Rocketknight1
|
|
||||||
|
|
||||||
Integrations:
|
|
||||||
|
|
||||||
- deepspeed: HF Trainer/Accelerate: @SunMarc @zach-huggingface
|
|
||||||
- ray/raytune: @richardliaw, @amogkam
|
- ray/raytune: @richardliaw, @amogkam
|
||||||
- Big Model Inference: @SunMarc
|
- text generation: @patrickvonplaten
|
||||||
- quantization (bitsandbytes, autogpt): @SunMarc @MekkCyber
|
- tokenizers: @n1t0, @LysandreJik
|
||||||
|
- trainer: @sgugger
|
||||||
|
- pipelines: @LysandreJik
|
||||||
|
|
||||||
Documentation: @stevhliu
|
Documentation: @sgugger
|
||||||
|
|
||||||
HF projects:
|
HF projects:
|
||||||
|
|
||||||
- accelerate: [different repo](https://github.com/huggingface/accelerate)
|
|
||||||
- datasets: [different repo](https://github.com/huggingface/datasets)
|
- datasets: [different repo](https://github.com/huggingface/datasets)
|
||||||
- diffusers: [different repo](https://github.com/huggingface/diffusers)
|
|
||||||
- rust tokenizers: [different repo](https://github.com/huggingface/tokenizers)
|
- rust tokenizers: [different repo](https://github.com/huggingface/tokenizers)
|
||||||
|
|
||||||
Maintained examples (not research project or legacy):
|
Examples:
|
||||||
|
|
||||||
- Flax: @Rocketknight1
|
- maintained examples (not research project or legacy): @sgugger, @patil-suraj
|
||||||
- PyTorch: See Models above and tag the person corresponding to the modality of the example.
|
- research_projects/bert-loses-patience: @JetRunner
|
||||||
- TensorFlow: @Rocketknight1
|
- research_projects/distillation: @VictorSanh
|
||||||
|
|
||||||
-->
|
-->
|
||||||
|
|||||||
BIN
.github/conda/._build.sh
vendored
BIN
.github/conda/._build.sh
vendored
Binary file not shown.
BIN
.github/conda/._meta.yaml
vendored
BIN
.github/conda/._meta.yaml
vendored
Binary file not shown.
10
.github/conda/meta.yaml
vendored
10
.github/conda/meta.yaml
vendored
@@ -16,6 +16,7 @@ requirements:
|
|||||||
- pip
|
- pip
|
||||||
- numpy >=1.17
|
- numpy >=1.17
|
||||||
- dataclasses
|
- dataclasses
|
||||||
|
- importlib_metadata
|
||||||
- huggingface_hub
|
- huggingface_hub
|
||||||
- packaging
|
- packaging
|
||||||
- filelock
|
- filelock
|
||||||
@@ -24,14 +25,13 @@ requirements:
|
|||||||
- sacremoses
|
- sacremoses
|
||||||
- regex !=2019.12.17
|
- regex !=2019.12.17
|
||||||
- protobuf
|
- protobuf
|
||||||
- tokenizers >=0.11.1,!=0.11.3,<0.13
|
- tokenizers >=0.10.1,<0.11.0
|
||||||
- pyyaml >=5.1
|
- pyyaml >=5.1
|
||||||
- safetensors
|
|
||||||
- fsspec
|
|
||||||
run:
|
run:
|
||||||
- python
|
- python
|
||||||
- numpy >=1.17
|
- numpy >=1.17
|
||||||
- dataclasses
|
- dataclasses
|
||||||
|
- importlib_metadata
|
||||||
- huggingface_hub
|
- huggingface_hub
|
||||||
- packaging
|
- packaging
|
||||||
- filelock
|
- filelock
|
||||||
@@ -40,10 +40,8 @@ requirements:
|
|||||||
- sacremoses
|
- sacremoses
|
||||||
- regex !=2019.12.17
|
- regex !=2019.12.17
|
||||||
- protobuf
|
- protobuf
|
||||||
- tokenizers >=0.11.1,!=0.11.3,<0.13
|
- tokenizers >=0.10.1,<0.11.0
|
||||||
- pyyaml >=5.1
|
- pyyaml >=5.1
|
||||||
- safetensors
|
|
||||||
- fsspec
|
|
||||||
|
|
||||||
test:
|
test:
|
||||||
imports:
|
imports:
|
||||||
|
|||||||
BIN
.github/scripts/._assign_reviewers.py
vendored
BIN
.github/scripts/._assign_reviewers.py
vendored
Binary file not shown.
BIN
.github/scripts/._codeowners_for_review_action
vendored
BIN
.github/scripts/._codeowners_for_review_action
vendored
Binary file not shown.
120
.github/scripts/assign_reviewers.py
vendored
120
.github/scripts/assign_reviewers.py
vendored
@@ -1,120 +0,0 @@
|
|||||||
# coding=utf-8
|
|
||||||
# Copyright 2025 the HuggingFace Inc. team. All rights reserved.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
import os
|
|
||||||
import github
|
|
||||||
import json
|
|
||||||
from github import Github
|
|
||||||
import re
|
|
||||||
from collections import Counter
|
|
||||||
from pathlib import Path
|
|
||||||
|
|
||||||
def pattern_to_regex(pattern):
|
|
||||||
if pattern.startswith("/"):
|
|
||||||
start_anchor = True
|
|
||||||
pattern = re.escape(pattern[1:])
|
|
||||||
else:
|
|
||||||
start_anchor = False
|
|
||||||
pattern = re.escape(pattern)
|
|
||||||
# Replace `*` with "any number of non-slash characters"
|
|
||||||
pattern = pattern.replace(r"\*", "[^/]*")
|
|
||||||
if start_anchor:
|
|
||||||
pattern = r"^\/?" + pattern # Allow an optional leading slash after the start of the string
|
|
||||||
return pattern
|
|
||||||
|
|
||||||
def get_file_owners(file_path, codeowners_lines):
|
|
||||||
# Process lines in reverse (last matching pattern takes precedence)
|
|
||||||
for line in reversed(codeowners_lines):
|
|
||||||
# Skip comments and empty lines, strip inline comments
|
|
||||||
line = line.split('#')[0].strip()
|
|
||||||
if not line:
|
|
||||||
continue
|
|
||||||
|
|
||||||
# Split into pattern and owners
|
|
||||||
parts = line.split()
|
|
||||||
pattern = parts[0]
|
|
||||||
# Can be empty, e.g. for dummy files with explicitly no owner!
|
|
||||||
owners = [owner.removeprefix("@") for owner in parts[1:]]
|
|
||||||
|
|
||||||
# Check if file matches pattern
|
|
||||||
file_regex = pattern_to_regex(pattern)
|
|
||||||
if re.search(file_regex, file_path) is not None:
|
|
||||||
return owners # Remember, can still be empty!
|
|
||||||
return [] # Should never happen, but just in case
|
|
||||||
|
|
||||||
def pr_author_is_in_hf(pr_author, codeowners_lines):
|
|
||||||
# Check if the PR author is in the codeowners file
|
|
||||||
for line in codeowners_lines:
|
|
||||||
line = line.split('#')[0].strip()
|
|
||||||
if not line:
|
|
||||||
continue
|
|
||||||
|
|
||||||
# Split into pattern and owners
|
|
||||||
parts = line.split()
|
|
||||||
owners = [owner.removeprefix("@") for owner in parts[1:]]
|
|
||||||
|
|
||||||
if pr_author in owners:
|
|
||||||
return True
|
|
||||||
return False
|
|
||||||
|
|
||||||
def main():
|
|
||||||
script_dir = Path(__file__).parent.absolute()
|
|
||||||
with open(script_dir / "codeowners_for_review_action") as f:
|
|
||||||
codeowners_lines = f.readlines()
|
|
||||||
|
|
||||||
g = Github(os.environ['GITHUB_TOKEN'])
|
|
||||||
repo = g.get_repo("huggingface/transformers")
|
|
||||||
with open(os.environ['GITHUB_EVENT_PATH']) as f:
|
|
||||||
event = json.load(f)
|
|
||||||
|
|
||||||
# The PR number is available in the event payload
|
|
||||||
pr_number = event['pull_request']['number']
|
|
||||||
pr = repo.get_pull(pr_number)
|
|
||||||
pr_author = pr.user.login
|
|
||||||
if pr_author_is_in_hf(pr_author, codeowners_lines):
|
|
||||||
print(f"PR author {pr_author} is in codeowners, skipping review request.")
|
|
||||||
return
|
|
||||||
|
|
||||||
existing_reviews = list(pr.get_reviews())
|
|
||||||
if existing_reviews:
|
|
||||||
print(f"Already has reviews: {[r.user.login for r in existing_reviews]}")
|
|
||||||
return
|
|
||||||
|
|
||||||
users_requested, teams_requested = pr.get_review_requests()
|
|
||||||
users_requested = list(users_requested)
|
|
||||||
if users_requested:
|
|
||||||
print(f"Reviewers already requested: {users_requested}")
|
|
||||||
return
|
|
||||||
|
|
||||||
locs_per_owner = Counter()
|
|
||||||
for file in pr.get_files():
|
|
||||||
owners = get_file_owners(file.filename, codeowners_lines)
|
|
||||||
for owner in owners:
|
|
||||||
locs_per_owner[owner] += file.changes
|
|
||||||
|
|
||||||
# Assign the top 2 based on locs changed as reviewers, but skip the owner if present
|
|
||||||
locs_per_owner.pop(pr_author, None)
|
|
||||||
top_owners = locs_per_owner.most_common(2)
|
|
||||||
print("Top owners", top_owners)
|
|
||||||
top_owners = [owner[0] for owner in top_owners]
|
|
||||||
try:
|
|
||||||
pr.create_review_request(top_owners)
|
|
||||||
except github.GithubException as e:
|
|
||||||
print(f"Failed to request review for {top_owners}: {e}")
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
main()
|
|
||||||
370
.github/scripts/codeowners_for_review_action
vendored
370
.github/scripts/codeowners_for_review_action
vendored
@@ -1,370 +0,0 @@
|
|||||||
# Top-level rules are matched only if nothing else matches
|
|
||||||
* @Rocketknight1 @ArthurZucker # if no one is pinged based on the other rules, he will do the dispatch
|
|
||||||
*.md @stevhliu
|
|
||||||
*tokenization* @ArthurZucker
|
|
||||||
docs/ @stevhliu
|
|
||||||
/benchmark/ @McPatate
|
|
||||||
/docker/ @ydshieh @ArthurZucker
|
|
||||||
|
|
||||||
# More high-level globs catch cases when specific rules later don't apply
|
|
||||||
/src/transformers/models/*/processing* @molbap @yonigozlan @qubvel
|
|
||||||
/src/transformers/models/*/image_processing* @qubvel
|
|
||||||
/src/transformers/models/*/image_processing_*_fast* @yonigozlan
|
|
||||||
|
|
||||||
# Owners of subsections of the library
|
|
||||||
/src/transformers/generation/ @gante
|
|
||||||
/src/transformers/pipeline/ @Rocketknight1 @yonigozlan
|
|
||||||
/src/transformers/integrations/ @SunMarc @MekkCyber @zach-huggingface
|
|
||||||
/src/transformers/quantizers/ @SunMarc @MekkCyber
|
|
||||||
tests/ @ydshieh
|
|
||||||
tests/generation/ @gante
|
|
||||||
|
|
||||||
/src/transformers/models/auto/ @ArthurZucker
|
|
||||||
/src/transformers/utils/ @ArthurZucker @Rocketknight1
|
|
||||||
/src/transformers/loss/ @ArthurZucker
|
|
||||||
/src/transformers/onnx/ @michaelbenayoun
|
|
||||||
|
|
||||||
# Specific files come after the sections/globs, so they take priority
|
|
||||||
/.circleci/config.yml @ArthurZucker @ydshieh
|
|
||||||
/utils/tests_fetcher.py @ydshieh
|
|
||||||
trainer.py @zach-huggingface @SunMarc
|
|
||||||
trainer_utils.py @zach-huggingface @SunMarc
|
|
||||||
/utils/modular_model_converter.py @Cyrilvallez @ArthurZucker
|
|
||||||
|
|
||||||
# Owners of individual models are specific / high priority, and so they come last
|
|
||||||
# mod* captures modeling and modular files
|
|
||||||
|
|
||||||
# Text models
|
|
||||||
/src/transformers/models/albert/mod*_albert* @ArthurZucker
|
|
||||||
/src/transformers/models/bamba/mod*_bamba* @ArthurZucker
|
|
||||||
/src/transformers/models/bart/mod*_bart* @ArthurZucker
|
|
||||||
/src/transformers/models/barthez/mod*_barthez* @ArthurZucker
|
|
||||||
/src/transformers/models/bartpho/mod*_bartpho* @ArthurZucker
|
|
||||||
/src/transformers/models/bert/mod*_bert* @ArthurZucker
|
|
||||||
/src/transformers/models/bert_generation/mod*_bert_generation* @ArthurZucker
|
|
||||||
/src/transformers/models/bert_japanese/mod*_bert_japanese* @ArthurZucker
|
|
||||||
/src/transformers/models/bertweet/mod*_bertweet* @ArthurZucker
|
|
||||||
/src/transformers/models/big_bird/mod*_big_bird* @ArthurZucker
|
|
||||||
/src/transformers/models/bigbird_pegasus/mod*_bigbird_pegasus* @ArthurZucker
|
|
||||||
/src/transformers/models/biogpt/mod*_biogpt* @ArthurZucker
|
|
||||||
/src/transformers/models/blenderbot/mod*_blenderbot* @ArthurZucker
|
|
||||||
/src/transformers/models/blenderbot_small/mod*_blenderbot_small* @ArthurZucker
|
|
||||||
/src/transformers/models/bloom/mod*_bloom* @ArthurZucker
|
|
||||||
/src/transformers/models/bort/mod*_bort* @ArthurZucker
|
|
||||||
/src/transformers/models/byt5/mod*_byt5* @ArthurZucker
|
|
||||||
/src/transformers/models/camembert/mod*_camembert* @ArthurZucker
|
|
||||||
/src/transformers/models/canine/mod*_canine* @ArthurZucker
|
|
||||||
/src/transformers/models/codegen/mod*_codegen* @ArthurZucker
|
|
||||||
/src/transformers/models/code_llama/mod*_code_llama* @ArthurZucker
|
|
||||||
/src/transformers/models/cohere/mod*_cohere* @ArthurZucker
|
|
||||||
/src/transformers/models/cohere2/mod*_cohere2* @ArthurZucker
|
|
||||||
/src/transformers/models/convbert/mod*_convbert* @ArthurZucker
|
|
||||||
/src/transformers/models/cpm/mod*_cpm* @ArthurZucker
|
|
||||||
/src/transformers/models/cpmant/mod*_cpmant* @ArthurZucker
|
|
||||||
/src/transformers/models/ctrl/mod*_ctrl* @ArthurZucker
|
|
||||||
/src/transformers/models/dbrx/mod*_dbrx* @ArthurZucker
|
|
||||||
/src/transformers/models/deberta/mod*_deberta* @ArthurZucker
|
|
||||||
/src/transformers/models/deberta_v2/mod*_deberta_v2* @ArthurZucker
|
|
||||||
/src/transformers/models/dialogpt/mod*_dialogpt* @ArthurZucker
|
|
||||||
/src/transformers/models/diffllama/mod*_diffllama* @ArthurZucker
|
|
||||||
/src/transformers/models/distilbert/mod*_distilbert* @ArthurZucker
|
|
||||||
/src/transformers/models/dpr/mod*_dpr* @ArthurZucker
|
|
||||||
/src/transformers/models/electra/mod*_electra* @ArthurZucker
|
|
||||||
/src/transformers/models/encoder_decoder/mod*_encoder_decoder* @ArthurZucker
|
|
||||||
/src/transformers/models/ernie/mod*_ernie* @ArthurZucker
|
|
||||||
/src/transformers/models/ernie_m/mod*_ernie_m* @ArthurZucker
|
|
||||||
/src/transformers/models/esm/mod*_esm* @ArthurZucker
|
|
||||||
/src/transformers/models/falcon/mod*_falcon* @ArthurZucker
|
|
||||||
/src/transformers/models/falcon3/mod*_falcon3* @ArthurZucker
|
|
||||||
/src/transformers/models/falcon_mamba/mod*_falcon_mamba* @ArthurZucker
|
|
||||||
/src/transformers/models/fastspeech2_conformer/mod*_fastspeech2_conformer* @ArthurZucker
|
|
||||||
/src/transformers/models/flan_t5/mod*_flan_t5* @ArthurZucker
|
|
||||||
/src/transformers/models/flan_ul2/mod*_flan_ul2* @ArthurZucker
|
|
||||||
/src/transformers/models/flaubert/mod*_flaubert* @ArthurZucker
|
|
||||||
/src/transformers/models/fnet/mod*_fnet* @ArthurZucker
|
|
||||||
/src/transformers/models/fsmt/mod*_fsmt* @ArthurZucker
|
|
||||||
/src/transformers/models/funnel/mod*_funnel* @ArthurZucker
|
|
||||||
/src/transformers/models/fuyu/mod*_fuyu* @ArthurZucker
|
|
||||||
/src/transformers/models/gemma/mod*_gemma* @ArthurZucker
|
|
||||||
/src/transformers/models/gemma2/mod*_gemma2* @ArthurZucker
|
|
||||||
/src/transformers/models/glm/mod*_glm* @ArthurZucker
|
|
||||||
/src/transformers/models/openai_gpt/mod*_openai_gpt* @ArthurZucker
|
|
||||||
/src/transformers/models/gpt_neo/mod*_gpt_neo* @ArthurZucker
|
|
||||||
/src/transformers/models/gpt_neox/mod*_gpt_neox* @ArthurZucker
|
|
||||||
/src/transformers/models/gpt_neox_japanese/mod*_gpt_neox_japanese* @ArthurZucker
|
|
||||||
/src/transformers/models/gptj/mod*_gptj* @ArthurZucker
|
|
||||||
/src/transformers/models/gpt2/mod*_gpt2* @ArthurZucker
|
|
||||||
/src/transformers/models/gpt_bigcode/mod*_gpt_bigcode* @ArthurZucker
|
|
||||||
/src/transformers/models/gptsan_japanese/mod*_gptsan_japanese* @ArthurZucker
|
|
||||||
/src/transformers/models/gpt_sw3/mod*_gpt_sw3* @ArthurZucker
|
|
||||||
/src/transformers/models/granite/mod*_granite* @ArthurZucker
|
|
||||||
/src/transformers/models/granitemoe/mod*_granitemoe* @ArthurZucker
|
|
||||||
/src/transformers/models/herbert/mod*_herbert* @ArthurZucker
|
|
||||||
/src/transformers/models/ibert/mod*_ibert* @ArthurZucker
|
|
||||||
/src/transformers/models/jamba/mod*_jamba* @ArthurZucker
|
|
||||||
/src/transformers/models/jetmoe/mod*_jetmoe* @ArthurZucker
|
|
||||||
/src/transformers/models/jukebox/mod*_jukebox* @ArthurZucker
|
|
||||||
/src/transformers/models/led/mod*_led* @ArthurZucker
|
|
||||||
/src/transformers/models/llama/mod*_llama* @ArthurZucker @Cyrilvallez
|
|
||||||
/src/transformers/models/longformer/mod*_longformer* @ArthurZucker
|
|
||||||
/src/transformers/models/longt5/mod*_longt5* @ArthurZucker
|
|
||||||
/src/transformers/models/luke/mod*_luke* @ArthurZucker
|
|
||||||
/src/transformers/models/m2m_100/mod*_m2m_100* @ArthurZucker
|
|
||||||
/src/transformers/models/madlad_400/mod*_madlad_400* @ArthurZucker
|
|
||||||
/src/transformers/models/mamba/mod*_mamba* @ArthurZucker
|
|
||||||
/src/transformers/models/mamba2/mod*_mamba2* @ArthurZucker
|
|
||||||
/src/transformers/models/marian/mod*_marian* @ArthurZucker
|
|
||||||
/src/transformers/models/markuplm/mod*_markuplm* @ArthurZucker
|
|
||||||
/src/transformers/models/mbart/mod*_mbart* @ArthurZucker
|
|
||||||
/src/transformers/models/mega/mod*_mega* @ArthurZucker
|
|
||||||
/src/transformers/models/megatron_bert/mod*_megatron_bert* @ArthurZucker
|
|
||||||
/src/transformers/models/megatron_gpt2/mod*_megatron_gpt2* @ArthurZucker
|
|
||||||
/src/transformers/models/mistral/mod*_mistral* @ArthurZucker
|
|
||||||
/src/transformers/models/mixtral/mod*_mixtral* @ArthurZucker
|
|
||||||
/src/transformers/models/mluke/mod*_mluke* @ArthurZucker
|
|
||||||
/src/transformers/models/mobilebert/mod*_mobilebert* @ArthurZucker
|
|
||||||
/src/transformers/models/modernbert/mod*_modernbert* @ArthurZucker
|
|
||||||
/src/transformers/models/mpnet/mod*_mpnet* @ArthurZucker
|
|
||||||
/src/transformers/models/mpt/mod*_mpt* @ArthurZucker
|
|
||||||
/src/transformers/models/mra/mod*_mra* @ArthurZucker
|
|
||||||
/src/transformers/models/mt5/mod*_mt5* @ArthurZucker
|
|
||||||
/src/transformers/models/mvp/mod*_mvp* @ArthurZucker
|
|
||||||
/src/transformers/models/myt5/mod*_myt5* @ArthurZucker
|
|
||||||
/src/transformers/models/nemotron/mod*_nemotron* @ArthurZucker
|
|
||||||
/src/transformers/models/nezha/mod*_nezha* @ArthurZucker
|
|
||||||
/src/transformers/models/nllb/mod*_nllb* @ArthurZucker
|
|
||||||
/src/transformers/models/nllb_moe/mod*_nllb_moe* @ArthurZucker
|
|
||||||
/src/transformers/models/nystromformer/mod*_nystromformer* @ArthurZucker
|
|
||||||
/src/transformers/models/olmo/mod*_olmo* @ArthurZucker
|
|
||||||
/src/transformers/models/olmo2/mod*_olmo2* @ArthurZucker
|
|
||||||
/src/transformers/models/olmoe/mod*_olmoe* @ArthurZucker
|
|
||||||
/src/transformers/models/open_llama/mod*_open_llama* @ArthurZucker
|
|
||||||
/src/transformers/models/opt/mod*_opt* @ArthurZucker
|
|
||||||
/src/transformers/models/pegasus/mod*_pegasus* @ArthurZucker
|
|
||||||
/src/transformers/models/pegasus_x/mod*_pegasus_x* @ArthurZucker
|
|
||||||
/src/transformers/models/persimmon/mod*_persimmon* @ArthurZucker
|
|
||||||
/src/transformers/models/phi/mod*_phi* @ArthurZucker
|
|
||||||
/src/transformers/models/phi3/mod*_phi3* @ArthurZucker
|
|
||||||
/src/transformers/models/phimoe/mod*_phimoe* @ArthurZucker
|
|
||||||
/src/transformers/models/phobert/mod*_phobert* @ArthurZucker
|
|
||||||
/src/transformers/models/plbart/mod*_plbart* @ArthurZucker
|
|
||||||
/src/transformers/models/prophetnet/mod*_prophetnet* @ArthurZucker
|
|
||||||
/src/transformers/models/qdqbert/mod*_qdqbert* @ArthurZucker
|
|
||||||
/src/transformers/models/qwen2/mod*_qwen2* @ArthurZucker
|
|
||||||
/src/transformers/models/qwen2_moe/mod*_qwen2_moe* @ArthurZucker
|
|
||||||
/src/transformers/models/rag/mod*_rag* @ArthurZucker
|
|
||||||
/src/transformers/models/realm/mod*_realm* @ArthurZucker
|
|
||||||
/src/transformers/models/recurrent_gemma/mod*_recurrent_gemma* @ArthurZucker
|
|
||||||
/src/transformers/models/reformer/mod*_reformer* @ArthurZucker
|
|
||||||
/src/transformers/models/rembert/mod*_rembert* @ArthurZucker
|
|
||||||
/src/transformers/models/retribert/mod*_retribert* @ArthurZucker
|
|
||||||
/src/transformers/models/roberta/mod*_roberta* @ArthurZucker
|
|
||||||
/src/transformers/models/roberta_prelayernorm/mod*_roberta_prelayernorm* @ArthurZucker
|
|
||||||
/src/transformers/models/roc_bert/mod*_roc_bert* @ArthurZucker
|
|
||||||
/src/transformers/models/roformer/mod*_roformer* @ArthurZucker
|
|
||||||
/src/transformers/models/rwkv/mod*_rwkv* @ArthurZucker
|
|
||||||
/src/transformers/models/splinter/mod*_splinter* @ArthurZucker
|
|
||||||
/src/transformers/models/squeezebert/mod*_squeezebert* @ArthurZucker
|
|
||||||
/src/transformers/models/stablelm/mod*_stablelm* @ArthurZucker
|
|
||||||
/src/transformers/models/starcoder2/mod*_starcoder2* @ArthurZucker
|
|
||||||
/src/transformers/models/switch_transformers/mod*_switch_transformers* @ArthurZucker
|
|
||||||
/src/transformers/models/t5/mod*_t5* @ArthurZucker
|
|
||||||
/src/transformers/models/t5v1.1/mod*_t5v1.1* @ArthurZucker
|
|
||||||
/src/transformers/models/tapex/mod*_tapex* @ArthurZucker
|
|
||||||
/src/transformers/models/transfo_xl/mod*_transfo_xl* @ArthurZucker
|
|
||||||
/src/transformers/models/ul2/mod*_ul2* @ArthurZucker
|
|
||||||
/src/transformers/models/umt5/mod*_umt5* @ArthurZucker
|
|
||||||
/src/transformers/models/xmod/mod*_xmod* @ArthurZucker
|
|
||||||
/src/transformers/models/xglm/mod*_xglm* @ArthurZucker
|
|
||||||
/src/transformers/models/xlm/mod*_xlm* @ArthurZucker
|
|
||||||
/src/transformers/models/xlm_prophetnet/mod*_xlm_prophetnet* @ArthurZucker
|
|
||||||
/src/transformers/models/xlm_roberta/mod*_xlm_roberta* @ArthurZucker
|
|
||||||
/src/transformers/models/xlm_roberta_xl/mod*_xlm_roberta_xl* @ArthurZucker
|
|
||||||
/src/transformers/models/xlm_v/mod*_xlm_v* @ArthurZucker
|
|
||||||
/src/transformers/models/xlnet/mod*_xlnet* @ArthurZucker
|
|
||||||
/src/transformers/models/yoso/mod*_yoso* @ArthurZucker
|
|
||||||
/src/transformers/models/zamba/mod*_zamba* @ArthurZucker
|
|
||||||
|
|
||||||
# Vision models
|
|
||||||
/src/transformers/models/beit/mod*_beit* @amyeroberts @qubvel
|
|
||||||
/src/transformers/models/bit/mod*_bit* @amyeroberts @qubvel
|
|
||||||
/src/transformers/models/conditional_detr/mod*_conditional_detr* @amyeroberts @qubvel
|
|
||||||
/src/transformers/models/convnext/mod*_convnext* @amyeroberts @qubvel
|
|
||||||
/src/transformers/models/convnextv2/mod*_convnextv2* @amyeroberts @qubvel
|
|
||||||
/src/transformers/models/cvt/mod*_cvt* @amyeroberts @qubvel
|
|
||||||
/src/transformers/models/deformable_detr/mod*_deformable_detr* @amyeroberts @qubvel
|
|
||||||
/src/transformers/models/deit/mod*_deit* @amyeroberts @qubvel
|
|
||||||
/src/transformers/models/depth_anything/mod*_depth_anything* @amyeroberts @qubvel
|
|
||||||
/src/transformers/models/depth_anything_v2/mod*_depth_anything_v2* @amyeroberts @qubvel
|
|
||||||
/src/transformers/models/deta/mod*_deta* @amyeroberts @qubvel
|
|
||||||
/src/transformers/models/detr/mod*_detr* @amyeroberts @qubvel
|
|
||||||
/src/transformers/models/dinat/mod*_dinat* @amyeroberts @qubvel
|
|
||||||
/src/transformers/models/dinov2/mod*_dinov2* @amyeroberts @qubvel
|
|
||||||
/src/transformers/models/dinov2_with_registers/mod*_dinov2_with_registers* @amyeroberts @qubvel
|
|
||||||
/src/transformers/models/dit/mod*_dit* @amyeroberts @qubvel
|
|
||||||
/src/transformers/models/dpt/mod*_dpt* @amyeroberts @qubvel
|
|
||||||
/src/transformers/models/efficientformer/mod*_efficientformer* @amyeroberts @qubvel
|
|
||||||
/src/transformers/models/efficientnet/mod*_efficientnet* @amyeroberts @qubvel
|
|
||||||
/src/transformers/models/focalnet/mod*_focalnet* @amyeroberts @qubvel
|
|
||||||
/src/transformers/models/glpn/mod*_glpn* @amyeroberts @qubvel
|
|
||||||
/src/transformers/models/hiera/mod*_hiera* @amyeroberts @qubvel
|
|
||||||
/src/transformers/models/ijepa/mod*_ijepa* @amyeroberts @qubvel
|
|
||||||
/src/transformers/models/imagegpt/mod*_imagegpt* @amyeroberts @qubvel
|
|
||||||
/src/transformers/models/levit/mod*_levit* @amyeroberts @qubvel
|
|
||||||
/src/transformers/models/mask2former/mod*_mask2former* @amyeroberts @qubvel
|
|
||||||
/src/transformers/models/maskformer/mod*_maskformer* @amyeroberts @qubvel
|
|
||||||
/src/transformers/models/mobilenet_v1/mod*_mobilenet_v1* @amyeroberts @qubvel
|
|
||||||
/src/transformers/models/mobilenet_v2/mod*_mobilenet_v2* @amyeroberts @qubvel
|
|
||||||
/src/transformers/models/mobilevit/mod*_mobilevit* @amyeroberts @qubvel
|
|
||||||
/src/transformers/models/mobilevitv2/mod*_mobilevitv2* @amyeroberts @qubvel
|
|
||||||
/src/transformers/models/nat/mod*_nat* @amyeroberts @qubvel
|
|
||||||
/src/transformers/models/poolformer/mod*_poolformer* @amyeroberts @qubvel
|
|
||||||
/src/transformers/models/pvt/mod*_pvt* @amyeroberts @qubvel
|
|
||||||
/src/transformers/models/pvt_v2/mod*_pvt_v2* @amyeroberts @qubvel
|
|
||||||
/src/transformers/models/regnet/mod*_regnet* @amyeroberts @qubvel
|
|
||||||
/src/transformers/models/resnet/mod*_resnet* @amyeroberts @qubvel
|
|
||||||
/src/transformers/models/rt_detr/mod*_rt_detr* @amyeroberts @qubvel
|
|
||||||
/src/transformers/models/segformer/mod*_segformer* @amyeroberts @qubvel
|
|
||||||
/src/transformers/models/seggpt/mod*_seggpt* @amyeroberts @qubvel
|
|
||||||
/src/transformers/models/superpoint/mod*_superpoint* @amyeroberts @qubvel
|
|
||||||
/src/transformers/models/swiftformer/mod*_swiftformer* @amyeroberts @qubvel
|
|
||||||
/src/transformers/models/swin/mod*_swin* @amyeroberts @qubvel
|
|
||||||
/src/transformers/models/swinv2/mod*_swinv2* @amyeroberts @qubvel
|
|
||||||
/src/transformers/models/swin2sr/mod*_swin2sr* @amyeroberts @qubvel
|
|
||||||
/src/transformers/models/table_transformer/mod*_table_transformer* @amyeroberts @qubvel
|
|
||||||
/src/transformers/models/textnet/mod*_textnet* @amyeroberts @qubvel
|
|
||||||
/src/transformers/models/timm_wrapper/mod*_timm_wrapper* @amyeroberts @qubvel
|
|
||||||
/src/transformers/models/upernet/mod*_upernet* @amyeroberts @qubvel
|
|
||||||
/src/transformers/models/van/mod*_van* @amyeroberts @qubvel
|
|
||||||
/src/transformers/models/vit/mod*_vit* @amyeroberts @qubvel
|
|
||||||
/src/transformers/models/vit_hybrid/mod*_vit_hybrid* @amyeroberts @qubvel
|
|
||||||
/src/transformers/models/vitdet/mod*_vitdet* @amyeroberts @qubvel
|
|
||||||
/src/transformers/models/vit_mae/mod*_vit_mae* @amyeroberts @qubvel
|
|
||||||
/src/transformers/models/vitmatte/mod*_vitmatte* @amyeroberts @qubvel
|
|
||||||
/src/transformers/models/vit_msn/mod*_vit_msn* @amyeroberts @qubvel
|
|
||||||
/src/transformers/models/vitpose/mod*_vitpose* @amyeroberts @qubvel
|
|
||||||
/src/transformers/models/yolos/mod*_yolos* @amyeroberts @qubvel
|
|
||||||
/src/transformers/models/zoedepth/mod*_zoedepth* @amyeroberts @qubvel
|
|
||||||
|
|
||||||
# Audio models
|
|
||||||
/src/transformers/models/audio_spectrogram_transformer/mod*_audio_spectrogram_transformer* @eustlb
|
|
||||||
/src/transformers/models/bark/mod*_bark* @eustlb
|
|
||||||
/src/transformers/models/clap/mod*_clap* @eustlb
|
|
||||||
/src/transformers/models/dac/mod*_dac* @eustlb
|
|
||||||
/src/transformers/models/encodec/mod*_encodec* @eustlb
|
|
||||||
/src/transformers/models/hubert/mod*_hubert* @eustlb
|
|
||||||
/src/transformers/models/mctct/mod*_mctct* @eustlb
|
|
||||||
/src/transformers/models/mimi/mod*_mimi* @eustlb
|
|
||||||
/src/transformers/models/mms/mod*_mms* @eustlb
|
|
||||||
/src/transformers/models/moshi/mod*_moshi* @eustlb
|
|
||||||
/src/transformers/models/musicgen/mod*_musicgen* @eustlb
|
|
||||||
/src/transformers/models/musicgen_melody/mod*_musicgen_melody* @eustlb
|
|
||||||
/src/transformers/models/pop2piano/mod*_pop2piano* @eustlb
|
|
||||||
/src/transformers/models/seamless_m4t/mod*_seamless_m4t* @eustlb
|
|
||||||
/src/transformers/models/seamless_m4t_v2/mod*_seamless_m4t_v2* @eustlb
|
|
||||||
/src/transformers/models/sew/mod*_sew* @eustlb
|
|
||||||
/src/transformers/models/sew_d/mod*_sew_d* @eustlb
|
|
||||||
/src/transformers/models/speech_to_text/mod*_speech_to_text* @eustlb
|
|
||||||
/src/transformers/models/speech_to_text_2/mod*_speech_to_text_2* @eustlb
|
|
||||||
/src/transformers/models/speecht5/mod*_speecht5* @eustlb
|
|
||||||
/src/transformers/models/unispeech/mod*_unispeech* @eustlb
|
|
||||||
/src/transformers/models/unispeech_sat/mod*_unispeech_sat* @eustlb
|
|
||||||
/src/transformers/models/univnet/mod*_univnet* @eustlb
|
|
||||||
/src/transformers/models/vits/mod*_vits* @eustlb
|
|
||||||
/src/transformers/models/wav2vec2/mod*_wav2vec2* @eustlb
|
|
||||||
/src/transformers/models/wav2vec2_bert/mod*_wav2vec2_bert* @eustlb
|
|
||||||
/src/transformers/models/wav2vec2_conformer/mod*_wav2vec2_conformer* @eustlb
|
|
||||||
/src/transformers/models/wav2vec2_phoneme/mod*_wav2vec2_phoneme* @eustlb
|
|
||||||
/src/transformers/models/wavlm/mod*_wavlm* @eustlb
|
|
||||||
/src/transformers/models/whisper/mod*_whisper* @eustlb
|
|
||||||
/src/transformers/models/xls_r/mod*_xls_r* @eustlb
|
|
||||||
/src/transformers/models/xlsr_wav2vec2/mod*_xlsr_wav2vec2* @eustlb
|
|
||||||
|
|
||||||
# Video models
|
|
||||||
/src/transformers/models/timesformer/mod*_timesformer* @Rocketknight1
|
|
||||||
/src/transformers/models/videomae/mod*_videomae* @Rocketknight1
|
|
||||||
/src/transformers/models/vivit/mod*_vivit* @Rocketknight1
|
|
||||||
|
|
||||||
# Multimodal models
|
|
||||||
/src/transformers/models/align/mod*_align* @zucchini-nlp
|
|
||||||
/src/transformers/models/altclip/mod*_altclip* @zucchini-nlp
|
|
||||||
/src/transformers/models/aria/mod*_aria* @zucchini-nlp
|
|
||||||
/src/transformers/models/blip/mod*_blip* @zucchini-nlp
|
|
||||||
/src/transformers/models/blip_2/mod*_blip_2* @zucchini-nlp
|
|
||||||
/src/transformers/models/bridgetower/mod*_bridgetower* @zucchini-nlp
|
|
||||||
/src/transformers/models/bros/mod*_bros* @zucchini-nlp
|
|
||||||
/src/transformers/models/chameleon/mod*_chameleon* @zucchini-nlp
|
|
||||||
/src/transformers/models/chinese_clip/mod*_chinese_clip* @zucchini-nlp
|
|
||||||
/src/transformers/models/clip/mod*_clip* @zucchini-nlp
|
|
||||||
/src/transformers/models/clipseg/mod*_clipseg* @zucchini-nlp
|
|
||||||
/src/transformers/models/clvp/mod*_clvp* @zucchini-nlp
|
|
||||||
/src/transformers/models/colpali/mod*_colpali* @zucchini-nlp @yonigozlan
|
|
||||||
/src/transformers/models/data2vec/mod*_data2vec* @zucchini-nlp
|
|
||||||
/src/transformers/models/deplot/mod*_deplot* @zucchini-nlp
|
|
||||||
/src/transformers/models/donut/mod*_donut* @zucchini-nlp
|
|
||||||
/src/transformers/models/flava/mod*_flava* @zucchini-nlp
|
|
||||||
/src/transformers/models/git/mod*_git* @zucchini-nlp
|
|
||||||
/src/transformers/models/grounding_dino/mod*_grounding_dino* @qubvel
|
|
||||||
/src/transformers/models/groupvit/mod*_groupvit* @zucchini-nlp
|
|
||||||
/src/transformers/models/idefics/mod*_idefics* @zucchini-nlp
|
|
||||||
/src/transformers/models/idefics2/mod*_idefics2* @zucchini-nlp
|
|
||||||
/src/transformers/models/idefics3/mod*_idefics3* @zucchini-nlp
|
|
||||||
/src/transformers/models/instructblip/mod*_instructblip* @zucchini-nlp
|
|
||||||
/src/transformers/models/instructblipvideo/mod*_instructblipvideo* @zucchini-nlp
|
|
||||||
/src/transformers/models/kosmos_2/mod*_kosmos_2* @zucchini-nlp
|
|
||||||
/src/transformers/models/layoutlm/mod*_layoutlm* @NielsRogge
|
|
||||||
/src/transformers/models/layoutlmv2/mod*_layoutlmv2* @NielsRogge
|
|
||||||
/src/transformers/models/layoutlmv3/mod*_layoutlmv3* @NielsRogge
|
|
||||||
/src/transformers/models/layoutxlm/mod*_layoutxlm* @NielsRogge
|
|
||||||
/src/transformers/models/lilt/mod*_lilt* @zucchini-nlp
|
|
||||||
/src/transformers/models/llava/mod*_llava* @zucchini-nlp @arthurzucker
|
|
||||||
/src/transformers/models/llava_next/mod*_llava_next* @zucchini-nlp
|
|
||||||
/src/transformers/models/llava_next_video/mod*_llava_next_video* @zucchini-nlp
|
|
||||||
/src/transformers/models/llava_onevision/mod*_llava_onevision* @zucchini-nlp
|
|
||||||
/src/transformers/models/lxmert/mod*_lxmert* @zucchini-nlp
|
|
||||||
/src/transformers/models/matcha/mod*_matcha* @zucchini-nlp
|
|
||||||
/src/transformers/models/mgp_str/mod*_mgp_str* @zucchini-nlp
|
|
||||||
/src/transformers/models/mllama/mod*_mllama* @zucchini-nlp
|
|
||||||
/src/transformers/models/nougat/mod*_nougat* @NielsRogge
|
|
||||||
/src/transformers/models/omdet_turbo/mod*_omdet_turbo* @qubvel @yonigozlan
|
|
||||||
/src/transformers/models/oneformer/mod*_oneformer* @zucchini-nlp
|
|
||||||
/src/transformers/models/owlvit/mod*_owlvit* @qubvel
|
|
||||||
/src/transformers/models/owlv2/mod*_owlv2* @qubvel
|
|
||||||
/src/transformers/models/paligemma/mod*_paligemma* @zucchini-nlp @molbap
|
|
||||||
/src/transformers/models/perceiver/mod*_perceiver* @zucchini-nlp
|
|
||||||
/src/transformers/models/pix2struct/mod*_pix2struct* @zucchini-nlp
|
|
||||||
/src/transformers/models/pixtral/mod*_pixtral* @zucchini-nlp @ArthurZucker
|
|
||||||
/src/transformers/models/qwen2_audio/mod*_qwen2_audio* @zucchini-nlp @ArthurZucker
|
|
||||||
/src/transformers/models/qwen2_vl/mod*_qwen2_vl* @zucchini-nlp @ArthurZucker
|
|
||||||
/src/transformers/models/sam/mod*_sam* @zucchini-nlp @ArthurZucker
|
|
||||||
/src/transformers/models/siglip/mod*_siglip* @zucchini-nlp
|
|
||||||
/src/transformers/models/speech_encoder_decoder/mod*_speech_encoder_decoder* @zucchini-nlp
|
|
||||||
/src/transformers/models/tapas/mod*_tapas* @NielsRogge
|
|
||||||
/src/transformers/models/trocr/mod*_trocr* @zucchini-nlp
|
|
||||||
/src/transformers/models/tvlt/mod*_tvlt* @zucchini-nlp
|
|
||||||
/src/transformers/models/tvp/mod*_tvp* @zucchini-nlp
|
|
||||||
/src/transformers/models/udop/mod*_udop* @zucchini-nlp
|
|
||||||
/src/transformers/models/video_llava/mod*_video_llava* @zucchini-nlp
|
|
||||||
/src/transformers/models/vilt/mod*_vilt* @zucchini-nlp
|
|
||||||
/src/transformers/models/vipllava/mod*_vipllava* @zucchini-nlp
|
|
||||||
/src/transformers/models/vision_encoder_decoder/mod*_vision_encoder_decoder* @Rocketknight1
|
|
||||||
/src/transformers/models/vision_text_dual_encoder/mod*_vision_text_dual_encoder* @Rocketknight1
|
|
||||||
/src/transformers/models/visual_bert/mod*_visual_bert* @zucchini-nlp
|
|
||||||
/src/transformers/models/xclip/mod*_xclip* @zucchini-nlp
|
|
||||||
|
|
||||||
# Reinforcement learning models
|
|
||||||
/src/transformers/models/decision_transformer/mod*_decision_transformer* @Rocketknight1
|
|
||||||
/src/transformers/models/trajectory_transformer/mod*_trajectory_transformer* @Rocketknight1
|
|
||||||
|
|
||||||
# Time series models
|
|
||||||
/src/transformers/models/autoformer/mod*_autoformer* @Rocketknight1
|
|
||||||
/src/transformers/models/informer/mod*_informer* @Rocketknight1
|
|
||||||
/src/transformers/models/patchtsmixer/mod*_patchtsmixer* @Rocketknight1
|
|
||||||
/src/transformers/models/patchtst/mod*_patchtst* @Rocketknight1
|
|
||||||
/src/transformers/models/time_series_transformer/mod*_time_series_transformer* @Rocketknight1
|
|
||||||
|
|
||||||
# Graph models
|
|
||||||
/src/transformers/models/graphormer/mod*_graphormer* @clefourrier
|
|
||||||
|
|
||||||
# Finally, files with no owners that shouldn't generate pings, usually automatically generated and checked in the CI
|
|
||||||
utils/dummy*
|
|
||||||
BIN
.github/workflows/._TROUBLESHOOT.md
vendored
BIN
.github/workflows/._TROUBLESHOOT.md
vendored
Binary file not shown.
BIN
.github/workflows/._add-model-like.yml
vendored
BIN
.github/workflows/._add-model-like.yml
vendored
Binary file not shown.
BIN
.github/workflows/._assign-reviewers.yml
vendored
BIN
.github/workflows/._assign-reviewers.yml
vendored
Binary file not shown.
BIN
.github/workflows/._build-ci-docker-images.yml
vendored
BIN
.github/workflows/._build-ci-docker-images.yml
vendored
Binary file not shown.
BIN
.github/workflows/._build-docker-images.yml
vendored
BIN
.github/workflows/._build-docker-images.yml
vendored
Binary file not shown.
Binary file not shown.
BIN
.github/workflows/._build-past-ci-docker-images.yml
vendored
BIN
.github/workflows/._build-past-ci-docker-images.yml
vendored
Binary file not shown.
BIN
.github/workflows/._check_tiny_models.yml
vendored
BIN
.github/workflows/._check_tiny_models.yml
vendored
Binary file not shown.
BIN
.github/workflows/._get-pr-info.yml
vendored
BIN
.github/workflows/._get-pr-info.yml
vendored
Binary file not shown.
BIN
.github/workflows/._get-pr-number.yml
vendored
BIN
.github/workflows/._get-pr-number.yml
vendored
Binary file not shown.
BIN
.github/workflows/._model_jobs_intel_gaudi.yml
vendored
BIN
.github/workflows/._model_jobs_intel_gaudi.yml
vendored
Binary file not shown.
Binary file not shown.
BIN
.github/workflows/._pr-style-bot.yml
vendored
BIN
.github/workflows/._pr-style-bot.yml
vendored
Binary file not shown.
BIN
.github/workflows/._push-important-models.yml
vendored
BIN
.github/workflows/._push-important-models.yml
vendored
Binary file not shown.
BIN
.github/workflows/._release-conda.yml
vendored
BIN
.github/workflows/._release-conda.yml
vendored
Binary file not shown.
BIN
.github/workflows/._self-nightly-past-ci-caller.yml
vendored
BIN
.github/workflows/._self-nightly-past-ci-caller.yml
vendored
Binary file not shown.
BIN
.github/workflows/._self-past-caller.yml
vendored
BIN
.github/workflows/._self-past-caller.yml
vendored
Binary file not shown.
BIN
.github/workflows/._self-push-amd-mi210-caller.yml
vendored
BIN
.github/workflows/._self-push-amd-mi210-caller.yml
vendored
Binary file not shown.
BIN
.github/workflows/._self-push-amd-mi250-caller.yml
vendored
BIN
.github/workflows/._self-push-amd-mi250-caller.yml
vendored
Binary file not shown.
BIN
.github/workflows/._self-push-amd.yml
vendored
BIN
.github/workflows/._self-push-amd.yml
vendored
Binary file not shown.
BIN
.github/workflows/._self-push-caller.yml
vendored
BIN
.github/workflows/._self-push-caller.yml
vendored
Binary file not shown.
BIN
.github/workflows/._self-scheduled-amd-caller.yml
vendored
BIN
.github/workflows/._self-scheduled-amd-caller.yml
vendored
Binary file not shown.
Binary file not shown.
BIN
.github/workflows/._self-scheduled-intel-gaudi.yml
vendored
BIN
.github/workflows/._self-scheduled-intel-gaudi.yml
vendored
Binary file not shown.
Binary file not shown.
BIN
.github/workflows/._ssh-runner.yml
vendored
BIN
.github/workflows/._ssh-runner.yml
vendored
Binary file not shown.
BIN
.github/workflows/._stale.yml
vendored
BIN
.github/workflows/._stale.yml
vendored
Binary file not shown.
BIN
.github/workflows/._trufflehog.yml
vendored
BIN
.github/workflows/._trufflehog.yml
vendored
Binary file not shown.
BIN
.github/workflows/._update_metdata.yml
vendored
BIN
.github/workflows/._update_metdata.yml
vendored
Binary file not shown.
BIN
.github/workflows/._upload_pr_documentation.yml
vendored
BIN
.github/workflows/._upload_pr_documentation.yml
vendored
Binary file not shown.
2
.github/workflows/TROUBLESHOOT.md
vendored
2
.github/workflows/TROUBLESHOOT.md
vendored
@@ -1,6 +1,6 @@
|
|||||||
# Troubleshooting
|
# Troubleshooting
|
||||||
|
|
||||||
This is a document explaining how to deal with various issues on github-actions self-hosted CI. The entries may include actual solutions or pointers to Issues that cover those.
|
This is a document explaining how to deal with various issues on github-actions self-hosted CI. The entries may include actually solutions or pointers to Issues that cover those.
|
||||||
|
|
||||||
## GitHub Actions (self-hosted CI)
|
## GitHub Actions (self-hosted CI)
|
||||||
|
|
||||||
|
|||||||
80
.github/workflows/add-model-like.yml
vendored
80
.github/workflows/add-model-like.yml
vendored
@@ -1,80 +0,0 @@
|
|||||||
name: Add model like runner
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- none # put main here when this is fixed
|
|
||||||
#pull_request:
|
|
||||||
# paths:
|
|
||||||
# - "src/**"
|
|
||||||
# - "tests/**"
|
|
||||||
# - ".github/**"
|
|
||||||
# types: [opened, synchronize, reopened]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
run_tests_templates_like:
|
|
||||||
name: "Add new model like template tests"
|
|
||||||
runs-on: ubuntu-22.04
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Install dependencies
|
|
||||||
run: |
|
|
||||||
sudo apt -y update && sudo apt install -y libsndfile1-dev
|
|
||||||
|
|
||||||
- name: Load cached virtual environment
|
|
||||||
uses: actions/cache@v4
|
|
||||||
id: cache
|
|
||||||
with:
|
|
||||||
path: ~/venv/
|
|
||||||
key: v4-tests_model_like-${{ hashFiles('setup.py') }}
|
|
||||||
|
|
||||||
- name: Create virtual environment on cache miss
|
|
||||||
if: steps.cache.outputs.cache-hit != 'true'
|
|
||||||
run: |
|
|
||||||
python -m venv ~/venv && . ~/venv/bin/activate
|
|
||||||
pip install --upgrade pip!=21.3
|
|
||||||
pip install -e .[dev]
|
|
||||||
|
|
||||||
- name: Check transformers location
|
|
||||||
# make `transformers` available as package (required since we use `-e` flag) and check it's indeed from the repo.
|
|
||||||
run: |
|
|
||||||
. ~/venv/bin/activate
|
|
||||||
python setup.py develop
|
|
||||||
transformers_install=$(pip list -e | grep transformers)
|
|
||||||
transformers_install_array=($transformers_install)
|
|
||||||
transformers_loc=${transformers_install_array[-1]}
|
|
||||||
transformers_repo_loc=$(pwd .)
|
|
||||||
if [ "$transformers_loc" != "$transformers_repo_loc" ]; then
|
|
||||||
echo "transformers is from $transformers_loc but it shoud be from $transformers_repo_loc/src."
|
|
||||||
echo "A fix is required. Stop testing."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: Create model files
|
|
||||||
run: |
|
|
||||||
. ~/venv/bin/activate
|
|
||||||
transformers add-new-model-like --config_file tests/fixtures/add_distilbert_like_config.json --path_to_repo .
|
|
||||||
make style
|
|
||||||
make fix-copies
|
|
||||||
|
|
||||||
- name: Run all PyTorch modeling test
|
|
||||||
run: |
|
|
||||||
. ~/venv/bin/activate
|
|
||||||
python -m pytest -n 2 --dist=loadfile -s --make-reports=tests_new_models tests/bert_new/test_modeling_bert_new.py
|
|
||||||
|
|
||||||
- name: Run style changes
|
|
||||||
run: |
|
|
||||||
. ~/venv/bin/activate
|
|
||||||
make style && make quality && make repo-consistency
|
|
||||||
|
|
||||||
- name: Failure short reports
|
|
||||||
if: ${{ always() }}
|
|
||||||
run: cat reports/tests_new_models/failures_short.txt
|
|
||||||
|
|
||||||
- name: Test suite reports artifacts
|
|
||||||
if: ${{ always() }}
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: run_all_tests_new_models_test_reports
|
|
||||||
path: reports/tests_new_models
|
|
||||||
26
.github/workflows/assign-reviewers.yml
vendored
26
.github/workflows/assign-reviewers.yml
vendored
@@ -1,26 +0,0 @@
|
|||||||
name: Assign PR Reviewers
|
|
||||||
on:
|
|
||||||
pull_request_target:
|
|
||||||
branches:
|
|
||||||
- main
|
|
||||||
types: [ready_for_review]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
assign_reviewers:
|
|
||||||
permissions:
|
|
||||||
pull-requests: write
|
|
||||||
runs-on: ubuntu-22.04
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
- name: Set up Python
|
|
||||||
uses: actions/setup-python@v5
|
|
||||||
with:
|
|
||||||
python-version: '3.13'
|
|
||||||
- name: Install dependencies
|
|
||||||
run: |
|
|
||||||
python -m pip install --upgrade pip
|
|
||||||
pip install PyGithub
|
|
||||||
- name: Run assignment script
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
run: python .github/scripts/assign_reviewers.py
|
|
||||||
76
.github/workflows/benchmark.yml
vendored
76
.github/workflows/benchmark.yml
vendored
@@ -1,76 +0,0 @@
|
|||||||
name: Self-hosted runner (benchmark)
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [main]
|
|
||||||
pull_request:
|
|
||||||
types: [ opened, labeled, reopened, synchronize ]
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
|
||||||
cancel-in-progress: true
|
|
||||||
|
|
||||||
env:
|
|
||||||
HF_HOME: /mnt/cache
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
benchmark:
|
|
||||||
name: Benchmark
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
# group: [aws-g5-4xlarge-cache, aws-p4d-24xlarge-plus] (A100 runner is not enabled)
|
|
||||||
group: [aws-g5-4xlarge-cache]
|
|
||||||
runs-on:
|
|
||||||
group: ${{ matrix.group }}
|
|
||||||
if: |
|
|
||||||
(github.event_name == 'pull_request' && contains( github.event.pull_request.labels.*.name, 'run-benchmark') )||
|
|
||||||
(github.event_name == 'push' && github.ref == 'refs/heads/main')
|
|
||||||
container:
|
|
||||||
image: huggingface/transformers-pytorch-gpu
|
|
||||||
options: --gpus all --privileged --ipc host
|
|
||||||
steps:
|
|
||||||
- name: Get repo
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
ref: ${{ github.event.pull_request.head.sha || github.sha }}
|
|
||||||
|
|
||||||
- name: Install libpq-dev & psql
|
|
||||||
run: |
|
|
||||||
apt update
|
|
||||||
apt install -y libpq-dev postgresql-client
|
|
||||||
|
|
||||||
- name: Install benchmark script dependencies
|
|
||||||
run: python3 -m pip install -r benchmark/requirements.txt
|
|
||||||
|
|
||||||
- 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 ".[torch]"
|
|
||||||
|
|
||||||
- name: Run database init script
|
|
||||||
run: |
|
|
||||||
psql -f benchmark/utils/init_db.sql
|
|
||||||
env:
|
|
||||||
PGDATABASE: metrics
|
|
||||||
PGHOST: ${{ secrets.TRANSFORMERS_BENCHMARKS_PGHOST }}
|
|
||||||
PGUSER: transformers_benchmarks
|
|
||||||
PGPASSWORD: ${{ secrets.TRANSFORMERS_BENCHMARKS_PGPASSWORD }}
|
|
||||||
|
|
||||||
- name: Run benchmark
|
|
||||||
run: |
|
|
||||||
git config --global --add safe.directory /__w/transformers/transformers
|
|
||||||
if [ "$GITHUB_EVENT_NAME" = "pull_request" ]; then
|
|
||||||
commit_id=$(echo "${{ github.event.pull_request.head.sha }}")
|
|
||||||
elif [ "$GITHUB_EVENT_NAME" = "push" ]; then
|
|
||||||
commit_id=$GITHUB_SHA
|
|
||||||
fi
|
|
||||||
commit_msg=$(git show -s --format=%s | cut -c1-70)
|
|
||||||
python3 benchmark/benchmarks_entrypoint.py "huggingface/transformers" "$BRANCH_NAME" "$commit_id" "$commit_msg"
|
|
||||||
env:
|
|
||||||
HF_TOKEN: ${{ secrets.HF_HUB_READ_TOKEN }}
|
|
||||||
# Enable this to see debug logs
|
|
||||||
# HF_HUB_VERBOSITY: debug
|
|
||||||
# TRANSFORMERS_VERBOSITY: debug
|
|
||||||
PGHOST: ${{ secrets.TRANSFORMERS_BENCHMARKS_PGHOST }}
|
|
||||||
PGUSER: transformers_benchmarks
|
|
||||||
PGPASSWORD: ${{ secrets.TRANSFORMERS_BENCHMARKS_PGPASSWORD }}
|
|
||||||
BRANCH_NAME: ${{ github.head_ref || github.ref_name }}
|
|
||||||
77
.github/workflows/build-ci-docker-images.yml
vendored
77
.github/workflows/build-ci-docker-images.yml
vendored
@@ -1,77 +0,0 @@
|
|||||||
name: Build pr ci-docker
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- push-ci-image # for now let's only build on this branch
|
|
||||||
repository_dispatch:
|
|
||||||
workflow_call:
|
|
||||||
inputs:
|
|
||||||
image_postfix:
|
|
||||||
required: true
|
|
||||||
type: string
|
|
||||||
schedule:
|
|
||||||
- cron: "6 0 * * *"
|
|
||||||
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: ${{ github.workflow }}
|
|
||||||
cancel-in-progress: true
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
runs-on: ubuntu-22.04
|
|
||||||
|
|
||||||
if: ${{ contains(github.event.head_commit.message, '[build-ci-image]') || contains(github.event.head_commit.message, '[push-ci-image]') && '!cancelled()' || github.event_name == 'schedule' }}
|
|
||||||
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
file: ["quality", "consistency", "custom-tokenizers", "torch-light", "tf-light", "exotic-models", "torch-tf-light", "jax-light", "examples-torch", "examples-tf"]
|
|
||||||
continue-on-error: true
|
|
||||||
|
|
||||||
steps:
|
|
||||||
-
|
|
||||||
name: Set tag
|
|
||||||
run: |
|
|
||||||
if ${{contains(github.event.head_commit.message, '[build-ci-image]')}}; then
|
|
||||||
echo "TAG=huggingface/transformers-${{ matrix.file }}:dev" >> "$GITHUB_ENV"
|
|
||||||
echo "setting it to DEV!"
|
|
||||||
else
|
|
||||||
echo "TAG=huggingface/transformers-${{ matrix.file }}" >> "$GITHUB_ENV"
|
|
||||||
|
|
||||||
fi
|
|
||||||
-
|
|
||||||
name: Set up Docker Buildx
|
|
||||||
uses: docker/setup-buildx-action@v3
|
|
||||||
-
|
|
||||||
name: Check out code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
-
|
|
||||||
name: Login to DockerHub
|
|
||||||
uses: docker/login-action@v3
|
|
||||||
with:
|
|
||||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
||||||
password: ${{ secrets.DOCKERHUB_PASSWORD }}
|
|
||||||
-
|
|
||||||
name: Build ${{ matrix.file }}.dockerfile
|
|
||||||
uses: docker/build-push-action@v5
|
|
||||||
with:
|
|
||||||
context: ./docker
|
|
||||||
build-args: |
|
|
||||||
REF=${{ github.sha }}
|
|
||||||
file: "./docker/${{ matrix.file }}.dockerfile"
|
|
||||||
push: ${{ contains(github.event.head_commit.message, 'ci-image]') || github.event_name == 'schedule' }}
|
|
||||||
tags: ${{ env.TAG }}
|
|
||||||
|
|
||||||
notify:
|
|
||||||
runs-on: ubuntu-22.04
|
|
||||||
if: ${{ contains(github.event.head_commit.message, '[build-ci-image]') || contains(github.event.head_commit.message, '[push-ci-image]') && '!cancelled()' || github.event_name == 'schedule' }}
|
|
||||||
steps:
|
|
||||||
- name: Post to Slack
|
|
||||||
if: ${{ contains(github.event.head_commit.message, '[push-ci-image]') && github.event_name != 'schedule' }}
|
|
||||||
uses: huggingface/hf-workflows/.github/actions/post-slack@main
|
|
||||||
with:
|
|
||||||
slack_channel: "#transformers-ci-circleci-images"
|
|
||||||
title: 🤗 New docker images for CircleCI are pushed.
|
|
||||||
status: ${{ job.status }}
|
|
||||||
slack_token: ${{ secrets.SLACK_CIFEEDBACK_BOT_TOKEN }}
|
|
||||||
355
.github/workflows/build-docker-images.yml
vendored
355
.github/workflows/build-docker-images.yml
vendored
@@ -1,355 +0,0 @@
|
|||||||
name: Build docker images (scheduled)
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- build_ci_docker_image*
|
|
||||||
repository_dispatch:
|
|
||||||
workflow_call:
|
|
||||||
inputs:
|
|
||||||
image_postfix:
|
|
||||||
required: true
|
|
||||||
type: string
|
|
||||||
schedule:
|
|
||||||
- cron: "17 0 * * *"
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: docker-images-builds
|
|
||||||
cancel-in-progress: false
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
latest-docker:
|
|
||||||
name: "Latest PyTorch [dev]"
|
|
||||||
runs-on:
|
|
||||||
group: aws-general-8-plus
|
|
||||||
steps:
|
|
||||||
-
|
|
||||||
name: Set up Docker Buildx
|
|
||||||
uses: docker/setup-buildx-action@v3
|
|
||||||
-
|
|
||||||
name: Check out code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
-
|
|
||||||
name: Login to DockerHub
|
|
||||||
uses: docker/login-action@v3
|
|
||||||
with:
|
|
||||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
||||||
password: ${{ secrets.DOCKERHUB_PASSWORD }}
|
|
||||||
-
|
|
||||||
name: Build and push
|
|
||||||
uses: docker/build-push-action@v5
|
|
||||||
with:
|
|
||||||
context: ./docker/transformers-all-latest-gpu
|
|
||||||
build-args: |
|
|
||||||
REF=main
|
|
||||||
push: true
|
|
||||||
tags: huggingface/transformers-all-latest-gpu${{ inputs.image_postfix }}
|
|
||||||
# Push CI images still need to be re-built daily
|
|
||||||
-
|
|
||||||
name: Build and push (for Push CI) in a daily basis
|
|
||||||
# This condition allows `schedule` events, or `push` events that trigger this workflow NOT via `workflow_call`.
|
|
||||||
# The later case is useful for manual image building for debugging purpose. Use another tag in this case!
|
|
||||||
if: inputs.image_postfix != '-push-ci'
|
|
||||||
uses: docker/build-push-action@v5
|
|
||||||
with:
|
|
||||||
context: ./docker/transformers-all-latest-gpu
|
|
||||||
build-args: |
|
|
||||||
REF=main
|
|
||||||
push: true
|
|
||||||
tags: huggingface/transformers-all-latest-gpu-push-ci
|
|
||||||
|
|
||||||
- name: Post to Slack
|
|
||||||
if: always()
|
|
||||||
uses: huggingface/hf-workflows/.github/actions/post-slack@main
|
|
||||||
with:
|
|
||||||
slack_channel: ${{ secrets.CI_SLACK_CHANNEL_DOCKER }}
|
|
||||||
title: 🤗 Results of the transformers-all-latest-gpu-push-ci docker build
|
|
||||||
status: ${{ job.status }}
|
|
||||||
slack_token: ${{ secrets.SLACK_CIFEEDBACK_BOT_TOKEN }}
|
|
||||||
|
|
||||||
latest-torch-deepspeed-docker:
|
|
||||||
name: "Latest PyTorch + DeepSpeed"
|
|
||||||
runs-on:
|
|
||||||
group: aws-g4dn-2xlarge-cache
|
|
||||||
steps:
|
|
||||||
-
|
|
||||||
name: Set up Docker Buildx
|
|
||||||
uses: docker/setup-buildx-action@v3
|
|
||||||
-
|
|
||||||
name: Check out code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
-
|
|
||||||
name: Login to DockerHub
|
|
||||||
uses: docker/login-action@v3
|
|
||||||
with:
|
|
||||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
||||||
password: ${{ secrets.DOCKERHUB_PASSWORD }}
|
|
||||||
-
|
|
||||||
name: Build and push
|
|
||||||
uses: docker/build-push-action@v5
|
|
||||||
with:
|
|
||||||
context: ./docker/transformers-pytorch-deepspeed-latest-gpu
|
|
||||||
build-args: |
|
|
||||||
REF=main
|
|
||||||
push: true
|
|
||||||
tags: huggingface/transformers-pytorch-deepspeed-latest-gpu${{ inputs.image_postfix }}
|
|
||||||
|
|
||||||
- name: Post to Slack
|
|
||||||
if: always()
|
|
||||||
uses: huggingface/hf-workflows/.github/actions/post-slack@main
|
|
||||||
with:
|
|
||||||
slack_channel: ${{ secrets.CI_SLACK_CHANNEL_DOCKER}}
|
|
||||||
title: 🤗 Results of the transformers-pytorch-deepspeed-latest-gpu docker build
|
|
||||||
status: ${{ job.status }}
|
|
||||||
slack_token: ${{ secrets.SLACK_CIFEEDBACK_BOT_TOKEN }}
|
|
||||||
|
|
||||||
# Can't build 2 images in a single job `latest-torch-deepspeed-docker` (for `nvcr.io/nvidia`)
|
|
||||||
latest-torch-deepspeed-docker-for-push-ci-daily-build:
|
|
||||||
name: "Latest PyTorch + DeepSpeed (Push CI - Daily Build)"
|
|
||||||
runs-on:
|
|
||||||
group: aws-general-8-plus
|
|
||||||
steps:
|
|
||||||
-
|
|
||||||
name: Set up Docker Buildx
|
|
||||||
uses: docker/setup-buildx-action@v3
|
|
||||||
-
|
|
||||||
name: Check out code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
-
|
|
||||||
name: Login to DockerHub
|
|
||||||
uses: docker/login-action@v3
|
|
||||||
with:
|
|
||||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
||||||
password: ${{ secrets.DOCKERHUB_PASSWORD }}
|
|
||||||
# Push CI images still need to be re-built daily
|
|
||||||
-
|
|
||||||
name: Build and push (for Push CI) in a daily basis
|
|
||||||
# This condition allows `schedule` events, or `push` events that trigger this workflow NOT via `workflow_call`.
|
|
||||||
# The later case is useful for manual image building for debugging purpose. Use another tag in this case!
|
|
||||||
if: inputs.image_postfix != '-push-ci'
|
|
||||||
uses: docker/build-push-action@v5
|
|
||||||
with:
|
|
||||||
context: ./docker/transformers-pytorch-deepspeed-latest-gpu
|
|
||||||
build-args: |
|
|
||||||
REF=main
|
|
||||||
push: true
|
|
||||||
tags: huggingface/transformers-pytorch-deepspeed-latest-gpu-push-ci
|
|
||||||
|
|
||||||
- name: Post to Slack
|
|
||||||
if: always()
|
|
||||||
uses: huggingface/hf-workflows/.github/actions/post-slack@main
|
|
||||||
with:
|
|
||||||
slack_channel: ${{ secrets.CI_SLACK_CHANNEL_DOCKER }}
|
|
||||||
title: 🤗 Results of the transformers-pytorch-deepspeed-latest-gpu-push-ci docker build
|
|
||||||
status: ${{ job.status }}
|
|
||||||
slack_token: ${{ secrets.SLACK_CIFEEDBACK_BOT_TOKEN }}
|
|
||||||
|
|
||||||
doc-builder:
|
|
||||||
name: "Doc builder"
|
|
||||||
# Push CI doesn't need this image
|
|
||||||
if: inputs.image_postfix != '-push-ci'
|
|
||||||
runs-on:
|
|
||||||
group: aws-general-8-plus
|
|
||||||
steps:
|
|
||||||
-
|
|
||||||
name: Set up Docker Buildx
|
|
||||||
uses: docker/setup-buildx-action@v3
|
|
||||||
-
|
|
||||||
name: Check out code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
-
|
|
||||||
name: Login to DockerHub
|
|
||||||
uses: docker/login-action@v3
|
|
||||||
with:
|
|
||||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
||||||
password: ${{ secrets.DOCKERHUB_PASSWORD }}
|
|
||||||
-
|
|
||||||
name: Build and push
|
|
||||||
uses: docker/build-push-action@v5
|
|
||||||
with:
|
|
||||||
context: ./docker/transformers-doc-builder
|
|
||||||
push: true
|
|
||||||
tags: huggingface/transformers-doc-builder
|
|
||||||
|
|
||||||
- name: Post to Slack
|
|
||||||
if: always()
|
|
||||||
uses: huggingface/hf-workflows/.github/actions/post-slack@main
|
|
||||||
with:
|
|
||||||
slack_channel: ${{ secrets.CI_SLACK_CHANNEL_DOCKER }}
|
|
||||||
title: 🤗 Results of the huggingface/transformers-doc-builder docker build
|
|
||||||
status: ${{ job.status }}
|
|
||||||
slack_token: ${{ secrets.SLACK_CIFEEDBACK_BOT_TOKEN }}
|
|
||||||
|
|
||||||
latest-pytorch:
|
|
||||||
name: "Latest PyTorch [dev]"
|
|
||||||
# Push CI doesn't need this image
|
|
||||||
if: inputs.image_postfix != '-push-ci'
|
|
||||||
runs-on:
|
|
||||||
group: aws-general-8-plus
|
|
||||||
steps:
|
|
||||||
-
|
|
||||||
name: Set up Docker Buildx
|
|
||||||
uses: docker/setup-buildx-action@v3
|
|
||||||
-
|
|
||||||
name: Check out code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
-
|
|
||||||
name: Login to DockerHub
|
|
||||||
uses: docker/login-action@v3
|
|
||||||
with:
|
|
||||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
||||||
password: ${{ secrets.DOCKERHUB_PASSWORD }}
|
|
||||||
-
|
|
||||||
name: Build and push
|
|
||||||
uses: docker/build-push-action@v5
|
|
||||||
with:
|
|
||||||
context: ./docker/transformers-pytorch-gpu
|
|
||||||
build-args: |
|
|
||||||
REF=main
|
|
||||||
push: true
|
|
||||||
tags: huggingface/transformers-pytorch-gpu
|
|
||||||
|
|
||||||
- name: Post to Slack
|
|
||||||
if: always()
|
|
||||||
uses: huggingface/hf-workflows/.github/actions/post-slack@main
|
|
||||||
with:
|
|
||||||
slack_channel: ${{ secrets.CI_SLACK_CHANNEL_DOCKER }}
|
|
||||||
title: 🤗 Results of the huggingface/transformers-pytorch-gpudocker build
|
|
||||||
status: ${{ job.status }}
|
|
||||||
slack_token: ${{ secrets.SLACK_CIFEEDBACK_BOT_TOKEN }}
|
|
||||||
|
|
||||||
latest-pytorch-amd:
|
|
||||||
name: "Latest PyTorch (AMD) [dev]"
|
|
||||||
runs-on:
|
|
||||||
group: aws-general-8-plus
|
|
||||||
steps:
|
|
||||||
-
|
|
||||||
name: Set up Docker Buildx
|
|
||||||
uses: docker/setup-buildx-action@v3
|
|
||||||
-
|
|
||||||
name: Check out code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
-
|
|
||||||
name: Login to DockerHub
|
|
||||||
uses: docker/login-action@v3
|
|
||||||
with:
|
|
||||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
||||||
password: ${{ secrets.DOCKERHUB_PASSWORD }}
|
|
||||||
-
|
|
||||||
name: Build and push
|
|
||||||
uses: docker/build-push-action@v5
|
|
||||||
with:
|
|
||||||
context: ./docker/transformers-pytorch-amd-gpu
|
|
||||||
build-args: |
|
|
||||||
REF=main
|
|
||||||
push: true
|
|
||||||
tags: huggingface/transformers-pytorch-amd-gpu${{ inputs.image_postfix }}
|
|
||||||
# Push CI images still need to be re-built daily
|
|
||||||
-
|
|
||||||
name: Build and push (for Push CI) in a daily basis
|
|
||||||
# This condition allows `schedule` events, or `push` events that trigger this workflow NOT via `workflow_call`.
|
|
||||||
# The later case is useful for manual image building for debugging purpose. Use another tag in this case!
|
|
||||||
if: inputs.image_postfix != '-push-ci'
|
|
||||||
uses: docker/build-push-action@v5
|
|
||||||
with:
|
|
||||||
context: ./docker/transformers-pytorch-amd-gpu
|
|
||||||
build-args: |
|
|
||||||
REF=main
|
|
||||||
push: true
|
|
||||||
tags: huggingface/transformers-pytorch-amd-gpu-push-ci
|
|
||||||
|
|
||||||
- name: Post to Slack
|
|
||||||
if: always()
|
|
||||||
uses: huggingface/hf-workflows/.github/actions/post-slack@main
|
|
||||||
with:
|
|
||||||
slack_channel: ${{ secrets.CI_SLACK_CHANNEL_DOCKER }}
|
|
||||||
title: 🤗 Results of the huggingface/transformers-pytorch-amd-gpu-push-ci build
|
|
||||||
status: ${{ job.status }}
|
|
||||||
slack_token: ${{ secrets.SLACK_CIFEEDBACK_BOT_TOKEN }}
|
|
||||||
|
|
||||||
latest-pytorch-deepspeed-amd:
|
|
||||||
name: "PyTorch + DeepSpeed (AMD) [dev]"
|
|
||||||
runs-on:
|
|
||||||
group: aws-general-8-plus
|
|
||||||
steps:
|
|
||||||
-
|
|
||||||
name: Set up Docker Buildx
|
|
||||||
uses: docker/setup-buildx-action@v3
|
|
||||||
-
|
|
||||||
name: Check out code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
-
|
|
||||||
name: Login to DockerHub
|
|
||||||
uses: docker/login-action@v3
|
|
||||||
with:
|
|
||||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
||||||
password: ${{ secrets.DOCKERHUB_PASSWORD }}
|
|
||||||
-
|
|
||||||
name: Build and push
|
|
||||||
uses: docker/build-push-action@v5
|
|
||||||
with:
|
|
||||||
context: ./docker/transformers-pytorch-deepspeed-amd-gpu
|
|
||||||
build-args: |
|
|
||||||
REF=main
|
|
||||||
push: true
|
|
||||||
tags: huggingface/transformers-pytorch-deepspeed-amd-gpu${{ inputs.image_postfix }}
|
|
||||||
# Push CI images still need to be re-built daily
|
|
||||||
-
|
|
||||||
name: Build and push (for Push CI) in a daily basis
|
|
||||||
# This condition allows `schedule` events, or `push` events that trigger this workflow NOT via `workflow_call`.
|
|
||||||
# The later case is useful for manual image building for debugging purpose. Use another tag in this case!
|
|
||||||
if: inputs.image_postfix != '-push-ci'
|
|
||||||
uses: docker/build-push-action@v5
|
|
||||||
with:
|
|
||||||
context: ./docker/transformers-pytorch-deepspeed-amd-gpu
|
|
||||||
build-args: |
|
|
||||||
REF=main
|
|
||||||
push: true
|
|
||||||
tags: huggingface/transformers-pytorch-deepspeed-amd-gpu-push-ci
|
|
||||||
|
|
||||||
- name: Post to Slack
|
|
||||||
if: always()
|
|
||||||
uses: huggingface/hf-workflows/.github/actions/post-slack@main
|
|
||||||
with:
|
|
||||||
slack_channel: ${{ secrets.CI_SLACK_CHANNEL_DOCKER }}
|
|
||||||
title: 🤗 Results of the transformers-pytorch-deepspeed-amd-gpu build
|
|
||||||
status: ${{ job.status }}
|
|
||||||
slack_token: ${{ secrets.SLACK_CIFEEDBACK_BOT_TOKEN }}
|
|
||||||
|
|
||||||
latest-quantization-torch-docker:
|
|
||||||
name: "Latest Pytorch + Quantization [dev]"
|
|
||||||
# Push CI doesn't need this image
|
|
||||||
if: inputs.image_postfix != '-push-ci'
|
|
||||||
runs-on:
|
|
||||||
group: aws-general-8-plus
|
|
||||||
steps:
|
|
||||||
-
|
|
||||||
name: Set up Docker Buildx
|
|
||||||
uses: docker/setup-buildx-action@v3
|
|
||||||
-
|
|
||||||
name: Check out code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
-
|
|
||||||
name: Login to DockerHub
|
|
||||||
uses: docker/login-action@v3
|
|
||||||
with:
|
|
||||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
||||||
password: ${{ secrets.DOCKERHUB_PASSWORD }}
|
|
||||||
-
|
|
||||||
name: Build and push
|
|
||||||
uses: docker/build-push-action@v5
|
|
||||||
with:
|
|
||||||
context: ./docker/transformers-quantization-latest-gpu
|
|
||||||
build-args: |
|
|
||||||
REF=main
|
|
||||||
push: true
|
|
||||||
tags: huggingface/transformers-quantization-latest-gpu${{ inputs.image_postfix }}
|
|
||||||
|
|
||||||
- name: Post to Slack
|
|
||||||
if: always()
|
|
||||||
uses: huggingface/hf-workflows/.github/actions/post-slack@main
|
|
||||||
with:
|
|
||||||
slack_channel: ${{ secrets.CI_SLACK_CHANNEL_DOCKER }}
|
|
||||||
title: 🤗 Results of the transformers-quantization-latest-gpu build
|
|
||||||
status: ${{ job.status }}
|
|
||||||
slack_token: ${{ secrets.SLACK_CIFEEDBACK_BOT_TOKEN }}
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user