🚀 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}},
}