Translation
翻訳では、一連のテキストをある言語から別の言語に変換します。これは、シーケンス間問題として定式化できるいくつかのタスクの 1 つであり、翻訳や要約など、入力から何らかの出力を返すための強力なフレームワークです。翻訳システムは通常、異なる言語のテキスト間の翻訳に使用されますが、音声、またはテキストから音声への変換や音声からテキストへの変換など、音声間の組み合わせにも使用できます。
このガイドでは、次の方法を説明します。
- OPUS Books データセットの英語-フランス語サブセットの T5 を微調整して、英語のテキストを次の形式に翻訳します。フランス語。
- 微調整されたモデルを推論に使用します。
このタスクと互換性のあるすべてのアーキテクチャとチェックポイントを確認するには、タスクページ を確認することをお勧めします。
始める前に、必要なライブラリがすべてインストールされていることを確認してください。
pip install transformers datasets evaluate sacrebleu
モデルをアップロードしてコミュニティと共有できるように、Hugging Face アカウントにログインすることをお勧めします。プロンプトが表示されたら、トークンを入力してログインします。
Load OPUS Books dataset
まず、🤗 データセット ライブラリから OPUS Books データセットの英語とフランス語のサブセットを読み込みます。
train_test_split メソッドを使用して、データセットをトレイン セットとテスト セットに分割します。
次に、例を見てみましょう。
{'id': '90560',
, 'translation': {'en': 'But this lofty plateau measured only a few fathoms, and soon we reentered Our Element.',
, 'fr': 'Mais ce plateau élevé ne mesurait que quelques toises, et bientôt nous fûmes rentrés dans notre élément.'}} translation: テキストの英語とフランス語の翻訳。
Preprocess
次のステップでは、T5 トークナイザーをロードして英語とフランス語の言語ペアを処理します。
作成する前処理関数は次のことを行う必要があります。
- T5 がこれが翻訳タスクであることを認識できるように、入力の前にプロンプトを付けます。複数の NLP タスクが可能な一部のモデルでは、特定のタスクのプロンプトが必要です。
- 英語の語彙で事前トレーニングされたトークナイザーを使用してフランス語のテキストをトークン化することはできないため、入力 (英語) とターゲット (フランス語) を別々にトークン化します。
max_lengthパラメータで設定された最大長を超えないようにシーケンスを切り詰めます。
データセット全体に前処理関数を適用するには、🤗 Datasets map メソッドを使用します。 batched=True を設定してデータセットの複数の要素を一度に処理することで、map 関数を高速化できます。
次に、DataCollatorForSeq2Seq を使用してサンプルのバッチを作成します。データセット全体を最大長までパディングするのではなく、照合中にバッチ内の最長の長さまで文を 動的にパディング する方が効率的です。
Evaluate
次に、予測とラベルを compute に渡して SacreBLEU スコアを計算する関数を作成します。
これでcompute_metrics関数の準備が整いました。トレーニングをセットアップするときにこの関数に戻ります。
Train
これでモデルのトレーニングを開始する準備が整いました。 AutoModelForSeq2SeqLM を使用して T5 をロードします。
この時点で残っているステップは 3 つだけです。
- Seq2SeqTrainingArguments でトレーニング ハイパーパラメータを定義します。唯一の必須パラメータは、モデルの保存場所を指定する
output_dirです。push_to_hub=Trueを設定して、このモデルをハブにプッシュします (モデルをアップロードするには、Hugging Face にサインインする必要があります)。各エポックの終了時に、Trainer は SacreBLEU メトリクスを評価し、トレーニング チェックポイントを保存します。 - トレーニング引数をモデル、データセット、トークナイザー、データ照合器、および
compute_metrics関数とともに Seq2SeqTrainer に渡します。 - train() を呼び出してモデルを微調整します。
トレーニングが完了したら、 push_to_hub() メソッドを使用してモデルをハブに共有し、誰もがモデルを使用できるようにします。
翻訳用にモデルを微調整する方法の詳細な例については、対応するドキュメントを参照してください。 PyTorch ノートブック または TensorFlow ノートブック。
Inference
モデルを微調整したので、それを推論に使用できるようになりました。
別の言語に翻訳したいテキストを考え出します。 T5 の場合、作業中のタスクに応じて入力に接頭辞を付ける必要があります。英語からフランス語に翻訳する場合は、以下に示すように入力に接頭辞を付ける必要があります。
テキストをトークン化し、input_ids を PyTorch テンソルとして返します。
generate() メソッドを使用して翻訳を作成します。さまざまなテキスト生成戦略と生成を制御するためのパラメーターの詳細については、Text Generation API を確認してください。
生成されたトークン ID をデコードしてテキストに戻します。
'Les lignées partagent des ressources avec des bactéries enfixant l'azote.'