Transformers documentation

MusicGen Melody

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

このモデルは2023年6月8日にHF papersで公開され、2024年3月18日にHugging Face Transformersに貢献されました。

MusicGen Melody

FlashAttention SDPA

概要

MusicGen Melody モデルは、Jade Copet、Felix Kreuk、Itai Gat、Tal Remez、David Kant、Gabriel Synnaeve、Yossi Adi、Alexandre Défossez によって提案された Simple and Controllable Music Generation で紹介されています。

MusicGen Melody は、テキストの説明やオーディオのプロンプトを条件として、高品質な音楽サンプルを生成できる単一ステージの自己回帰型 Transformer モデルです。テキストの説明は、凍結されたテキストエンコーダーモデルを介して処理され、隠れ状態の表現のシーケンスが得られます。その後、MusicGen はこれらの隠れ状態を条件として、離散的なオーディオトークン、すなわちオーディオコードを予測するように学習されます。これらのオーディオトークンは、EnCodec などのオーディオ圧縮モデルを用いてデコードされ、オーディオ波形が復元されます。

効率的なトークンインターリーブパターンにより、MusicGenはテキスト/オーディオプロンプトの自己教師ありセマンティック表現を必要としません。これにより、コードブックのセットを予測するために複数のモデルをカスケード接続する(階層的に、またはアップサンプリングを行うなど)必要がなくなります。代わりに、単一のフォワードパスですべてのコードブックを生成できます。

論文の抄録は以下の通りです。

本稿では、条件付き音楽生成タスクに取り組む。我々は、圧縮された離散音楽表現(すなわちトークン)の複数のストリーム上で動作する単一の言語モデル(LM)である MusicGen を提案する。先行研究とは異なり、MusicGen は単一ステージの Transformer LM と効率的なトークンインターリーブパターンで構成されており、階層的な処理やアップサンプリングなど、複数のモデルをカスケードさせる必要を排除する。このアプローチにより、MusicGen がテキストの説明やメロディックな特徴を条件として、高品質なサンプルを生成できることを示す。これにより、生成される出力に対するより良い制御が可能となる。標準的なテキストから音楽への生成ベンチマークにおいて、提案手法が評価対象のベースラインを上回ることを、自動評価と人間による評価の両方を用いた広範な実証評価を通じて示す。さらに、アブレーションスタディを通じて、MusicGen を構成する各コンポーネントの重要性を明らかにする。

このモデルは ylacombe によって提供されました。元のコードは こちら で確認できます。事前学習済みチェックポイントは Hugging Face Hub で利用できます。

MusicGenとの違い

MusicGenとの主な違いは2点あります。

  1. ここでは、オーディオプロンプトは生成されるオーディオサンプルの条件信号として使用されますが、MusicGenではオーディオの継続に使用されます。
  2. MusicGen とは異なり、条件付きテキストおよび音声信号は、クロスアテンション信号として使用されるのではなく、デコーダーの隠れ状態に連結されます。

生成

MusicGen Melody は、greedy と sampling の2つの生成モードに対応しています。実際には、sampling は greedy よりもはるかに優れた結果をもたらすため、可能な限り sampling モードの使用を推奨します。sampling はデフォルトで有効になっており、MusicgenMelodyForConditionalGeneration.generate() の呼び出しで do_sample=True を設定するか、モデルの生成設定を上書きすることで明示的に指定できます(以下を参照)。

Transformers は、MusicGen Melody のモノラル(1チャネル)版とステレオ(2チャネル)版の両方をサポートしています。モノラル版は、1つのコードブックセットを生成します。ステレオ版は、各チャネル(左/右)ごとに1つずつ、合計2つのコードブックセットを生成し、それぞれのコードブックセットはオーディオ圧縮モデルを通じて独立してデコードされます。各チャネルのオーディオストリームが結合され、最終的なステレオ出力が得られます。

オーディオ条件付き生成

モデルは、MusicgenMelodyProcessor を使用して入力を前処理することにより、テキストとオーディオプロンプトを条件としてオーディオサンプルを生成できます。

次の例では、pipで以下のコマンドを介してインストールできる🤗 Datasetsライブラリを使用して、オーディオファイルを読み込みます。

pip install --upgrade pip
pip install datasets[audio]

これから使用するオーディオファイルは、次のように読み込まれます。

from datasets import load_dataset


dataset = load_dataset("sanchit-gandhi/gtzan", split="train", streaming=True)
sample = next(iter(dataset))["audio"]

オーディオプロンプトは、ドラムやベースなどの楽器によって通常生成される低周波信号を含まないことが望ましいです。Demucsモデルを使用すると、ドラムやベースの成分からボーカルやその他の信号を分離できます。

Demucs を使用するには、まず以下のスニペットを使用する前に、こちらの手順に従ってインストールしてください。

import torch
from demucs import pretrained
from demucs.apply import apply_model
from demucs.audio import convert_audio


wav = torch.tensor(sample["array"]).to(torch.float32)

demucs = pretrained.get_model('htdemucs')

wav = convert_audio(wav[None], sample["sampling_rate"], demucs.samplerate, demucs.audio_channels)
wav = apply_model(demucs, wav[None])

その後、以下のスニペットを使用して音楽を生成できます。

from transformers import AutoProcessor, MusicgenMelodyForConditionalGeneration


processor = AutoProcessor.from_pretrained("facebook/musicgen-melody")
model = MusicgenMelodyForConditionalGeneration.from_pretrained("facebook/musicgen-melody", device_map="auto")

inputs = processor(
    audio=wav,
    sampling_rate=demucs.samplerate,
    text=["80s blues track with groovy saxophone"],
    padding=True,
    return_tensors="pt",
)
audio_values = model.generate(**inputs, do_sample=True, guidance_scale=3, max_new_tokens=256)

Demucs を使わずにオーディオ信号を直接渡すこともできますが、その場合、生成の品質が低下する可能性があります:

from transformers import AutoProcessor, MusicgenMelodyForConditionalGeneration


processor = AutoProcessor.from_pretrained("facebook/musicgen-melody")
model = MusicgenMelodyForConditionalGeneration.from_pretrained("facebook/musicgen-melody", device_map="auto")

inputs = processor(
    audio=sample["array"],
    sampling_rate=sample["sampling_rate"],
    text=["80s blues track with groovy saxophone"],
    padding=True,
    return_tensors="pt",
)
audio_values = model.generate(**inputs, do_sample=True, guidance_scale=3, max_new_tokens=256)

オーディオ出力は、(batch_size, num_channels, sequence_length) の形状を持つ3次元の Torch テンソルです。生成されたオーディオサンプルを再生するには、ipynb ノートブックで再生するか、

from IPython.display import Audio


sampling_rate = model.config.audio_encoder.sampling_rate
Audio(audio_values[0].numpy(), rate=sampling_rate)

または、soundfile などのサードパーティ製ライブラリを使用して .wav ファイルとして保存します:

import soundfile as sf


sampling_rate = model.config.audio_encoder.sampling_rate
sf.write("musicgen_out.wav", audio_values[0].T.numpy(), sampling_rate)

テキストのみの条件付き生成

同じMusicgenMelodyProcessorを使用して、テキストのみのプロンプトを前処理できます。

from transformers import AutoProcessor, MusicgenMelodyForConditionalGeneration


processor = AutoProcessor.from_pretrained("facebook/musicgen-melody")
model = MusicgenMelodyForConditionalGeneration.from_pretrained("facebook/musicgen-melody", device_map="auto")

inputs = processor(
    text=["80s pop track with bassy drums and synth", "90s rock song with loud guitars and heavy drums"],
    padding=True,
    return_tensors="pt",
)
audio_values = model.generate(**inputs, do_sample=True, guidance_scale=3, max_new_tokens=256)

guidance_scale は、classifier free guidance (CFG) で使用され、条件付き logits(テキストプロンプトから予測されるもの)と無条件 logits(無条件または「null」プロンプトから予測されるもの)の間の重みを設定します。guidance scale を高くすると、モデルは入力プロンプトとより密接に関連するサンプルを生成するようになり、通常は音声品質の低下を伴います。CFG は guidance_scale > 1 を設定することで有効になります。最適な結果を得るには、guidance_scale=3(デフォルト)を使用してください。

バッチでの生成も可能です:


from transformers import AutoProcessor, MusicgenMelodyForConditionalGeneration


processor = AutoProcessor.from_pretrained("facebook/musicgen-melody")
model = MusicgenMelodyForConditionalGeneration.from_pretrained("facebook/musicgen-melody", device_map="auto")

# take the first quarter of the audio sample
sample_1 = sample["array"][: len(sample["array"]) // 4]

# take the first half of the audio sample
sample_2 = sample["array"][: len(sample["array"]) // 2]

inputs = processor(
    audio=[sample_1, sample_2],
    sampling_rate=sample["sampling_rate"],
    text=["80s blues track with groovy saxophone", "90s rock song with loud guitars and heavy drums"],
    padding=True,
    return_tensors="pt",
)
audio_values = model.generate(**inputs, do_sample=True, guidance_scale=3, max_new_tokens=256)

無条件生成

無条件(または「null」)生成の入力は、MusicgenMelodyProcessor.get_unconditional_inputs() メソッドを通じて取得できます:

from transformers import MusicgenMelodyForConditionalGeneration, MusicgenMelodyProcessor


model = MusicgenMelodyForConditionalGeneration.from_pretrained("facebook/musicgen-melody", device_map="auto")
unconditional_inputs = MusicgenMelodyProcessor.from_pretrained("facebook/musicgen-melody").get_unconditional_inputs(num_samples=1)

audio_values = model.generate(**unconditional_inputs, do_sample=True, max_new_tokens=256)

生成設定

サンプリング、ガイダンススケール、生成トークン数など、生成プロセスを制御するデフォルトのパラメータは、モデルの生成設定に格納されており、必要に応じて更新できます。

from transformers import MusicgenMelodyForConditionalGeneration


model = MusicgenMelodyForConditionalGeneration.from_pretrained("facebook/musicgen-melody", device_map="auto")

# inspect the default generation config
model.generation_config

# increase the guidance scale to 4.0
model.generation_config.guidance_scale = 4.0

# decrease the max length to 256 tokens
model.generation_config.max_length = 256

generate メソッドに渡される引数は、generation config の設定を上書きします。したがって、generate の呼び出しでdo_sample=Falseを設定すると、generation config 内のmodel.generation_config.do_sampleの設定が上書きされます。

モデル構造

MusicGenモデルは、3つの異なる段階に分解できます。

  1. Text encoder: テキスト入力を、隠れ状態の表現のシーケンスにマッピングします。事前学習済みの MusicGen モデルは、T5 または Flan-T5 のいずれかの凍結された text encoder を使用しています。
  2. MusicGen Melody デコーダー: エンコーダーの隠れ状態表現に条件付け、オートレグレッシブにオーディオトークン(またはコード)を生成する言語モデル(LM)
  3. Audio decoder: デコーダーが予測した audio tokens から audio waveform を復元するために使用されます。

したがって、MusicGenモデルは、クラスMusicgenMelodyForCausalLMに対応する単体のデコーダーモデルとして、またはテキストエンコーダーとオーディオエンコーダーを含む複合モデルとして、クラスMusicgenMelodyForConditionalGenerationに対応して使用できます。デコーダーのみを事前学習済みチェックポイントから読み込む必要がある場合は、まず正しいconfigを指定して読み込むか、複合モデルの.decoder属性を介してアクセスできます。

from transformers import AutoConfig, MusicgenMelodyForCausalLM, MusicgenMelodyForConditionalGeneration


# Option 1: get decoder config and pass to `.from_pretrained`
decoder_config = AutoConfig.from_pretrained("facebook/musicgen-melody").decoder
decoder = MusicgenMelodyForCausalLM.from_pretrained("facebook/musicgen-melody", **decoder_config.to_dict(), device_map="auto")

# Option 2: load the entire composite model, but only return the decoder
decoder = MusicgenMelodyForConditionalGeneration.from_pretrained("facebook/musicgen-melody", device_map="auto").decoder

学習中はテキストエンコーダーとオーディオエンコーダーのモデルが固定されるため、MusicGenデコーダーであるMusicgenMelodyForCausalLMは、エンコーダーの隠れ状態とオーディオコードのデータセット上で単独で学習できます。推論時には、学習済みのデコーダーを固定されたテキストエンコーダーとオーディオエンコーダーと組み合わせることで、複合モデルであるMusicgenMelodyForConditionalGenerationを復元できます。

チェックポイントの変換

  • こちらから元のチェックポイントをダウンロードした後、src/transformers/models/musicgen_melody/convert_musicgen_melody_transformers.py にある変換スクリプトを使用して、以下のコマンドで変換できます。
python src/transformers/models/musicgen_melody/convert_musicgen_melody_transformers.py \
    --checkpoint="facebook/musicgen-melody" --pytorch_dump_folder /output/path 

ヒント:

  • MusicGen は、Encodec の 32kHz チェックポイントで学習されています。互換性のあるバージョンの Encodec モデルを使用することを確認してください。
  • Sampling モードは greedy よりも良い結果をもたらす傾向があります。MusicgenMelodyForConditionalGeneration.generate() の呼び出しで変数 do_sample を切り替えることで、sampling を有効にできます。

MusicgenMelodyDecoderConfig

class transformers.MusicgenMelodyDecoderConfig

< >

( 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 = 0is_encoder_decoder: bool = Falseid2label: 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 = Nonevocab_size: int = 2048max_position_embeddings: int = 2048num_hidden_layers: int = 24ffn_dim: int = 4096num_attention_heads: int = 16layerdrop: float | int = 0.0use_cache: bool = Trueactivation_function: str = 'gelu'hidden_size: int = 1024dropout: float | int = 0.1attention_dropout: float | int = 0.0activation_dropout: float | int = 0.0initializer_factor: float = 0.02scale_embedding: bool = Falsenum_codebooks: int = 4audio_channels: int = 1pad_token_id: int | None = 2048bos_token_id: int | None = 2048eos_token_id: int | list[int] | None = Nonetie_word_embeddings: bool = Falseis_decoder: bool = Falseadd_cross_attention: bool = False )

パラメータ

  • vocab_size (int、任意、デフォルトは 2048) — モデルの語彙サイズ。input_ids で表現できるトークンの種類数を定義します。
  • max_position_embeddings (int、任意、デフォルトは 2048) — このモデルが使用される可能性のある最大シーケンス長です。
  • num_hidden_layers (int、任意、デフォルトは24) — Transformer デコーダーの隠れ層の数。
  • ffn_dim (int、任意、デフォルトは4096) — MLP 表現の次元数です。
  • num_attention_heads (int、任意、デフォルトは 16) — Transformer デコーダーの各アテンション層におけるアテンションヘッドの数。
  • layerdrop (Union[float, int]、任意、デフォルトは 0.0) — LayerDrop の確率です。詳細は [LayerDrop の論文](https://huggingface.co/papers/1909.11556 を参照)をご覧ください。
  • use_cache (bool、任意、デフォルトは True) — モデルが最後のキー/バリューの注意を返すかどうか(すべてのモデルで利用されるわけではありません)。config.is_decoder=True の場合、またはモデルがデコーダー専用の生成モデルである場合にのみ関連します。
  • activation_function (str、任意、デフォルトは gelu) — デコーダーで使用する非線形活性化関数(関数または文字列)。例えば、"gelu"、 "relu"、"silu" など。
  • hidden_size (int、任意、デフォルトは 1024) — 隠れ表現の次元数。
  • dropout (Union[float, int]、任意、デフォルト値は0.1) — すべての dropout レイヤーの比率です。
  • attention_dropout (Union[float, int]、任意、デフォルトは 0.0) — アテンション確率のドロップアウト率です。
  • activation_dropout (Union[float, int]、任意、デフォルトは 0.0) — 全結合層内の活性化に対する dropout 率です。
  • initializer_factor (float、任意、デフォルトは 0.02) — すべての重み行列の初期化に用いる係数です(1 に保つ必要があります。初期化のテスト用に内部で使用されます)。
  • scale_embedding (bool、任意、デフォルトは False) — 埋め込みを sqrt(d_model) で割ることでスケーリングするかどうか。
  • num_codebooks (int、任意、デフォルトは 4) — モデルが使用する並列コードブックの数です。
  • audio_channels (int、任意、デフォルトは 1) — モデルが使用するオーディオチャネル数(モノラルまたはステレオ)。ステレオモデルは、左/右出力チャネルそれぞれに独立したオーディオストリームを生成します。モノラルモデルは、単一のオーディオストリームを出力します。
  • pad_token_id (int、任意、デフォルトは 2048) — 語彙内でパディングに使用されるトークン ID。
  • bos_token_id (int、任意、デフォルトは2048) — 語彙におけるストリーム開始に使用されるトークン ID。
  • eos_token_id (Union[int, list[int]], 省略可) — 語彙内でストリーム終了に使用されるトークン ID。
  • tie_word_embeddings (bool、任意、デフォルトは False) — モデルの tied_weights_keys マッピングに従って重み埋め込みを共有するかどうかを指定します。
  • is_decoder (bool、任意、デフォルトは False) — モデルがデコーダーとして使用されるかどうかを示します。False の場合、モデルはエンコーダーとして使用されます。
  • add_cross_attention (bool、任意、デフォルトはFalse) — モデルにクロスアテンション層を追加するかどうか。

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

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

MusicgenMelodyProcessor

class transformers.MusicgenMelodyProcessor

< >

( feature_extractortokenizer )

パラメータ

  • feature_extractor (MusicgenMelodyFeatureExtractor) — フィーチャーエクストラクターは必須の入力です。
  • tokenizer (T5Tokenizer) — トークナイザーは必須の入力です。

MusicgenMelodyProcessor を構築します。このプロセッサーは、フィーチャーエクストラクターとトークナイザーを単一のプロセッサーにラップします。

MusicgenMelodyProcessor は、MusicgenMelodyFeatureExtractor と T5Tokenizer のすべての機能を提供します。詳細については、~MusicgenMelodyFeatureExtractor および ~T5Tokenizer を参照してください。

__call__

< >

( *args**kwargs )

パラメータ

  • return_tensors (str または TensorType, 省略可) — 設定すると、特定のフレームワークのテンソルを返します。使用可能な値は以下の通りです:
    • 'pt': PyTorchのtorch.Tensorオブジェクトを返します。
    • 'np': NumPyのnp.ndarrayオブジェクトを返します。

get_unconditional_inputs

< >

( num_samples = 1return_tensors = 'pt' )

パラメータ

  • num_samples (int, 任意) — 無条件に生成するオーディオサンプルの数。

無条件生成用の null 入力を取得するためのヘルパー関数です。これにより、feature extractor や tokenizer を使用せずにモデルを利用できます。

例:

>>> from transformers import MusicgenMelodyForConditionalGeneration, MusicgenMelodyProcessor

>>> model = MusicgenMelodyForConditionalGeneration.from_pretrained("facebook/musicgen-melody")

>>> # get the unconditional (or 'null') inputs for the model
>>> processor = MusicgenMelodyProcessor.from_pretrained("facebook/musicgen-melody")
>>> unconditional_inputs = processor.get_unconditional_inputs(num_samples=1)

>>> audio_samples = model.generate(**unconditional_inputs, max_new_tokens=256)

MusicgenMelodyFeatureExtractor

class transformers.MusicgenMelodyFeatureExtractor

< >

( feature_size = 12sampling_rate = 32000hop_length = 4096chunk_length = 30n_fft = 16384num_chroma = 12padding_value = 0.0return_attention_mask = Falsestem_indices = [3, 2]**kwargs )

パラメータ

  • feature_size (int、任意、デフォルト値は 12)— 抽出された特徴量の次元数。
  • sampling_rate (int, 任意、デフォルトは 32000) — オーディオファイルをデジタル化するためのサンプリングレート (Hz)。
  • hop_length (int、任意、デフォルトは 4096) — Mel 周波数係数を取得するために使用される STFT の、重複するウィンドウの長さです。
  • chunk_length (int、任意、デフォルトは 30) — sampling_rate サンプルのチャンクとして使用される最大数。長いまたは短い音声シーケンスをトリムおよびパディングするために使用されます。
  • n_fft (int, 省略可、デフォルトは 16384) — フーリエ変換のサイズ。
  • num_chroma (int, 任意, デフォルト値は 12) — 使用するクロマビンの数。
  • padding_value (float、任意、デフォルト値は 0.0)— オーディオをパディングするために使用される値です。
  • return_attention_mask (bool, 省略可, デフォルトは False) — アテンションマスクを返すかどうか。フィーチャーエクストラクターを呼び出す際に上書きできます。

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

    Whisperモデルでは、バッチ推論を行う際は、微妙なバグを避けるために、attention_maskを常に渡す必要があります。

  • stem_indices (list[int]、任意、デフォルトは [3, 2]) — demucs の出力が渡された場合に抽出するステムチャネル。

MusicgenMelody の特徴抽出器を構築します。

このフィーチャーエクストラクターは、主要なメソッドの大部分を含む SequenceFeatureExtractor を継承しています。これらのメソッドに関する詳細については、このスーパークラスを参照してください。

このクラスは、Demucsで処理されたオーディオ、または生のオーディオ波形から直接、クロマ特徴量を抽出します。

MusicgenMelodyConfig

クラス transformers.MusicgenMelodyConfig

< >

( 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 = 0is_encoder_decoder: bool = Falseid2label: 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 = Nonetext_encoder: dict | transformers.configuration_utils.PreTrainedConfig | None = Noneaudio_encoder: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonedecoder: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonenum_chroma: int = 12chroma_length: int = 235initializer_factor: float = 0.02 )

パラメータ

  • text_encoder (Union[dict, PretrainedConfig]) — テキストエンコーダーの設定を定義する設定オブジェクトのインスタンスです。
  • audio_encoder (Union[dict, PretrainedConfig]) — オーディオエンコーダーの設定を定義する設定オブジェクトのインスタンスです。
  • decoder (Union[dict, PretrainedConfig]) — デコーダーの設定を定義する設定オブジェクトのインスタンスです。
  • num_chroma (int, 任意, デフォルト値は 12) — 使用するクロマビンの数。
  • chroma_length (int、任意、デフォルトは 235) — オーディオをモデルの条件付けに使用する場合の、クロマの最大持続時間です。学習時に使用された最大持続時間に相当します。
  • initializer_factor (float、任意、デフォルトは 0.02) — すべての重み行列の初期化に用いる係数です(1 に保つ必要があります。初期化のテスト用に内部で使用されます)。

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

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

例:

>>> from transformers import (
...     MusicgenMelodyConfig,
...     MusicgenMelodyDecoderConfig,
...     T5Config,
...     EncodecConfig,
...     MusicgenMelodyForConditionalGeneration,
... )

>>> # Initializing text encoder, audio encoder, and decoder model configurations
>>> text_encoder_config = T5Config()
>>> audio_encoder_config = EncodecConfig()
>>> decoder_config = MusicgenMelodyDecoderConfig()

>>> configuration = MusicgenMelodyConfig(
...     text_encoder=text_encoder_config, audio_encoder=audio_encoder_config, decoder=decoder_config
... )

>>> # Initializing a MusicgenMelodyForConditionalGeneration (with random weights) from the facebook/musicgen-melody style configuration
>>> model = MusicgenMelodyForConditionalGeneration(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config
>>> config_text_encoder = model.config.text_encoder
>>> config_audio_encoder = model.config.audio_encoder
>>> config_decoder = model.config.decoder

>>> # Saving the model, including its configuration
>>> model.save_pretrained("musicgen_melody-model")

>>> # loading model and config from pretrained folder
>>> musicgen_melody_config = MusicgenMelodyConfig.from_pretrained("musicgen_melody-model")
>>> model = MusicgenMelodyForConditionalGeneration.from_pretrained("musicgen_melody-model", config=musicgen_melody_config)

MusicgenMelodyModel

class transformers.MusicgenMelodyModel

< >

( config: MusicgenMelodyDecoderConfig )

パラメータ

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

特定のヘッドを上に載せずに、生のhidden-statesを出力する素のMusicgen Melody Model。

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

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

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneencoder_hidden_states: typing.Optional[torch.FloatTensor] = Noneencoder_attention_mask: typing.Optional[torch.LongTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.FloatTensor] = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithPast or tuple(torch.FloatTensor)

パラメータ

  • input_ids (torch.LongTensor の形状 (batch_size * num_codebooks, sequence_length)) — 語彙における入力シーケンスのトークンインデックスであり、オーディオコードのシーケンスに対応します。

    インデックスは、EncodecModel などのオーディオエンコーダーモデルでオーディオプロンプトをエンコードしてオーディオコードを予測することで取得できます。詳細は EncodecModel.encode() を参照してください。

    入力IDとは何ですか?

    input_idsは、forward passにおいて、自動的に(batch_size * num_codebooks, target_sequence_length)の形状から(batch_size, num_codebooks, target_sequence_length)の形状に変換されます。EncodecModelなどの音声エンコーディングモデルから音声コードを取得する場合は、フレーム数が1であること、およびinput_idsとして渡す前に、音声コードを(frames, batch_size, num_codebooks, target_sequence_length)から(batch_size * num_codebooks, target_sequence_length)にリシェイプすることを確実に行ってください。

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

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

  • encoder_hidden_states (torch.FloatTensor、形状 (batch_size, encoder_sequence_length, hidden_size)、任意) — テキストエンコーダーの出力と処理済みオーディオエンコーダーの出力を連結したものを表す、隠れ状態のシーケンスです。 条件信号として使用されるため、射影された decoder_input_ids に連結されます。
  • encoder_attention_mask (torch.LongTensor 形状 (batch_size, encoder_sequence_length), 任意) — 条件付き隠れ状態に対するアテンションの計算を回避するためのマスク。 [0, 1]:
    • マスクされていないトークンに対して1
    • マスクされたトークンに対しては 0 です。

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

  • 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 のインデックスを対応するベクトルに変換する方法をより細かく制御したい場合に有用です。
  • use_cache (bool、任意) — True に設定すると、past_key_values のキーバリュー状態が返され、デコーディングの高速化に利用できます(past_key_values を参照)。

戻り値

BaseModelOutputWithPast または tuple(torch.FloatTensor)

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

MusicgenMelodyModelの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 (Cache、任意、use_cache=True が渡された場合または config.use_cache=True の場合に返されます) — Cache のインスタンスです。詳細については、kv cache ガイドを参照してください。

    自己アテンションブロック(および config.is_encoder_decoder=True の場合、クロスカレンションブロック)の事前計算済みヒドゥンステート(キーとバリュー)を保持します。これらは逐次デコーディングを高速化するために使用できます(past_key_values 入力参照)。

  • 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、および任意の初期埋め込み出力。

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

    アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。

MusicgenMelodyForCausalLM

クラス transformers.MusicgenMelodyForCausalLM

< >

( config: MusicgenMelodyDecoderConfig )

パラメータ

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

言語モデリングヘッドを上部に備えた Musicgen Melody デコーダーモデル。

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

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

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneencoder_hidden_states: typing.Optional[torch.FloatTensor] = Noneencoder_attention_mask: typing.Optional[torch.LongTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.FloatTensor] = Noneuse_cache: bool | None = Nonelabels: typing.Optional[torch.LongTensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → MusicgenMelodyOutputWithPast or tuple(torch.FloatTensor)

パラメータ

  • input_ids (torch.LongTensor の形状 (batch_size * num_codebooks, sequence_length)) — 語彙における入力シーケンスのトークンインデックスであり、オーディオコードのシーケンスに対応します。

    インデックスは、EncodecModel などのオーディオエンコーダーモデルでオーディオプロンプトをエンコードしてオーディオコードを予測することで取得できます。詳細は EncodecModel.encode() を参照してください。

    入力IDとは何ですか?

    input_idsは、forward passにおいて、自動的に(batch_size * num_codebooks, target_sequence_length)の形状から(batch_size, num_codebooks, target_sequence_length)の形状に変換されます。EncodecModelなどの音声エンコーディングモデルから音声コードを取得する場合は、フレーム数が1であること、およびinput_idsとして渡す前に、音声コードを(frames, batch_size, num_codebooks, target_sequence_length)から(batch_size * num_codebooks, target_sequence_length)にリシェイプすることを確実に行ってください。

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

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

  • encoder_hidden_states (torch.FloatTensor、形状 (batch_size, encoder_sequence_length, hidden_size)、任意) — テキストエンコーダーの出力と処理済みオーディオエンコーダーの出力を連結したものを表す、隠れ状態のシーケンスです。 条件信号として使用されるため、射影された decoder_input_ids に連結されます。
  • encoder_attention_mask (torch.LongTensor 形状 (batch_size, encoder_sequence_length), 任意) — 条件付き隠れ状態に対するアテンションの計算を回避するためのマスク。 [0, 1]:
    • マスクされていないトークンに対して1
    • マスクされたトークンに対しては 0 です。

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

  • 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 のインデックスを対応するベクトルに変換する方法をより細かく制御したい場合に有用です。
  • use_cache (bool、任意) — True に設定すると、past_key_values のキーバリュー状態が返され、デコーディングの高速化に利用できます(past_key_values を参照)。
  • labels (torch.LongTensor、形状 (batch_size, sequence_length, num_codebooks)、任意) — 言語モデリング用のラベルです。モデル内部でラベルはシフトされるため、labels = input_ids と設定できます。インデックスは [-100, 0, ..., config.vocab_size] から選択されます。-100 に設定されたすべてのラベルは無視(マスク)され、損失は [0, ..., config.vocab_size] 内のラベルに対してのみ計算されます。

戻り値

MusicgenMelodyOutputWithPast または tuple(torch.FloatTensor)

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

MusicgenMelodyForCausalLM の 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 (Cache、任意、use_cache=True が渡された場合または config.use_cache=True の場合に返されます) — Cache のインスタンスです。詳細については、kv cache ガイドを参照してください。

    逐次デコーディングを高速化するために使用できる(past_key_values 入力参照)、事前計算済みの隠れ状態(自己注意ブロックのキーとバリュー)が含まれます。

  • 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、および任意の初期埋め込み出力。

  • 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_hidden_states (torch.FloatTensor、形状 (batch_size, encoder_sequence_length, hidden_size)、任意) — 投影されたテキストエンコーダーの出力と投影されたオーディオエンコーダーの出力を連結したものを表す、条件付き隠れ状態のシーケンスです。条件シグナルとして使用されます。

例:

MusicgenMelodyForConditionalGeneration

クラス transformers.MusicgenMelodyForConditionalGeneration

< >

( config: MusicgenMelodyConfig = Nonetext_encoder: transformers.modeling_utils.PreTrainedModel | None = Noneaudio_encoder: transformers.modeling_utils.PreTrainedModel | None = Nonedecoder: transformers.models.musicgen_melody.modeling_musicgen_melody.MusicgenMelodyForCausalLM | None = None )

パラメータ

  • config (MusicgenMelodyConfig、任意) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
  • text_encoder (PreTrainedModel、任意) — テキストを条件付け用の隠れ状態にエンコードするテキストエンコーダーモデルです。
  • audio_encoder (PreTrainedModel、任意) — 条件付けのためにオーディオを隠れ状態にエンコードするオーディオエンコーダーモデルです。
  • decoder (MusicgenMelodyForCausalLM、任意) — 条件付けシグナルに基づいてオーディオトークンを生成するデコーダーモデルです。

他のモダリティ(例:画像・テキストからテキストへの生成)に条件付けられたトークン生成用の Musicgen Melody Model。

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

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

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.BoolTensor] = Noneinput_features: typing.Optional[torch.FloatTensor] = Nonedecoder_input_ids: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.BoolTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneencoder_hidden_states: typing.Optional[torch.FloatTensor] = 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'> ) → MusicgenMelodyOutputWithPast or tuple(torch.FloatTensor)

パラメータ

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

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

    入力IDとは何ですか?

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

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

  • input_features (torch.FloatTensor、形状 (batch_size, sequence_length, feature_dim)、任意) — 入力音声特徴に対応するテンソルです。音声特徴は MusicgenMelodyFeatureExtractor を使用して取得できます。詳細は MusicgenMelodyFeatureExtractor.__call__() を参照してください(MusicgenMelodyProcessor は音声の処理に MusicgenMelodyFeatureExtractor を使用します)。
  • decoder_input_ids (torch.LongTensor の形状 (batch_size * num_codebooks, target_sequence_length), 、省略可) — 語彙におけるデコーダー入力シーケンスのトークンインデックス。オーディオコードのシーケンスに対応します。

    インデックスは、EncodecModel などのオーディオエンコーダーモデルでオーディオプロンプトをエンコードしてオーディオコードを予測することで取得できます。詳細は EncodecModel.encode() を参照してください。

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

    decoder_input_ids は、forward pass において自動的に形状 (batch_size * num_codebooks, target_sequence_length) から (batch_size, num_codebooks, target_sequence_length) に変換されます。EncodecModel のような音声エンコーディングモデルから音声コードを取得する場合は、フレーム数が 1 であること、および decoder_input_ids として渡す前に、音声コードを (frames, batch_size, num_codebooks, target_sequence_length) から (batch_size * num_codebooks, target_sequence_length) にリシェイプすることを確実に行ってください。

  • decoder_attention_mask (torch.LongTensor、形状 (batch_size, target_sequence_length)、任意) — デフォルトの動作: decoder_input_ids 内の pad トークンを無視するテンソルを生成します。デフォルトでは、causal mask も使用されます。
  • 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))のみを入力することになります。

  • encoder_hidden_states (torch.FloatTensor、形状 (batch_size, encoder_sequence_length, hidden_size)、任意) — テキストエンコーダーの出力とオーディオエンコーダーの出力の射影後の連結を表す、条件付き隠れ状態のシーケンスです。 条件シグナルとして使用されるため、射影された decoder_input_ids に連結されます。
  • 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 の値を採ります。

  • labels (torch.LongTensor、形状 (batch_size, sequence_length, num_codebooks)、任意) — 言語モデリング用のラベルです。モデル内部でラベルはシフトされるため、labels = input_ids と設定できます。インデックスは [-100, 0, ..., config.vocab_size] から選択されます。-100 に設定されたすべてのラベルは無視(マスク)され、損失は [0, ..., config.vocab_size] 内のラベルに対してのみ計算されます。
  • use_cache (bool、任意) — True に設定すると、past_key_values のキーバリュー状態が返され、デコーディングの高速化に利用できます(past_key_values を参照)。

戻り値

MusicgenMelodyOutputWithPast または tuple(torch.FloatTensor)

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

MusicgenMelodyForConditionalGenerationの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 (Cache、任意、use_cache=True が渡された場合または config.use_cache=True の場合に返されます) — Cache のインスタンスです。詳細については、kv cache ガイドを参照してください。

    逐次デコーディングを高速化するために使用できる(past_key_values 入力参照)、事前計算済みの隠れ状態(自己注意ブロックのキーとバリュー)が含まれます。

  • 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、および任意の初期埋め込み出力。

  • 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_hidden_states (torch.FloatTensor、形状 (batch_size, encoder_sequence_length, hidden_size)、任意) — 投影されたテキストエンコーダーの出力と投影されたオーディオエンコーダーの出力を連結したものを表す、条件付き隠れ状態のシーケンスです。条件シグナルとして使用されます。

例:

>>> from transformers import AutoProcessor, MusicgenMelodyForConditionalGeneration
>>> import torch

>>> processor = AutoProcessor.from_pretrained("facebook/musicgen-melody")
>>> model = MusicgenMelodyForConditionalGeneration.from_pretrained("facebook/musicgen-melody")

>>> inputs = processor(
...     text=["80s pop track with bassy drums and synth", "90s rock song with loud guitars and heavy drums"],
...     padding=True,
...     return_tensors="pt",
... )

>>> pad_token_id = model.generation_config.pad_token_id
>>> decoder_input_ids = (
...     torch.ones((inputs.input_ids.shape[0] * model.decoder.num_codebooks, 1), dtype=torch.long)
...     * pad_token_id
... )

>>> logits = model(**inputs, decoder_input_ids=decoder_input_ids).logits
>>> logits.shape  # (bsz * num_codebooks, encoder_len + tgt_len, vocab_size)
torch.Size([8, 249, 2048])
Update on GitHub