Transformers documentation

FSMT

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

このモデルは2019年7月15日にHF papersで公開され、2020年11月16日にHugging Face Transformersに貢献されました。

FSMT

概要

FSMT (FairSeq MachineTranslation) モデルは、Nathan Ng、Kyra Yee、Alexei Baevski、Myle Ott、Michael Auli、Sergey Edunov によって、Facebook FAIR の WMT19 ニュース翻訳タスク提出で紹介されました。

この論文の要旨は以下の通りです。

本論文では、Facebook FAIRによるWMT19共同ニュース翻訳タスクへの提出内容について説明します。我々は2つの言語ペア、4つの言語方向、すなわち英語 <-> ドイツ語および英語 <-> ロシア語に参加しました。昨年の提出に続き、ベースラインシステムは、サンプリングされたバック翻訳に依存する、Fairseqシーケンスモデリングツールキットで訓練された大規模なBPEベースのtransformerモデルです。今年度は、異なるバイテキストデータのフィルタリング手法、およびフィルタリングされたバック翻訳データの追加について実験を行いました。また、ドメイン固有のデータを用いてモデルをアンサンブルし、ファインチューニングした後、noisy channel modelによるリランキングを用いてデコードしました。我々の提出は、人間評価キャンペーンの4つの方向すべてで1位にランクインしました。En->Deでは、我々のシステムは他のシステムおよび人間による翻訳を大幅に上回りました。このシステムは、WMT’18の提出に対して4.5 BLEUポイント改善しています。

このモデルはstasによって提供されました。元のコードはこちらで確認できます。

実装に関する補足

  • FSMTは、ソース語彙とターゲット語彙のペアを使用しますが、これらを1つに統合しません。また、埋め込みトークンを共有することもありません。そのトークナイザーはXLMTokenizerに非常に似ており、メインのモデルはBartModelから派生しています。

FSMTConfig

class transformers.FSMTConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0id2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Noneis_encoder_decoder: bool = Truelangs: list[str] | tuple[str, ...] = ('en', 'de')src_vocab_size: int = 42024tgt_vocab_size: int = 42024activation_function: str = 'relu'd_model: int = 1024max_length: int = 200max_position_embeddings: int = 1024encoder_ffn_dim: int = 4096encoder_layers: int = 12encoder_attention_heads: int = 16encoder_layerdrop: float | int = 0.0decoder_ffn_dim: int = 4096decoder_layers: int = 12decoder_attention_heads: int = 16decoder_layerdrop: float | int = 0.0attention_dropout: float | int = 0.0dropout: float | int = 0.1activation_dropout: float | int = 0.0init_std: float = 0.02decoder_start_token_id: int | None = 2scale_embedding: bool = Truetie_word_embeddings: bool = Falsenum_beams: int = 5length_penalty: float = 1.0early_stopping: bool = Falseuse_cache: bool = Truepad_token_id: int | None = 1bos_token_id: int | None = 0eos_token_id: int | list[int] | None = 2forced_eos_token_id: int | list[int] | None = 2 )

パラメータ

  • is_encoder_decoder (bool、任意、デフォルトはTrue) — モデルがエンコーダー/デコーダーとして使用されるかどうかを示します。
  • langs (Union[list[str], tuple[str, ...]]、任意、デフォルトは ('en', 'de')) — ソース言語とターゲット言語のリスト(例: [‘en’, ‘ru’])。
  • src_vocab_size (int、任意、デフォルト値は 42024) — エンコーダーの語彙サイズです。エンコーダーの forward メソッドに渡される inputs_ids で表現できるトークンの種類数を定義します。
  • tgt_vocab_size (int、任意、デフォルトは 42024) — デコーダーの語彙サイズです。デコーダーの forward メソッドに渡される inputs_ids で表現できるトークンの種類数を定義します。
  • activation_function (str、任意、デフォルトは relu) — デコーダーで使用する非線形活性化関数(関数または文字列)。例えば、"gelu"、"relu"、"silu" など。
  • d_model (int、任意、デフォルトは 1024) — エンコーダ層とプーラ層のサイズ。
  • max_length (int、任意、デフォルトは 200) — 生成する最大長。
  • max_position_embeddings (int、任意、デフォルトは 1024) — このモデルが使用される可能性のある最大シーケンス長です。
  • encoder_ffn_dim (int、任意、デフォルトは4096) — エンコーダー内の「中間」層(フィードフォワード層と呼ばれることが多い)の次元数。
  • encoder_layers (int、任意、デフォルト値は 12) — Transformer エンコーダーの隠れ層の数です。設定されていない場合、num_layers と同じ値が使用されます。
  • encoder_attention_heads (int、任意、デフォルトは 16) — Transformer エンコーダーの各アテンション層におけるアテンションヘッドの数。
  • encoder_layerdrop (Union[float, int]、任意、デフォルトは 0.0) — エンコーダーの LayerDrop 確率です。詳細は [LayerDrop の論文](https://huggingface.co/papers/1909.11556 を参照)をご覧ください。
  • decoder_ffn_dim (int、任意、デフォルトは 4096) — デコーダー内の「中間」層(フィードフォワード層と呼ばれることが多い)の次元数。
  • decoder_layers (int、任意、デフォルトは 12) — Transformer デコーダーの隠れ層の数です。設定されていない場合は、num_layers と同じ値が使用されます。
  • decoder_attention_heads (int、任意、デフォルトは 16) — Transformer デコーダーの各アテンション層におけるアテンションヘッドの数。
  • decoder_layerdrop (Union[float, int]、省略可、デフォルト値は 0.0) — デコーダーの LayerDrop 確率です。詳細は [LayerDrop の論文](https://huggingface.co/papers/1909.11556 を参照)をご覧ください。
  • attention_dropout (Union[float, int]、任意、デフォルトは 0.0) — アテンション確率のドロップアウト率です。
  • dropout (Union[float, int]、任意、デフォルト値は0.1) — すべての dropout レイヤーの比率です。
  • activation_dropout (Union[float, int]、任意、デフォルトは 0.0) — 全結合層内の活性化に対する dropout 率です。
  • init_std (float、任意、デフォルトは 0.02) — すべての重み行列を初期化するための truncated_normal_initializer の標準偏差です。
  • decoder_start_token_id (int、任意、デフォルトは 2) — エンコーダー・デコーダーモデルが bos とは異なるトークンでデコーディングを開始する場合、そのトークンの ID。
  • scale_embedding (bool、任意、デフォルトはTrue) — 埋め込みを sqrt(d_model) で割ってスケーリングするかどうかを指定します。
  • tie_word_embeddings (bool、任意、デフォルトは False) — モデルの tied_weights_keys マッピングに従って重み埋め込みを共有するかどうかを指定します。
  • num_beams (int、任意、デフォルト値は 5)— モデルの generate メソッドでデフォルトとして使用されるビームサーチのビーム数です。1 を指定すると、ビームサーチを行いません。
  • length_penalty (float、任意、デフォルト値は 1) — ビームベース生成で使用する、長さに対する指数ペナルティです。シーケンスの長さを指数として適用し、その結果でシーケンスのスコアを割ります。スコアはシーケンスの対数尤度(つまり負の値)であるため、length_penalty > 0.0 の場合は長いシーケンスが促進され、length_penalty < 0.0 の場合は短いシーケンスが促進されます。
  • early_stopping (bool、省略可、デフォルトは False) — モデルの generate メソッドでデフォルトとして使用されるフラグ。バッチあたり少なくとも num_beams 文が完了した時点でビームサーチを停止するかどうかを指定します。
  • use_cache (bool、任意、デフォルトは True) — モデルが最後のキー/バリューの注意を返すかどうか(すべてのモデルで利用されるわけではありません)。config.is_decoder=True の場合、またはモデルがデコーダー専用の生成モデルである場合にのみ関連します。
  • pad_token_id (int、任意、デフォルトは 1) — 語彙内でパディングに使用されるトークン ID。
  • bos_token_id (int、任意、デフォルトは 0) — 語彙におけるストリーム開始に使用されるトークン ID。
  • eos_token_id (Union[int, list[int]]、任意、デフォルトは 2) — 語彙内でストリーム終了に使用されるトークン ID。
  • forced_eos_token_id (Union[int, list[int]]、任意、デフォルトは 2) — max_length に達した際に、最後に生成されるトークンとして強制するトークンの id です。通常は eos_token_id に設定されます。

これは FSMTModel の設定を保存するための設定クラスです。指定された引数に基づいて Fsmt モデルをインスタンス化し、モデルのアーキテクチャを定義するために使用されます。デフォルト値で設定をインスタンス化すると、facebook/wmt19-en-ru と同様の設定が得られます。

設定オブジェクトはPreTrainedConfigを継承し、モデルの出力を制御するために使用できます。詳細については、PreTrainedConfigのドキュメントを参照してください。

例:

>>> from transformers import FSMTConfig, FSMTModel

>>> # Initializing a FSMT facebook/wmt19-en-ru style configuration
>>> config = FSMTConfig()

>>> # Initializing a model (with random weights) from the configuration
>>> model = FSMTModel(config)

>>> # Accessing the model configuration
>>> configuration = model.config

FSMTTokenizer

クラス transformers.FSMTTokenizer

< >

( langs = Nonesrc_vocab_file = Nonetgt_vocab_file = Nonemerges_file = Nonedo_lower_case = Falseunk_token = '<unk>'bos_token = '<s>'sep_token = '</s>'pad_token = '<pad>'**kwargs )

パラメータ

  • langs (List[str], 任意) — 翻訳元の言語と翻訳先の言語を2つ指定するリストです。例: ["en", "ru"]
  • src_vocab_file (str, 省略可) — ソース言語の語彙を含むファイル。
  • tgt_vocab_file (st、任意) — ターゲット言語の語彙を含むファイル。
  • merges_file (str, 省略可) — マージを含むファイル。
  • do_lower_case (bool、省略可、デフォルトは False) — トークン化時に、入力を小文字に変換するかどうかを指定します。
  • unk_token (str、任意、デフォルトは "<unk>") — 不明トークンです。語彙に存在しないトークンは ID に変換できず、代わりにこのトークンが設定されます。
  • bos_token (str, 省略可, デフォルトは "<s>") — 事前学習時に使用されたシーケンス開始トークン。シーケンス分類器のトークンとしても使用できます。

    特殊トークンを用いてシーケンスを構築する場合、シーケンスの先頭に使用されるのはこのトークンではありません。使用されるのはcls_tokenです。

  • sep_token (str、任意、デフォルトは "</s>") — 区切りトークンです。複数のシーケンスからシーケンスを構築する際に使用されます。例えば、シーケンス分類では2つのシーケンス、質問応答ではテキストと質問です。また、特殊トークンを用いて構築されたシーケンスの最後のトークンとしても使用されます。
  • pad_token (str、任意、デフォルトは "<pad>") — パディングに使用されるトークンです。例えば、長さが異なるシーケンスをバッチ処理する際に使用します。

FAIRSEQ Transformer トークナイザーを構築します。Byte-Pair Encoding に基づいています。トークナイズ処理は以下の通りです。

  • Mosesによる前処理とトークン化。
  • すべての入力テキストを正規化します。
  • 引数special_tokensと関数set_special_tokensは、語彙に追加のシンボル(classifyなど)を追加するために使用できます。
  • 引数langsは、言語のペアを定義します。

このトークナイザーは、PreTrainedTokenizer を継承しており、主要なメソッドのほとんどが含まれています。これらのメソッドに関する詳細については、このスーパークラスを参照してください。

build_inputs_with_special_tokens

< >

( token_ids_0: listtoken_ids_1: list[int] | None = None ) → List[int]

パラメータ

  • token_ids_0 (List[int]) — 特殊トークンを追加する ID のリスト。
  • token_ids_1 (List[int]、省略可) — シーケンスペア用の任意の2番目のIDリスト。

戻り値

List[int]

適切な特殊トークンを含む入力 IDのリスト。

シーケンス分類タスクにおいて、シーケンスまたはシーケンスのペアからモデルの入力を構築するために、特殊トークンを連結して追加します。FAIRSEQ Transformer のシーケンスは、次の形式を持ちます:

  • 単一シーケンス: <s> X </s>
  • シーケンスのペア: <s> A </s> B </s>

get_special_tokens_mask

< >

( token_ids_0: listtoken_ids_1: list[int] | None = Nonealready_has_special_tokens: bool = False ) → List[int]

パラメータ

  • token_ids_0 (List[int]) — ID のリスト。
  • token_ids_1 (List[int]、省略可) — シーケンスペア用の任意の2番目のIDリスト。
  • already_has_special_tokens (bool、任意、デフォルトは False) — トークンリストが、モデル用の特殊トークンで既にフォーマットされているかどうかを示します。

戻り値

List[int]

範囲 [0, 1] の整数のリスト: 特殊トークンは 1、シーケンストークンは 0。

特殊トークンが追加されていないトークンリストからシーケンスIDを取得します。このメソッドは、トークナイザーのprepare_for_modelメソッドを使用して特殊トークンを追加する際に呼び出されます。

create_token_type_ids_from_sequences

< >

( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]

パラメータ

  • token_ids_0 (list[int]) — ID のリストです。
  • token_ids_1 (list[int]、省略可) — シーケンスペア用の第2のIDリスト(任意)。

戻り値

list[int]

設定されたパターンに従ったトークンタイプID。

シーケンスペア分類タスクで使用するために、渡された2つのシーケンスからマスクを作成します。

このメソッドは、トークナイザーの設定属性に基づいてトークンタイプIDを動的に構築します:

  • token_type_ids_pattern: 使用するパターン(“all_zeros”または“bert_style”)
  • token_type_ids_include_special_tokens: 長さの計算に特殊トークンを考慮するかどうか

例:

# All zeros pattern (default, used by RoBERTa, BART, etc.)
tokenizer.token_type_ids_pattern = "all_zeros"
# Returns: [0, 0, 0, ...] for both sequences

# BERT-style pattern (first sequence gets 0s, second gets 1s)
tokenizer.token_type_ids_pattern = "bert_style"
# Returns: [0, 0, 0, ..., 1, 1, 1, ...] for sequence pairs

save_vocabulary

< >

( save_directory: strfilename_prefix: str | None = None )

FSMTModel

class transformers.FSMTModel

< >

( config: FSMTConfig )

パラメータ

  • config (FSMTConfig) — モデルのすべてのパラメータを含むモデル設定クラス。設定ファイルで初期化しても、モデルに関連付けられた重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。

特定のヘッドを上に持たず、生のhidden-statesを出力する素のFsmt Model。

このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。

このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。

forward

< >

( input_ids: LongTensorattention_mask: typing.Optional[torch.Tensor] = Nonedecoder_input_ids: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.BoolTensor] = Noneencoder_outputs: tuple[torch.FloatTensor] | None = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneuse_cache: bool | None = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Noneinputs_embeds: typing.Optional[torch.FloatTensor] = Nonedecoder_inputs_embeds: typing.Optional[torch.FloatTensor] = Nonereturn_dict: bool | None = None**kwargs ) → Seq2SeqModelOutput or tuple(torch.FloatTensor)

パラメータ

  • input_ids (torch.LongTensor の形状 (batch_size, sequence_length)) — 語彙における入力シーケンスのトークンインデックスです。デフォルトでは、パディングは無視されます。

    インデックスはAutoTokenizerを使用して取得できます。詳細については、PreTrainedTokenizer.encode()およびPreTrainedTokenizer.call()を参照してください。

    入力IDとは何ですか?

  • attention_mask (torch.Tensor の形状 (batch_size, sequence_length), 、任意) — パディングトークンのインデックスに対するアテンションを回避するためのマスク。 [0, 1]:
    • マスクされていないトークンに対して1
    • マスクされたトークンに対しては 0 です。

    アテンションマスクとは?

  • decoder_input_ids (torch.LongTensor の形状 (batch_size, target_sequence_length), 、省略可) — 語彙におけるデコーダー入力シーケンスのトークンインデックスです。インデックスは AutoTokenizer を使用して取得できます。詳細については PreTrainedTokenizer.encode() および PreTrainedTokenizer.call() を参照してください。デコーダー入力 ID とは何か? FSMT は、decoder_input_ids の生成の開始トークンとして eos_token_id を使用します。past_key_values を使用する場合、オプションとして最後の decoder_input_ids だけを入力すれば十分です (past_key_values を参照)。

    インデックスはAutoTokenizerを使用して取得できます。詳細については、PreTrainedTokenizer.encode()およびPreTrainedTokenizer.call()を参照してください。

    デコーダー入力IDとは何ですか?

    FSMT は decoder_input_ids の生成における開始トークンとして eos_token_id を使用します。past_key_values を使用する場合、任意で最後の decoder_input_ids だけを入力すれば十分です(past_key_values を参照)。

  • decoder_attention_mask (torch.BoolTensor、shape (batch_size, target_sequence_length)、任意) — デフォルトの動作: decoder_input_ids 内の pad トークンを無視するテンソルを生成します。デフォルトでは、causal mask も使用されます。
  • encoder_outputs (tuple[torch.FloatTensor], 任意) — last_hidden_state、任意: hidden_states、任意: attentions のタプルです。 last_hidden_state は形状 (batch_size, sequence_length, hidden_size)、任意)であり、エンコーダーの最終層の出力における隠れ状態のシーケンスです。デコーダーのクロスアテンションで使用されます。
  • past_key_values (~cache_utils.Cache, 省略可) — 逐次デコードを高速化するために使用できる、事前計算された隠れ状態(自己アテンションブロックおよびクロスアテンションブロックのキーとバリュー)。通常、これはデコードの以前の段階でモデルが返した past_key_values であり、 use_cache=True または config.use_cache=True.

    入力として許可されるのは Cache インスタンスのみです。kv cache ガイドを参照してください。 past_key_values が渡されない場合、デフォルトで DynamicCache が初期化されます。

    モデルは、入力として与えられたのと同じキャッシュ形式を出力します。

    past_key_values を使用する場合、すべての input_ids(形状 (batch_size, sequence_length))ではなく、このモデルに過去のキー・バリュー状態が与えられていない未処理の input_ids(形状 (batch_size, unprocessed_length))のみを入力することになります。

  • use_cache (bool、任意) — True に設定すると、past_key_values のキーバリュー状態が返され、デコーディングの高速化に利用できます(past_key_values を参照)。
  • output_attentions (bool, 省略可) — すべてのアテンション層のアテンションテンソルを返すかどうかを指定します。詳細は、返されるテンソルの attentions を参照してください。
  • output_hidden_states (bool, 省略可) — すべての層の hidden states を返すかどうかを指定します。詳細は、返されるテンソルの hidden_states を参照してください。
  • inputs_embeds (torch.FloatTensor、形状 (batch_size, sequence_length, hidden_size)、任意) — input_ids を渡す代わりに、埋め込み表現を直接渡すこともできます。これは、モデル内部の埋め込みルックアップ行列よりも、input_ids のインデックスを対応するベクトルに変換する方法をより細かく制御したい場合に有用です。
  • decoder_inputs_embeds (torch.FloatTensor の形状 (batch_size, target_sequence_length, hidden_size), 、任意) — 、任意で、 decoder_input_ids の代わりに、埋め込み表現を直接渡すこともできます。 past_key_values を使用する場合、最後の decoder_inputs_embeds のみを入力すればよい場合があります( past_key_values). 。これは、モデル内部の埋め込みルックアップマトリックスよりも、 decoder_input_ids インデックスを対応するベクトルに変換する方法をより細かく制御したい場合に便利です。

    decoder_input_ids と decoder_inputs_embeds の両方が設定されていない場合、decoder_inputs_embeds は inputs_embeds の値を採ります。

  • return_dict (bool, 任意) — プレーンなタプルではなく ModelOutput を返すかどうか。

戻り値

Seq2SeqModelOutput または tuple(torch.FloatTensor)

torch.FloatTensor のタプル(return_dict=False が渡された場合、または config.return_dict=False の場合)、または Seq2SeqModelOutput。設定(FSMTConfig)や入力に応じて、さまざまな要素で構成されます。

FSMTModelのforwardメソッドは、__call__特殊メソッドをオーバーライドします。

この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなくModuleインスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを黙って無視するためです。

  • last_hidden_state (torch.FloatTensor、shape (batch_size, sequence_length, hidden_size)) — モデルのデコーダーの最終層の出力における、隠れ状態のシーケンス。

    past_key_valuesが使用されている場合、出力されるのは、形状(batch_size, 1, hidden_size)のシーケンスの最後の隠れ状態のみです。

  • past_key_values (EncoderDecoderCache、任意、use_cache=True が渡された場合または config.use_cache=True の場合に返されます) — EncoderDecoderCache のインスタンスです。詳細については、kv cache ガイドを参照してください。

    自己注意ブロックおよび相互注意ブロック内のキーとバリューの事前計算済み隠れ状態(hidden-states)を保持しており、シーケンシャルデコーディングを高速化するために使用できます(past_key_values 入力参照)。

  • decoder_hidden_states (tuple(torch.FloatTensor)、optional、output_hidden_states=True が渡された場合または config.output_hidden_states=True の場合に返される) — torch.FloatTensor のタプル(埋め込み層を持つモデルの場合、埋め込みの出力用が 1 つ、各層の出力用が 1 つずつ)で、形状は (batch_size, sequence_length, hidden_size) です。

    各層の出力におけるデコーダーのHidden-states、および任意の初期埋め込み出力。

  • decoder_attentions (tuple(torch.FloatTensor)、optional、output_attentions=True が渡された場合または config.output_attentions=True の場合に返されます) — torch.FloatTensor のタプル(各レイヤーごとに1つ)、形状は (batch_size, num_heads, sequence_length, sequence_length)。

    自己アテンションヘッドにおける加重平均を計算するために使用される、アテンションのsoftmax後のデコーダーのアテンション重み。

  • cross_attentions (tuple(torch.FloatTensor)、optional、output_attentions=True が渡された場合または config.output_attentions=True の場合に返される) — torch.FloatTensor のタプル(各レイヤーごとに1つ)、形状は (batch_size, num_heads, sequence_length, sequence_length)。

    クロスアテンション層のアテンション重みは、アテンションのsoftmax適用後に計算され、クロスアテンションヘッドにおける加重平均の計算に使用されます。

  • encoder_last_hidden_state (torch.FloatTensor、shape (batch_size, sequence_length, hidden_size)、optional) — モデルのエンコーダーの最終層の出力における、隠れ状態のシーケンス。

  • encoder_hidden_states (tuple(torch.FloatTensor)、optional、output_hidden_states=True が渡された場合または config.output_hidden_states=True の場合に返される) — torch.FloatTensor のタプル(埋め込み層を持つモデルの場合、埋め込みの出力が 1 つ、各層の出力がそれぞれ 1 つずつ)で、形状は (batch_size, sequence_length, hidden_size) です。

    各層の出力におけるエンコーダーのHidden-states、および任意の初期埋め込み出力。

  • encoder_attentions (tuple(torch.FloatTensor)、optional、output_attentions=True が渡された場合または config.output_attentions=True の場合に返される) — torch.FloatTensor のタプル(各レイヤーごとに1つ)、形状は (batch_size, num_heads, sequence_length, sequence_length)。

    アテンションのsoftmaxを適用した後のエンコーダーのアテンション重み。自己アテンションヘッドにおける加重平均の計算に使用されます。

FSMTForConditionalGeneration

class transformers.FSMTForConditionalGeneration

< >

( config: FSMTConfig )

パラメータ

  • config (FSMTConfig) — モデルのすべてのパラメータを含むモデル設定クラス。設定ファイルで初期化しても、モデルに関連付けられた重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。

言語モデリングヘッドを備えたFSMTモデル。要約に使用できます。

このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。

このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonedecoder_input_ids: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.BoolTensor] = Noneencoder_outputs: tuple[torch.FloatTensor] | None = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonedecoder_inputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.LongTensor] = Noneuse_cache: bool | None = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → Seq2SeqLMOutput or tuple(torch.FloatTensor)

パラメータ

  • input_ids (torch.LongTensor の形状 (batch_size, sequence_length), 、省略可) — 語彙における入力シーケンスのトークンインデックスです。デフォルトではパディングは無視されます。

    インデックスはAutoTokenizerを使用して取得できます。詳細については、PreTrainedTokenizer.encode()およびPreTrainedTokenizer.call()を参照してください。

    入力IDとは何ですか?

  • attention_mask (torch.Tensor の形状 (batch_size, sequence_length), 、任意) — パディングトークンのインデックスに対するアテンションを回避するためのマスク。 [0, 1]:
    • マスクされていないトークンに対して1
    • マスクされたトークンに対しては 0 です。

    アテンションマスクとは?

  • decoder_input_ids (torch.LongTensor の形状 (batch_size, target_sequence_length), 、省略可) — 語彙におけるデコーダー入力シーケンスのトークンインデックスです。インデックスは AutoTokenizer を使用して取得できます。詳細については PreTrainedTokenizer.encode() および PreTrainedTokenizer.call() を参照してください。デコーダー入力 ID とは何か? FSMT は、decoder_input_ids の生成の開始トークンとして eos_token_id を使用します。past_key_values を使用する場合、オプションとして最後の decoder_input_ids だけを入力すれば十分です (past_key_values を参照)。

    インデックスはAutoTokenizerを使用して取得できます。詳細については、PreTrainedTokenizer.encode()およびPreTrainedTokenizer.call()を参照してください。

    デコーダー入力IDとは何ですか?

    FSMT は decoder_input_ids の生成における開始トークンとして eos_token_id を使用します。past_key_values を使用する場合、任意で最後の decoder_input_ids だけを入力すれば十分です(past_key_values を参照)。

  • decoder_attention_mask (torch.BoolTensor、shape (batch_size, target_sequence_length)、任意) — デフォルトの動作: decoder_input_ids 内の pad トークンを無視するテンソルを生成します。デフォルトでは、causal mask も使用されます。
  • encoder_outputs (tuple[torch.FloatTensor], 任意) — last_hidden_state、任意: hidden_states、任意: attentions のタプルです。 last_hidden_state は形状 (batch_size, sequence_length, hidden_size)、任意)であり、エンコーダーの最終層の出力における隠れ状態のシーケンスです。デコーダーのクロスアテンションで使用されます。
  • past_key_values (~cache_utils.Cache, 省略可) — 逐次デコードを高速化するために使用できる、事前計算された隠れ状態(自己アテンションブロックおよびクロスアテンションブロックのキーとバリュー)。通常、これはデコードの以前の段階でモデルが返した past_key_values であり、 use_cache=True または config.use_cache=True.

    入力として許可されるのは Cache インスタンスのみです。kv cache ガイドを参照してください。 past_key_values が渡されない場合、デフォルトで DynamicCache が初期化されます。

    モデルは、入力として与えられたのと同じキャッシュ形式を出力します。

    past_key_values を使用する場合、すべての input_ids(形状 (batch_size, sequence_length))ではなく、このモデルに過去のキー・バリュー状態が与えられていない未処理の input_ids(形状 (batch_size, unprocessed_length))のみを入力することになります。

  • inputs_embeds (torch.Tensor、形状 (batch_size, sequence_length, hidden_size)、任意) — input_ids を渡す代わりに、埋め込み表現を直接渡すこともできます。これは、モデル内部の埋め込み参照行列よりも、input_ids のインデックスを対応するベクトルに変換する方法をより細かく制御したい場合に有用です。
  • decoder_inputs_embeds (torch.Tensor の形状 (batch_size, target_sequence_length, hidden_size), 、任意) — 、任意で、 decoder_input_ids の代わりに、埋め込み表現を直接渡すこともできます。 past_key_values が使用されている場合、最後の decoder_inputs_embeds のみを入力すれば十分です( past_key_values). 、 decoder_input_ids のインデックスを関連するベクトルに変換する方法を、モデル内部の埋め込みルックアップ行列よりも細かく制御したい場合に便利です。

    decoder_input_ids と decoder_inputs_embeds の両方が設定されていない場合、decoder_inputs_embeds は inputs_embeds の値を採ります。

  • labels (torch.LongTensor、shape (batch_size, sequence_length)、任意) — マスク言語モデリング損失を計算するためのラベルです。インデックスは [0, ..., config.vocab_size] の範囲内であるか、-100 である必要があります(input_ids の docstring を参照)。インデックスが -100 に設定されたトークンは無視(マスク)され、損失は [0, ..., config.vocab_size] の範囲内のラベルを持つトークンに対してのみ計算されます。
  • use_cache (bool、任意) — True に設定すると、past_key_values のキーバリュー状態が返され、デコーディングの高速化に利用できます(past_key_values を参照)。
  • output_attentions (bool, 省略可) — すべてのアテンション層のアテンションテンソルを返すかどうかを指定します。詳細は、返されるテンソルの attentions を参照してください。
  • output_hidden_states (bool, 省略可) — すべての層の hidden states を返すかどうかを指定します。詳細は、返されるテンソルの hidden_states を参照してください。
  • return_dict (bool, 任意) — プレーンなタプルではなく ModelOutput を返すかどうか。

戻り値

Seq2SeqLMOutput または tuple(torch.FloatTensor)

torch.FloatTensor のタプル、または Seq2SeqLMOutput(return_dict=False が渡された場合、または config.return_dict=False の場合)。設定(FSMTConfig)や入力に応じて、さまざまな要素で構成されます。

FSMTForConditionalGenerationのforwardメソッドは、__call__特殊メソッドをオーバーライドします。

この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなくModuleインスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを黙って無視するためです。

  • loss (torch.FloatTensor、shape (1,)、optional、labels が指定された場合に返されます)— 言語モデリングの損失。

  • logits (torch.FloatTensor、shape (batch_size, sequence_length, config.vocab_size)) — 言語モデリングヘッドの予測スコア(SoftMax 適用前の各語彙トークンのスコア)。

  • past_key_values (EncoderDecoderCache、任意、use_cache=True が渡された場合または config.use_cache=True の場合に返されます) — EncoderDecoderCache のインスタンスです。詳細については、kv cache ガイドを参照してください。

    自己注意ブロックおよび相互注意ブロック内のキーとバリューの事前計算済み隠れ状態(hidden-states)を保持しており、シーケンシャルデコーディングを高速化するために使用できます(past_key_values 入力参照)。

  • decoder_hidden_states (tuple(torch.FloatTensor)、optional、output_hidden_states=True が渡された場合または config.output_hidden_states=True の場合に返される) — torch.FloatTensor のタプル(埋め込み層を持つモデルの場合、埋め込みの出力用が 1 つ、各層の出力用が 1 つずつ)で、形状は (batch_size, sequence_length, hidden_size) です。

    各層の出力および初期埋め込み出力における、デコーダーの隠れ状態。

  • decoder_attentions (tuple(torch.FloatTensor)、optional、output_attentions=True が渡された場合または config.output_attentions=True の場合に返されます) — torch.FloatTensor のタプル(各レイヤーごとに1つ)、形状は (batch_size, num_heads, sequence_length, sequence_length)。

    自己アテンションヘッドにおける加重平均を計算するために使用される、アテンションのsoftmax後のデコーダーのアテンション重み。

  • cross_attentions (tuple(torch.FloatTensor)、optional、output_attentions=True が渡された場合または config.output_attentions=True の場合に返される) — torch.FloatTensor のタプル(各レイヤーごとに1つ)、形状は (batch_size, num_heads, sequence_length, sequence_length)。

    クロスアテンション層のアテンション重みは、アテンションのsoftmax適用後に計算され、クロスアテンションヘッドにおける加重平均の計算に使用されます。

  • encoder_last_hidden_state (torch.FloatTensor、shape (batch_size, sequence_length, hidden_size)、optional) — モデルのエンコーダーの最終層の出力における、隠れ状態のシーケンス。

  • encoder_hidden_states (tuple(torch.FloatTensor)、optional、output_hidden_states=True が渡された場合または config.output_hidden_states=True の場合に返される) — torch.FloatTensor のタプル(埋め込み層を持つモデルの場合、埋め込みの出力が 1 つ、各層の出力がそれぞれ 1 つずつ)で、形状は (batch_size, sequence_length, hidden_size) です。

    各層の出力および初期埋め込み出力におけるエンコーダーの隠れ状態。

  • encoder_attentions (tuple(torch.FloatTensor)、optional、output_attentions=True が渡された場合または config.output_attentions=True の場合に返される) — torch.FloatTensor のタプル(各レイヤーごとに1つ)、形状は (batch_size, num_heads, sequence_length, sequence_length)。

    アテンションのsoftmaxを適用した後のエンコーダーのアテンション重み。自己アテンションヘッドにおける加重平均の計算に使用されます。

翻訳例:

>>> from transformers import AutoTokenizer, FSMTForConditionalGeneration

>>> mname = "facebook/wmt19-ru-en"
>>> model = FSMTForConditionalGeneration.from_pretrained(mname)
>>> tokenizer = AutoTokenizer.from_pretrained(mname)

>>> src_text = "Машинное обучение - это здорово, не так ли?"
>>> input_ids = tokenizer(src_text, return_tensors="pt").input_ids
>>> outputs = model.generate(input_ids, num_beams=5, num_return_sequences=3)
>>> tokenizer.decode(outputs[0], skip_special_tokens=True)
"Machine learning is great, isn't it?"
Update on GitHub