{
"_name_or_path": "THUDM/chatglm2-6b",
"model_type": "chatglm",
"architectures": [
"ChatGLMModel"
],
"auto_map": {
"AutoConfig": "configuration_chatglm.ChatGLMConfig",
"AutoModel": "modeling_chatglm.ChatGLMForConditionalGeneration",
"AutoModelForSeq2SeqLM": "modeling_chatglm.ChatGLMForConditionalGeneration"
},
"add_bias_linear": false,
"add_qkv_bias": true,
"apply_query_key_layer_scaling": true,
"apply_residual_connection_post_layernorm": false,
"attention_dropout": 0.0,
"attention_softmax_in_fp32": true,
"bias_dropout_fusion": true,
"ffn_hidden_size": 13696,
"fp32_residual_connection": false,
"hidden_dropout": 0.0,
"hidden_size": 4096,
"kv_channels": 128,
"layernorm_epsilon": 1e-05,
"multi_query_attention": true,
"multi_query_group_num": 2,
"num_attention_heads": 32,
"num_layers": 28,
"original_rope": true,
"padded_vocab_size": 65024,
"post_layer_norm": true,
"rmsnorm": true,
"seq_length": 32768,
"use_cache": true,
"torch_dtype": "float16",
"transformers_version": "4.27.1",
"tie_word_embeddings": false,
"eos_token_id": 2,
"pad_token_id": 0
}
这个参数字典是用来配置ChatGLM模型的,下面是每个参数的详细解释:
-
"_name_or_path": 表示模型或模型配置的名称或路径,这里是"THUDM/chatglm2-6b"。
-
"model_type": 指的是使用的模型类型,这里是"chatglm"。
-
"architectures": 指的是模型架构类型,这里是"ChatGLMModel"。
-
"auto_map": 是自动映射的设置,将一些通用类映射到ChatGLM特定的类。
-
"add_bias_linear": 是否在模型的线性层添加偏置项。这里设置为false,表示不添加。
-
"add_qkv_bias": 是否在注意力机制的查询(query)、键(key)和值(value)中添加偏置项。这里设置为true,表示添加。
-
"apply_query_key_layer_scaling": 是否对注意力机制的查询(query)和键(key)进行层次缩放。这里设置为true,表示进行缩放。
-
"apply_residual_connection_post_layernorm": 是否在LayerNorm后应用残差连接。这里设置为false,表示不应用。
-
"attention_dropout": 注意力机制中的dropout比率,这里是0.0,表示没有应用dropout。
-
"attention_softmax_in_fp32": 注意力机制中的softmax是否使用fp32精度执行,这里设置为true。
-
"bias_dropout_fusion": 是否融合偏置和dropout,这里设置为true。
-
"ffn_hidden_size": 前向网络(feed-forward network)的隐藏层大小,这里是13696。
-
"fp32_residual_connection": 是否使用fp32精度进行残差连接,这里设置为false。
-
"hidden_dropout": 隐藏层的dropout比率,这里是0.0。
-
"hidden_size": 隐藏层的大小,这里是4096。
-
"kv_channels": 键(key)和值(value)的通道数,这里是128。
-
"layernorm_epsilon": LayerNorm中的微小值,用于防止除以0,这里是1e-5。
-
"multi_query_attention": 是否使用多查询注意力,这里设置为true。
-
"multi_query_group_num": 多查询组的数量,这里是2。
-
"num_attention_heads": 注意力头的数量,这里是32。
-
"num_layers": 模型层的数量,这里是28。
-
"original_rope": 是否使用原始的rope设置,这里设置为true。
-
"padded_vocab_size": 填充词汇的数量,这里是65024。
-
"post_layer_norm": 是否进行后层标准化,这里设置为true。
-
"rmsnorm": 是否使用RMSNorm,这里设置为true。
-
"seq_length": 序列长度,这里是32768。
-
"use_cache": 是否使用缓存,这里设置为true。
-
"torch_dtype": torch的数据类型,这里是"float16"。
-
"transformers_version": 使用的transformers库的版本,这里是"4.27.1"。
-
"tie_word_embeddings": 是否绑定词嵌入,这里设置为false。
-
"eos_token_id": 表示句子结束的token的ID,这里是2。
-
"pad_token_id": 表示填充token的ID,这里是0。
"seq_length"
"seq_length"参数代表模型可以接受的最大序列长度。序列长度这个概念在自然语言处理中非常重要,因为它决定了模型可以处理的输入文本的最大长度。
在自然语言处理任务中,序列通常指的是由多个词语或者符号组成的文本串,例如一句话或者一段文本。序列长度即这个文本串中词语或符号的数量。
当我们将文本输入模型时,通常需要先将文本分词,然后将每个词转换成一个数字(通常称为token id)。这样,一段文本就被转换成了一个数字序列,然后这个数字序列被输入到模型中。
"seq_length"就是这个数字序列的最大长度。如果输入文本的长度超过了"seq_length",那么文本会被截断到"seq_length"的长度。如果输入文本的长度小于"seq_length",那么通常会在序列的末尾添加特殊的"padding"符号,使得序列的长度达到"seq_length"。
在你提供的配置中,"seq_length"为32768,这意味着模型可以接受的最大输入序列长度为32768个tokens。