モデル概要
モデル特徴
モデル能力
使用事例
🚀 T5ベースをSQUaD v1.1ポルトガル語版で質問応答(QA)にファインチューニング
このモデルは、ポルトガル語の質問応答(QA)タスクに特化しており、SQUaD v1.1ポルトガル語版データセットを使って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)
✨ 主な機能
- ポルトガル語の質問応答:ポルトガル語での質問に対して適切な回答を生成します。
- Test2Text-Generation:Test2Text-Generationの目的を使って訓練されています。
📦 インストール
このモデルを使うには、transformers
ライブラリをインストールする必要があります。
!pip install transformers
📚 ドキュメント
概要
t5-base-qa-squad-v1.1-portuguese は、ポルトガル語の質問応答(QA)モデルです。2022年1月27日にGoogle Colabで、Neuralmindの unicamp-dl/ptt5-base-portuguese-vocab モデルを、Deep Learning Brasilグループ のSQUAD v1.1ポルトガル語版データセットを使ってファインチューニングしました。
T5ベースモデルとファインチューニングデータセットのサイズが小さいため、訓練が終了する前に過学習してしまいました。検証データセットでの最終的なメトリクスは以下の通りです。
- f1:79.3
- exact_match:67.3983
他のポルトガル語QAモデル
SQUAD v1.1でファインチューニングされた他のポルトガル語QAモデルもチェックしてみてください。
ブログ記事
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ベースモデルを質問応答タスクで使用することもできます。
🔧 技術詳細
ノートブック
ファインチューニングのノートブック (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









