Path: blob/main/transformers_doc/ja/multiple_choice.ipynb
4522 views
Multiple choice
多肢選択タスクは質問応答に似ていますが、いくつかの候補の回答がコンテキストとともに提供され、正しい回答を選択するようにモデルがトレーニングされる点が異なります。
このガイドでは、次の方法を説明します。
始める前に、必要なライブラリがすべてインストールされていることを確認してください。
モデルをアップロードしてコミュニティと共有できるように、Hugging Face アカウントにログインすることをお勧めします。プロンプトが表示されたら、トークンを入力してログインします。
Load SWAG dataset
まず、🤗 データセット ライブラリから SWAG データセットの「通常」構成をロードします。
次に、例を見てみましょう。
ここにはたくさんのフィールドがあるように見えますが、実際は非常に簡単です。
sent1
とsent2
: これらのフィールドは文の始まりを示し、この 2 つを組み合わせるとstartphrase
フィールドが得られます。ending
: 文の終わり方として考えられる終わり方を示唆しますが、正しいのは 1 つだけです。label
: 正しい文の終わりを識別します。
Preprocess
次のステップでは、BERT トークナイザーをロードして、文の始まりと 4 つの可能な終わりを処理します。
作成する前処理関数は次のことを行う必要があります。
sent1
フィールドのコピーを 4 つ作成し、それぞれをsent2
と組み合わせて文の始まりを再現します。sent2
を 4 つの可能な文末尾のそれぞれと組み合わせます。これら 2 つのリストをトークン化できるようにフラット化し、その後、各例に対応する
input_ids
、attention_mask
、およびlabels
フィールドが含まれるように非フラット化します。
データセット全体に前処理関数を適用するには、🤗 Datasets map
メソッドを使用します。 batched=True
を設定してデータセットの複数の要素を一度に処理することで、map
関数を高速化できます。
DataCollatorForMultipleChoice
は、すべてのモデル入力を平坦化し、パディングを適用して、結果を非平坦化します。
Evaluate
次に、予測とラベルを compute
に渡して精度を計算する関数を作成します。
これでcompute_metrics
関数の準備が整いました。トレーニングをセットアップするときにこの関数に戻ります。
Train
Trainer を使用したモデルの微調整に慣れていない場合は、ここ の基本的なチュートリアルをご覧ください。
これでモデルのトレーニングを開始する準備が整いました。 AutoModelForMultipleChoice を使用して BERT をロードします。
この時点で残っている手順は次の 3 つだけです。
TrainingArguments でトレーニング ハイパーパラメータを定義します。唯一の必須パラメータは、モデルの保存場所を指定する
output_dir
です。push_to_hub=True
を設定して、このモデルをハブにプッシュします (モデルをアップロードするには、Hugging Face にサインインする必要があります)。各エポックの終了時に、Trainer は精度を評価し、トレーニング チェックポイントを保存します。トレーニング引数を、モデル、データセット、トークナイザー、データ照合器、および
compute_metrics
関数とともに Trainer に渡します。train() を呼び出してモデルを微調整します。
トレーニングが完了したら、 push_to_hub() メソッドを使用してモデルをハブに共有し、誰もがモデルを使用できますように。
Keras を使用したモデルの微調整に慣れていない場合は、こちら の基本的なチュートリアルをご覧ください。
次に、TFAutoModelForMultipleChoice を使用して BERT をロードできます。
prepare_tf_dataset() を使用して、データセットを tf.data.Dataset
形式に変換します。
compile
を使用してトレーニング用のモデルを設定します。 Transformers モデルにはすべてデフォルトのタスク関連の損失関数があるため、次の場合を除き、損失関数を指定する必要はないことに注意してください。
トレーニングを開始する前にセットアップする最後の 2 つのことは、予測から精度を計算することと、モデルをハブにプッシュする方法を提供することです。どちらも Keras コールバック を使用して行われます。
compute_metrics
関数を KerasMetricCallback に渡します。
PushToHubCallback でモデルとトークナイザーをプッシュする場所を指定します。
次に、コールバックをまとめてバンドルします。
ついに、モデルのトレーニングを開始する準備が整いました。トレーニングおよび検証データセット、エポック数、コールバックを指定して fit
を呼び出し、モデルを微調整します。
トレーニングが完了すると、モデルは自動的にハブにアップロードされ、誰でも使用できるようになります。
複数選択用にモデルを微調整する方法の詳細な例については、対応するセクションを参照してください。 PyTorch ノートブック または TensorFlow ノートブック。
Inference
モデルを微調整したので、それを推論に使用できるようになりました。
いくつかのテキストと 2 つの回答候補を考えてください。
各プロンプトと回答候補のペアをトークン化し、PyTorch テンソルを返します。いくつかのlables
も作成する必要があります。
入力とラベルをモデルに渡し、logits
を返します。
最も高い確率でクラスを取得します。
各プロンプトと回答候補のペアをトークン化し、TensorFlow テンソルを返します。
入力をモデルに渡し、logits
を返します。
最も高い確率でクラスを取得します。