



"""simple docstring"""


from collections import OrderedDict
from typing import Any, List, Mapping, Optional

from ... import PreTrainedTokenizer, TensorType, is_torch_available
from ...configuration_utils import PretrainedConfig
from ...onnx import OnnxConfigWithPast, PatchingSpec
from ...utils import logging


snake_case_				     =       logging.get_logger(__name__)


snake_case_				     =       {
    """Salesforce/codegen-350M-nl""": """https://huggingface.co/Salesforce/codegen-350M-nl/resolve/main/config.json""",
    """Salesforce/codegen-350M-multi""": """https://huggingface.co/Salesforce/codegen-350M-multi/resolve/main/config.json""",
    """Salesforce/codegen-350M-mono""": """https://huggingface.co/Salesforce/codegen-350M-mono/resolve/main/config.json""",
    """Salesforce/codegen-2B-nl""": """https://huggingface.co/Salesforce/codegen-2B-nl/resolve/main/config.json""",
    """Salesforce/codegen-2B-multi""": """https://huggingface.co/Salesforce/codegen-2B-multi/resolve/main/config.json""",
    """Salesforce/codegen-2B-mono""": """https://huggingface.co/Salesforce/codegen-2B-mono/resolve/main/config.json""",
    """Salesforce/codegen-6B-nl""": """https://huggingface.co/Salesforce/codegen-6B-nl/resolve/main/config.json""",
    """Salesforce/codegen-6B-multi""": """https://huggingface.co/Salesforce/codegen-6B-multi/resolve/main/config.json""",
    """Salesforce/codegen-6B-mono""": """https://huggingface.co/Salesforce/codegen-6B-mono/resolve/main/config.json""",
    """Salesforce/codegen-16B-nl""": """https://huggingface.co/Salesforce/codegen-16B-nl/resolve/main/config.json""",
    """Salesforce/codegen-16B-multi""": """https://huggingface.co/Salesforce/codegen-16B-multi/resolve/main/config.json""",
    """Salesforce/codegen-16B-mono""": """https://huggingface.co/Salesforce/codegen-16B-mono/resolve/main/config.json""",
}







class       A_			(     SCREAMING_SNAKE_CASE_				):



						"""simple docstring"""
						__UpperCamelCase						=							"""codegen"""
						__UpperCamelCase						=							{
						    """max_position_embeddings""": """n_positions""",
						    """hidden_size""": """n_embd""",
						    """num_attention_heads""": """n_head""",
						    """num_hidden_layers""": """n_layer""",
						}






						def __init__(					self :Optional[Any]   ,  lowercase_ :Optional[int]=5_04_00   ,  lowercase_ :Optional[int]=20_48   ,  lowercase_ :Union[str, Any]=20_48   ,  lowercase_ :int=40_96   ,  lowercase_ :List[str]=28   ,  lowercase_ :Dict=16   ,  lowercase_ :Tuple=64   ,  lowercase_ :Dict=None   ,  lowercase_ :int="gelu_new"   ,  lowercase_ :str=0.0   ,  lowercase_ :Optional[int]=0.0   ,  lowercase_ :Dict=0.0   ,  lowercase_ :List[str]=1E-5   ,  lowercase_ :Union[str, Any]=0.02   ,  lowercase_ :Optional[Any]=True   ,  lowercase_ :Optional[int]=5_02_56   ,  lowercase_ :int=5_02_56   ,  lowercase_ :List[str]=False   ,  **lowercase_ :Dict   ,  )				->			str:
												UpperCAmelCase             = vocab_size
												UpperCAmelCase             = n_ctx
												UpperCAmelCase             = n_positions
												UpperCAmelCase             = n_embd
												UpperCAmelCase             = n_layer
												UpperCAmelCase             = n_head
												UpperCAmelCase             = n_inner
												UpperCAmelCase             = rotary_dim
												UpperCAmelCase             = activation_function
												UpperCAmelCase             = resid_pdrop
												UpperCAmelCase             = embd_pdrop
												UpperCAmelCase             = attn_pdrop
												UpperCAmelCase             = layer_norm_epsilon
												UpperCAmelCase             = initializer_range
												UpperCAmelCase             = use_cache

												UpperCAmelCase             = bos_token_id
												UpperCAmelCase             = eos_token_id

												super().__init__(
												    bos_token_id=lowercase_   ,  eos_token_id=lowercase_   ,  tie_word_embeddings=lowercase_   ,  **lowercase_					)







class       A_			(     SCREAMING_SNAKE_CASE_				):



						"""simple docstring"""






						def __init__(					self :Optional[int]   ,  lowercase_ :PretrainedConfig   ,  lowercase_ :str = "default"   ,  lowercase_ :List[PatchingSpec] = None   ,  lowercase_ :bool = False   ,  )				->			Optional[Any]:
												super().__init__(lowercase_   ,  task=lowercase_   ,  patching_specs=lowercase_   ,  use_past=lowercase_					)
												if not getattr(self._config   ,  'pad_token_id'   ,  lowercase_					):
																		# TODO: how to do that better?
																		UpperCAmelCase             = 0






						@property
						def 	UpperCAmelCase__     (					self :Tuple					)				->			Mapping[str, Mapping[int, str]]:
												UpperCAmelCase             = OrderedDict({'input_ids': {0: 'batch', 1: 'sequence'}}					)
												if self.use_past:
																		self.fill_with_past_key_values_(lowercase_   ,  direction='inputs'					)
																		UpperCAmelCase             = {0: 'batch', 1: 'past_sequence + sequence'}
												else:
																		UpperCAmelCase             = {0: 'batch', 1: 'sequence'}

												return common_inputs






						@property
						def 	UpperCAmelCase__     (					self :Any					)				->			int:
												return self._config.n_layer






						@property
						def 	UpperCAmelCase__     (					self :Any					)				->			int:
												return self._config.n_head






						def 	UpperCAmelCase__     (					self :Optional[int]   ,  lowercase_ :PreTrainedTokenizer   ,  lowercase_ :int = -1   ,  lowercase_ :int = -1   ,  lowercase_ :bool = False   ,  lowercase_ :Optional[TensorType] = None   ,  )				->			Mapping[str, Any]:
												UpperCAmelCase             = super(lowercase_   ,  self					).generate_dummy_inputs(
												    lowercase_   ,  batch_size=lowercase_   ,  seq_length=lowercase_   ,  is_pair=lowercase_   ,  framework=lowercase_					)

												# We need to order the input in the way they appears in the forward()
												UpperCAmelCase             = OrderedDict({'input_ids': common_inputs['input_ids']}					)

												# Need to add the past_keys
												if self.use_past:
																		if not is_torch_available():
																								raise ValueError('Cannot generate dummy past_keys inputs without PyTorch installed.'					)
																		else:
																								import torch

																								UpperCAmelCase      ,    UpperCAmelCase             = common_inputs['input_ids'].shape
																								# Not using the same length for past_key_values
																								UpperCAmelCase             = seqlen + 2
																								UpperCAmelCase             = (
																								    batch,
																								    self.num_attention_heads,
																								    past_key_values_length,
																								    self._config.hidden_size // self.num_attention_heads,
																								)
																								UpperCAmelCase             = [
																								    (torch.zeros(lowercase_					), torch.zeros(lowercase_					)) for _ in range(self.num_layers					)
																								]

												UpperCAmelCase             = common_inputs['attention_mask']
												if self.use_past:
																		UpperCAmelCase             = ordered_inputs['attention_mask'].dtype
																		UpperCAmelCase             = torch.cat(
																		    [ordered_inputs['attention_mask'], torch.ones(lowercase_   ,  lowercase_   ,  dtype=lowercase_					)]   ,  dim=1					)

												return ordered_inputs






						@property
						def 	UpperCAmelCase__     (					self :List[str]					)				->			int:
												return 13











from . import __version__

# Backward compatibility imports, to make sure all those objects can be found in file_utils
from .utils import (
    CLOUDFRONT_DISTRIB_PREFIX,
    CONFIG_NAME,
    DISABLE_TELEMETRY,
    DUMMY_INPUTS,
    DUMMY_MASK,
    ENV_VARS_TRUE_AND_AUTO_VALUES,
    ENV_VARS_TRUE_VALUES,
    FEATURE_EXTRACTOR_NAME,
    FLAX_WEIGHTS_NAME,
    HF_MODULES_CACHE,
    HUGGINGFACE_CO_PREFIX,
    HUGGINGFACE_CO_RESOLVE_ENDPOINT,
    MODEL_CARD_NAME,
    MULTIPLE_CHOICE_DUMMY_INPUTS,
    PYTORCH_PRETRAINED_BERT_CACHE,
    PYTORCH_TRANSFORMERS_CACHE,
    S3_BUCKET_PREFIX,
    SENTENCEPIECE_UNDERLINE,
    SPIECE_UNDERLINE,
    TF2_WEIGHTS_NAME,
    TF_WEIGHTS_NAME,
    TORCH_FX_REQUIRED_VERSION,
    TRANSFORMERS_CACHE,
    TRANSFORMERS_DYNAMIC_MODULE_NAME,
    USE_JAX,
    USE_TF,
    USE_TORCH,
    WEIGHTS_INDEX_NAME,
    WEIGHTS_NAME,
    ContextManagers,
    DummyObject,
    EntryNotFoundError,
    ExplicitEnum,
    ModelOutput,
    PaddingStrategy,
    PushToHubMixin,
    RepositoryNotFoundError,
    RevisionNotFoundError,
    TensorType,
    _LazyModule,
    add_code_sample_docstrings,
    add_end_docstrings,
    add_start_docstrings,
    add_start_docstrings_to_model_forward,
    cached_property,
    copy_func,
    default_cache_path,
    define_sagemaker_information,
    get_cached_models,
    get_file_from_repo,
    get_full_repo_name,
    get_torch_version,
    has_file,
    http_user_agent,
    is_apex_available,
    is_bsa_available,
    is_coloredlogs_available,
    is_datasets_available,
    is_detectrona_available,
    is_faiss_available,
    is_flax_available,
    is_ftfy_available,
    is_in_notebook,
    is_ipex_available,
    is_librosa_available,
    is_offline_mode,
    is_onnx_available,
    is_pandas_available,
    is_phonemizer_available,
    is_protobuf_available,
    is_psutil_available,
    is_pyanvml_available,
    is_pyctcdecode_available,
    is_pytesseract_available,
    is_pytorch_quantization_available,
    is_rjieba_available,
    is_sagemaker_dp_enabled,
    is_sagemaker_mp_enabled,
    is_scipy_available,
    is_sentencepiece_available,
    is_seqio_available,
    is_sklearn_available,
    is_soundfile_availble,
    is_spacy_available,
    is_speech_available,
    is_tensor,
    is_tensorflow_probability_available,
    is_tfaonnx_available,
    is_tf_available,
    is_timm_available,
    is_tokenizers_available,
    is_torch_available,
    is_torch_bfaa_available,
    is_torch_cuda_available,
    is_torch_fx_available,
    is_torch_fx_proxy,
    is_torch_mps_available,
    is_torch_tfaa_available,
    is_torch_tpu_available,
    is_torchaudio_available,
    is_training_run_on_sagemaker,
    is_vision_available,
    replace_return_docstrings,
    requires_backends,
    to_numpy,
    to_py_obj,
    torch_only_method,
)






