许可协议:apache-2.0
标签:
- 情感分析
- 文本分类
- 零样本蒸馏
- 蒸馏技术
- 零样本分类
- debarta-v3
模型索引:
- 名称:distilbert-base-multilingual-cased-sentiments-student
结果:[]
数据集:
- tyqiangz/multilingual-sentiments
语言支持:
- 英语
- 阿拉伯语
- 德语
- 西班牙语
- 法语
- 日语
- 中文
- 印尼语
- 印地语
- 意大利语
- 马来语
- 葡萄牙语
distilbert-base-multilingual-cased-sentiments-student
本模型通过此脚本从多语言情感数据集的零样本分类流程蒸馏而来。
实际上multilingual-sentiments数据集本身带有标注,但为了示例演示,我们选择忽略这些标注。
教师模型:MoritzLaurer/mDeBERTa-v3-base-mnli-xnli
教师假设模板:"这段文本的情感是{}。"
学生模型:distilbert-base-multilingual-cased
推理示例
from transformers import pipeline
distilled_student_sentiment_classifier = pipeline(
model="lxyuan/distilbert-base-multilingual-cased-sentiments-student",
return_all_scores=True
)
distilled_student_sentiment_classifier("我爱这部电影,愿意反复观看!")
>> [[{'label': 'positive', 'score': 0.9731044769287109},
{'label': 'neutral', 'score': 0.016910076141357422},
{'label': 'negative', 'score': 0.009985478594899178}]]
distilled_student_sentiment_classifier("Saya suka filem ini dan saya akan menontonnya lagi dan lagi!")
[[{'label': 'positive', 'score': 0.9760093688964844},
{'label': 'neutral', 'score': 0.01804516464471817},
{'label': 'negative', 'score': 0.005945465061813593}]]
distilled_student_sentiment_classifier("私はこの映画が大好きで、何度も見ます!")
>> [[{'label': 'positive', 'score': 0.9342429041862488},
{'label': 'neutral', 'score': 0.040193185210227966},
{'label': 'negative', 'score': 0.025563929229974747}]]
训练流程
笔记本链接:点击查看
训练超参数
可通过以下命令复现结果:
python transformers/examples/research_projects/zero-shot-distillation/distill_classifier.py \
--data_file ./multilingual-sentiments/train_unlabeled.txt \
--class_names_file ./multilingual-sentiments/class_names.txt \
--hypothesis_template "这段文本的情感是{}。" \
--teacher_name_or_path MoritzLaurer/mDeBERTa-v3-base-mnli-xnli \
--teacher_batch_size 32 \
--student_name_or_path distilbert-base-multilingual-cased \
--output_dir ./distilbert-base-multilingual-cased-sentiments-student \
--per_device_train_batch_size 16 \
--fp16
若在Colab训练,需修改以下代码避免内存溢出:
default=False,
dataset = dataset.map(tokenizer, input_columns="text", fn_kwargs={"padding": "max_length", "truncation": True, "max_length": 512})
del model
print(f"已手动删除教师模型,释放内存供学生模型使用")
trainer.push_to_hub()
tokenizer.push_to_hub("distilbert-base-multilingual-cased-sentiments-student")
训练日志
训练完成。别忘了在huggingface.co/models分享你的模型!
{'train_runtime': 2009.8864, 'train_samples_per_second': 73.0, 'train_steps_per_second': 4.563, 'train_loss': 0.6473459283913797, 'epoch': 1.0}
100%|███████████████████████████████████████| 9171/9171 [33:29<00:00, 4.56it/s]
[评估阶段忽略警告...]
师生预测一致率:88.29%
[模型检查点保存成功...]
框架版本
- Transformers 4.28.1
- Pytorch 2.0.0+cu118
- Datasets 2.11.0
- Tokenizers 0.13.3