🚀 Longformer-base-4096 をSQuAD v2でファインチューニング
Longformer-base-4096モデル を SQuAD v2 でファインチューニングし、質問応答(Q&A) の下流タスクに対応させました。
🚀 クイックスタート
このモデルは、長文に対応したTransformerモデルであるLongformerをSQuAD v2データセットでファインチューニングしたものです。以下に使用例を示します。
基本的な使用法
import torch
from transformers import AutoTokenizer, AutoModelForQuestionAnswering
ckpt = "mrm8488/longformer-base-4096-finetuned-squadv2"
tokenizer = AutoTokenizer.from_pretrained(ckpt)
model = AutoModelForQuestionAnswering.from_pretrained(ckpt)
text = "Huggingface has democratized NLP. Huge thanks to Huggingface for this."
question = "What has Huggingface done ?"
encoding = tokenizer(question, text, return_tensors="pt")
input_ids = encoding["input_ids"]
attention_mask = encoding["attention_mask"]
start_scores, end_scores = model(input_ids, attention_mask=attention_mask)
all_tokens = tokenizer.convert_ids_to_tokens(input_ids[0].tolist())
answer_tokens = all_tokens[torch.argmax(start_scores) :torch.argmax(end_scores)+1]
answer = tokenizer.decode(tokenizer.convert_tokens_to_ids(answer_tokens))
高度な使用法
from transformers import AutoTokenizer, AutoModelForQuestionAnswering, pipeline
ckpt = "mrm8488/longformer-base-4096-finetuned-squadv2"
tokenizer = AutoTokenizer.from_pretrained(ckpt)
model = AutoModelForQuestionAnswering.from_pretrained(ckpt)
qa = pipeline("question-answering", model=model, tokenizer=tokenizer)
text = "Huggingface has democratized NLP. Huge thanks to Huggingface for this."
question = "What has Huggingface done?"
qa({"question": question, "context": text})
✨ 主な機能
- 長文対応:Longformerモデルをベースにしているため、最大4,096のシーケンス長をサポートします。
- 質問応答タスク:SQuAD v2データセットでファインチューニングされており、質問応答タスクに適しています。
- ローカルとグローバルのアテンション:Longformerはスライディングウィンドウ(ローカル)アテンションとグローバルアテンションを組み合わせて使用します。
📦 インストール
データセットをロードするために、以下のコマンドでdatasets
ライブラリをインストールします。
!pip install datasets
📚 ドキュメント
Longformer-base-4096
Longformer は長文用のTransformerモデルです。
longformer-base-4096
はRoBERTaのチェックポイントから始まり、長文に対してMLM(マスク言語モデリング)で事前学習されたBERTライクなモデルです。最大4,096のシーケンス長をサポートします。
Longformerはスライディングウィンドウ(ローカル)アテンションとグローバルアテンションを組み合わせて使用します。グローバルアテンションはタスクに基づいてユーザーが設定でき、モデルがタスク固有の表現を学習できるようにします。
下流タスク(Q&A)の詳細 - データセット 📚 🧐 ❓
データセットID: squad_v2
(HuggingFace/Datasets から)
データセット |
分割 |
サンプル数 |
squad_v2 |
train |
130319 |
squad_v2 |
valid |
11873 |
Datasets からデータセットをロードする方法:
from datasets import load_dataset
dataset = load_dataset('squad_v2')
このデータセットや他のデータセットについて詳しくは Datasets Viewer を参照してください。
モデルのファインチューニング 🏋️
トレーニングスクリプトは このスクリプト を少し改変したものです。
モデルの実行例 🚀
上記の「基本的な使用法」と「高度な使用法」のコードを参照してください。
注意事項
同じコンテキストで存在しないことを尋ねた場合、回答なし の出力は <s>
になります。
作成者: Manuel Romero/@mrm8488 | LinkedIn
スペインで ♥ を込めて作成
