CoolFace
Modelpublic

chris0809/tinyLLM-0.51B-VLM

sourceHugging Faceotherupdated 11d agoView on Hugging Face
0likes64downloads
configuration_tinyllm.py139 linesDownload Raw Back to root
1from transformers import PretrainedConfig
2from transformers import AutoTokenizer
3
4class Config(PretrainedConfig):
5    model_type = "tinyLLM"
6
7    def __init__(self,
8                 eos_token_id: int | None = 73440,
9                 pad_token_id: int | None = 73440,
10                use_tcn = False,
11                tcn_layers = [],
12                 num_query_tokens=128,
13                vocab_size=73448,
14                hidden_size=1280,
15                num_hidden_layers=24,
16                num_attention_heads=20,
17                num_key_value_heads=4,
18                max_position_embeddings=8192,
19                RoPE_base=1e4,
20                rope_type="yarn",#["default","yarn","dynamic"]
21                dropout=0.00,
22                rms_norm_eps=1e-5,
23                qkrms_norm_eps=1e-5,
24                use_qk_norm=True,
25                kv_cache_dtype="auto",
26                use_moe=False,
27                adapter_type="none",
28                use_swiGLU=True,
29                bos_token_id=None,
30                use_ssm=False,
31                ssm_layers=[],#[4,11,19]
32                embeddingdropout=0.0,
33                learnable_temp=True,
34                use_affine=True,
35                use_sampleattion=False,
36                eso_loss_radio=1.0,
37                train_maxlength=8192,
38                drop_high_loss=0.0,
39                mlp_ratio_front: float = 3.5,
40                mlp_ratio_mid: float = 4.0,
41                mlp_ratio_back: float = 4.5,
42                mlp_mid_start: int | None = 8,  # 中段起始层(含),0-index
43                mlp_back_start: int | None = 16,  # 后段起始层(含),0-index
44                mlp_ratio_overrides: dict | None = {21: 5.0,22: 5.0, 23: 5.0},
45                mlp_ratio=4.5,
46                ignore_index=-100,
47                loss_reduction: str = "token_mean",
48                sample_mean_alpha: float = 0.75,
49                drop_path=0.00,
50                residual_dropout=0.00,
51                moe_layers=[],
52                num_expert=4,
53                moe_use_detach=False,
54                moe_cap_factor=1.5,
55                moe_aux_weight=5.0,
56                use_checkpoint=False,
57                checkpoint_use_reentrant=False,
58                use_adaptive_softmax: bool = True,
59                adaptive_cutoffs = [20000, 60000],
60                 vision_dropout=0.0,
61                adaptive_div: float = 4.0,
62                adaptive_calibrate_every: int = 200,
63                 use_vision: bool = False,
64                 vision_feature_dim: int | None =1024,  # ViT 输出维度,比如 1024/768
65                 max_vision_tokens: int = 0,  # 视觉 token 上限
66                 vision_mlp_ratio: float = 4.0,
67                 vision_use_swiglu: bool = True,
68
69                **kwargs):
70        super().__init__(bos_token_id=bos_token_id, eos_token_id=eos_token_id,pad_token_id=pad_token_id,**kwargs)
71        self.vocab_size = vocab_size
72        self.hidden_size = hidden_size
73        self.num_hidden_layers = num_hidden_layers         #transformer层数
74        self.num_attention_heads = num_attention_heads     #q head数
75        self.num_key_value_heads = num_key_value_heads     #kv head数,q head % k head=0
76        self.max_position_embeddings = max_position_embeddings # 理论上下文极限值,已达到tokenizer 上限,扩展需修改tokenizer
77        self.RoPE_base=RoPE_base                           # RoPE时频率相关theta base大小,越大支持上下文越多,目前支持最大4k,1e6可支持16k,但针对短文本敏感降低
78        self.rope_type=rope_type                        #RoPE时是否开启动态NTK扩展当前base 4k的能力到16k,一般训练可关闭
79        self.dropout = dropout                             #控制attention和MLP dropout概率
80        self.train_maxlength=train_maxlength               #训练时文本最大长度4096
81        self.rms_norm_eps = rms_norm_eps                   #非attention内部rms norm时计算rms时算完平均值后在rsqrt前增加的值
82        self.qkrms_norm_eps = qkrms_norm_eps               # attention内部在qk投影后rms norm时计算rms时算完平均值后在rsqrt前增加的值
83        self.use_qk_norm = use_qk_norm                      #是否启用qk norm
84        self.kv_cache_dtype = kv_cache_dtype
85        self.use_moe = use_moe
86        self.adapter_type = adapter_type
87        self.bos_token_id = bos_token_id
88        self.eos_token_id = eos_token_id
89        self.use_ssm=use_ssm
90        self.ssm_layers=ssm_layers
91        self.embeddingdropout=embeddingdropout          #embedding dropout概率,默认0,最大0.05
92        self.learnable_temp= learnable_temp             #是否对qkrms_norm启用一个可学习的增幅
93        self.use_affine=use_affine                      #是否对rms_norm启用一个可学习的增幅
94        self.use_sampleatt=use_sampleattion             #是否使用自己写的attention,效率低,无cuda优化
95        self.use_swiGLU=use_swiGLU                      #MLP是否使用swiGLU,False使用up-silu-down
96        self.mlp_ratio=mlp_ratio                        #MLP参数量2*mlp_ratio*H^2
97        self.ignore_index=ignore_index
98        self.loss_reduction = str(loss_reduction)
99        self.sample_mean_alpha = float(sample_mean_alpha)
100        if self.loss_reduction not in {"token_mean", "sample_mean", "hybrid"}:
101            raise ValueError(
102                "loss_reduction must be one of: token_mean, sample_mean, hybrid"
103            )
104        if not 0.0 <= self.sample_mean_alpha <= 1.0:
105            raise ValueError("sample_mean_alpha must be within [0, 1]")
106        self.drop_path=drop_path                        #attention MLP 残差分支最大droppath的概率,随着层数线性增长至最大值
107        self.residual_dropout=residual_dropout          #attention MLP 残差分支逐元素drop的概率
108        self.use_moe=use_moe
109        self.moe_layers=moe_layers                      #moe加载在哪些层
110        self.num_expert=num_expert
111        self.moe_use_detach=moe_use_detach              # false让主损失的梯度回到moe gate,训练不稳但能真的帮助gate学会使用不同的expert,否则gate趋于平均分布
112        self.moe_cap_factor=moe_cap_factor              #1-1.5之间选择,决定每个expert加载的最大token量
113        self.moe_aux_weight=moe_aux_weight
114        self.use_checkpoint = use_checkpoint                    #开启训练慢降显存
115        self.checkpoint_use_reentrant = checkpoint_use_reentrant
116        self.use_adaptive_softmax=use_adaptive_softmax
117        self.adaptive_cutoffs= adaptive_cutoffs
118        self.adaptive_div=adaptive_div
119        self.adaptive_calibrate_every=adaptive_calibrate_every
120        self.use_tcn=use_tcn
121        self.tcn_layers=tcn_layers
122        self.mlp_ratio = mlp_ratio
123        
124        self.drop_high_loss=drop_high_loss
125        self.mlp_ratio_front = float(mlp_ratio_front)
126        self.mlp_ratio_mid   = float(mlp_ratio_mid)
127        self.mlp_ratio_back  = float(mlp_ratio_back)
128        self.mlp_mid_start   = mlp_mid_start
129        self.mlp_back_start  = mlp_back_start
130        self.mlp_ratio_overrides = mlp_ratio_overrides or {}
131        self.eso_loss_radio=eso_loss_radio
132        self.use_vision = use_vision
133        self.vision_feature_dim = vision_feature_dim
134        self.max_vision_tokens = max_vision_tokens
135        self.vision_mlp_ratio = vision_mlp_ratio
136        self.vision_use_swiglu = vision_use_swiglu
137        self.vision_dropout = vision_dropout if vision_dropout is not None else dropout
138        self.num_query_tokens=num_query_tokens
139