语言:
- 葡萄牙语
标签:
- 文本到文本生成
- T5模型
- PyTorch框架
- 问答系统
数据集:
- SQuAD问答数据集
- SQuAD v1.1葡萄牙语版
评估指标:
- 精确率
- 召回率
- F1分数
- 准确率
- SQuAD评分
模型索引:
- 名称: 检查点
结果:
- 任务:
名称: 文本到文本生成
类型: 文本到文本生成
数据集:
名称: SQuAD
类型: SQuAD
指标:
- 名称: F1值
类型: F1
数值: 79.3
- 名称: 精确匹配率
类型: 精确匹配
数值: 67.3983
演示样例:
- 文本: "问题: 全球新冠疫情何时开始? 上下文: COVID-19大流行,又称冠状病毒大流行,是由严重急性呼吸综合征冠状病毒2(SARS-CoV-2)引起的急性呼吸道疾病持续大流行。该疾病于2019年12月1日首次在中国湖北省武汉市被发现,但首例病例报告于同年12月31日。"
- 文本: "问题: 新冠病毒在何处被发现? 上下文: COVID-19大流行,又称冠状病毒大流行,是由严重急性呼吸综合征冠状病毒2(SARS-CoV-2)引起的急性呼吸道疾病持续大流行。该疾病于2019年12月1日首次在中国湖北省武汉市被发现,但首例病例报告于同年12月31日。"
基于T5的葡萄牙语问答模型(SQuAD v1.1微调版)

简介
t5-base-qa-squad-v1.1-portuguese是一个葡萄牙语问答模型,于2022年1月27日在Google Colab上基于unicamp-dl/ptt5-base-portuguese-vocab模型,使用Deep Learning Brasil团队提供的葡萄牙语SQuAD v1.1数据集,通过文本到文本生成目标微调而成。
由于T5基础模型规模较小且微调数据集有限,模型在训练结束前就出现了过拟合。在验证集上的最终评估指标为:
查看我们其他基于SQuAD v1.1微调的葡萄牙语问答模型:
博客文章
企业中的NLP | 我如何在Google Colab上训练葡萄牙语T5问答模型 (2022年1月27日)
演示与应用
您可以在本页的演示组件中测试此模型。
也可使用问答应用 | T5基础葡萄牙语版,该应用支持使用基于SQuAD v1.1葡萄牙语数据集微调的T5基础问答模型。
生产环境中的推理使用
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
model_name = "pierreguillou/t5-base-qa-squad-v1.1-portuguese"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSeq2SeqLM.from_pretrained(model_name)
max_target_length=32
num_beams=1
early_stopping=True
input_text = '问题: 新冠病毒何时被发现? 上下文: COVID-19大流行,又称冠状病毒大流行,是由严重急性呼吸综合征冠状病毒2(SARS-CoV-2)引起的急性呼吸道疾病持续大流行。该疾病于2019年12月1日首次在中国湖北省武汉市被发现,但首例病例报告于同年12月31日。'
label = '2019年12月1日'
inputs = tokenizer(input_text, return_tensors="pt")
outputs = model.generate(inputs["input_ids"],
max_length=max_target_length,
num_beams=num_beams,
early_stopping=early_stopping
)
pred = tokenizer.decode(outputs[0], skip_special_tokens=True, clean_up_tokenization_spaces=True)
print('真实答案 |', label)
print('预测答案 |', pred)
也可以使用pipeline,但可能会遇到输入序列最大长度的问题。
!pip install transformers
import transformers
from transformers import pipeline
model_name = "pierreguillou/t5-base-qa-squad-v1.1-portuguese"
max_target_length=32
num_beams=1
early_stopping=True
clean_up_tokenization_spaces=True
input_text = '问题: 新冠病毒何时被发现? 上下文: COVID-19大流行,又称冠状病毒大流行,是由严重急性呼吸综合征冠状病毒2(SARS-CoV-2)引起的急性呼吸道疾病持续大流行。该疾病于2019年12月1日首次在中国湖北省武汉市被发现,但首例病例报告于同年12月31日。'
label = '2019年12月1日'
text2text = pipeline(
"text2text-generation",
model=model_name,
max_length=max_target_length,
num_beams=num_beams,
early_stopping=early_stopping,
clean_up_tokenization_spaces=clean_up_tokenization_spaces
)
pred = text2text(input_text)
print('真实答案 |', label)
print('预测答案 |', pred)
训练过程
训练笔记
微调笔记本(HuggingFace_Notebook_t5-base-portuguese-vocab_question_answering_QA_squad_v11_pt.ipynb)可在github获取。
超参数设置
do_train = True
do_eval= True
batch_size = 4
梯度累积步数 = 3
单设备训练批次大小 = batch_size
单设备评估批次大小 = 单设备训练批次大小*16
学习率 = 1e-4
权重衰减 = 0.01
训练轮次数 = 10
混合精度训练 = True
日志策略 = "按步数"
首次记录步 = True
记录间隔步数 = 3000
评估间隔步数 = 记录间隔步数
评估策略 = 日志策略
保存策略 = 日志策略
保存间隔步数 = 记录间隔步数
最大保存检查点数 = 3
训练结束时加载最佳模型 = True
最佳模型指标 = "F1值"
if 最佳模型指标 == "损失值":
数值越大越好 = False
else:
数值越大越好 = True
束搜索数 = 1
训练结果
样本总数 = 87510
训练轮次 = 10
单设备即时批次大小 = 4
总训练批次大小(含并行、分布式和累积) = 12
梯度累积步数 = 3
总优化步数 = 72920
步数 训练损失 精确匹配率 F1值
3000 0.776100 61.807001 75.114517
6000 0.545900 65.260170 77.468930
9000 0.460500 66.556291 78.491938
12000 0.393400 66.821192 78.745397
15000 0.379800 66.603595 78.815515
18000 0.298100 67.578051 79.287899
21000 0.303100 66.991485 78.979669
24000 0.251600 67.275307 78.929923
27000 0.237500 66.972564 79.333612
30000 0.220500 66.915799 79.236574
33000 0.182600 67.029328 78.964212
36000 0.190600 66.982025 79.086125