t5-base-qa-squad-v1.1-portuguese 是一个在葡萄牙语上进行微调的问答(Question Answering)模型,它是在2022年1月27日在Google Colab上基于Neuralmind的 unicamp-dl/ptt5-base-portuguese-vocab 模型和SQUAD v1.1葡萄牙语数据集上进行微调的,使用了Test2Text-Generation目标。
由于T5基础模型和微调数据集都很小,模型在训练结束之前就出现了过拟合的现象。以下是验证数据集上的最终整体指标:
阅读我们在SQUAD v1.1上微调的其他葡萄牙语问答模型:
NLP nas empresas | Como eu treinei um modelo T5 em português na tarefa QA no Google Colab (2022年1月27日)
您可以在本页面的小部件中测试此模型。
还可以使用 QA App | T5 base pt ,它允许使用在SQuAD v1.1 pt数据集上进行问答任务微调的T5基础模型。
# install pytorch: check https://pytorch.org/ # !pip install transformers from transformers import AutoTokenizer, AutoModelForSeq2SeqLM # model & tokenizer model_name = "pierreguillou/t5-base-qa-squad-v1.1-portuguese" tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForSeq2SeqLM.from_pretrained(model_name) # parameters max_target_length=32 num_beams=1 early_stopping=True input_text = 'question: Quando foi descoberta a Covid-19? context: A pandemia de COVID-19, também conhecida como pandemia de coronavírus, é uma pandemia em curso de COVID-19, uma doença respiratória aguda causada pelo coronavírus da síndrome respiratória aguda grave 2 (SARS-CoV-2). A doença foi identificada pela primeira vez em Wuhan, na província de Hubei, República Popular da China, em 1 de dezembro de 2019, mas o primeiro caso foi reportado em 31 de dezembro do mesmo ano.' label = '1 de dezembro de 2019' 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('true answer |', label) print('pred |', pred)
您也可以使用pipeline。然而,它似乎存在输入序列max_length的问题。
!pip install transformers import transformers from transformers import pipeline # model model_name = "pierreguillou/t5-base-qa-squad-v1.1-portuguese" # parameters max_target_length=32 num_beams=1 early_stopping=True clean_up_tokenization_spaces=True input_text = 'question: Quando foi descoberta a Covid-19? context: A pandemia de COVID-19, também conhecida como pandemia de coronavírus, é uma pandemia em curso de COVID-19, uma doença respiratória aguda causada pelo coronavírus da síndrome respiratória aguda grave 2 (SARS-CoV-2). A doença foi identificada pela primeira vez em Wuhan, na província de Hubei, República Popular da China, em 1 de dezembro de 2019, mas o primeiro caso foi reportado em 31 de dezembro do mesmo ano.' label = '1 de dezembro de 2019' 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('true answer |', label) print('pred |', pred)
微调的笔记本( HuggingFace_Notebook_t5-base-portuguese-vocab_question_answering_QA_squad_v11_pt.ipynb )位于GitHub上。
# do training and evaluation do_train = True do_eval= True # batch batch_size = 4 gradient_accumulation_steps = 3 per_device_train_batch_size = batch_size per_device_eval_batch_size = per_device_train_batch_size*16 # LR, wd, epochs learning_rate = 1e-4 weight_decay = 0.01 num_train_epochs = 10 fp16 = True # logs logging_strategy = "steps" logging_first_step = True logging_steps = 3000 # if logging_strategy = "steps" eval_steps = logging_steps # checkpoints evaluation_strategy = logging_strategy save_strategy = logging_strategy save_steps = logging_steps save_total_limit = 3 # best model load_best_model_at_end = True metric_for_best_model = "f1" #"loss" if metric_for_best_model == "loss": greater_is_better = False else: greater_is_better = True # evaluation num_beams = 1
Num examples = 87510 Num Epochs = 10 Instantaneous batch size per device = 4 Total train batch size (w. parallel, distributed & accumulation) = 12 Gradient Accumulation steps = 3 Total optimization steps = 72920 Step Training Loss Exact Match 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