🚀 ParsBigBird:用于长序列的波斯语Bert模型
ParsBigBird是一个专门为波斯语设计的模型,它借助稀疏注意力机制,能够处理长度达4096的波斯语文本。这解决了传统Bert和ParsBert算法只能处理最多512个标记长度文本的局限,满足了诸如文本摘要和问答等需要更长文本处理的任务需求。
🚀 快速开始
我们训练了 BigBird 模型,使其能够使用稀疏注意力机制处理波斯语中长度达4096的文本。该模型在处理长序列文本方面表现出色,为波斯语的自然语言处理任务提供了更强大的支持。
✨ 主要特性
- 长序列处理能力:能够处理长度达4096的波斯语文本,突破了传统模型的限制。
- 稀疏注意力机制:采用稀疏注意力机制,提高了处理长文本的效率。
- 性能表现优异:在多个任务上的评估结果显示,该模型与ParsBert表现相当,在波斯语问答任务上表现更优。
📊 评估结果 🌡️
我们在三个不同序列长度的任务上对模型进行了评估:
- 尽管
distil-bigbird-fa-zwnj
模型的规模与distill-bert相当,但它在性能上与ParsBert相当,并且在波斯语问答任务(PersianQA)上表现更好。
- 本次评估基于
max_lentgh=2048
(可调整至4096)。
💻 使用示例
基础用法
from transformers import BigBirdModel, AutoTokenizer
MODEL_NAME = "SajjadAyoubi/distil-bigbird-fa-zwnj"
model = BigBirdModel.from_pretrained(MODEL_NAME, block_size=32)
model = BigBirdModel.from_pretrained(MODEL_NAME, attention_type="original_full")
text = "😃 امیدوارم مدل بدردبخوری باشه چون خیلی طول کشید تا ترین بشه"
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
tokens = tokenizer(text, return_tensors='pt')
output = model(**tokens)
高级用法
from transformers import pipeline
MODEL_NAME = 'SajjadAyoubi/distil-bigbird-fa-zwnj'
fill = pipeline('fill-mask', model=MODEL_NAME, tokenizer=MODEL_NAME)
results = fill('تهران پایتخت [MASK] است.')
print(results[0]['token_str'])
>>> 'ایران'
📚 详细文档
预训练详情 🔭
该模型在Oscar数据集的波斯语部分上使用掩码语言模型(MLM)目标进行了预训练。遵循原始BERT的训练方式,对15%的标记进行了掩码处理。此方法首次在 这篇论文 中被描述,并在 这个仓库 中发布。长度超过4096的文档被分割成多个文档,而远小于4096的文档则使用 [SEP] 标记进行合并。模型从 distilbert-fa
的 检查点 开始进行预热训练。
- 更多详细信息,可查看🤗模型中心的
config.json
文件。
微调建议 🐤
由于模型的内存需求,建议使用 gradient_checkpointing
和 gradient_accumulation
来保持合理的批次大小。考虑到该模型规模并非特别大,在执行主要任务之前,先使用掩码语言模型目标(也称为中间微调)在您的数据集上对其进行微调是个不错的选择。在 block_sparse
模式下,输入的标记数量无关紧要,模型仅关注256个标记。此外,对于长度不超过512的序列,应使用 original_full
模式(而非 block sparse
)。
微调示例 👷♂️👷♀️
数据集 |
微调示例 |
Digikala Magazine文本分类 |
 |
🤝 联系我们
如果您对模型、预训练、代码或出版物有技术问题,请在仓库中创建一个issue。这是与我们取得联系的最快方式。
↩️ 引用
我们尚未就该工作发表任何论文。但是,如果您使用了该模型,请按照以下格式正确引用我们:
@misc{ParsBigBird,
author = {Ayoubi, Sajjad},
title = {ParsBigBird: Persian Bert For Long-Range Sequences},
year = 2021,
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {\url{https://github.com/SajjjadAyobi/ParsBigBird}},
}