发布印地语ELECTRA模型
这是首次尝试使用谷歌研究的ELECTRA框架训练印地语语言模型。
截至2022年,我推荐谷歌的MuRIL模型,该模型支持英语、印地语及其他主要印度语言(包括原生文字和拉丁化文字):https://huggingface.co/google/muril-base-cased 与 https://huggingface.co/google/muril-large-cased
对于因果语言模型,建议使用https://huggingface.co/sberbank-ai/mGPT,但需注意这是个大模型
分词与训练协作笔记本
最初使用改进版ELECTRA进行微调,现已改用SimpleTransformers。
技术博客 - 深受这篇启发:https://huggingface.co/blog/how-to-train
示例笔记本
这个小模型在BBC印地语新闻分类和印地语电影评论/情感分析(使用SimpleTransformers)上的表现与多语言BERT相当。
通过ktrain调整学习率可获得更高准确率(注意:需修改config.json中的model_type参数——这是ktrain的待解决问题):https://colab.research.google.com/drive/1mSeeSfVSOT7e-dVhPlmSsQRvpn6xC05w?usp=sharing
MLQA数据集问答测试:https://colab.research.google.com/drive/1i6fidh2tItf_-IDkljMuaIGmEU6HT2Ar#scrollTo=IcFoAHgKCUiQ
较大模型Hindi-TPU-Electra(基于ELECTRA基础架构)在电影评论/情感分析任务上优于上述模型,但在BBC新闻分类任务中表现稍逊。
语料库
下载地址:https://drive.google.com/drive/folders/1SXzisKq33wuqrwbfp428xeu_hDxXVUUu?usp=sharing
包含两个文件:
- 经OSCAR去重的印地语CommonCrawl数据集 https://traces1.inria.fr/oscar/
- 最新印地语维基百科(https://dumps.wikimedia.org/hiwiki/) + WikiExtractor提取的文本
补充说明:
词表
https://drive.google.com/file/d/1-6tXrii3tVxjkbrpSJE9MOG_HhbvP66V/view?usp=sharing
补充说明:
- 使用HuggingFace Tokenizers生成,可扩展词表规模后重新训练,需同步修改ELECTRA的vocab_size参数
训练流程
按以下结构组织文件(示例数据目录名为"trainer"):
trainer
- vocab.txt
- pretrain_tfrecords
-- (所有.tfrecord...文件)
- models
-- 模型名称
--- checkpoint
--- graph.pbtxt
--- model.*
协作笔记本提供GPU与TPU配置示例
参考configure_pretraining.py
模型转换
将训练中或完成的ELECTRA检查点转换为Transformers兼容格式:
git clone https://github.com/huggingface/transformers
python ./transformers/src/transformers/convert_electra_original_tf_checkpoint_to_pytorch.py
--tf_checkpoint_path=./models/checkpointdir
--config_file=config.json
--pytorch_dump_path=pytorch_model.bin
--discriminator_or_generator=discriminator
python
from transformers import TFElectraForPreTraining
model = TFElectraForPreTraining.from_pretrained("./dir_with_pytorch", from_pt=True)
model.save_pretrained("tf")
当目录中包含config.json、pytorch_model.bin、tf_model.h5、special_tokens_map.json、tokenizer_config.json和vocab.txt文件后,运行:
transformers-cli upload 目录名