Path: blob/main/transformers_doc/ja/pytorch/translation.ipynb
4542 views
Translation
翻訳では、一連のテキストをある言語から別の言語に変換します。これは、シーケンス間問題として定式化できるいくつかのタスクの 1 つであり、翻訳や要約など、入力から何らかの出力を返すための強力なフレームワークです。翻訳システムは通常、異なる言語のテキスト間の翻訳に使用されますが、音声、またはテキストから音声への変換や音声からテキストへの変換など、音声間の組み合わせにも使用できます。
このガイドでは、次の方法を説明します。
OPUS Books データセットの英語-フランス語サブセットの T5 を微調整して、英語のテキストを次の形式に翻訳します。フランス語。
微調整されたモデルを推論に使用します。
このタスクと互換性のあるすべてのアーキテクチャとチェックポイントを確認するには、タスクページ を確認することをお勧めします。
始める前に、必要なライブラリがすべてインストールされていることを確認してください。
モデルをアップロードしてコミュニティと共有できるように、Hugging Face アカウントにログインすることをお勧めします。プロンプトが表示されたら、トークンを入力してログインします。
Load OPUS Books dataset
まず、🤗 データセット ライブラリから OPUS Books データセットの英語とフランス語のサブセットを読み込みます。
train_test_split
メソッドを使用して、データセットをトレイン セットとテスト セットに分割します。
次に、例を見てみましょう。
translation
: テキストの英語とフランス語の翻訳。
Preprocess
次のステップでは、T5 トークナイザーをロードして英語とフランス語の言語ペアを処理します。
作成する前処理関数は次のことを行う必要があります。
T5 がこれが翻訳タスクであることを認識できるように、入力の前にプロンプトを付けます。複数の NLP タスクが可能な一部のモデルでは、特定のタスクのプロンプトが必要です。
英語の語彙で事前トレーニングされたトークナイザーを使用してフランス語のテキストをトークン化することはできないため、入力 (英語) とターゲット (フランス語) を別々にトークン化します。
max_length
パラメータで設定された最大長を超えないようにシーケンスを切り詰めます。
データセット全体に前処理関数を適用するには、🤗 Datasets map
メソッドを使用します。 batched=True
を設定してデータセットの複数の要素を一度に処理することで、map
関数を高速化できます。
次に、DataCollatorForSeq2Seq
を使用してサンプルのバッチを作成します。データセット全体を最大長までパディングするのではなく、照合中にバッチ内の最長の長さまで文を 動的にパディング する方が効率的です。
Evaluate
次に、予測とラベルを compute
に渡して SacreBLEU スコアを計算する関数を作成します。
これでcompute_metrics
関数の準備が整いました。トレーニングをセットアップするときにこの関数に戻ります。
Train
Trainer を使用したモデルの微調整に慣れていない場合は、ここ の基本的なチュートリアルをご覧ください。
これでモデルのトレーニングを開始する準備が整いました。 AutoModelForSeq2SeqLM を使用して T5 をロードします。
この時点で残っているステップは 3 つだけです。
Seq2SeqTrainingArguments でトレーニング ハイパーパラメータを定義します。唯一の必須パラメータは、モデルの保存場所を指定する
output_dir
です。push_to_hub=True
を設定して、このモデルをハブにプッシュします (モデルをアップロードするには、Hugging Face にサインインする必要があります)。各エポックの終了時に、Trainer は SacreBLEU メトリクスを評価し、トレーニング チェックポイントを保存します。トレーニング引数をモデル、データセット、トークナイザー、データ照合器、および
compute_metrics
関数とともに Seq2SeqTrainer に渡します。train() を呼び出してモデルを微調整します。
トレーニングが完了したら、 push_to_hub() メソッドを使用してモデルをハブに共有し、誰もがモデルを使用できるようにします。
Inference
モデルを微調整したので、それを推論に使用できるようになりました。
別の言語に翻訳したいテキストを考え出します。 T5 の場合、作業中のタスクに応じて入力に接頭辞を付ける必要があります。英語からフランス語に翻訳する場合は、以下に示すように入力に接頭辞を付ける必要があります。
推論用に微調整されたモデルを試す最も簡単な方法は、それを pipeline() で使用することです。モデルを使用して翻訳用のpipeline
をインスタンス化し、テキストをそれに渡します。
必要に応じて、pipeline
の結果を手動で複製することもできます。
テキストをトークン化し、input_ids
を PyTorch テンソルとして返します。
generate() メソッドを使用して翻訳を作成します。さまざまなテキスト生成戦略と生成を制御するためのパラメーターの詳細については、Text Generation API を確認してください。
生成されたトークン ID をデコードしてテキストに戻します。