预训练模型 | Transformer模型的规模大小

Transformer 有两个模型的规模大小标准:base、big。具体去thumt的models文件夹下的Transformer 模型实现可以看到其参数大小。

我们可以从Transformer 模型的原论文(Attention Is All You Need)中看到,Transformer 有两个模型的规模大小标准:base、big。

Transformer模型的超参数

Transformer模型的超参数,对模型的性能和训练过程有重要影响。下面是每个参数的解释:

  • pad: 用于填充句子长度不足时的占位符。
  • bos: 开始符号(beginning-of-sentence)的标记。
  • eos: 结束符号(end-of-sentence)的标记。
  • unk: 未知单词的标记。
  • hidden_size: Transformer模型中所有隐藏层的大小。
  • filter_size: Feed-Forward层中间层的大小。
  • num_heads: 多头自注意力机制中的头数。
  • num_encoder_layers: 编码器的层数。
  • num_decoder_layers: 解码器的层数。
  • attention_dropout: 注意力机制中的dropout概率。
  • residual_dropout: 残差连接中的dropout概率。
  • relu_dropout: ReLU激活函数中的dropout概率。
  • label_smoothing: 标签平滑的参数。
  • normalization: 归一化的方式,可以是"before"(在残差连接之前)或"after"(在残差连接之后)。
  • shared_embedding_and_softmax_weights: 是否共享编码器和解码器中的嵌入层和softmax层的权重。
  • shared_source_target_embedding: 是否共享编码器和解码器中的源语言和目标语言的嵌入层权重。
  • warmup_steps: 学习率线性增加的步数。
  • train_steps: 训练步数。
  • learning_rate: 学习率。
  • learning_rate_schedule: 学习率调整策略,可以是"linear_warmup_rsqrt_decay"(线性增加+平方根衰减)或"constant"(不调整)。
  • batch_size: 训练时的batch大小。
  • fixed_batch_size: 是否使用固定的batch大小。
  • adam_beta1: Adam优化器中的beta1参数。
  • adam_beta2: Adam优化器中的beta2参数。
  • adam_epsilon: Adam优化器中的epsilon参数。
  • clip_grad_norm: 梯度裁剪的阈值。

base参数:

pad="<pad>",
bos="<eos>",
eos="<eos>",
unk="<unk>",
hidden_size=512,
filter_size=2048,
num_heads=8,
num_encoder_layers=6,
num_decoder_layers=6,
attention_dropout=0.0,
residual_dropout=0.1,
relu_dropout=0.0,
label_smoothing=0.1,
normalization="after",
shared_embedding_and_softmax_weights=False,
shared_source_target_embedding=False,
# Override default parameters
warmup_steps=4000,
train_steps=100000,
learning_rate=7e-4,
learning_rate_schedule="linear_warmup_rsqrt_decay",
batch_size=4096,
fixed_batch_size=False,
adam_beta1=0.9,
adam_beta2=0.98,
adam_epsilon=1e-9,
clip_grad_norm=0.0

$Transformer_{base}$模型中:

  • 隐藏层的大小为(hidden_size):512。
  • Feed-Forward层中间层的大小为(filter_size):2048。
  • 多头自注意力机制中的头数为(num_heads):8。
  • 编码器的层数(num_encoder_layers)和解码器的层数(num_decoder_layers)都为:6

big参数:

在上面base参数的基础上,修改其中一些参数作为$Transformer_{big}$模型的参数。

hidden_size = 1024
filter_size = 4096
num_heads = 16
residual_dropout = 0.3
learning_rate = 5e-4
train_steps = 300000

$Transformer_{big}$模型中:

  • 隐藏层的大小为(hidden_size):1024。
  • Feed-Forward层中间层的大小为(filter_size):4096。
  • 多头自注意力机制中的头数为(num_heads):16。
  • 编码器的层数(num_encoder_layers)和解码器的层数(num_decoder_layers)都为:6

需要注意的是,不同规模的Transformer模型具有不同的性能、计算资源和存储空间要求,需要根据应用场景和计算资源的可用性来选择合适的模型规模。同时,也可以通过微调预训练模型、调整超参数等方法来对Transformer模型进行调整和优化

posted @ 2023-07-04 10:14  张Zong在修行  阅读(838)  评论(0编辑  收藏  举报