Transformers documentation
SeamlessM4T-v2
このモデルは2023年12月8日にHF papersで公開され、2023年11月30日にHugging Face Transformersに貢献されました。
SeamlessM4T-v2
概要
SeamlessM4T-v2モデルは、Meta AIのSeamless Communicationチームによって、Seamless: Multilingual Expressive and Streaming Speech Translationで提案されました。
SeamlessM4T-v2は、高品質な翻訳を提供するために設計されたモデルのコレクションです。これにより、異なる言語コミュニティの人々が音声やテキストを通じて、簡単にコミュニケーションを取ることができます。以前のバージョンからの改善版です。v1とv2の違いの詳細については、Difference with SeamlessM4T-v1セクションを参照してください。
SeamlessM4T-v2は、個別のモデルに依存せずに複数のタスクを可能にします:
- 音声対音声翻訳 (S2ST)
- 音声からテキストへの翻訳(S2TT)
- テキストから音声への翻訳(T2ST)
- テキストからテキストへの翻訳 (T2TT)
- 自動音声認識 (ASR)
SeamlessM4Tv2Model は上記のすべてのタスクを実行できますが、各タスクにはそれぞれ専用のサブモデルが用意されています。
論文の抄録は以下の通りです。
自動音声翻訳の最近の進歩により、対応言語が大幅に拡大し、マルチモーダル機能が向上し、幅広いタスクや機能が実現可能になりました。とはいえ、現在の大規模な自動音声翻訳システムは、人間同士の対話と比較した際に、機械を介したコミュニケーションをシームレスに感じさせるための重要な機能を欠いています。本稿では、ストリーミング形式でエンドツーエンドの表現力豊かで多言語の翻訳を可能にするモデルファミリーを紹介します。まず、大規模な多言語・マルチモーダルモデルであるSeamlessM4Tの改良版であるSeamlessM4T v2を提供します。この新しいモデルは、更新されたUnitY2フレームワークを組み込み、より多くの低リソース言語データで学習されています。拡張されたSeamlessAlignは、合計76言語にわたる114,800時間の自動アラインメントデータを追加しています。SeamlessM4T v2は、私たちの最新の2つのモデルであるSeamlessExpressiveとSeamlessStreamingの基盤となります。SeamlessExpressiveは、声のスタイルやプロソディを保持した翻訳を可能にします。従来の表現力のある音声研究と比較して、私たちの研究は、話速やポーズなどのプロソディの未十分に探索された側面に対処すると同時に、声のスタイルも保持します。SeamlessStreamingについては、私たちのモデルはEfficient Monotonic Multihead Attention (EMMA)メカニズムを活用し、完全なソース発話を待たずに低レイテンシのターゲット翻訳を生成します。初の試みとして、SeamlessStreamingは、複数のソース言語とターゲット言語における同時音声対音声/テキスト翻訳を可能にします。これらのモデルの性能を理解するために、私たちは、プロソディ、レイテンシ、頑健性を評価するために、新規および既存の自動メトリクスの修正版を組み合わせました。人間による評価では、意味の保持、自然さ、表現力において最も関連性の高い属性を測定するために調整された既存のプロトコルを適応させました。私たちのモデルが安全かつ責任を持って使用できるようにするために、私たちは、マルチモーダル機械翻訳における初の既知のレッドチーミング活動、追加された毒性の検出と軽減のためのシステム、ジェンダーバイアスの体系的な評価、そしてディープフェイクの影響を軽減するために設計された聴覚的に聞き取れないローカライズドウォーターマーク機構を実装しました。その結果、SeamlessExpressiveとSeamlessStreamingの主要なコンポーネントを統合し、リアルタイムで表現力豊かな言語間コミュニケーションを可能にする初の公開システムであるSeamlessを構築しました。要するに、Seamlessは、ユニバーサル・スピーチ・トランスレーターをSFの概念から現実の技術へと変えるために必要な技術的基盤を垣間見ることができます。最後に、本稿の貢献——モデル、コード、ウォーターマーク検出器——は、以下のリンクから公開され、アクセス可能です。
使用方法
次の例では、アラビア語の音声サンプルと英語のテキストサンプルを読み込み、それぞれをロシア語の音声とフランス語のテキストに変換します。
まず、プロセッサーとモデルのチェックポイントを読み込みます:
from transformers import AutoProcessor, SeamlessM4Tv2Model
processor = AutoProcessor.from_pretrained("facebook/seamless-m4t-v2-large")
model = SeamlessM4Tv2Model.from_pretrained("facebook/seamless-m4t-v2-large", device_map="auto")このモデルは、テキストまたはオーディオをシームレスに使用でき、翻訳されたテキストまたは翻訳されたオーディオを生成できます。
プロセッサを使用してテキストとオーディオを処理する方法は以下の通りです。
# let's load an audio sample from an Arabic speech corpus
from datasets import load_dataset
dataset = load_dataset("halabi2016/arabic_speech_corpus", split="test", streaming=True)
audio_sample = next(iter(dataset))["audio"]
# now, process it
audio_inputs = processor(audio=audio_sample["array"], return_tensors="pt").to(model.device)
# now, process some English text as well
text_inputs = processor(text = "Hello, my dog is cute", src_lang="eng", return_tensors="pt").to(model.device)音声
SeamlessM4Tv2Model は、ほとんど変更を加えることなく、シームレスにテキストや音声の生成を行うことができます。ここでは、ロシア語の音声翻訳をターゲットとします。
audio_array_from_text = model.generate(**text_inputs, tgt_lang="rus")[0].cpu().numpy().squeeze()
audio_array_from_audio = model.generate(**audio_inputs, tgt_lang="rus")[0].cpu().numpy().squeeze()ほぼ同じコードで、英語のテキストとアラビア語の音声からロシア語の音声サンプルを生成しました。
テキスト
同様に、同じモデルを使用して、音声ファイルやテキストから翻訳されたテキストを生成できます。SeamlessM4Tv2Model.generate() に generate_speech=False を渡すだけです。
今回は、フランス語に翻訳してみます。
# from audio
output_tokens = model.generate(**audio_inputs, tgt_lang="fra", generate_speech=False)
translated_text_from_audio = processor.decode(output_tokens[0].tolist()[0], skip_special_tokens=True)
# from text
output_tokens = model.generate(**text_inputs, tgt_lang="fra", generate_speech=False)
translated_text_from_text = processor.decode(output_tokens[0].tolist()[0], skip_special_tokens=True)ヒント
1. 専用モデルを使用する
SeamlessM4Tv2Model は、音声とテキストを生成するための Transformers のトップレベルモデルです。ただし、追加のコンポーネントを必要とせずにタスクを実行する専用モデルを使用することもでき、これによりメモリフットプリントを削減できます。 例えば、音声から音声への生成のスニペットを、S2ST タスクに特化したモデルに置き換えることができます。その他のコードは完全に同じです。
from transformers import SeamlessM4Tv2ForSpeechToSpeech
model = SeamlessM4Tv2ForSpeechToSpeech.from_pretrained("facebook/seamless-m4t-v2-large", device_map="auto")または、テキストからテキストへの生成スニペットを、T2TTタスクに特化したモデルに置き換えることもできます。その場合、generate_speech=Falseを削除するだけです。
from transformers import SeamlessM4Tv2ForTextToText
model = SeamlessM4Tv2ForTextToText.from_pretrained("facebook/seamless-m4t-v2-large", device_map="auto")SeamlessM4Tv2ForSpeechToTextやSeamlessM4Tv2ForTextToSpeechもぜひ試してみてください。
2. 話者IDを変更する
speaker_id 引数を変更することで、音声合成に使用するスピーカーを変更できます。一部の speaker_id は、特定の言語に対してより良い結果をもたらします。
3. 生成戦略を変更する
テキスト生成には、生成戦略を複数選択できます。例えば、.generate(input_ids=input_ids, text_num_beams=4, text_do_sample=True) は、テキストモデルに対して多項分布ビームサーチデコーディングを実行します。なお、音声生成はデフォルトでグリーディ法のみをサポートし、多項分布サンプリングは例えば .generate(..., speech_do_sample=True, speech_temperature=0.6) のように使用できます。
4. 音声とテキストを同時に生成する
return_intermediate_token_ids=True を SeamlessM4Tv2Model と併用すると、音声とテキストの両方を返すことができます!
モデルアーキテクチャ
SeamlessM4T-v2は、テキストと音声のシーケンシャルな生成を滑らかに処理する多用途なアーキテクチャを備えています。この構成は、2つのシーケンスツーシーケンス(seq2seq)モデルで構成されています。最初のモデルは入力モダリティを翻訳テキストに変換し、2番目のモデルは翻訳テキストから「ユニットトークン」と呼ばれる音声トークンを生成します。
各モダリティには、独自のアーキテクチャを持つ専用のエンコーダーが用意されています。また、音声出力については、HiFi-GANアーキテクチャに着想を得たボコーダーが、2番目のseq2seqモデルの上に配置されています。
SeamlessM4T-v1との違い
この新バージョンのアーキテクチャは、最初のバージョンと以下の点で異なります。
2パスモデルの改善
2番目のseq2seqモデルであるtext-to-unitモデルは、現在は非自己回帰型となり、単一のフォワードパスでユニットを計算します。この実現には、以下の要素が貢献しています。
- 文字レベルの埋め込みを使用し、予測された翻訳テキストの各文字に独自の埋め込みが割り当てられ、それらがユニットトークンの予測に用いられます。
- 予測された翻訳テキストに対して、文字レベルで音声の長さを予測する中間的な長さ予測器の使用。
- より長いコンテキストを処理するために、畳み込みと自己注意を組み合わせる新しいテキストからユニットへのデコーダーを使用すること。
音声エンコーダーの違い
1パス目の生成プロセスにおいて翻訳テキストを予測するために使用される音声エンコーダーは、主に以下のメカニズムによって、従来の音声エンコーダーと異なります。
- チャンク化されたアテンションマスクを使用してチャンク間のアテンションを防止し、各ポジションが自身のチャンク内および固定数の直前のチャンク内のポジションにのみアテンションを行うことを保証します。
- シーケンス要素間の絶対位置ではなく距離のみを考慮する相対位置埋め込みの使用です。詳細については、Self-Attention with Relative Position Representations (Shaw et al.)を参照してください。
- 非因果的なものではなく、因果的な深度方向畳み込みを使用すること。
生成プロセス
生成プロセスの仕組みは以下の通りです。
- 入力されたテキストまたは音声は、それぞれに対応するエンコーダーによって処理されます。
- デコーダーは、希望する言語のテキストトークンを生成します。
- 音声生成が必要な場合、2番目のseq2seqモデルが、非自己回帰的な方法でユニットトークンを生成します。
- これらのユニットトークンは、最終的なボコーダーを通過して、実際の音声として生成されます。
このモデルはylacombeによって提供されました。元のコードはこちらで確認できます。
SeamlessM4Tv2Model
クラス transformers.SeamlessM4Tv2Model
< source >( config: SeamlessM4Tv2Configcurrent_modality = 'text' )
パラメータ
- config (SeamlessM4Tv2Config) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
- current_modality (
str、省略可、デフォルトは"text") — デフォルトのモダリティ。モデルの初期化に使用されます。
利用可能なすべてのタスク(S2ST、S2TT、T2TT、T2ST)に使用できる、元のSeamlessM4Tv2モデルのtransformerです。
このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。
このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。
generate
< source >( input_ids: typing.Optional[torch.Tensor] = Noneinput_features: typing.Optional[torch.Tensor] = Nonereturn_intermediate_token_ids: bool | None = Nonetgt_lang: str | None = Nonespeaker_id: int | None = 0generate_speech: bool | None = True**kwargs ) → Union[SeamlessM4Tv2GenerationOutput, tuple[Tensor], ModelOutput]
パラメータ
- input_ids (
torch.LongTensorの形状(batch_size, sequence_length), 、省略可) — 語彙における入力シーケンスのトークンインデックスです。インデックスは、SeamlessM4TTokenizerまたはSeamlessM4TProcessorを使用して取得できます。詳細については、PreTrainedTokenizer.encode()およびPreTrainedTokenizer.call()を参照してください。
- input_features (
torch.FloatTensor、形状(batch_size, sequence_length, num_banks)、任意) — 入力音声特徴量です。SeamlessM4TFeatureExtractor クラスまたは SeamlessM4TProcessor クラスによって返されるべきものです。詳細は SeamlessM4TFeatureExtractor.call() を参照してください。 - return_intermediate_token_ids (
bool, 省略可) —Trueの場合、生成された中間テキストとユニットトークンも返します。音声とともに翻訳テキストも取得したい場合は、Trueに設定してください。generate_speech=Falseの場合、このパラメータは無視され、テキストトークンが返されます。 - tgt_lang (
str, 任意) — 翻訳のターゲット言語として使用する言語。 - speaker_id (
int、任意、デフォルトは 0) — 音声合成に使用する話者の ID です。config.vocoder_num_spkrsより小さい値である必要があります。 - generate_speech (
bool、省略可、デフォルトはTrue) —Falseの場合、テキストトークンのみを返し、音声は生成されません。 - kwargs (省略可能) —
残りのキーワード引数の辞書。 GenerationMixin.generate() に渡されます。. キーワード引数は 2 種類あります。
- プレフィックスなしの場合、各サブモデルの
generateメソッドに対して**kwargsとして入力されますが、decoder_input_idsはテキストコンポーネントのみを介して渡されます。 - text_ または speech_ プレフィックスを付けることで、それぞれテキストモデルと音声モデルの
generateメソッドへの入力となります。プレフィックスなしのキーワードよりも優先されます。
つまり、例えば、1つの生成には生成戦略を指定し、もう1つの生成には指定しない、といったことが可能になります。
- プレフィックスなしの場合、各サブモデルの
戻り値
Union[SeamlessM4Tv2GenerationOutput, tuple[Tensor], ModelOutput]
generate_speechとreturn_intermediate_token_idsが指定されている場合、SeamlessM4Tv2GenerationOutputを返します。generate_speechが呼び出され、return_intermediate_token_idsが False の場合、形状(batch_size, sequence_length)の波形と、各サンプルの長さを示すwaveform_lengthsからなるタプルを返します。generate_speech=Falseの場合、ModelOutputが返されます。
翻訳されたトークンIDおよび/または翻訳された音声波形を生成します。
このメソッドは、2つの異なるサブモデルの
.generate関数を順次呼び出します。キーワード引数は2つの異なるレベルで指定できます。両方のモデルに渡される一般的な引数、または片方のモデルにのみ渡されるプレフィックス付きの引数です。例えば、
.generate(input_ids=input_ids, num_beams=4, speech_do_sample=True)を呼び出すと、テキストモデルに対してビームサーチデコーディングを、音声モデルに対して多項分布ビームサーチサンプリングを、それぞれ順次実行します。生成戦略の概要とコード例については、次のガイドを参照してください。
SeamlessM4Tv2ForTextToSpeech
クラス transformers.SeamlessM4Tv2ForTextToSpeech
< source >( config: SeamlessM4Tv2Config )
パラメータ
- config (SeamlessM4Tv2Config) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
T2STに使用できるテキストから音声への変換用のSeamlessM4Tv2モデルtransformerです。
このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。
このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。
generate
< source >( input_ids: typing.Optional[torch.Tensor] = Nonereturn_intermediate_token_ids: bool | None = Nonetgt_lang: str | None = Nonespeaker_id: int | None = 0**kwargs ) → Union[SeamlessM4Tv2GenerationOutput, tuple[Tensor]]
パラメータ
- input_ids (
torch.LongTensorの形状(batch_size, sequence_length)) — 語彙における入力シーケンスのトークンインデックス。インデックスは、SeamlessM4TTokenizerまたはSeamlessM4TProcessorを使用して取得できます。詳細については、PreTrainedTokenizer.encode()およびPreTrainedTokenizer.call()を参照してください。
- return_intermediate_token_ids (
bool, 省略可) —Trueの場合、生成された中間テキストとユニットトークンも返します。音声とともに翻訳テキストも取得したい場合はTrueに設定してください。 - tgt_lang (
str, 任意) — 翻訳のターゲット言語として使用する言語。 - speaker_id (
int、任意、デフォルトは 0) — 音声合成に使用する話者の ID です。config.vocoder_num_spkrsより小さい値である必要があります。 - kwargs (省略可能) —
残りのキーワード引数の辞書。 GenerationMixin.generate() に渡されます。. キーワード引数は 2 種類あります。
- プレフィックスなしの場合、各サブモデルの
generateメソッドに対して**kwargsとして入力されますが、decoder_input_idsはテキストコンポーネントのみを介して渡されます。 - text_ または speech_ プレフィックスを付けることで、それぞれテキストモデルと音声モデルの
generateメソッドへの入力となります。プレフィックスなしのキーワードよりも優先されます。
つまり、例えば、1つの生成には生成戦略を指定し、もう1つの生成には指定しない、といったことが可能になります。
- プレフィックスなしの場合、各サブモデルの
戻り値
Union[SeamlessM4Tv2GenerationOutput, tuple[Tensor]]
return_intermediate_token_idsが設定されている場合、SeamlessM4Tv2GenerationOutputを返します。return_intermediate_token_idsが False の場合、(batch_size, sequence_length)の形状の波形と、各サンプルの長さを示すwaveform_lengthsからなるタプルを返します。
翻訳された音声波形を生成します。
このメソッドは、2つの異なるサブモデルの
.generate関数を順次呼び出します。キーワード引数は2つの異なるレベルで指定できます。両方のモデルに渡される一般的な引数、または片方のモデルにのみ渡されるプレフィックス付きの引数です。例えば、
.generate(input_ids, num_beams=4, speech_do_sample=True)を呼び出すと、テキストモデルに対してビームサーチデコーディングを、音声モデルに対して多項分布ビームサーチサンプリングを、それぞれ順次実行します。生成戦略の概要とコード例については、次のガイドを参照してください。
SeamlessM4Tv2ForSpeechToSpeech
class transformers.SeamlessM4Tv2ForSpeechToSpeech
< source >( config: SeamlessM4Tv2Config )
パラメータ
- config (SeamlessM4Tv2Config) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
S2STに使用できる音声対話用のSeamlessM4Tv2モデルのtransformerです。
このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。
このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。
generate
< source >( input_features: typing.Optional[torch.Tensor] = Nonereturn_intermediate_token_ids: bool | None = Nonetgt_lang: str | None = Nonespeaker_id: int | None = 0**kwargs ) → Union[SeamlessM4Tv2GenerationOutput, tuple[Tensor]]
パラメータ
- input_features (
torch.FloatTensor、shape(batch_size, sequence_length, num_banks)) — 入力音声特徴量です。SeamlessM4TFeatureExtractor クラスまたは SeamlessM4TProcessor クラスによって返されるべきです。詳細は SeamlessM4TFeatureExtractor.call() を参照してください。 - return_intermediate_token_ids (
bool, 省略可) —Trueの場合、生成された中間テキストとユニットトークンも返します。音声とともに翻訳テキストも取得したい場合はTrueに設定してください。 - tgt_lang (
str, 任意) — 翻訳のターゲット言語として使用する言語。 - speaker_id (
int、任意、デフォルトは 0) — 音声合成に使用する話者の ID です。config.vocoder_num_spkrsより小さい値である必要があります。 - kwargs (省略可能) —
残りのキーワード引数の辞書。 GenerationMixin.generate() に渡されます。. キーワード引数は 2 種類あります。
- プレフィックスなしの場合、各サブモデルの
generateメソッドに対して**kwargsとして入力されますが、decoder_input_idsはテキストコンポーネントのみを介して渡されます。 - text_ または speech_ プレフィックスを付けることで、それぞれテキストモデルと音声モデルの
generateメソッドへの入力となります。プレフィックスなしのキーワードよりも優先されます。
つまり、例えば、1つの生成には生成戦略を指定し、もう1つの生成には指定しない、といったことが可能になります。
- プレフィックスなしの場合、各サブモデルの
戻り値
Union[SeamlessM4Tv2GenerationOutput, tuple[Tensor]]
return_intermediate_token_idsが設定されている場合、SeamlessM4Tv2GenerationOutputを返します。return_intermediate_token_idsが False の場合、(batch_size, sequence_length)の形状の波形と、各サンプルの長さを示すwaveform_lengthsからなるタプルを返します。
翻訳された音声波形を生成します。
このメソッドは、2つの異なるサブモデルの
.generate関数を順次呼び出します。キーワード引数は2つの異なるレベルで指定できます。両方のモデルに渡される一般的な引数、または片方のモデルにのみ渡されるプレフィックス付きの引数です。例えば、
.generate(input_features, num_beams=4, speech_do_sample=True)を呼び出すと、テキストモデルに対してビームサーチデコーディングを、音声モデルに対して多項分布ビームサーチサンプリングを、順次実行します。生成戦略の概要とコード例については、次のガイドを参照してください。
SeamlessM4Tv2ForTextToText
クラス transformers.SeamlessM4Tv2ForTextToText
< source >( config: SeamlessM4Tv2Config )
パラメータ
- config (SeamlessM4Tv2Config) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
T2TTに使用できるテキストからテキストへの変換を行うSeamlessM4Tv2モデルのtransformerです。
このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。
このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。
forward
< source >( 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.LongTensor] = Noneencoder_outputs: tuple[tuple[torch.FloatTensor]] | None = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.FloatTensor] = Nonedecoder_inputs_embeds: typing.Optional[torch.FloatTensor] = Nonelabels: typing.Optional[torch.LongTensor] = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → Seq2SeqLMOutput or tuple(torch.FloatTensor)
パラメータ
- input_ids (
torch.LongTensorの形状(batch_size, sequence_length), 、省略可) — 語彙における入力シーケンスのトークンインデックスです。デフォルトではパディングは無視されます。インデックスはAutoTokenizerを使用して取得できます。詳細については、PreTrainedTokenizer.encode()およびPreTrainedTokenizer.call()を参照してください。
- 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()を参照してください。
Bart は
decoder_input_idsの生成における開始トークンとしてeos_token_idを使用します。past_key_valuesを使用する場合、任意で最後のdecoder_input_idsだけを入力すれば十分です(past_key_valuesを参照)。翻訳および要約の学習では、
decoder_input_idsを指定する必要があります。decoder_input_idsが指定されない場合、モデルは論文に従い、ノイズ除去事前学習のためにinput_idsを右にシフトしてこのテンソルを生成します。 - decoder_attention_mask (
torch.LongTensorの形状(batch_size, target_sequence_length), 、任意) — デフォルトの動作:decoder_input_ids. 内の pad トークンを無視するテンソルを生成します。デフォルトでは、因果マスクも使用されます。パディングの動作を変更する場合は、パディングの動作を変更したい場合は、
modeling_bart._prepare_decoder_attention_maskを読み、必要に応じて修正してください。デフォルトの戦略に関する詳細は、論文の図1を参照してください。 - encoder_outputs (
tuple[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.FloatTensorの形状(batch_size, sequence_length, hidden_size), 、任意) — 任意で、input_idsの代わりに、埋め込み表現を直接渡すこともできます。これは、モデル内部の埋め込みルックアップ行列よりも、input_idsのインデックスを対応するベクトルに変換する方法をより細かく制御したい場合に便利です。labels (
torch.LongTensor、shape(batch_size, sequence_length)、任意): マスクド言語モデリングの損失を計算するためのラベル。インデックスは[-100, 0, ..., config.vocab_size]の範囲である必要があります(input_idsの docstring を参照)。インデックスが-100に設定されたトークンは無視(マスク)され、損失は[0, ..., config.vocab_size]の範囲のラベルを持つトークンに対してのみ計算されます。 - 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の値を採ります。 - 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を参照)。
戻り値
Seq2SeqLMOutput または tuple(torch.FloatTensor)
Seq2SeqLMOutput、または torch.FloatTensor のタプル(return_dict=False が渡された場合、または config.return_dict=False の場合)。設定(SeamlessM4Tv2Config)や入力に応じて、さまざまな要素が含まれます。
SeamlessM4Tv2ForTextToTextの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を適用した後のエンコーダーのアテンション重み。自己アテンションヘッドにおける加重平均の計算に使用されます。
generate
< source >( input_ids = Nonetgt_lang = Nonegeneration_config = Nonelogits_processor = Nonestopping_criteria = Noneprefix_allowed_tokens_fn = Nonesynced_gpus = False**kwargs ) → ModelOutput or torch.LongTensor
パラメータ
- input_ids (
torch.Tensorモダリティによって形状が異なる 任意) — 語彙における入力シーケンスのトークンインデックス。インデックスは、SeamlessM4TTokenizerまたはSeamlessM4TProcessorを使用して取得できます。詳細については、PreTrainedTokenizer.encode()およびPreTrainedTokenizer.call()を参照してください。
- tgt_lang (
str, 任意) — 翻訳のターゲット言語として使用する言語。 - generation_config (
~generation.GenerationConfig, 任意) — 生成呼び出しのベースパラメータ化として使用される生成設定です。**kwargsでgeneration_configの属性に一致するものが generate に渡された場合、それらは上書きされます。generation_configが指定されない場合、デフォルトが使用されます。その読み込み優先順位は以下の通りです: 1) 存在する場合、generation_config.jsonモデルファイルから; 2) モデル設定から。未指定のパラメータは GenerationConfig のデフォルト値を継承することに注意してください。生成をパラメータ化するには、そのドキュメントを確認する必要があります。 - logits_processor (
LogitsProcessorList、省略可) — 引数や生成設定から構築されるデフォルトの logits プロセッサを補完する、カスタムの logits プロセッサです。引数や生成設定によってすでに作成済みの logits プロセッサが渡された場合、エラーが発生します。この機能は上級ユーザー向けに設計されています。 - stopping_criteria (
StoppingCriteriaList, 任意) — 引数と generation config から構築されるデフォルトの停止条件を補完する、カスタムの停止条件です。引数や generation config で既に作成済みの停止条件が渡された場合、エラーが発生します。この機能は上級ユーザー向けに設計されています。 - prefix_allowed_tokens_fn (
Callable[[int, torch.Tensor], list[int]], 省略可) — 指定された場合、この関数は各ステップにおいてビームサーチを許可されたトークンのみに制限します。指定されない場合、制限は適用されません。この関数は 2 つの引数を受け取ります: バッチ IDbatch_idとinput_idsです。バッチ IDbatch_idと以前に生成されたトークンinputs_idsに基づいて、次の生成ステップで許可されるトークンのリストを返す必要があります。この引数は、Autoregressive Entity Retrieval に記載されているような、プレフィックスに条件付けられた制約付き生成に有用です。 - synced_gpus (
bool、省略可、デフォルトはFalse) —FullyShardedDataParallelおよび DeepSpeed ZeRO Stage 3 でのデッドロックを回避するために、max_length まで while ループの実行を継続するかどうか。 - kwargs (
dict[str, Any]、省略可) —generate_configのアドホックなパラメータ設定、および/またはモデルのforward関数に転送される追加のモデル固有の kwargs。
戻り値
ModelOutput または torch.LongTensor
return_dict_in_generate=True の場合、または config.return_dict_in_generate=True の場合は ModelOutput、それ以外は torch.FloatTensor です。考えられる ModelOutput の型は以下の通りです。
トークンIDのシーケンスを生成します。
生成を制御するほとんどのパラメータは
generation_configで設定されます。この引数が渡されない場合、モデルのデフォルトの生成設定が使用されます。generation_configの任意の値は、generate() に対応するパラメータを渡すことで上書きできます。例えば、.generate(inputs, num_beams=4, do_sample=True)のように指定します。生成戦略の概要とコード例については、次のガイドを参照してください。
SeamlessM4Tv2ForSpeechToText
class transformers.SeamlessM4Tv2ForSpeechToText
< source >( config: SeamlessM4Tv2Config )
パラメータ
- config (SeamlessM4Tv2Config) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
S2TTに使用できる音声からテキストへの変換モデルであるSeamlessM4Tv2のtransformerです。
このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。
このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。
forward
< source >( input_features: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonedecoder_input_ids: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.LongTensor] = Noneencoder_outputs: tuple[tuple[torch.FloatTensor]] | None = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.FloatTensor] = Nonedecoder_inputs_embeds: typing.Optional[torch.FloatTensor] = Nonelabels: typing.Optional[torch.LongTensor] = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → Seq2SeqLMOutput or tuple(torch.FloatTensor)
パラメータ
- input_features (
torch.FloatTensor、shape(batch_size, sequence_length, num_banks)) — 入力音声特徴量です。SeamlessM4TFeatureExtractor クラスまたは SeamlessM4TProcessor クラスによって返されるべきです。詳細は SeamlessM4TFeatureExtractor.call() を参照してください。 - 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()を参照してください。
Bart は
decoder_input_idsの生成における開始トークンとしてeos_token_idを使用します。past_key_valuesを使用する場合、任意で最後のdecoder_input_idsだけを入力すれば十分です(past_key_valuesを参照)。翻訳および要約の学習では、
decoder_input_idsを指定する必要があります。decoder_input_idsが指定されない場合、モデルは論文に従い、ノイズ除去事前学習のためにinput_idsを右にシフトしてこのテンソルを生成します。 - decoder_attention_mask (
torch.LongTensorの形状(batch_size, target_sequence_length), 、任意) — デフォルトの動作:decoder_input_ids. 内の pad トークンを無視するテンソルを生成します。デフォルトでは、因果マスクも使用されます。パディングの動作を変更する場合は、パディングの動作を変更したい場合は、
modeling_bart._prepare_decoder_attention_maskを読み、必要に応じて修正してください。デフォルトの戦略に関する詳細は、論文の図1を参照してください。 - encoder_outputs (
tuple[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.FloatTensorの形状(batch_size, sequence_length, hidden_size), 、任意) — 任意で、input_idsの代わりに、埋め込み表現を直接渡すこともできます。これは、モデル内部の埋め込みルックアップ行列よりも、input_idsのインデックスを対応するベクトルに変換する方法をより細かく制御したい場合に便利です。labels (
torch.LongTensor、shape(batch_size, sequence_length)、任意): マスクド言語モデリングの損失を計算するためのラベル。インデックスは[-100, 0, ..., config.vocab_size]の範囲である必要があります(input_idsの docstring を参照)。インデックスが-100に設定されたトークンは無視(マスク)され、損失は[0, ..., config.vocab_size]の範囲のラベルを持つトークンに対してのみ計算されます。 - 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の値を採ります。 - 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を参照)。
戻り値
Seq2SeqLMOutput または tuple(torch.FloatTensor)
Seq2SeqLMOutput、または torch.FloatTensor のタプル(return_dict=False が渡された場合、または config.return_dict=False の場合)。設定(SeamlessM4Tv2Config)や入力に応じて、さまざまな要素が含まれます。
SeamlessM4Tv2ForSpeechToTextの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 AutoProcessor, SeamlessM4Tv2ForSpeechToText
>>> from datasets import load_dataset
>>> import torch
>>> dataset = load_dataset("hf-internal-testing/librispeech_asr_demo", "clean", split="validation")
>>> dataset = dataset.sort("id")
>>> sampling_rate = dataset.features["audio"].sampling_rate
>>> processor = AutoProcessor.from_pretrained("facebook/hf-seamless-m4t-medium")
>>> model = SeamlessM4Tv2ForSpeechToText.from_pretrained("facebook/hf-seamless-m4t-medium")
>>> # audio file is decoded on the fly
>>> inputs = processor(dataset[0]["audio"]["array"], sampling_rate=sampling_rate, return_tensors="pt")
>>> with torch.no_grad():
... logits = model(**inputs).logits
>>> predicted_ids = torch.argmax(logits, dim=-1)
>>> # transcribe speech
>>> transcription = processor.batch_decode(predicted_ids)
>>> transcription[0]
...
>>> inputs["labels"] = processor(text=dataset[0]["text"], return_tensors="pt").input_ids
>>> # compute loss
>>> loss = model(**inputs).loss
>>> round(loss.item(), 2)
...generate
< source >( input_features = Nonetgt_lang = Nonegeneration_config = Nonelogits_processor = Nonestopping_criteria = Noneprefix_allowed_tokens_fn = Nonesynced_gpus = False**kwargs ) → ModelOutput or torch.LongTensor
パラメータ
- input_features (
torch.FloatTensor、shape(batch_size, sequence_length, num_banks)) — 入力音声特徴量です。SeamlessM4TFeatureExtractor クラスまたは SeamlessM4TProcessor クラスによって返されるべきです。詳細は SeamlessM4TFeatureExtractor.call() を参照してください。 - tgt_lang (
str, 任意) — 翻訳のターゲット言語として使用する言語。 - generation_config (
~generation.GenerationConfig, 任意) — 生成呼び出しのベースパラメータ化として使用される生成設定です。**kwargsでgeneration_configの属性に一致するものが generate に渡された場合、それらは上書きされます。generation_configが指定されない場合、デフォルトが使用されます。その読み込み優先順位は以下の通りです: 1) 存在する場合、generation_config.jsonモデルファイルから; 2) モデル設定から。未指定のパラメータは GenerationConfig のデフォルト値を継承することに注意してください。生成をパラメータ化するには、そのドキュメントを確認する必要があります。 - logits_processor (
LogitsProcessorList、省略可) — 引数や生成設定から構築されるデフォルトの logits プロセッサを補完する、カスタムの logits プロセッサです。引数や生成設定によってすでに作成済みの logits プロセッサが渡された場合、エラーが発生します。この機能は上級ユーザー向けに設計されています。 - stopping_criteria (
StoppingCriteriaList, 任意) — 引数と generation config から構築されるデフォルトの停止条件を補完する、カスタムの停止条件です。引数や generation config で既に作成済みの停止条件が渡された場合、エラーが発生します。この機能は上級ユーザー向けに設計されています。 - prefix_allowed_tokens_fn (
Callable[[int, torch.Tensor], list[int]], 省略可) — 指定された場合、この関数は各ステップにおいてビームサーチを許可されたトークンのみに制限します。指定されない場合、制限は適用されません。この関数は 2 つの引数を受け取ります: バッチ IDbatch_idとinput_idsです。バッチ IDbatch_idと以前に生成されたトークンinputs_idsに基づいて、次の生成ステップで許可されるトークンのリストを返す必要があります。この引数は、Autoregressive Entity Retrieval に記載されているような、プレフィックスに条件付けられた制約付き生成に有用です。 - synced_gpus (
bool、省略可、デフォルトはFalse) —FullyShardedDataParallelおよび DeepSpeed ZeRO Stage 3 でのデッドロックを回避するために、max_length まで while ループの実行を継続するかどうか。 - kwargs (
dict[str, Any]、省略可) —generate_configのアドホックなパラメータ設定、および/またはモデルのforward関数に転送される追加のモデル固有の kwargs。
戻り値
ModelOutput または torch.LongTensor
return_dict_in_generate=True の場合、または config.return_dict_in_generate=True の場合は ModelOutput、それ以外は torch.FloatTensor です。考えられる ModelOutput の型は以下の通りです。
トークンIDのシーケンスを生成します。
生成を制御するほとんどのパラメータは
generation_configで設定されます。この引数が渡されない場合、モデルのデフォルトの生成設定が使用されます。generation_configの任意の値は、generate() に対応するパラメータを渡すことで上書きできます。例えば、.generate(inputs, num_beams=4, do_sample=True)のように指定します。生成戦略の概要とコード例については、次のガイドを参照してください。
SeamlessM4Tv2Config
class transformers.SeamlessM4Tv2Config
< source >( 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 = Truevocab_size: int = 256102t2u_vocab_size: int = 10082char_vocab_size: int = 10943hidden_size: int = 1024initializer_range: float = 0.02layer_norm_eps: float = 1e-05use_cache: bool = Truemax_position_embeddings: int = 4096encoder_layerdrop: float | int = 0.05decoder_layerdrop: float | int = 0.05activation_function: str = 'relu'dropout: float | int = 0.1attention_dropout: float | int = 0.1activation_dropout: float | int = 0.0scale_embedding: bool = Trueencoder_layers: int = 24encoder_ffn_dim: int = 8192encoder_attention_heads: int = 16decoder_layers: int = 24decoder_ffn_dim: int = 8192decoder_attention_heads: int = 16decoder_start_token_id: int = 3max_new_tokens: int | None = 256pad_token_id: int | None = 0bos_token_id: int | None = 2eos_token_id: int | list[int] | None = 3speech_encoder_layers: int = 24speech_encoder_attention_heads: int = 16speech_encoder_intermediate_size: int = 4096speech_encoder_hidden_act: str = 'swish'speech_encoder_dropout: float | int = 0.0add_adapter: bool = Truespeech_encoder_layerdrop: float | int = 0.1feature_projection_input_dim: int = 160adaptor_kernel_size: int = 8adaptor_stride: int = 8adaptor_dropout: float | int = 0.1num_adapter_layers: int = 1position_embeddings_type: str = 'relative_key'conv_depthwise_kernel_size: int = 31left_max_position_embeddings: int = 64right_max_position_embeddings: int = 8speech_encoder_chunk_size: int = 20000speech_encoder_left_chunk_num: int = 128t2u_bos_token_id: int | None = 0t2u_pad_token_id: int | None = 1t2u_eos_token_id: int | list[int] | None = 2t2u_encoder_layers: int = 6t2u_encoder_ffn_dim: int = 8192t2u_encoder_attention_heads: int = 16t2u_decoder_layers: int = 6t2u_decoder_ffn_dim: int = 8192t2u_decoder_attention_heads: int = 16t2u_max_position_embeddings: int = 4096t2u_variance_predictor_embed_dim: int = 1024t2u_variance_predictor_hidden_dim: int = 256t2u_variance_predictor_kernel_size: int = 3t2u_variance_pred_dropout: float | int = 0.5sampling_rate: int = 16000upsample_initial_channel: int = 512upsample_rates: list[int] | tuple[int, ...] = (5, 4, 4, 2, 2)upsample_kernel_sizes: list[int] | tuple[int, ...] = (11, 8, 8, 4, 4)resblock_kernel_sizes: list[int] | tuple[int, ...] = (3, 7, 11)resblock_dilation_sizes: list | tuple = ((1, 3, 5), (1, 3, 5), (1, 3, 5))leaky_relu_slope: float = 0.1unit_hifi_gan_vocab_size: int = 10000unit_embed_dim: int = 1280lang_embed_dim: int = 256spkr_embed_dim: int = 256vocoder_num_langs: int = 36vocoder_num_spkrs: int = 200variance_predictor_kernel_size: int = 3var_pred_dropout: float | int = 0.5vocoder_offset: int = 4tie_word_embeddings: bool = True )
パラメータ
- is_encoder_decoder (
bool、任意、デフォルトはTrue) — モデルがエンコーダー/デコーダーとして使用されるかどうかを示します。 - vocab_size (
int、任意、デフォルトは256102) — モデルの語彙サイズです。input_idsで表現できるトークンの種類数を定義します。 - t2u_vocab_size (
int、任意、デフォルト値は 10082) — SeamlessM4Tv2 モデルのユニット語彙サイズです。~SeamlessM4Tv2Model、~SeamlessM4Tv2ForSpeechToSpeech、または ~SeamlessM4Tv2ForTextToSpeech の Text-To-Units サブモデルを呼び出す際に渡すinputs_idsで表現できる異なる「ユニットトークン」の数を定義します。 - char_vocab_size (
int、任意、デフォルトは 10943) — SeamlessM4Tv2 モデルの文字語彙サイズです。~SeamlessM4Tv2Model、~SeamlessM4Tv2ForSpeechToSpeech、または ~SeamlessM4Tv2ForTextToSpeech の Text-To-Units サブモデルを呼び出す際に渡すchar_inputs_idsで表現できる異なる文字トークンの数を定義します。 - hidden_size (
int、任意、デフォルトは1024) — 隠れ表現の次元数。 - initializer_range (
float、任意、デフォルトは0.02) — すべての重み行列を初期化するための truncated_normal_initializer の標準偏差です。 - layer_norm_eps (
float、任意、デフォルトは1e-05) — レイヤーノーマル層で使用する epsilon です。 - use_cache (
bool、任意、デフォルトはTrue) — モデルが最後のキー/バリューの注意を返すかどうか(すべてのモデルで利用されるわけではありません)。config.is_decoder=Trueの場合、またはモデルがデコーダー専用の生成モデルである場合にのみ関連します。 - max_position_embeddings (
int、任意、デフォルトは4096) — このモデルが使用される可能性のある最大シーケンス長です。 - encoder_layerdrop (
Union[float, int]、任意、デフォルトは0.05) — エンコーダーの LayerDrop 確率です。詳細は [LayerDrop の論文](https://huggingface.co/papers/1909.11556 を参照)をご覧ください。 - decoder_layerdrop (
Union[float, int]、任意、デフォルトは0.05) — デコーダーの LayerDrop 確率です。詳細は [LayerDrop の論文](https://huggingface.co/papers/1909.11556 を参照)をご覧ください。 - activation_function (
str、任意、デフォルトはrelu) — デコーダーで使用する非線形活性化関数(関数または文字列)。例えば、"gelu"、"relu"、"silu"など。 - dropout (
Union[float, int]、任意、デフォルト値は0.1) — すべての dropout レイヤーの比率です。 - attention_dropout (
Union[float, int]、任意、デフォルトは0.1) — アテンション確率のドロップアウト率です。 - activation_dropout (
Union[float, int]、任意、デフォルトは0.0) — 全結合層内の活性化に対する dropout 率です。 - scale_embedding (
bool、任意、デフォルトはTrue) — 埋め込みを sqrt(d_model) で割ってスケーリングするかどうかを指定します。 - encoder_layers (
int、任意、デフォルトは24) — Transformer エンコーダーの隠れ層の数です。設定されていない場合は、num_layersと同じ値が使用されます。 - encoder_ffn_dim (
int、任意、デフォルトは8192) — エンコーダー内の「中間」層(フィードフォワード層と呼ばれることが多い)の次元数。 - encoder_attention_heads (
int、任意、デフォルトは16) — Transformer エンコーダーの各アテンション層におけるアテンションヘッドの数。 - decoder_layers (
int、任意、デフォルトは24) — Transformer デコーダーの隠れ層の数です。設定されていない場合は、num_layersと同じ値が使用されます。 - decoder_ffn_dim (
int、任意、デフォルトは8192) — デコーダー内の「中間」(feed-forward と呼ばれることが多い) レイヤーの次元数。 - decoder_attention_heads (
int、任意、デフォルトは16) — Transformer デコーダーの各アテンション層におけるアテンションヘッドの数。 - decoder_start_token_id (
int、任意、デフォルトは3) — エンコーダー・デコーダーモデルがbosとは異なるトークンでデコーディングを開始する場合、そのトークンの ID。 - max_new_tokens (
int、任意、デフォルトは 256) — プロンプト内のトークン数を無視して、生成するテキストトークンの最大数です。 - pad_token_id (
int、任意、デフォルトは0) — 語彙内でパディングに使用されるトークン ID。 - bos_token_id (
int、任意、デフォルトは2) — 語彙におけるストリーム開始に使用されるトークン ID。 - eos_token_id (
Union[int, list[int]]、任意、デフォルトは3) — 語彙内でストリーム終了に使用されるトークン ID。 - speech_encoder_layers (
int、任意、デフォルト値は 24)— Transformer 音声エンコーダーにおける隠れ層の数。 - speech_encoder_attention_heads (
int、任意、デフォルトは 16)— Transformer 音声エンコーダーの各アテンション層におけるアテンションヘッドの数。 - speech_encoder_intermediate_size (
int、任意、デフォルトは 4096) — Transformer 音声エンコーダーにおける「intermediate」(すなわちフィードフォワード)層の次元数。 - speech_encoder_hidden_act (
strまたはfunction、省略可能、デフォルトは"swish") — 音声エンコーダーにおける非線形活性化関数(関数または文字列)です。文字列の場合、"gelu"、"relu"、"selu"、"swish"および"gelu_new"がサポートされています。 - speech_encoder_dropout (
float、任意、デフォルト値は 0.0) — 音声エンコーダーのすべての層における dropout の確率です。 - add_adapter (
bool、省略可能、デフォルトはTrue) — 音声エンコーダーの上にアダプター層を追加します。 - speech_encoder_layerdrop (
float、任意、デフォルト値は 0.1) — 音声エンコーダーの LayerDrop 確率です。詳細については、[LayerDrop の論文]( https://huggingface.co/papers/1909.11556)を参照してください。 - feature_projection_input_dim (
int, 任意、デフォルトは 160) — 音声エンコーダーの入力特徴量射影の入力次元、すなわち SeamlessM4TFeatureExtractor で入力オーディオを処理した後の次元です。 - adaptor_kernel_size (
int, 任意、デフォルトは 8) — アダプターネットワーク内の畳み込み層のカーネルサイズ。add_adapter is Trueの場合のみ関連します。 - adaptor_stride (
int、任意、デフォルトは 8)— アダプターネットワーク内の畳み込み層のストライド。add_adapter is Trueの場合のみ関連します。 - adaptor_dropout (
float、任意、デフォルト値は 0.1) — 音声アダプタのすべての層における dropout の確率です。 - num_adapter_layers (
int、任意、デフォルトは 1) — アダプターネットワークで使用すべき畳み込み層の数。add_adapter is Trueの場合のみ関連します。 - position_embeddings_type (
str、任意、デフォルトは"relative_key") —relative_keyを指定できます。Noneの場合、相対位置埋め込みは適用されません。音声エンコーダーにのみ適用されます。"relative_key"に関する詳細については、Self-Attention with Relative Position Representations (Shaw et al.) を参照してください。 - conv_depthwise_kernel_size (
int, 任意、デフォルトは 31) — Conformer ブロック内の 1 次元深度可変畳み込み層のカーネルサイズです。音声エンコーダーにのみ適用されます。 - left_max_position_embeddings (
int、任意、デフォルトは 64)— 相対位置の左側のクリップ値です。 - right_max_position_embeddings (
int、任意、デフォルト値は 8) — 相対位置の右側のクリップ値です。 - speech_encoder_chunk_size (
int、任意、デフォルト値は 20000)— 各アテンションチャンクのサイズです。 - speech_encoder_left_chunk_num (
int、任意、デフォルト値は 128) — ルックアヘッドが許可される左側のチャンク数。 - t2u_bos_token_id (
int, 任意、デフォルトは 0) — ストリームの先頭ユニットトークンの ID。テキストからユニットへの seq2seq モデルでのみ適用されます。 - t2u_pad_token_id (
int、任意、デフォルト値は 1)— paddingユニットトークンの ID です。テキストからユニットへの seq2seq モデルでのみ適用されます。 - t2u_eos_token_id (
int, 任意、デフォルトは 2) — ストリーム終了ユニットトークンの ID。テキストからユニットへの seq2seq モデルでのみ適用されます。 - t2u_encoder_layers (
int、任意、デフォルト値は 6)— Transformer のテキストからユニットへのエンコーダーにおける隠れ層の数。 - t2u_encoder_ffn_dim (
int、任意、デフォルト値は 8192) — Transformer のテキストからユニットへのエンコーダーにおける「中間」(すなわちフィードフォワード) レイヤーの次元数。 - t2u_encoder_attention_heads (
int、任意、デフォルトは 16)— Transformer のテキストからユニットへのエンコーダーにおける、各アテンション層のアテンションヘッド数。 - t2u_decoder_layers (
int、任意、デフォルト値は 6) — Transformer のテキストからユニットへのデコーダーにおける隠れ層の数です。 - t2u_decoder_ffn_dim (
int、任意、デフォルト値は 8192) — Transformer のテキストからユニットへのデコーダーにおける「中間」(すなわちフィードフォワード) レイヤーの次元数。 - t2u_decoder_attention_heads (
int、任意、デフォルトは 16)— Transformer のテキストからユニットへのデコーダーにおける、各アテンション層のアテンションヘッド数。 - t2u_max_position_embeddings (
int、任意、デフォルト値は 4096)— このモデルの text-to-unit コンポーネントで使用される可能性のある最大シーケンス長です。念のため、通常は大きめの値 (例: 512、1024、2048 など) を設定します。 - t2u_variance_predictor_embed_dim (
int、任意、デフォルトは 1024) — テキストからユニットへの変換における期間予測子の射影次元です。 - t2u_variance_predictor_hidden_dim (
int、任意、デフォルトは 256) — text-to-unit の duration predictor の内部次元です。 - t2u_variance_predictor_kernel_size (
int、任意、デフォルト値は 3) — テキストからユニットへの変換における、期間予測器の畳み込み層のカーネルサイズ。 - t2u_variance_pred_dropout (
float、任意、デフォルト値は 0.5) — テキストからユニットへの変換における期間予測器のドロップアウト確率です。 - sampling_rate (
int、任意、デフォルトは16000) — オーディオファイルをデジタル化するためのサンプリングレート (Hz)。 - upsample_initial_channel (
int、任意、デフォルト値は 512) — hifi-gan アップサンプリングネットワークへの入力チャネル数です。ボコーダーにのみ適用されます。 - upsample_rates (
tuple[int]またはlist[int]、任意、デフォルトは[5, 4, 4, 2, 2]) — ボコーダーのアップサンプリングネットワークにおける各1次元畳み込み層のストライドを定義する整数のタプルです。 upsample_rates の長さが畳み込み層の数を定義し、upsample_kernel_sizes の長さと一致する必要があります。ボコーダーにのみ適用されます。 - upsample_kernel_sizes (
tuple[int]またはlist[int]、任意、デフォルトは[11, 8, 8, 4, 4]) — vocoder のアップサンプリングネットワークにおける各 1 次元畳み込み層のカーネルサイズを定義する整数のタプルです。upsample_kernel_sizes の長さが畳み込み層の数を定義し、upsample_rates の長さと一致する必要があります。vocoder にのみ適用されます。 - resblock_kernel_sizes (
tuple[int]またはlist[int]、任意、デフォルトは[3, 7, 11]) — マルチレセプティブフィールドフュージョン (MRF) モジュール内のボコーダーの 1 次元畳み込み層のカーネルサイズを定義する整数のタプルです。ボコーダーにのみ適用されます。 - resblock_dilation_sizes (
tuple[tuple[int]]またはlist[list[int]]、任意、デフォルトは[[1, 3, 5], [1, 3, 5], [1, 3, 5]]) — マルチレセプティブフィールドフュージョン(MRF)モジュール内のボコーダーのディレイテッド1次元畳み込み層のディレイション率を定義する整数のネストされたタプルです。ボコーダーにのみ適用されます。 - leaky_relu_slope (
float, 任意、デフォルトは 0.1) — vocoder で使用される leaky ReLU 活性化関数の負の勾配の角度です。vocoder にのみ適用されます。 - unit_hifi_gan_vocab_size (
int、任意、デフォルト値は 10000)— SeamlessM4Tv2 のボコーダーの語彙サイズです。~SeamlessM4Tv2Model、~SeamlessM4Tv2ForSpeechToSpeech、または ~SeamlessM4Tv2ForTextToSpeech のボコーダーを呼び出す際に渡すinputs_idsで表現できる異なるユニットトークンの数を定義します。 - unit_embed_dim (
int、任意、デフォルト値は 1280) — hifi-gan ボコーダーに与えられる入力 ID の射影次元です。ボコーダーにのみ適用されます。 - lang_embed_dim (
int、省略可、デフォルトは 256) — hifi-gan ボコーダーに渡す対象言語の射影次元です。ボコーダーにのみ適用されます。 - spkr_embed_dim (
int、任意、デフォルトは 256) — hifi-gan ボコーダーに渡される話者 ID の射影次元です。ボコーダーにのみ適用されます。 - vocoder_num_langs (
int、任意、デフォルトは 36) — vocoder がサポートする言語の数。t2u_num_langsとは異なる場合があります。 - vocoder_num_spkrs (
int, 任意、デフォルトは 200) — vocoder がサポートする話者数。 - variance_predictor_kernel_size (
int, 任意、デフォルト値は 3) — Duration predictor のカーネルサイズ。vocoder にのみ適用されます。 - var_pred_dropout (
float、任意、デフォルト値は 0.5) — duration predictor の dropout 確率です。vocoder にのみ適用されます。 - vocoder_offset (
int, 任意、デフォルトは 4) — シンボルトークンを考慮するために、ユニットトークン ID をこの数だけオフセットします。vocoder にのみ適用されます。 - tie_word_embeddings (
bool、任意、デフォルトはTrue) — モデルのtied_weights_keysマッピングに従って重み埋め込みを共有するかどうかを指定します。
これは SeamlessM4Tv2Model の設定を保存するための設定クラスです。指定された引数に基づいてモデルのアーキテクチャを定義し、Seamless M4T V2 モデルをインスタンス化するために使用されます。デフォルト値で設定をインスタンス化すると、facebook/hf-seamless-m4t-medium と同様の設定が得られます。
設定オブジェクトはPreTrainedConfigを継承し、モデルの出力を制御するために使用できます。詳細については、PreTrainedConfigのドキュメントを参照してください。
>>> from transformers import SeamlessM4Tv2Model, SeamlessM4Tv2Config
>>> # Initializing a SeamlessM4Tv2 "" style configuration
>>> configuration = SeamlessM4Tv2Config()
>>> # Initializing a model from the "" style configuration
>>> model = SeamlessM4Tv2Model(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config