🚀 尼泊尔语基础蒸馏伯特模型(distilbert-base-nepali)
本模型是基于尼泊尔语文本数据集进行预训练的,该数据集包含超过1300万个尼泊尔语文本序列,采用了掩码语言模型(MLM)目标。我们的方法类似于XLM - ROBERTa,训练了一个句子片段模型(SPM)用于文本分词,并训练了蒸馏伯特模型进行语言建模。更多详细信息请参考这篇论文。
🚀 快速开始
本模型可直接用于掩码语言建模任务,以下是使用示例:
>>> from transformers import pipeline
>>> unmasker = pipeline('fill-mask', model='Sakonii/distilbert-base-nepali')
>>> unmasker("मानविय गतिविधिले प्रातृतिक पर्यावरन प्रनालीलाई अपरिमेय क्षति पु्र्याएको छ। परिवर्तनशिल जलवायुले खाध, सुरक्षा, <mask>, जमिन, मौसमलगायतलाई असंख्य तरिकाले प्रभावित छ।")
[{'score': 0.04128897562623024,
'sequence': 'मानविय गतिविधिले प्रातृतिक पर्यावरन प्रनालीलाई अपरिमेय क्षति पु्र्याएको छ। परिवर्तनशिल जलवायुले खाध, सुरक्षा, मौसम, जमिन, मौसमलगायतलाई असंख्य तरिकाले प्रभावित छ।',
'token': 2605,
'token_str': 'मौसम'},
{'score': 0.04100276157259941,
'sequence': 'मानविय गतिविधिले प्रातृतिक पर्यावरन प्रनालीलाई अपरिमेय क्षति पु्र्याएको छ। परिवर्तनशिल जलवायुले खाध, सुरक्षा, प्रकृति, जमिन, मौसमलगायतलाई असंख्य तरिकाले प्रभावित छ।',
'token': 2792,
'token_str': 'प्रकृति'},
{'score': 0.026525357738137245,
'sequence': 'मानविय गतिविधिले प्रातृतिक पर्यावरन प्रनालीलाई अपरिमेय क्षति पु्र्याएको छ। परिवर्तनशिल जलवायुले खाध, सुरक्षा, पानी, जमिन, मौसमलगायतलाई असंख्य तरिकाले प्रभावित छ।',
'token': 387,
'token_str': 'पानी'},
{'score': 0.02340106852352619,
'sequence': 'मानविय गतिविधिले प्रातृतिक पर्यावरन प्रनालीलाई अपरिमेय क्षति पु्र्याएको छ। परिवर्तनशिल जलवायुले खाध, सुरक्षा, जल, जमिन, मौसमलगायतलाई असंख्य तरिकाले प्रभावित छ।',
'token': 1313,
'token_str': 'जल'},
{'score': 0.02055591531097889,
'sequence': 'मानविय गतिविधिले प्रातृतिक पर्यावरन प्रनालीलाई अपरिमेय क्षति पु्र्याएको छ। परिवर्तनशिल जलवायुले खाध, सुरक्षा, वातावरण, जमिन, मौसमलगायतलाई असंख्य तरिकाले प्रभावित छ।',
'token': 790,
'token_str': 'वातावरण'}]
也可以使用该模型获取给定文本的特征,以下是在PyTorch中的使用示例:
from transformers import AutoTokenizer, AutoModelForMaskedLM
tokenizer = AutoTokenizer.from_pretrained('Sakonii/distilbert-base-nepali')
model = AutoModelForMaskedLM.from_pretrained('Sakonii/distilbert-base-nepali')
text = "चाहिएको text यता राख्नु होला।"
encoded_input = tokenizer(text, return_tensors='pt')
output = model(**encoded_input)
✨ 主要特性
- 基于超过1300万个尼泊尔语文本序列进行预训练,能更好地处理尼泊尔语相关任务。
- 采用掩码语言模型(MLM)目标进行训练,提升了语言理解能力。
- 训练了句子片段模型(SPM)进行文本分词,与XLM - ROBERTa类似,提高了分词效果。
📚 详细文档
模型描述
参考原始的distilbert-base-uncased。
预期用途和限制
此骨干模型旨在针对尼泊尔语相关的下游任务进行微调,如序列分类、标记分类或问答任务。由于该语言模型是在文本块大小为512的数据集上训练的,它可以处理长达512个标记的文本序列,但对于较短的序列可能表现不佳。
训练数据
本模型在尼泊尔语文本语言建模数据集上进行训练,该数据集整合了OSCAR、cc100以及从维基百科上抓取的一组尼泊尔语文章。在训练语言模型时,训练集中的文本被分组为512个标记的块。
分词
在尼泊尔语文本数据集的一个子集上训练了一个句子片段模型(SPM)用于文本分词。训练的分词器词汇量大小为24576,最小频率为4,字母表限制为1000,模型最大长度为512。
训练过程
模型的训练配置与原始的distilbert-base-uncased相同:每个实例512个标记,每个批次28个实例,大约35.7K个训练步骤。
训练超参数
以下是最后一个epoch训练时使用的超参数:[有关每个epoch不同超参数的详细信息,请参考下面的“训练结果”表]
- 学习率:5e - 05
- 训练批次大小:28
- 评估批次大小:8
- 随机种子:42
- 优化器:Adam,β=(0.9, 0.999),ε = 1e - 08
- 学习率调度器类型:线性
- 训练轮数:1
- 混合精度训练:原生自动混合精度(Native AMP)
训练结果
模型进行了4个epoch的训练,每个epoch使用不同的超参数:
训练损失 |
轮数 |
MLM概率 |
训练批次大小 |
步数 |
验证损失 |
困惑度 |
3.4477 |
1.0 |
15 |
26 |
38864 |
3.3067 |
27.2949 |
2.9451 |
2.0 |
15 |
28 |
35715 |
2.8238 |
16.8407 |
2.866 |
3.0 |
20 |
28 |
35715 |
2.7431 |
15.5351 |
2.7287 |
4.0 |
20 |
28 |
35715 |
2.6053 |
13.5353 |
2.6412 |
5.0 |
20 |
28 |
35715 |
2.5161 |
12.3802 |
最终模型在MLM概率为15%的情况下进行评估:
训练损失 |
轮数 |
MLM概率 |
训练批次大小 |
步数 |
验证损失 |
困惑度 |
- |
- |
15 |
- |
- |
2.3494 |
10.4791 |
框架版本
- Transformers 4.16.2
- Pytorch 1.9.1
- Datasets 1.18.3
- Tokenizers 0.10.3
🔧 技术细节
本模型在评估集上取得了以下结果:
MLM概率 |
评估损失 |
评估困惑度 |
15% |
2.349 |
10.479 |
20% |
2.605 |
13.351 |
📄 许可证
本项目采用Apache 2.0许可证。