英文

LSG模型

Transformers >= 4.23.1 该模型依赖于自定义建模文件,您需要添加trust_remote_code=True 查看 #13467

LSG ArXiv paper . GitHub/转换脚本可在此 link 处找到。

  • 用法
  • 参数
  • 稀疏选择类型
  • 任务

该模型是从 BARThez 中调整而来,用于编码器-解码器任务,无需额外的预训练。它使用相同数量的参数/层和相同的分词器。

此模型可以处理长序列,但比hub中的Longformer(LED)或BigBird(Pegasus)更快,更高效,并依赖于局部+稀疏+全局注意力(LSG)。

该模型要求序列的长度是块大小的倍数。如果需要,该模型是“自适应的”并自动填充序列(在配置中将adaptive设置为True)。然而,推荐通过分词器截断输入(将截断设置为True),并且可选择将输入填充为块大小的倍数(pad_to_multiple_of = ...)。

使用PyTorch实现。

用法

该模型依赖于自定义建模文件,您需要添加trust_remote_code=True来使用它。

参数

您可以更改各种参数:

  • 全局标记数(num_global_tokens=1)
  • 局部块大小(block_size=128)
  • 稀疏块大小(sparse_block_size=128)
  • 稀疏度因子(sparsity_factor=2)
  • 掩盖第一个标记(第一个全局标记是冗余的)
  • 查看config.json文件

默认参数在实践中效果良好。如果内存不足,请缩小块大小,增加稀疏度因子,并去除注意力分数矩阵中的丢弃。

稀疏选择类型

有5种不同的稀疏选择模式。最佳类型取决于任务。注意,对于长度小于2 * block_size的序列,类型没有影响。

  • 稀疏类型="norm",选择最高范数的标记,
    • 适用于较小的稀疏度因子(2至4)
    • 附加参数:
  • 稀疏类型="pooling",使用平均池化合并标记,
    • 适用于较小的稀疏度因子(2至4)
    • 附加参数:
  • 稀疏类型="lsh",使用LSH算法对相似的标记进行聚类,
    • 适用于较大的稀疏度因子(4+)
    • LSH依赖于随机投影,因此使用不同的种子进行推理可能会稍有不同
    • 附加参数:
      • lsg_num_pre_rounds=1,在计算中心之前,将标记预合并n次
  • 稀疏类型="stride",每个头使用步进机制,
    • 每个头都使用不同的步进因子步进的标记
    • 如果步进因子>num_heads,不推荐使用
  • 稀疏类型="block_stride",每个头使用块步进机制,
    • 每个头都使用块步进因子步进的标记
    • 如果步进因子>num_heads,不推荐使用

任务

摘要的Seq2Seq示例:

分类示例:

转换脚本

要将BERT、RoBERTa或BART检查点转换为LSG,请参阅此 repo

BARThez

@article{eddine2020barthez,
  title={BARThez: a Skilled Pretrained French Sequence-to-Sequence Model},
  author={Eddine, Moussa Kamal and Tixier, Antoine J-P and Vazirgiannis, Michalis},
  journal={arXiv preprint arXiv:2010.12321},
  year={2020}
}