"scripts/ci/ci_start_disaggregation_servers.sh" did not exist on "1f76fc874759c257b4e928b9847a8da8e8ea2b30"
configuration_auto.py 18.8 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# coding=utf-8
# Copyright 2018 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.
15
""" Auto Config class. """
16

17
import re
18
from collections import OrderedDict
19

Sylvain Gugger's avatar
Sylvain Gugger committed
20
21
22
23
24
25
from ...configuration_utils import PretrainedConfig
from ..albert.configuration_albert import ALBERT_PRETRAINED_CONFIG_ARCHIVE_MAP, AlbertConfig
from ..bart.configuration_bart import BART_PRETRAINED_CONFIG_ARCHIVE_MAP, BartConfig
from ..bert.configuration_bert import BERT_PRETRAINED_CONFIG_ARCHIVE_MAP, BertConfig
from ..bert_generation.configuration_bert_generation import BertGenerationConfig
from ..blenderbot.configuration_blenderbot import BLENDERBOT_PRETRAINED_CONFIG_ARCHIVE_MAP, BlenderbotConfig
26
27
28
29
from ..blenderbot_small.configuration_blenderbot_small import (
    BLENDERBOT_SMALL_PRETRAINED_CONFIG_ARCHIVE_MAP,
    BlenderbotSmallConfig,
)
Sylvain Gugger's avatar
Sylvain Gugger committed
30
from ..camembert.configuration_camembert import CAMEMBERT_PRETRAINED_CONFIG_ARCHIVE_MAP, CamembertConfig
abhishek thakur's avatar
abhishek thakur committed
31
from ..convbert.configuration_convbert import CONVBERT_PRETRAINED_CONFIG_ARCHIVE_MAP, ConvBertConfig
Sylvain Gugger's avatar
Sylvain Gugger committed
32
33
from ..ctrl.configuration_ctrl import CTRL_PRETRAINED_CONFIG_ARCHIVE_MAP, CTRLConfig
from ..deberta.configuration_deberta import DEBERTA_PRETRAINED_CONFIG_ARCHIVE_MAP, DebertaConfig
34
from ..deberta_v2.configuration_deberta_v2 import DEBERTA_V2_PRETRAINED_CONFIG_ARCHIVE_MAP, DebertaV2Config
Sylvain Gugger's avatar
Sylvain Gugger committed
35
36
37
38
39
40
41
42
from ..distilbert.configuration_distilbert import DISTILBERT_PRETRAINED_CONFIG_ARCHIVE_MAP, DistilBertConfig
from ..dpr.configuration_dpr import DPR_PRETRAINED_CONFIG_ARCHIVE_MAP, DPRConfig
from ..electra.configuration_electra import ELECTRA_PRETRAINED_CONFIG_ARCHIVE_MAP, ElectraConfig
from ..encoder_decoder.configuration_encoder_decoder import EncoderDecoderConfig
from ..flaubert.configuration_flaubert import FLAUBERT_PRETRAINED_CONFIG_ARCHIVE_MAP, FlaubertConfig
from ..fsmt.configuration_fsmt import FSMT_PRETRAINED_CONFIG_ARCHIVE_MAP, FSMTConfig
from ..funnel.configuration_funnel import FUNNEL_PRETRAINED_CONFIG_ARCHIVE_MAP, FunnelConfig
from ..gpt2.configuration_gpt2 import GPT2_PRETRAINED_CONFIG_ARCHIVE_MAP, GPT2Config
Sehoon Kim's avatar
Sehoon Kim committed
43
from ..ibert.configuration_ibert import IBERT_PRETRAINED_CONFIG_ARCHIVE_MAP, IBertConfig
Sylvain Gugger's avatar
Sylvain Gugger committed
44
from ..layoutlm.configuration_layoutlm import LAYOUTLM_PRETRAINED_CONFIG_ARCHIVE_MAP, LayoutLMConfig
Patrick von Platen's avatar
Patrick von Platen committed
45
from ..led.configuration_led import LED_PRETRAINED_CONFIG_ARCHIVE_MAP, LEDConfig
Sylvain Gugger's avatar
Sylvain Gugger committed
46
47
48
49
50
from ..longformer.configuration_longformer import LONGFORMER_PRETRAINED_CONFIG_ARCHIVE_MAP, LongformerConfig
from ..lxmert.configuration_lxmert import LXMERT_PRETRAINED_CONFIG_ARCHIVE_MAP, LxmertConfig
from ..marian.configuration_marian import MarianConfig
from ..mbart.configuration_mbart import MBART_PRETRAINED_CONFIG_ARCHIVE_MAP, MBartConfig
from ..mobilebert.configuration_mobilebert import MobileBertConfig
StillKeepTry's avatar
StillKeepTry committed
51
from ..mpnet.configuration_mpnet import MPNET_PRETRAINED_CONFIG_ARCHIVE_MAP, MPNetConfig
Patrick von Platen's avatar
Patrick von Platen committed
52
from ..mt5.configuration_mt5 import MT5Config
Sylvain Gugger's avatar
Sylvain Gugger committed
53
54
55
56
57
58
59
60
61
from ..openai.configuration_openai import OPENAI_GPT_PRETRAINED_CONFIG_ARCHIVE_MAP, OpenAIGPTConfig
from ..pegasus.configuration_pegasus import PegasusConfig
from ..prophetnet.configuration_prophetnet import PROPHETNET_PRETRAINED_CONFIG_ARCHIVE_MAP, ProphetNetConfig
from ..rag.configuration_rag import RagConfig
from ..reformer.configuration_reformer import ReformerConfig
from ..retribert.configuration_retribert import RETRIBERT_PRETRAINED_CONFIG_ARCHIVE_MAP, RetriBertConfig
from ..roberta.configuration_roberta import ROBERTA_PRETRAINED_CONFIG_ARCHIVE_MAP, RobertaConfig
from ..squeezebert.configuration_squeezebert import SQUEEZEBERT_PRETRAINED_CONFIG_ARCHIVE_MAP, SqueezeBertConfig
from ..t5.configuration_t5 import T5_PRETRAINED_CONFIG_ARCHIVE_MAP, T5Config
NielsRogge's avatar
NielsRogge committed
62
from ..tapas.configuration_tapas import TAPAS_PRETRAINED_CONFIG_ARCHIVE_MAP, TapasConfig
Sylvain Gugger's avatar
Sylvain Gugger committed
63
from ..transfo_xl.configuration_transfo_xl import TRANSFO_XL_PRETRAINED_CONFIG_ARCHIVE_MAP, TransfoXLConfig
Patrick von Platen's avatar
Patrick von Platen committed
64
from ..wav2vec2.configuration_wav2vec2 import WAV_2_VEC_2_PRETRAINED_CONFIG_ARCHIVE_MAP, Wav2Vec2Config
Sylvain Gugger's avatar
Sylvain Gugger committed
65
66
67
68
69
70
71
from ..xlm.configuration_xlm import XLM_PRETRAINED_CONFIG_ARCHIVE_MAP, XLMConfig
from ..xlm_prophetnet.configuration_xlm_prophetnet import (
    XLM_PROPHETNET_PRETRAINED_CONFIG_ARCHIVE_MAP,
    XLMProphetNetConfig,
)
from ..xlm_roberta.configuration_xlm_roberta import XLM_ROBERTA_PRETRAINED_CONFIG_ARCHIVE_MAP, XLMRobertaConfig
from ..xlnet.configuration_xlnet import XLNET_PRETRAINED_CONFIG_ARCHIVE_MAP, XLNetConfig
Aymeric Augustin's avatar
Aymeric Augustin committed
72

73

74
75
ALL_PRETRAINED_CONFIG_ARCHIVE_MAP = dict(
    (key, value)
76
    for pretrained_map in [
77
        # Add archive maps here
Patrick von Platen's avatar
Patrick von Platen committed
78
        WAV_2_VEC_2_PRETRAINED_CONFIG_ARCHIVE_MAP,
abhishek thakur's avatar
abhishek thakur committed
79
        CONVBERT_PRETRAINED_CONFIG_ARCHIVE_MAP,
Patrick von Platen's avatar
Patrick von Platen committed
80
        LED_PRETRAINED_CONFIG_ARCHIVE_MAP,
81
        BLENDERBOT_SMALL_PRETRAINED_CONFIG_ARCHIVE_MAP,
82
        BERT_PRETRAINED_CONFIG_ARCHIVE_MAP,
Sam Shleifer's avatar
Sam Shleifer committed
83
        BART_PRETRAINED_CONFIG_ARCHIVE_MAP,
Sam Shleifer's avatar
Sam Shleifer committed
84
        BLENDERBOT_PRETRAINED_CONFIG_ARCHIVE_MAP,
85
        MBART_PRETRAINED_CONFIG_ARCHIVE_MAP,
86
87
88
89
90
91
92
93
94
95
96
        OPENAI_GPT_PRETRAINED_CONFIG_ARCHIVE_MAP,
        TRANSFO_XL_PRETRAINED_CONFIG_ARCHIVE_MAP,
        GPT2_PRETRAINED_CONFIG_ARCHIVE_MAP,
        CTRL_PRETRAINED_CONFIG_ARCHIVE_MAP,
        XLNET_PRETRAINED_CONFIG_ARCHIVE_MAP,
        XLM_PRETRAINED_CONFIG_ARCHIVE_MAP,
        ROBERTA_PRETRAINED_CONFIG_ARCHIVE_MAP,
        DISTILBERT_PRETRAINED_CONFIG_ARCHIVE_MAP,
        ALBERT_PRETRAINED_CONFIG_ARCHIVE_MAP,
        CAMEMBERT_PRETRAINED_CONFIG_ARCHIVE_MAP,
        T5_PRETRAINED_CONFIG_ARCHIVE_MAP,
97
        XLM_ROBERTA_PRETRAINED_CONFIG_ARCHIVE_MAP,
Hang Le's avatar
Hang Le committed
98
        FLAUBERT_PRETRAINED_CONFIG_ARCHIVE_MAP,
99
        FSMT_PRETRAINED_CONFIG_ARCHIVE_MAP,
Lysandre Debut's avatar
Lysandre Debut committed
100
        ELECTRA_PRETRAINED_CONFIG_ARCHIVE_MAP,
Iz Beltagy's avatar
Iz Beltagy committed
101
        LONGFORMER_PRETRAINED_CONFIG_ARCHIVE_MAP,
Yacine Jernite's avatar
Yacine Jernite committed
102
        RETRIBERT_PRETRAINED_CONFIG_ARCHIVE_MAP,
Sylvain Gugger's avatar
Sylvain Gugger committed
103
        FUNNEL_PRETRAINED_CONFIG_ARCHIVE_MAP,
104
        LXMERT_PRETRAINED_CONFIG_ARCHIVE_MAP,
Minghao Li's avatar
Minghao Li committed
105
        LAYOUTLM_PRETRAINED_CONFIG_ARCHIVE_MAP,
Ola Piktus's avatar
Ola Piktus committed
106
        DPR_PRETRAINED_CONFIG_ARCHIVE_MAP,
Pengcheng He's avatar
Pengcheng He committed
107
        DEBERTA_PRETRAINED_CONFIG_ARCHIVE_MAP,
108
        DEBERTA_V2_PRETRAINED_CONFIG_ARCHIVE_MAP,
109
        SQUEEZEBERT_PRETRAINED_CONFIG_ARCHIVE_MAP,
Weizhen's avatar
Weizhen committed
110
111
        XLM_PROPHETNET_PRETRAINED_CONFIG_ARCHIVE_MAP,
        PROPHETNET_PRETRAINED_CONFIG_ARCHIVE_MAP,
StillKeepTry's avatar
StillKeepTry committed
112
        MPNET_PRETRAINED_CONFIG_ARCHIVE_MAP,
NielsRogge's avatar
NielsRogge committed
113
        TAPAS_PRETRAINED_CONFIG_ARCHIVE_MAP,
Sehoon Kim's avatar
Sehoon Kim committed
114
        IBERT_PRETRAINED_CONFIG_ARCHIVE_MAP,
115
116
117
    ]
    for key, value, in pretrained_map.items()
)
118
119


120
121
CONFIG_MAPPING = OrderedDict(
    [
122
        # Add configs here
Patrick von Platen's avatar
Patrick von Platen committed
123
        ("wav2vec2", Wav2Vec2Config),
abhishek thakur's avatar
abhishek thakur committed
124
        ("convbert", ConvBertConfig),
Patrick von Platen's avatar
Patrick von Platen committed
125
        ("led", LEDConfig),
126
        ("blenderbot-small", BlenderbotSmallConfig),
127
        ("retribert", RetriBertConfig),
Sehoon Kim's avatar
Sehoon Kim committed
128
        ("ibert", IBertConfig),
Patrick von Platen's avatar
Patrick von Platen committed
129
        ("mt5", MT5Config),
130
131
132
133
134
135
136
        ("t5", T5Config),
        ("mobilebert", MobileBertConfig),
        ("distilbert", DistilBertConfig),
        ("albert", AlbertConfig),
        ("bert-generation", BertGenerationConfig),
        ("camembert", CamembertConfig),
        ("xlm-roberta", XLMRobertaConfig),
137
        ("pegasus", PegasusConfig),
138
139
        ("marian", MarianConfig),
        ("mbart", MBartConfig),
StillKeepTry's avatar
StillKeepTry committed
140
        ("mpnet", MPNetConfig),
141
        ("bart", BartConfig),
Sam Shleifer's avatar
Sam Shleifer committed
142
        ("blenderbot", BlenderbotConfig),
143
144
145
        ("reformer", ReformerConfig),
        ("longformer", LongformerConfig),
        ("roberta", RobertaConfig),
146
        ("deberta-v2", DebertaV2Config),
Pengcheng He's avatar
Pengcheng He committed
147
        ("deberta", DebertaConfig),
148
        ("flaubert", FlaubertConfig),
149
        ("fsmt", FSMTConfig),
150
        ("squeezebert", SqueezeBertConfig),
151
152
153
154
155
        ("bert", BertConfig),
        ("openai-gpt", OpenAIGPTConfig),
        ("gpt2", GPT2Config),
        ("transfo-xl", TransfoXLConfig),
        ("xlnet", XLNetConfig),
Weizhen's avatar
Weizhen committed
156
157
        ("xlm-prophetnet", XLMProphetNetConfig),
        ("prophetnet", ProphetNetConfig),
158
159
160
161
162
163
        ("xlm", XLMConfig),
        ("ctrl", CTRLConfig),
        ("electra", ElectraConfig),
        ("encoder-decoder", EncoderDecoderConfig),
        ("funnel", FunnelConfig),
        ("lxmert", LxmertConfig),
Ola Piktus's avatar
Ola Piktus committed
164
        ("dpr", DPRConfig),
Minghao Li's avatar
Minghao Li committed
165
        ("layoutlm", LayoutLMConfig),
Ola Piktus's avatar
Ola Piktus committed
166
        ("rag", RagConfig),
NielsRogge's avatar
NielsRogge committed
167
        ("tapas", TapasConfig),
168
169
170
171
172
    ]
)

MODEL_NAMES_MAPPING = OrderedDict(
    [
173
        # Add full (and cased) model names here
Patrick von Platen's avatar
Patrick von Platen committed
174
        ("wav2vec2", "Wav2Vec2"),
abhishek thakur's avatar
abhishek thakur committed
175
        ("convbert", "ConvBERT"),
Patrick von Platen's avatar
Patrick von Platen committed
176
        ("led", "LED"),
177
        ("blenderbot-small", "BlenderbotSmall"),
178
        ("retribert", "RetriBERT"),
Sehoon Kim's avatar
Sehoon Kim committed
179
        ("ibert", "I-BERT"),
180
181
182
183
184
185
186
187
        ("t5", "T5"),
        ("mobilebert", "MobileBERT"),
        ("distilbert", "DistilBERT"),
        ("albert", "ALBERT"),
        ("bert-generation", "Bert Generation"),
        ("camembert", "CamemBERT"),
        ("xlm-roberta", "XLM-RoBERTa"),
        ("pegasus", "Pegasus"),
Sam Shleifer's avatar
Sam Shleifer committed
188
        ("blenderbot", "Blenderbot"),
189
190
191
192
193
194
195
        ("marian", "Marian"),
        ("mbart", "mBART"),
        ("bart", "BART"),
        ("reformer", "Reformer"),
        ("longformer", "Longformer"),
        ("roberta", "RoBERTa"),
        ("flaubert", "FlauBERT"),
196
        ("fsmt", "FairSeq Machine-Translation"),
197
        ("squeezebert", "SqueezeBERT"),
198
199
200
201
202
203
204
205
206
207
208
        ("bert", "BERT"),
        ("openai-gpt", "OpenAI GPT"),
        ("gpt2", "OpenAI GPT-2"),
        ("transfo-xl", "Transformer-XL"),
        ("xlnet", "XLNet"),
        ("xlm", "XLM"),
        ("ctrl", "CTRL"),
        ("electra", "ELECTRA"),
        ("encoder-decoder", "Encoder decoder"),
        ("funnel", "Funnel Transformer"),
        ("lxmert", "LXMERT"),
209
        ("deberta-v2", "DeBERTa-v2"),
Pengcheng He's avatar
Pengcheng He committed
210
        ("deberta", "DeBERTa"),
Minghao Li's avatar
Minghao Li committed
211
        ("layoutlm", "LayoutLM"),
Ola Piktus's avatar
Ola Piktus committed
212
213
        ("dpr", "DPR"),
        ("rag", "RAG"),
Weizhen's avatar
Weizhen committed
214
215
        ("xlm-prophetnet", "XLMProphetNet"),
        ("prophetnet", "ProphetNet"),
Patrick von Platen's avatar
Patrick von Platen committed
216
        ("mt5", "mT5"),
StillKeepTry's avatar
StillKeepTry committed
217
        ("mpnet", "MPNet"),
NielsRogge's avatar
NielsRogge committed
218
        ("tapas", "TAPAS"),
219
220
221
222
    ]
)


223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
def _list_model_options(indent, config_to_class=None, use_model_types=True):
    if config_to_class is None and not use_model_types:
        raise ValueError("Using `use_model_types=False` requires a `config_to_class` dictionary.")
    if use_model_types:
        if config_to_class is None:
            model_type_to_name = {model_type: config.__name__ for model_type, config in CONFIG_MAPPING.items()}
        else:
            model_type_to_name = {
                model_type: config_to_class[config].__name__
                for model_type, config in CONFIG_MAPPING.items()
                if config in config_to_class
            }
        lines = [
            f"{indent}- **{model_type}** -- :class:`~transformers.{cls_name}` ({MODEL_NAMES_MAPPING[model_type]} model)"
            for model_type, cls_name in model_type_to_name.items()
        ]
    else:
        config_to_name = {config.__name__: clas.__name__ for config, clas in config_to_class.items()}
        config_to_model_name = {
            config.__name__: MODEL_NAMES_MAPPING[model_type] for model_type, config in CONFIG_MAPPING.items()
        }
        lines = [
            f"{indent}- :class:`~transformers.{config_name}` configuration class: :class:`~transformers.{cls_name}` ({config_to_model_name[config_name]} model)"
            for config_name, cls_name in config_to_name.items()
        ]
    return "\n".join(lines)


def replace_list_option_in_docstrings(config_to_class=None, use_model_types=True):
    def docstring_decorator(fn):
        docstrings = fn.__doc__
        lines = docstrings.split("\n")
        i = 0
        while i < len(lines) and re.search(r"^(\s*)List options\s*$", lines[i]) is None:
            i += 1
        if i < len(lines):
            indent = re.search(r"^(\s*)List options\s*$", lines[i]).groups()[0]
            if use_model_types:
                indent = f"{indent}    "
            lines[i] = _list_model_options(indent, config_to_class=config_to_class, use_model_types=use_model_types)
            docstrings = "\n".join(lines)
        else:
            raise ValueError(
                f"The function {fn} should have an empty 'List options' in its docstring as placeholder, current docstring is:\n{docstrings}"
            )
        fn.__doc__ = docstrings
        return fn

    return docstring_decorator


Julien Chaumond's avatar
Julien Chaumond committed
274
class AutoConfig:
Lysandre Debut's avatar
Lysandre Debut committed
275
    r"""
276
277
    This is a generic configuration class that will be instantiated as one of the configuration classes of the library
    when created with the :meth:`~transformers.AutoConfig.from_pretrained` class method.
278

279
    This class cannot be instantiated directly using ``__init__()`` (throws an error).
280
    """
281

282
    def __init__(self):
283
284
285
286
        raise EnvironmentError(
            "AutoConfig is designed to be instantiated "
            "using the `AutoConfig.from_pretrained(pretrained_model_name_or_path)` method."
        )
287

288
    @classmethod
289
290
291
292
    def for_model(cls, model_type: str, *args, **kwargs):
        if model_type in CONFIG_MAPPING:
            config_class = CONFIG_MAPPING[model_type]
            return config_class(*args, **kwargs)
293
        raise ValueError(
294
            "Unrecognized model identifier: {}. Should contain one of {}".format(
295
296
                model_type, ", ".join(CONFIG_MAPPING.keys())
            )
297
        )
298

299
    @classmethod
300
    @replace_list_option_in_docstrings()
301
    def from_pretrained(cls, pretrained_model_name_or_path, **kwargs):
302
303
        r"""
        Instantiate one of the configuration classes of the library from a pretrained model configuration.
304

Sylvain Gugger's avatar
Sylvain Gugger committed
305
306
        The configuration class to instantiate is selected based on the :obj:`model_type` property of the config object
        that is loaded, or when it's missing, by falling back to using pattern matching on
307
        :obj:`pretrained_model_name_or_path`:
308

309
        List options
Lysandre Debut's avatar
Lysandre Debut committed
310
311

        Args:
312
            pretrained_model_name_or_path (:obj:`str` or :obj:`os.PathLike`):
313
314
                Can be either:

315
316
317
                    - A string, the `model id` of a pretrained model configuration hosted inside a model repo on
                      huggingface.co. Valid model ids can be located at the root-level, like ``bert-base-uncased``, or
                      namespaced under a user or organization name, like ``dbmdz/bert-base-german-cased``.
318
319
                    - A path to a `directory` containing a configuration file saved using the
                      :meth:`~transformers.PretrainedConfig.save_pretrained` method, or the
320
                      :meth:`~transformers.PreTrainedModel.save_pretrained` method, e.g., ``./my_model_directory/``.
321
322
                    - A path or url to a saved configuration JSON `file`, e.g.,
                      ``./my_model_directory/configuration.json``.
323
            cache_dir (:obj:`str` or :obj:`os.PathLike`, `optional`):
324
325
326
327
328
329
330
331
332
                Path to a directory in which a downloaded pretrained model configuration should be cached if the
                standard cache should not be used.
            force_download (:obj:`bool`, `optional`, defaults to :obj:`False`):
                Whether or not to force the (re-)download the model weights and configuration files and override the
                cached versions if they exist.
            resume_download (:obj:`bool`, `optional`, defaults to :obj:`False`):
                Whether or not to delete incompletely received files. Will attempt to resume the download if such a
                file exists.
            proxies (:obj:`Dict[str, str]`, `optional`):
Sylvain Gugger's avatar
Sylvain Gugger committed
333
334
                A dictionary of proxy servers to use by protocol or endpoint, e.g., :obj:`{'http': 'foo.bar:3128',
                'http://hostname': 'foo.bar:4012'}`. The proxies are used on each request.
Julien Chaumond's avatar
Julien Chaumond committed
335
336
337
338
            revision(:obj:`str`, `optional`, defaults to :obj:`"main"`):
                The specific model version to use. It can be a branch name, a tag name, or a commit id, since we use a
                git-based system for storing models and other artifacts on huggingface.co, so ``revision`` can be any
                identifier allowed by git.
339
340
341
342
343
344
345
346
            return_unused_kwargs (:obj:`bool`, `optional`, defaults to :obj:`False`):
                If :obj:`False`, then this function returns just the final configuration object.

                If :obj:`True`, then this functions returns a :obj:`Tuple(config, unused_kwargs)` where `unused_kwargs`
                is a dictionary consisting of the key/value pairs whose keys are not configuration attributes: i.e.,
                the part of ``kwargs`` which has not been used to update ``config`` and is otherwise ignored.
            kwargs(additional keyword arguments, `optional`):
                The values in kwargs of any keys which are configuration attributes will be used to override the loaded
Sylvain Gugger's avatar
Sylvain Gugger committed
347
348
                values. Behavior concerning key/value pairs whose keys are *not* configuration attributes is controlled
                by the ``return_unused_kwargs`` keyword parameter.
Lysandre Debut's avatar
Lysandre Debut committed
349

350
        Examples::
351

352
            >>> from transformers import AutoConfig
353

354
            >>> # Download configuration from huggingface.co and cache.
355
            >>> config = AutoConfig.from_pretrained('bert-base-uncased')
Lysandre Debut's avatar
Lysandre Debut committed
356

357
            >>> # Download configuration from huggingface.co (user-uploaded) and cache.
358
            >>> config = AutoConfig.from_pretrained('dbmdz/bert-base-german-cased')
Lysandre Debut's avatar
Lysandre Debut committed
359

360
361
            >>> # If configuration file is in a directory (e.g., was saved using `save_pretrained('./test/saved_model/')`).
            >>> config = AutoConfig.from_pretrained('./test/bert_saved_model/')
362

363
364
            >>> # Load a specific configuration file.
            >>> config = AutoConfig.from_pretrained('./test/bert_saved_model/my_configuration.json')
365

366
367
368
369
370
371
372
373
374
            >>> # Change some config attributes when loading a pretrained config.
            >>> config = AutoConfig.from_pretrained('bert-base-uncased', output_attentions=True, foo=False)
            >>> config.output_attentions
            True
            >>> config, unused_kwargs = AutoConfig.from_pretrained('bert-base-uncased', output_attentions=True, foo=False, return_unused_kwargs=True)
            >>> config.output_attentions
            True
            >>> config.unused_kwargs
            {'foo': False}
375
        """
376
        config_dict, _ = PretrainedConfig.get_config_dict(pretrained_model_name_or_path, **kwargs)
377
378
379
380
381
382
        if "model_type" in config_dict:
            config_class = CONFIG_MAPPING[config_dict["model_type"]]
            return config_class.from_dict(config_dict, **kwargs)
        else:
            # Fallback: use pattern matching on the string.
            for pattern, config_class in CONFIG_MAPPING.items():
383
                if pattern in str(pretrained_model_name_or_path):
384
385
                    return config_class.from_dict(config_dict, **kwargs)

386
        raise ValueError(
387
388
389
            "Unrecognized model in {}. "
            "Should have a `model_type` key in its config.json, or contain one of the following strings "
            "in its name: {}".format(pretrained_model_name_or_path, ", ".join(CONFIG_MAPPING.keys()))
390
        )