| from typing import Any, Dict, List, Optional, Union |
|
|
| import torch |
| from transformers import PretrainedConfig |
|
|
|
|
| class XLMRobertaFlashConfig(PretrainedConfig): |
|
|
| model_type = "xlm-roberta" |
|
|
| def __init__( |
| self, |
| vocab_size: int = 250002, |
| hidden_size: int = 1024, |
| num_hidden_layers: int = 24, |
| num_attention_heads: int = 16, |
| intermediate_size: int = 4096, |
| hidden_act: str = "gelu", |
| hidden_dropout_prob: float = 0.1, |
| attention_probs_dropout_prob: float = 0.1, |
| max_position_embeddings: int = 8194, |
| type_vocab_size: int = 1, |
| initializer_range: float = 0.02, |
| layer_norm_eps: float = 1e-05, |
| pad_token_id: int = 1, |
| bos_token_id: int = 0, |
| eos_token_id: int = 2, |
| position_embedding_type: str = "rotary", |
| rotary_emb_base: float = 10000.0, |
| use_cache: bool = True, |
| use_reentrant: bool = False, |
| classifier_dropout: Optional[float] = None, |
| lora_adaptations: Optional[List[str]] = None, |
| task_instructions: Optional[Dict[str, str]] = None, |
| lora_rank: int = 4, |
| lora_dropout_p: float = 0.0, |
| lora_alpha: int = 1, |
| lora_main_params_trainable: bool = False, |
| load_trained_adapters: bool = False, |
| use_flash_attn: bool = True, |
| torch_dtype: Optional[Union[str, torch.dtype]] = None, |
| emb_pooler: Optional[str] = None, |
| matryoshka_dimensions: Optional[List[int]] = None, |
| truncate_dim: Optional[int] = None, |
| **kwargs: Dict[str, Any], |
| ): |
| """ |
| Initialize the XLMRobertaFlashConfig configuration. |
| |
| Args: |
| vocab_size (int): Size of the vocabulary. |
| hidden_size (int): Dimensionality of the encoder layers and the pooler layer. |
| num_hidden_layers (int): Number of hidden layers in the Transformer encoder. |
| num_attention_heads (int): Number of attention heads for each attention layer in the Transformer encoder. |
| intermediate_size (int): Dimensionality of the "intermediate" (i.e., feed-forward) layer in the Transformer. |
| hidden_act (str): The activation function to use. |
| hidden_dropout_prob (float): The dropout probability for all fully connected layers in the embeddings, encoder, and pooler. |
| attention_probs_dropout_prob (float): The dropout ratio for the attention probabilities. |
| max_position_embeddings (int): The maximum length of the position embeddings. |
| type_vocab_size (int): The vocabulary size of the token type ids. |
| initializer_range (float): The standard deviation for initializing all weight matrices. |
| layer_norm_eps (float): The epsilon used by the layer normalization layers. |
| pad_token_id (int): The ID of the padding token. |
| bos_token_id (int): The ID of the beginning-of-sequence token. |
| eos_token_id (int): The ID of the end-of-sequence token. |
| position_embedding_type (str): Type of position embeddings. Options are 'absolute', 'alibi', or 'rotary'. |
| rotary_emb_base (float): Base for rotary embeddings. |
| use_cache (bool): Whether or not the model should return the last key/values attentions (not used by all models). |
| use_reentrant (bool): Whether or not the model should enable the 'use_reentrant' flag in gradient checkpointing. |
| classifier_dropout (Optional[float]): The dropout ratio for the classification head. |
| lora_adaptations (Optional[List[str]]): LoRA adaptations configuration. |
| lora_prompts (Optional[Dict[str, str]]): LoRA prompts configuration. |
| lora_rank (int): Rank for LoRA adaptations. |
| lora_dropout_p (float): Dropout probability for LoRA adaptations. |
| lora_alpha (int): Alpha parameter for LoRA. |
| lora_main_params_trainable (bool): Whether to make the main model parameters trainable when using LoRA. |
| load_trained_adapters (bool): Whether to load trained adapters. |
| use_flash_attn (bool): Whether to use FlashAttention. |
| torch_dtype (Optional[Union[str, torch.dtype]]): Data type for the tensors. |
| emb_pooler (Optional[str]): Pooling layer configuration. |
| matryoshka_dimensions (Optional[List[int]]): Configuration for matryoshka dimension reduction. |
| truncate_dim (Optional[int]): Dimension to truncate embeddings to, if any. |
| **kwargs (Dict[str, Any]): Additional keyword arguments passed to the configuration. |
| """ |
|
|
| super().__init__( |
| pad_token_id=pad_token_id, |
| bos_token_id=bos_token_id, |
| eos_token_id=eos_token_id, |
| **kwargs, |
| ) |
|
|
| self.vocab_size = vocab_size |
| self.hidden_size = hidden_size |
| self.num_hidden_layers = num_hidden_layers |
| self.num_attention_heads = num_attention_heads |
| self.hidden_act = hidden_act |
| self.intermediate_size = intermediate_size |
| self.hidden_dropout_prob = hidden_dropout_prob |
| self.attention_probs_dropout_prob = attention_probs_dropout_prob |
| self.max_position_embeddings = max_position_embeddings |
| self.type_vocab_size = type_vocab_size |
| self.initializer_range = initializer_range |
| self.layer_norm_eps = layer_norm_eps |
| self.position_embedding_type = position_embedding_type |
| self.rotary_emb_base = rotary_emb_base |
| self.use_cache = use_cache |
| self.use_reentrant = use_reentrant |
| self.classifier_dropout = classifier_dropout |
| self.load_trained_adapters = load_trained_adapters |
| self.lora_adaptations = lora_adaptations |
| self.task_instructions = task_instructions |
| self.lora_rank = lora_rank |
| self.lora_dropout_p = lora_dropout_p |
| self.lora_alpha = lora_alpha |
| self.lora_main_params_trainable = lora_main_params_trainable |
| self.use_flash_attn = use_flash_attn |
| self.emb_pooler = emb_pooler |
| self.matryoshka_dimensions = matryoshka_dimensions |
| self.truncate_dim = truncate_dim |
| if ( |
| torch_dtype |
| and hasattr(torch, torch_dtype) |
| and type(getattr(torch, torch_dtype)) is torch.dtype |
| ): |
| self.torch_dtype = getattr(torch, torch_dtype) |
| else: |
| self.torch_dtype = torch_dtype |
| if not self.use_flash_attn or not torch.cuda.is_available(): |
| self.torch_dtype = torch.float32 |