Transformer 内核

DeepSpeed 中的 Transformer 内核 API 可用于创建 BERT Transformer 层,以更有效地进行预训练和微调,它包括 Transformer 层配置和 Transformer 层模块初始化。

这里介绍了 Transformer 内核 API。有关使用详情,请参阅 BERT 预训练教程

DeepSpeed Transformer 配置

class deepspeed.DeepSpeedTransformerConfig(batch_size=-1, hidden_size=-1, intermediate_size=-1, heads=-1, attn_dropout_ratio=-1, hidden_dropout_ratio=-1, num_hidden_layers=-1, initializer_range=-1, layer_norm_eps=1e-12, local_rank=-1, seed=-1, fp16=False, pre_layer_norm=True, normalize_invertible=False, gelu_checkpoint=False, adjust_init_range=True, attn_dropout_checkpoint=False, stochastic_mode=False, return_tuple=False, training=True)[source]

初始化 DeepSpeed Transformer 配置。

参数
  • batch_size – 在每个 GPU 上运行内核时使用的最大批次大小

  • hidden_size – Transformer 层的隐藏大小

  • intermediate_size – Transformer 层的前馈部分的中间大小

  • heads – Transformer 层自注意力机制中的头数

  • attn_dropout_ratio – 注意力输出的 dropout 比率

  • hidden_dropout_ratio – Transformer 输出的 dropout 比率

  • num_hidden_layers – Transformer 层的数量

  • initializer_range – BERT 模型的初始化范围,用于初始化参数数据

  • local_rank – 可选:运行 Transformer 内核的 GPU 的排名,如果模型已经设置了当前设备,则不需要使用它,否则需要设置它,以便 Transformer 内核可以在正确的设备上工作

  • seed – dropout 层的随机种子

  • fp16 – 启用半精度计算

  • pre_layer_norm – 在 Pre-LN 或 Post-LN Transformer 架构之间选择

  • normalize_invertible – 可选:启用可逆 LayerNorm 执行(丢弃输入激活),默认值为 False

  • gelu_checkpoint – 可选:启用 Gelu 激活输出的检查点,以节省内存,默认值为 False

  • adjust_init_range

    可选:如果模型调整其自注意力输出和层输出的权重初始值,则设置为 True(默认),False 保持 initializer_range 不变。查看下面的调整

    output_std = self.config.initializer_range / math.sqrt(2.0 * num_layers)

  • attn_dropout_checkpoint – 可选:启用注意力 dropout 的检查点,以节省内存,默认值为 False

  • stochastic_mode – 启用以获得高性能,请注意此标志具有一定程度的非确定性,并且可以在不同的运行中产生不同的结果。但是,我们发现启用它不会影响 BERT 等预训练任务,并且可以获得较高的准确率。另一方面,对于下游任务,例如微调,我们建议关闭它,以便能够通过常规内核执行来复制相同的结果。

  • return_tuple – 如果使用 return_tuple 接口样式来发送转发结果,则启用。

  • training – 启用以进行训练而不是推理。

DeepSpeed Transformer 层

class deepspeed.DeepSpeedTransformerLayer(config, initial_weights=None, initial_biases=None)[source]

初始化 DeepSpeed Transformer 层。

静态变量

layer_id: 从 0 开始的层索引计数器,每次实例化层对象时递增 1,例如,如果模型有 24 个 Transformer 层,则 layer_id 从 0 到 23。

参数
  • config – DeepSpeedTransformerConfig 的对象

  • initial_weights – 可选:仅用于单元测试

  • initial_biases – 可选:仅用于单元测试