
    9i                     X    S r SSKJr  SSKJr  \R                  " 5       r " S S\5      rg)zUStructBERT model configuration, mainly copied from :class:`~transformers.BertConfig`     )PretrainedConfig)loggerc                   T   ^  \ rS rSrSrSr                SU 4S jjrSrU =r$ )SbertConfig   a  
This is the configuration class to store the configuration
of a :class:`~modelscope.models.nlp.structbert.SbertModel`.
It is used to instantiate a StructBERT model according to the specified arguments.

Configuration objects inherit from :class:`~transformers.PretrainedConfig` and can be used to control the model
outputs. Read the documentation from :class:`~transformers.PretrainedConfig` for more information.


Args:
    vocab_size (:obj:`int`, `optional`, defaults to 30522):
        Vocabulary size of the BERT model. Defines the number of different tokens that can be represented by the
        :obj:`inputs_ids` passed when calling :class:`~transformers.BertModel` or
        :class:`~transformers.TFBertModel`.
    hidden_size (:obj:`int`, `optional`, defaults to 768):
        Dimensionality of the encoder layers and the pooler layer.
    num_hidden_layers (:obj:`int`, `optional`, defaults to 12):
        Number of hidden layers in the Transformer encoder.
    num_attention_heads (:obj:`int`, `optional`, defaults to 12):
        Number of attention heads for each attention layer in the Transformer encoder.
    intermediate_size (:obj:`int`, `optional`, defaults to 3072):
        Dimensionality of the "intermediate" (often named feed-forward) layer in the Transformer encoder.
    hidden_act (:obj:`str` or :obj:`Callable`, `optional`, defaults to :obj:`"gelu"`):
        The non-linear activation function (function or string) in the encoder and pooler. If string,
        :obj:`"gelu"`, :obj:`"relu"`, :obj:`"silu"` and :obj:`"gelu_new"` are supported.
    hidden_dropout_prob (:obj:`float`, `optional`, defaults to 0.1):
        The dropout probability for all fully connected layers in the embeddings, encoder, and pooler.
    attention_probs_dropout_prob (:obj:`float`, `optional`, defaults to 0.1):
        The dropout ratio for the attention probabilities.
    max_position_embeddings (:obj:`int`, `optional`, defaults to 512):
        The maximum sequence length that this model might ever be used with. Typically set this to something large
        just in case (e.g., 512 or 1024 or 2048).
    type_vocab_size (:obj:`int`, `optional`, defaults to 2):
        The vocabulary size of the :obj:`token_type_ids` passed when calling :class:`~transformers.BertModel` or
        :class:`~transformers.TFBertModel`.
    initializer_range (:obj:`float`, `optional`, defaults to 0.02):
        The standard deviation of the truncated_normal_initializer for initializing all weight matrices.
    layer_norm_eps (:obj:`float`, `optional`, defaults to 1e-12):
        The epsilon used by the layer normalization layers.
    position_embedding_type (:obj:`str`, `optional`, defaults to :obj:`"absolute"`):
        Type of position embedding. Choose one of :obj:`"absolute"`, :obj:`"relative_key"`,
        :obj:`"relative_key_query"`. For positional embeddings use :obj:`"absolute"`. For more information on
        :obj:`"relative_key"`, please refer to `Self-Attention with Relative Position Representations (Shaw et al.)
        <https://arxiv.org/abs/1803.02155>`__. For more information on :obj:`"relative_key_query"`, please refer to
        `Method 4` in `Improve Transformer Models with Better Relative Position Embeddings (Huang et al.)
        <https://arxiv.org/abs/2009.13658>`__.
    use_cache (:obj:`bool`, `optional`, defaults to :obj:`True`):
        Whether or not the model should return the last key/values attentions (not used by all models). Only
        relevant if ``config.is_decoder=True``.
    classifier_dropout (:obj:`float`, `optional`):
        The dropout ratio for the classification head.
    adv_grad_factor (:obj:`float`, `optional`): This factor will be multiplied by the KL loss grad and then
        the result will be added to the original embedding.
        More details please check:https://arxiv.org/abs/1908.04577
        The range of this value should between 1e-3~1e-7
    adv_bound (:obj:`float`, `optional`): adv_bound is used to cut the top and the bottom bound of
        the produced embedding.
        If not provided, 2 * sigma will be used as the adv_bound factor
    sigma (:obj:`float`, `optional`): The std factor used to produce a 0 mean normal distribution.
        If adv_bound not provided, 2 * sigma will be used as the adv_bound factor

structbertc                 r  > [         TU ]  " SSU0UD6  Xl        X l        X0l        X@l        X`l        XPl        Xpl        Xl	        Xl
        Xl        Xl        Xl        Xl        Xl        UU l        SU;  a  SOUS   U l        SU;  a  SOUS   U l        SU;  a  SU R$                  -  U l        g US   U l        g )	Npad_token_idadv_grad_factorg-C6
?sigmagh㈵>	adv_bound    )super__init__
vocab_sizehidden_sizenum_hidden_layersnum_attention_heads
hidden_actintermediate_sizehidden_dropout_probattention_probs_dropout_probmax_position_embeddingstype_vocab_sizeinitializer_rangelayer_norm_epsposition_embedding_type	use_cacheclassifier_dropoutr   r   r   )selfr   r   r   r   r   r   r   r   r   r   r   r   r
   r   r   r    kwargs	__class__s                     n/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/modelscope/models/nlp/structbert/configuration.pyr   SbertConfig.__init__Z   s    $ 	=l=f=$&!2#6 $!2#6 ,H)'>$.!2,'>$""4 (9'FtFM %F2Tw
+6f+DTZZ&K    )r   r   r   r    r   r   r   r   r   r   r   r   r   r   r   r   r   r   )i:w  i      r'   i   gelu皙?r)   i   r   g{Gz?g-q=r   absoluteTN)	__name__
__module____qualname____firstlineno____doc__
model_typer   __static_attributes____classcell__)r#   s   @r$   r   r      sL    <| J " #%%'#'"%(.1),!"#' %)3$(!, ,r&   r   N)r/   transformersr   modelscope.utilsr   logging
get_loggerr   r   r&   r$   <module>r7      s.   " ] ) .				m" mr&   