mirror of
https://github.com/huggingface/transformers.git
synced 2025-08-01 02:31:11 +06:00
Clean imports to fix test_fetcher (#17531)
* Clean imports to fix test_fetcher * Add dependencies printer * Update utils/tests_fetcher.py Co-authored-by: lewtun <lewis.c.tunstall@gmail.com> * Fix Perceiver import Co-authored-by: lewtun <lewis.c.tunstall@gmail.com>
This commit is contained in:
parent
254d9c068e
commit
c4e58cd8ba
@ -1177,7 +1177,7 @@ class TFPreTrainedModel(tf.keras.Model, TFModelUtilsMixin, TFGenerationMixin, Pu
|
|||||||
dataset_args: Optional[Union[str, List[str]]] = None,
|
dataset_args: Optional[Union[str, List[str]]] = None,
|
||||||
):
|
):
|
||||||
# Avoids a circular import by doing this when necessary.
|
# Avoids a circular import by doing this when necessary.
|
||||||
from .modelcard import TrainingSummary
|
from .modelcard import TrainingSummary # tests_ignore
|
||||||
|
|
||||||
training_summary = TrainingSummary.from_keras(
|
training_summary = TrainingSummary.from_keras(
|
||||||
self,
|
self,
|
||||||
|
@ -27,7 +27,7 @@ from ...utils import (
|
|||||||
|
|
||||||
|
|
||||||
_import_structure = {
|
_import_structure = {
|
||||||
"configuration_perceiver": ["PERCEIVER_PRETRAINED_CONFIG_ARCHIVE_MAP", "PerceiverConfig"],
|
"configuration_perceiver": ["PERCEIVER_PRETRAINED_CONFIG_ARCHIVE_MAP", "PerceiverConfig", "PerceiverOnnxConfig"],
|
||||||
"tokenization_perceiver": ["PerceiverTokenizer"],
|
"tokenization_perceiver": ["PerceiverTokenizer"],
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -61,7 +61,7 @@ else:
|
|||||||
|
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from .configuration_perceiver import PERCEIVER_PRETRAINED_CONFIG_ARCHIVE_MAP, PerceiverConfig
|
from .configuration_perceiver import PERCEIVER_PRETRAINED_CONFIG_ARCHIVE_MAP, PerceiverConfig, PerceiverOnnxConfig
|
||||||
from .tokenization_perceiver import PerceiverTokenizer
|
from .tokenization_perceiver import PerceiverTokenizer
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
@ -1,39 +1,9 @@
|
|||||||
from functools import partial, reduce
|
from functools import partial, reduce
|
||||||
from typing import Callable, Dict, Optional, Tuple, Type, Union
|
from typing import Callable, Dict, Optional, Tuple, Type, Union
|
||||||
|
|
||||||
|
import transformers
|
||||||
|
|
||||||
from .. import PretrainedConfig, PreTrainedModel, TFPreTrainedModel, is_tf_available, is_torch_available
|
from .. import PretrainedConfig, PreTrainedModel, TFPreTrainedModel, is_tf_available, is_torch_available
|
||||||
from ..models.albert import AlbertOnnxConfig
|
|
||||||
from ..models.bart import BartOnnxConfig
|
|
||||||
from ..models.beit import BeitOnnxConfig
|
|
||||||
from ..models.bert import BertOnnxConfig
|
|
||||||
from ..models.big_bird import BigBirdOnnxConfig
|
|
||||||
from ..models.bigbird_pegasus import BigBirdPegasusOnnxConfig
|
|
||||||
from ..models.blenderbot import BlenderbotOnnxConfig
|
|
||||||
from ..models.blenderbot_small import BlenderbotSmallOnnxConfig
|
|
||||||
from ..models.camembert import CamembertOnnxConfig
|
|
||||||
from ..models.convbert import ConvBertOnnxConfig
|
|
||||||
from ..models.data2vec import Data2VecTextOnnxConfig
|
|
||||||
from ..models.deit import DeiTOnnxConfig
|
|
||||||
from ..models.distilbert import DistilBertOnnxConfig
|
|
||||||
from ..models.electra import ElectraOnnxConfig
|
|
||||||
from ..models.flaubert import FlaubertOnnxConfig
|
|
||||||
from ..models.gpt2 import GPT2OnnxConfig
|
|
||||||
from ..models.gpt_neo import GPTNeoOnnxConfig
|
|
||||||
from ..models.gptj import GPTJOnnxConfig
|
|
||||||
from ..models.ibert import IBertOnnxConfig
|
|
||||||
from ..models.layoutlm import LayoutLMOnnxConfig
|
|
||||||
from ..models.m2m_100 import M2M100OnnxConfig
|
|
||||||
from ..models.marian import MarianOnnxConfig
|
|
||||||
from ..models.mbart import MBartOnnxConfig
|
|
||||||
from ..models.mobilebert import MobileBertOnnxConfig
|
|
||||||
from ..models.perceiver.configuration_perceiver import PerceiverOnnxConfig
|
|
||||||
from ..models.roberta import RobertaOnnxConfig
|
|
||||||
from ..models.roformer import RoFormerOnnxConfig
|
|
||||||
from ..models.squeezebert import SqueezeBertOnnxConfig
|
|
||||||
from ..models.t5 import T5OnnxConfig
|
|
||||||
from ..models.vit import ViTOnnxConfig
|
|
||||||
from ..models.xlm import XLMOnnxConfig
|
|
||||||
from ..models.xlm_roberta import XLMRobertaOnnxConfig
|
|
||||||
from ..utils import logging
|
from ..utils import logging
|
||||||
from .config import OnnxConfig
|
from .config import OnnxConfig
|
||||||
|
|
||||||
@ -72,14 +42,14 @@ if not is_torch_available() and not is_tf_available():
|
|||||||
|
|
||||||
|
|
||||||
def supported_features_mapping(
|
def supported_features_mapping(
|
||||||
*supported_features: str, onnx_config_cls: Type[OnnxConfig] = None
|
*supported_features: str, onnx_config_cls: str = None
|
||||||
) -> Dict[str, Callable[[PretrainedConfig], OnnxConfig]]:
|
) -> Dict[str, Callable[[PretrainedConfig], OnnxConfig]]:
|
||||||
"""
|
"""
|
||||||
Generate the mapping between supported the features and their corresponding OnnxConfig for a given model.
|
Generate the mapping between supported the features and their corresponding OnnxConfig for a given model.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
*supported_features: The names of the supported features.
|
*supported_features: The names of the supported features.
|
||||||
onnx_config_cls: The OnnxConfig class corresponding to the model.
|
onnx_config_cls: The OnnxConfig full name corresponding to the model.
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
The dictionary mapping a feature to an OnnxConfig constructor.
|
The dictionary mapping a feature to an OnnxConfig constructor.
|
||||||
@ -87,13 +57,16 @@ def supported_features_mapping(
|
|||||||
if onnx_config_cls is None:
|
if onnx_config_cls is None:
|
||||||
raise ValueError("A OnnxConfig class must be provided")
|
raise ValueError("A OnnxConfig class must be provided")
|
||||||
|
|
||||||
|
config_cls = transformers
|
||||||
|
for attr_name in onnx_config_cls.split("."):
|
||||||
|
config_cls = getattr(config_cls, attr_name)
|
||||||
mapping = {}
|
mapping = {}
|
||||||
for feature in supported_features:
|
for feature in supported_features:
|
||||||
if "-with-past" in feature:
|
if "-with-past" in feature:
|
||||||
task = feature.replace("-with-past", "")
|
task = feature.replace("-with-past", "")
|
||||||
mapping[feature] = partial(onnx_config_cls.with_past, task=task)
|
mapping[feature] = partial(config_cls.with_past, task=task)
|
||||||
else:
|
else:
|
||||||
mapping[feature] = partial(onnx_config_cls.from_model_config, task=feature)
|
mapping[feature] = partial(config_cls.from_model_config, task=feature)
|
||||||
|
|
||||||
return mapping
|
return mapping
|
||||||
|
|
||||||
@ -135,7 +108,7 @@ class FeaturesManager:
|
|||||||
"multiple-choice",
|
"multiple-choice",
|
||||||
"token-classification",
|
"token-classification",
|
||||||
"question-answering",
|
"question-answering",
|
||||||
onnx_config_cls=AlbertOnnxConfig,
|
onnx_config_cls="models.albert.AlbertOnnxConfig",
|
||||||
),
|
),
|
||||||
"bart": supported_features_mapping(
|
"bart": supported_features_mapping(
|
||||||
"default",
|
"default",
|
||||||
@ -146,10 +119,12 @@ class FeaturesManager:
|
|||||||
"seq2seq-lm-with-past",
|
"seq2seq-lm-with-past",
|
||||||
"sequence-classification",
|
"sequence-classification",
|
||||||
"question-answering",
|
"question-answering",
|
||||||
onnx_config_cls=BartOnnxConfig,
|
onnx_config_cls="models.bart.BartOnnxConfig",
|
||||||
),
|
),
|
||||||
# BEiT cannot be used with the masked image modeling autoclass, so this feature is excluded here
|
# BEiT cannot be used with the masked image modeling autoclass, so this feature is excluded here
|
||||||
"beit": supported_features_mapping("default", "image-classification", onnx_config_cls=BeitOnnxConfig),
|
"beit": supported_features_mapping(
|
||||||
|
"default", "image-classification", onnx_config_cls="models.beit.BeitOnnxConfig"
|
||||||
|
),
|
||||||
"bert": supported_features_mapping(
|
"bert": supported_features_mapping(
|
||||||
"default",
|
"default",
|
||||||
"masked-lm",
|
"masked-lm",
|
||||||
@ -158,7 +133,7 @@ class FeaturesManager:
|
|||||||
"multiple-choice",
|
"multiple-choice",
|
||||||
"token-classification",
|
"token-classification",
|
||||||
"question-answering",
|
"question-answering",
|
||||||
onnx_config_cls=BertOnnxConfig,
|
onnx_config_cls="models.bert.BertOnnxConfig",
|
||||||
),
|
),
|
||||||
"big-bird": supported_features_mapping(
|
"big-bird": supported_features_mapping(
|
||||||
"default",
|
"default",
|
||||||
@ -168,7 +143,7 @@ class FeaturesManager:
|
|||||||
"multiple-choice",
|
"multiple-choice",
|
||||||
"token-classification",
|
"token-classification",
|
||||||
"question-answering",
|
"question-answering",
|
||||||
onnx_config_cls=BigBirdOnnxConfig,
|
onnx_config_cls="models.big_bird.BigBirdOnnxConfig",
|
||||||
),
|
),
|
||||||
"bigbird-pegasus": supported_features_mapping(
|
"bigbird-pegasus": supported_features_mapping(
|
||||||
"default",
|
"default",
|
||||||
@ -179,7 +154,7 @@ class FeaturesManager:
|
|||||||
"seq2seq-lm-with-past",
|
"seq2seq-lm-with-past",
|
||||||
"sequence-classification",
|
"sequence-classification",
|
||||||
"question-answering",
|
"question-answering",
|
||||||
onnx_config_cls=BigBirdPegasusOnnxConfig,
|
onnx_config_cls="models.bigbird_pegasus.BigBirdPegasusOnnxConfig",
|
||||||
),
|
),
|
||||||
"blenderbot": supported_features_mapping(
|
"blenderbot": supported_features_mapping(
|
||||||
"default",
|
"default",
|
||||||
@ -188,7 +163,7 @@ class FeaturesManager:
|
|||||||
"causal-lm-with-past",
|
"causal-lm-with-past",
|
||||||
"seq2seq-lm",
|
"seq2seq-lm",
|
||||||
"seq2seq-lm-with-past",
|
"seq2seq-lm-with-past",
|
||||||
onnx_config_cls=BlenderbotOnnxConfig,
|
onnx_config_cls="models.blenderbot.BlenderbotOnnxConfig",
|
||||||
),
|
),
|
||||||
"blenderbot-small": supported_features_mapping(
|
"blenderbot-small": supported_features_mapping(
|
||||||
"default",
|
"default",
|
||||||
@ -197,7 +172,7 @@ class FeaturesManager:
|
|||||||
"causal-lm-with-past",
|
"causal-lm-with-past",
|
||||||
"seq2seq-lm",
|
"seq2seq-lm",
|
||||||
"seq2seq-lm-with-past",
|
"seq2seq-lm-with-past",
|
||||||
onnx_config_cls=BlenderbotSmallOnnxConfig,
|
onnx_config_cls="models.blenderbot_small.BlenderbotSmallOnnxConfig",
|
||||||
),
|
),
|
||||||
"camembert": supported_features_mapping(
|
"camembert": supported_features_mapping(
|
||||||
"default",
|
"default",
|
||||||
@ -207,7 +182,7 @@ class FeaturesManager:
|
|||||||
"multiple-choice",
|
"multiple-choice",
|
||||||
"token-classification",
|
"token-classification",
|
||||||
"question-answering",
|
"question-answering",
|
||||||
onnx_config_cls=CamembertOnnxConfig,
|
onnx_config_cls="models.camembert.CamembertOnnxConfig",
|
||||||
),
|
),
|
||||||
"convbert": supported_features_mapping(
|
"convbert": supported_features_mapping(
|
||||||
"default",
|
"default",
|
||||||
@ -216,7 +191,7 @@ class FeaturesManager:
|
|||||||
"multiple-choice",
|
"multiple-choice",
|
||||||
"token-classification",
|
"token-classification",
|
||||||
"question-answering",
|
"question-answering",
|
||||||
onnx_config_cls=ConvBertOnnxConfig,
|
onnx_config_cls="models.convbert.ConvBertOnnxConfig",
|
||||||
),
|
),
|
||||||
"data2vec-text": supported_features_mapping(
|
"data2vec-text": supported_features_mapping(
|
||||||
"default",
|
"default",
|
||||||
@ -225,10 +200,10 @@ class FeaturesManager:
|
|||||||
"multiple-choice",
|
"multiple-choice",
|
||||||
"token-classification",
|
"token-classification",
|
||||||
"question-answering",
|
"question-answering",
|
||||||
onnx_config_cls=Data2VecTextOnnxConfig,
|
onnx_config_cls="models.data2vec.Data2VecTextOnnxConfig",
|
||||||
),
|
),
|
||||||
"deit": supported_features_mapping(
|
"deit": supported_features_mapping(
|
||||||
"default", "image-classification", "masked-im", onnx_config_cls=DeiTOnnxConfig
|
"default", "image-classification", "masked-im", onnx_config_cls="models.deit.DeiTOnnxConfig"
|
||||||
),
|
),
|
||||||
"distilbert": supported_features_mapping(
|
"distilbert": supported_features_mapping(
|
||||||
"default",
|
"default",
|
||||||
@ -237,7 +212,7 @@ class FeaturesManager:
|
|||||||
"multiple-choice",
|
"multiple-choice",
|
||||||
"token-classification",
|
"token-classification",
|
||||||
"question-answering",
|
"question-answering",
|
||||||
onnx_config_cls=DistilBertOnnxConfig,
|
onnx_config_cls="models.distilbert.DistilBertOnnxConfig",
|
||||||
),
|
),
|
||||||
"electra": supported_features_mapping(
|
"electra": supported_features_mapping(
|
||||||
"default",
|
"default",
|
||||||
@ -247,7 +222,7 @@ class FeaturesManager:
|
|||||||
"multiple-choice",
|
"multiple-choice",
|
||||||
"token-classification",
|
"token-classification",
|
||||||
"question-answering",
|
"question-answering",
|
||||||
onnx_config_cls=ElectraOnnxConfig,
|
onnx_config_cls="models.electra.ElectraOnnxConfig",
|
||||||
),
|
),
|
||||||
"flaubert": supported_features_mapping(
|
"flaubert": supported_features_mapping(
|
||||||
"default",
|
"default",
|
||||||
@ -257,7 +232,7 @@ class FeaturesManager:
|
|||||||
"multiple-choice",
|
"multiple-choice",
|
||||||
"token-classification",
|
"token-classification",
|
||||||
"question-answering",
|
"question-answering",
|
||||||
onnx_config_cls=FlaubertOnnxConfig,
|
onnx_config_cls="models.flaubert.FlaubertOnnxConfig",
|
||||||
),
|
),
|
||||||
"gpt2": supported_features_mapping(
|
"gpt2": supported_features_mapping(
|
||||||
"default",
|
"default",
|
||||||
@ -266,7 +241,7 @@ class FeaturesManager:
|
|||||||
"causal-lm-with-past",
|
"causal-lm-with-past",
|
||||||
"sequence-classification",
|
"sequence-classification",
|
||||||
"token-classification",
|
"token-classification",
|
||||||
onnx_config_cls=GPT2OnnxConfig,
|
onnx_config_cls="models.gpt2.GPT2OnnxConfig",
|
||||||
),
|
),
|
||||||
"gptj": supported_features_mapping(
|
"gptj": supported_features_mapping(
|
||||||
"default",
|
"default",
|
||||||
@ -275,7 +250,7 @@ class FeaturesManager:
|
|||||||
"causal-lm-with-past",
|
"causal-lm-with-past",
|
||||||
"question-answering",
|
"question-answering",
|
||||||
"sequence-classification",
|
"sequence-classification",
|
||||||
onnx_config_cls=GPTJOnnxConfig,
|
onnx_config_cls="models.gptj.GPTJOnnxConfig",
|
||||||
),
|
),
|
||||||
"gpt-neo": supported_features_mapping(
|
"gpt-neo": supported_features_mapping(
|
||||||
"default",
|
"default",
|
||||||
@ -283,7 +258,7 @@ class FeaturesManager:
|
|||||||
"causal-lm",
|
"causal-lm",
|
||||||
"causal-lm-with-past",
|
"causal-lm-with-past",
|
||||||
"sequence-classification",
|
"sequence-classification",
|
||||||
onnx_config_cls=GPTNeoOnnxConfig,
|
onnx_config_cls="models.gpt_neo.GPTNeoOnnxConfig",
|
||||||
),
|
),
|
||||||
"ibert": supported_features_mapping(
|
"ibert": supported_features_mapping(
|
||||||
"default",
|
"default",
|
||||||
@ -292,14 +267,14 @@ class FeaturesManager:
|
|||||||
"multiple-choice",
|
"multiple-choice",
|
||||||
"token-classification",
|
"token-classification",
|
||||||
"question-answering",
|
"question-answering",
|
||||||
onnx_config_cls=IBertOnnxConfig,
|
onnx_config_cls="models.ibert.IBertOnnxConfig",
|
||||||
),
|
),
|
||||||
"layoutlm": supported_features_mapping(
|
"layoutlm": supported_features_mapping(
|
||||||
"default",
|
"default",
|
||||||
"masked-lm",
|
"masked-lm",
|
||||||
"sequence-classification",
|
"sequence-classification",
|
||||||
"token-classification",
|
"token-classification",
|
||||||
onnx_config_cls=LayoutLMOnnxConfig,
|
onnx_config_cls="models.layoutlm.LayoutLMOnnxConfig",
|
||||||
),
|
),
|
||||||
"marian": supported_features_mapping(
|
"marian": supported_features_mapping(
|
||||||
"default",
|
"default",
|
||||||
@ -308,7 +283,7 @@ class FeaturesManager:
|
|||||||
"seq2seq-lm-with-past",
|
"seq2seq-lm-with-past",
|
||||||
"causal-lm",
|
"causal-lm",
|
||||||
"causal-lm-with-past",
|
"causal-lm-with-past",
|
||||||
onnx_config_cls=MarianOnnxConfig,
|
onnx_config_cls="models.marian.MarianOnnxConfig",
|
||||||
),
|
),
|
||||||
"mbart": supported_features_mapping(
|
"mbart": supported_features_mapping(
|
||||||
"default",
|
"default",
|
||||||
@ -319,7 +294,7 @@ class FeaturesManager:
|
|||||||
"seq2seq-lm-with-past",
|
"seq2seq-lm-with-past",
|
||||||
"sequence-classification",
|
"sequence-classification",
|
||||||
"question-answering",
|
"question-answering",
|
||||||
onnx_config_cls=MBartOnnxConfig,
|
onnx_config_cls="models.mbart.MBartOnnxConfig",
|
||||||
),
|
),
|
||||||
"mobilebert": supported_features_mapping(
|
"mobilebert": supported_features_mapping(
|
||||||
"default",
|
"default",
|
||||||
@ -328,16 +303,20 @@ class FeaturesManager:
|
|||||||
"multiple-choice",
|
"multiple-choice",
|
||||||
"token-classification",
|
"token-classification",
|
||||||
"question-answering",
|
"question-answering",
|
||||||
onnx_config_cls=MobileBertOnnxConfig,
|
onnx_config_cls="models.mobilebert.MobileBertOnnxConfig",
|
||||||
),
|
),
|
||||||
"m2m-100": supported_features_mapping(
|
"m2m-100": supported_features_mapping(
|
||||||
"default", "default-with-past", "seq2seq-lm", "seq2seq-lm-with-past", onnx_config_cls=M2M100OnnxConfig
|
"default",
|
||||||
|
"default-with-past",
|
||||||
|
"seq2seq-lm",
|
||||||
|
"seq2seq-lm-with-past",
|
||||||
|
onnx_config_cls="models.m2m_100.M2M100OnnxConfig",
|
||||||
),
|
),
|
||||||
"perceiver": supported_features_mapping(
|
"perceiver": supported_features_mapping(
|
||||||
"image-classification",
|
"image-classification",
|
||||||
"masked-lm",
|
"masked-lm",
|
||||||
"sequence-classification",
|
"sequence-classification",
|
||||||
onnx_config_cls=PerceiverOnnxConfig,
|
onnx_config_cls="models.perceiver.PerceiverOnnxConfig",
|
||||||
),
|
),
|
||||||
"roberta": supported_features_mapping(
|
"roberta": supported_features_mapping(
|
||||||
"default",
|
"default",
|
||||||
@ -347,7 +326,7 @@ class FeaturesManager:
|
|||||||
"multiple-choice",
|
"multiple-choice",
|
||||||
"token-classification",
|
"token-classification",
|
||||||
"question-answering",
|
"question-answering",
|
||||||
onnx_config_cls=RobertaOnnxConfig,
|
onnx_config_cls="models.roberta.RobertaOnnxConfig",
|
||||||
),
|
),
|
||||||
"roformer": supported_features_mapping(
|
"roformer": supported_features_mapping(
|
||||||
"default",
|
"default",
|
||||||
@ -358,7 +337,7 @@ class FeaturesManager:
|
|||||||
"multiple-choice",
|
"multiple-choice",
|
||||||
"question-answering",
|
"question-answering",
|
||||||
"token-classification",
|
"token-classification",
|
||||||
onnx_config_cls=RoFormerOnnxConfig,
|
onnx_config_cls="models.roformer.RoFormerOnnxConfig",
|
||||||
),
|
),
|
||||||
"squeezebert": supported_features_mapping(
|
"squeezebert": supported_features_mapping(
|
||||||
"default",
|
"default",
|
||||||
@ -367,13 +346,17 @@ class FeaturesManager:
|
|||||||
"multiple-choice",
|
"multiple-choice",
|
||||||
"token-classification",
|
"token-classification",
|
||||||
"question-answering",
|
"question-answering",
|
||||||
onnx_config_cls=SqueezeBertOnnxConfig,
|
onnx_config_cls="models.squeezebert.SqueezeBertOnnxConfig",
|
||||||
),
|
),
|
||||||
"t5": supported_features_mapping(
|
"t5": supported_features_mapping(
|
||||||
"default", "default-with-past", "seq2seq-lm", "seq2seq-lm-with-past", onnx_config_cls=T5OnnxConfig
|
"default",
|
||||||
|
"default-with-past",
|
||||||
|
"seq2seq-lm",
|
||||||
|
"seq2seq-lm-with-past",
|
||||||
|
onnx_config_cls="models.t5.T5OnnxConfig",
|
||||||
),
|
),
|
||||||
"vit": supported_features_mapping(
|
"vit": supported_features_mapping(
|
||||||
"default", "image-classification", "masked-im", onnx_config_cls=ViTOnnxConfig
|
"default", "image-classification", "masked-im", onnx_config_cls="models.vit.ViTOnnxConfig"
|
||||||
),
|
),
|
||||||
"xlm": supported_features_mapping(
|
"xlm": supported_features_mapping(
|
||||||
"default",
|
"default",
|
||||||
@ -383,7 +366,7 @@ class FeaturesManager:
|
|||||||
"multiple-choice",
|
"multiple-choice",
|
||||||
"token-classification",
|
"token-classification",
|
||||||
"question-answering",
|
"question-answering",
|
||||||
onnx_config_cls=XLMOnnxConfig,
|
onnx_config_cls="models.xlm.XLMOnnxConfig",
|
||||||
),
|
),
|
||||||
"xlm-roberta": supported_features_mapping(
|
"xlm-roberta": supported_features_mapping(
|
||||||
"default",
|
"default",
|
||||||
@ -393,7 +376,7 @@ class FeaturesManager:
|
|||||||
"multiple-choice",
|
"multiple-choice",
|
||||||
"token-classification",
|
"token-classification",
|
||||||
"question-answering",
|
"question-answering",
|
||||||
onnx_config_cls=XLMRobertaOnnxConfig,
|
onnx_config_cls="models.xlm_roberta.XLMRobertaOnnxConfig",
|
||||||
),
|
),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -242,6 +242,67 @@ def get_test_dependencies(test_fname):
|
|||||||
return [f for f in [*parent_imports, *current_dir_imports] if os.path.isfile(f)]
|
return [f for f in [*parent_imports, *current_dir_imports] if os.path.isfile(f)]
|
||||||
|
|
||||||
|
|
||||||
|
def create_reverse_dependency_tree():
|
||||||
|
"""
|
||||||
|
Create a list of all edges (a, b) which mean that modifying a impacts b with a going over all module and test files.
|
||||||
|
"""
|
||||||
|
modules = [
|
||||||
|
str(f.relative_to(PATH_TO_TRANFORMERS))
|
||||||
|
for f in (Path(PATH_TO_TRANFORMERS) / "src/transformers").glob("**/*.py")
|
||||||
|
]
|
||||||
|
module_edges = [(d, m) for m in modules for d in get_module_dependencies(m)]
|
||||||
|
|
||||||
|
tests = [str(f.relative_to(PATH_TO_TRANFORMERS)) for f in (Path(PATH_TO_TRANFORMERS) / "tests").glob("**/*.py")]
|
||||||
|
test_edges = [(d, t) for t in tests for d in get_test_dependencies(t)]
|
||||||
|
|
||||||
|
return module_edges + test_edges
|
||||||
|
|
||||||
|
|
||||||
|
def get_tree_starting_at(module, edges):
|
||||||
|
"""
|
||||||
|
Returns the tree starting at a given module following all edges in the following format: [module, [list of edges
|
||||||
|
starting at module], [list of edges starting at the preceding level], ...]
|
||||||
|
"""
|
||||||
|
vertices_seen = [module]
|
||||||
|
new_edges = [edge for edge in edges if edge[0] == module and edge[1] != module]
|
||||||
|
tree = [module]
|
||||||
|
while len(new_edges) > 0:
|
||||||
|
tree.append(new_edges)
|
||||||
|
final_vertices = list(set(edge[1] for edge in new_edges))
|
||||||
|
vertices_seen.extend(final_vertices)
|
||||||
|
new_edges = [edge for edge in edges if edge[0] in final_vertices and edge[1] not in vertices_seen]
|
||||||
|
|
||||||
|
return tree
|
||||||
|
|
||||||
|
|
||||||
|
def print_tree_deps_of(module, all_edges=None):
|
||||||
|
"""
|
||||||
|
Prints the tree of modules depending on a given module.
|
||||||
|
"""
|
||||||
|
if all_edges is None:
|
||||||
|
all_edges = create_reverse_dependency_tree()
|
||||||
|
tree = get_tree_starting_at(module, all_edges)
|
||||||
|
|
||||||
|
# The list of lines is a list of tuples (line_to_be_printed, module)
|
||||||
|
# Keeping the modules lets us know where to insert each new lines in the list.
|
||||||
|
lines = [(tree[0], tree[0])]
|
||||||
|
for index in range(1, len(tree)):
|
||||||
|
edges = tree[index]
|
||||||
|
start_edges = set([edge[0] for edge in edges])
|
||||||
|
|
||||||
|
for start in start_edges:
|
||||||
|
end_edges = set([edge[1] for edge in edges if edge[0] == start])
|
||||||
|
# We will insert all those edges just after the line showing start.
|
||||||
|
pos = 0
|
||||||
|
while lines[pos][1] != start:
|
||||||
|
pos += 1
|
||||||
|
lines = lines[: pos + 1] + [(" " * (2 * index) + end, end) for end in end_edges] + lines[pos + 1 :]
|
||||||
|
|
||||||
|
for line in lines:
|
||||||
|
# We don't print the refs that where just here to help build lines.
|
||||||
|
print(line[0])
|
||||||
|
|
||||||
|
|
||||||
def create_reverse_dependency_map():
|
def create_reverse_dependency_map():
|
||||||
"""
|
"""
|
||||||
Create the dependency map from module/test filename to the list of modules/tests that depend on it (even
|
Create the dependency map from module/test filename to the list of modules/tests that depend on it (even
|
||||||
@ -585,8 +646,16 @@ if __name__ == "__main__":
|
|||||||
default=["tests"],
|
default=["tests"],
|
||||||
help="Only keep the test files matching one of those filters.",
|
help="Only keep the test files matching one of those filters.",
|
||||||
)
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--print_dependencies_of",
|
||||||
|
type=str,
|
||||||
|
help="Will only print the tree of modules depending on the file passed.",
|
||||||
|
default=None,
|
||||||
|
)
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
if args.sanity_check:
|
if args.print_dependencies_of is not None:
|
||||||
|
print_tree_deps_of(args.print_dependencies_of)
|
||||||
|
elif args.sanity_check:
|
||||||
sanity_check()
|
sanity_check()
|
||||||
else:
|
else:
|
||||||
repo = Repo(PATH_TO_TRANFORMERS)
|
repo = Repo(PATH_TO_TRANFORMERS)
|
||||||
|
Loading…
Reference in New Issue
Block a user