🚀 BART-LARGEをSQuADv2でファインチューニング
このモデルは、質問応答タスクのためにSQuADv2データセットでファインチューニングされたbart-largeモデルです。
🚀 クイックスタート
このモデルは質問応答タスクに最適化されており、SQuADv2データセットで訓練されています。以下のセクションで詳細をご紹介します。
✨ 主な機能
- BARTは、自然言語生成、翻訳、理解のためのノイズ除去シーケンス-to-シーケンス事前学習モデルです。
- seq2seqモデルであり、NLGとNLUの両方のタスクに対応しています。
- 最大1024トークンのシーケンスを扱うことができます。
📦 インストール
このモデルを使用するには、transformers
ライブラリが必要です。以下のコマンドでインストールできます。
pip install transformers
📚 ドキュメント
モデルの詳細
BARTは、論文BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehensionで提案されたモデルです。BARTは、自然言語生成、翻訳、理解のためのノイズ除去シーケンス-to-シーケンス事前学習モデルです。
質問応答タスクでBARTを使用する場合、完全なドキュメントをエンコーダとデコーダに入力し、デコーダの最上位隠れ状態を各単語の表現として使用します。この表現を使用してトークンを分類します。論文によると、bart-largeはSQuADでROBERTaと同等の性能を達成します。
属性 |
詳細 |
エンコーダ層数 |
12 |
デコーダ層数 |
12 |
隠れ層サイズ |
4096 |
アテンションヘッド数 |
16 |
ディスク上のサイズ |
1.63GB |
モデルの訓練
このモデルは、simpletransformers
ラッパーを使用して以下のパラメータで訓練されました。
train_args = {
'learning_rate': 1e-5,
'max_seq_length': 512,
'doc_stride': 512,
'overwrite_output_dir': True,
'reprocess_input_data': False,
'train_batch_size': 8,
'num_train_epochs': 2,
'gradient_accumulation_steps': 2,
'no_cache': True,
'use_cached_eval_features': False,
'save_model_every_epoch': False,
'output_dir': "bart-squadv2",
'eval_batch_size': 32,
'fp16_opt_level': 'O2',
}
このColabノートブックを使用して独自のモデルを訓練することもできます
結果
{"correct": 6832, "similar": 4409, "incorrect": 632, "eval_loss": -14.950117511952177}
💻 使用例
基本的な使用法
from transformers import BartTokenizer, BartForQuestionAnswering
import torch
tokenizer = BartTokenizer.from_pretrained('a-ware/bart-squadv2')
model = BartForQuestionAnswering.from_pretrained('a-ware/bart-squadv2')
question, text = "Who was Jim Henson?", "Jim Henson was a nice puppet"
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, output_attentions=False)[:2]
all_tokens = tokenizer.convert_ids_to_tokens(input_ids[0])
answer = ' '.join(all_tokens[torch.argmax(start_scores) : torch.argmax(end_scores)+1])
answer = tokenizer.convert_tokens_to_ids(answer.split())
answer = tokenizer.decode(answer)
🔧 技術詳細
BARTは、エンコーダとデコーダから構成されるseq2seqモデルです。質問応答タスクでは、完全なドキュメントをエンコーダとデコーダに入力し、デコーダの最上位隠れ状態を各単語の表現として使用します。この表現を使用してトークンを分類します。
📄 ライセンス
このモデルは、❤️ を持ってA-ware UGによって作成されました。 