Transformers documentation
Audio Flamingo 3
このモデルは2025年7月10日にHF papersで公開され、2025年11月12日にHugging Face Transformersに貢献されました。
Audio Flamingo 3
概要
Audio Flamingo 3 (AF3) は、音声、環境音、音楽に対する堅牢な理解と推論のために設計された、完全にオープンな大規模オーディオ言語モデルです。AF3 は Whisper 風のオーディオエンコーダーと因果言語モデルを組み合わせ、インプレース置換によるオーディオとテキストの融合を実行します。プロセッサはプーリング後のオーディオフレームを専用のプレースホルダトークンにアラインし、モデルはフォワードパス中にこれらのトークンスロットを射影されたオーディオ埋め込みで置き換えます。
モデルのチェックポイントは、nvidia/audio-flamingo-3-hf で利用できます。
ハイライト:
- 音声、サウンド、音楽にまたがる統合オーディオエンコーダー。
- ウィンドウ処理とプーリング後のアラインメントによる長時間音声のサポート(最大10分)。 モデルは30秒のウィンドウで音声を処理し、ウィンドウ数は最大20個(合計10分)に制限されています。10分を超える音声は切り捨てられます。
- 音声プレースホルダトークンを音声埋め込みで置き換えることでシーケンス長を維持する、決定論的な融合。
このモデルは、Lasha Koroshinadze氏とEric Bezzam氏によって提供されました。
論文
Audio Flamingo 3: 完全オープンな大規模オーディオ言語モデルによるオーディオインテリジェンスの推進
A. Goel, S. Ghosh, J. Kim, S. Kumar, Z. Kong, S. Lee, C.-H. H. Yang, R. Duraiswami, D. Manocha, R. Valle, B. Catanzaro
NVIDIA and University of Maryland
プロジェクト: https://research.nvidia.com/labs/adlr/AF3/
使用方法
Audio Instruct モード
モデルは、マルチターン対話を含む音声テキスト指示をサポートし、すべてバッチ処理で処理されます。
➡️ 音声 + テキスト指示
from transformers import AudioFlamingo3ForConditionalGeneration, AutoProcessor
model_id = "nvidia/audio-flamingo-3-hf"
processor = AutoProcessor.from_pretrained(model_id)
model = AudioFlamingo3ForConditionalGeneration.from_pretrained(model_id, device_map="auto")
conversation = [
{
"role": "user",
"content": [
{"type": "text", "text": "Transcribe the input speech."},
{"type": "audio", "path": "https://huggingface.co/datasets/nvidia/AudioSkills/resolve/main/assets/WhDJDIviAOg_120_10.mp3"},
],
}
]
inputs = processor.apply_chat_template(
conversation,
tokenize=True,
add_generation_prompt=True,
return_dict=True,
).to(model.device, dtype=model.dtype)
outputs = model.generate(**inputs, max_new_tokens=500)
decoded_outputs = processor.decode(outputs[:, inputs.input_ids.shape[1]:], skip_special_tokens=True)
print(decoded_outputs)➡️ マルチターン:
from transformers import AudioFlamingo3ForConditionalGeneration, AutoProcessor
model_id = "nvidia/audio-flamingo-3-hf"
processor = AutoProcessor.from_pretrained(model_id)
model = AudioFlamingo3ForConditionalGeneration.from_pretrained(model_id, device_map="auto")
conversation = [
{
"role": "user",
"content": [
{
"type": "text",
"text": "Instruction: How does the tone of female speech change throughout the audio? Choose the correct option among the options below: (A) Sad to happy (B) Happy to sad (C) Neutral to happy (D) Happy to neutral.",
},
{"type": "audio", "path": "https://huggingface.co/datasets/nvidia/AudioSkills/resolve/main/assets/000000786159.31.wav"},
],
},
{
"role": "assistant",
"content": [{"type": "text", "text": "(A) Sad to happy"}],
},
{
"role": "user",
"content": [
{"type": "text", "text": "Why do you think so?"},
],
},
]
inputs = processor.apply_chat_template(
conversation,
tokenize=True,
add_generation_prompt=True,
return_dict=True,
).to(model.device, dtype=model.dtype)
outputs = model.generate(**inputs, max_new_tokens=500)
decoded_outputs = processor.decode(outputs[:, inputs.input_ids.shape[1]:], skip_special_tokens=True)
print(decoded_outputs)➡️ テキストのみ:
from transformers import AudioFlamingo3ForConditionalGeneration, AutoProcessor
model_id = "nvidia/audio-flamingo-3-hf"
processor = AutoProcessor.from_pretrained(model_id)
model = AudioFlamingo3ForConditionalGeneration.from_pretrained(model_id, device_map="auto")
conversation = [
{
"role": "user",
"content": [
{"type": "text", "text": "What is the capital of France?"},
],
}
]
inputs = processor.apply_chat_template(
conversation,
tokenize=True,
add_generation_prompt=True,
return_dict=True,
).to(model.device, dtype=model.dtype)
outputs = model.generate(**inputs, max_new_tokens=500)
decoded_outputs = processor.decode(outputs[:, inputs.input_ids.shape[1]:], skip_special_tokens=True)
print(decoded_outputs)➡️ オーディオのみ:
from transformers import AudioFlamingo3ForConditionalGeneration, AutoProcessor
model_id = "nvidia/audio-flamingo-3-hf"
processor = AutoProcessor.from_pretrained(model_id)
model = AudioFlamingo3ForConditionalGeneration.from_pretrained(model_id, device_map="auto")
conversation = [
{
"role": "user",
"content": [
{"type": "audio", "path": "https://huggingface.co/datasets/nvidia/AudioSkills/resolve/main/assets/WhDJDIviAOg_120_10.mp3"},
],
}
]
inputs = processor.apply_chat_template(
conversation,
tokenize=True,
add_generation_prompt=True,
return_dict=True,
).to(model.device, dtype=model.dtype)
outputs = model.generate(**inputs, max_new_tokens=500)
decoded_outputs = processor.decode(outputs[:, inputs.input_ids.shape[1]:], skip_special_tokens=True)
print(decoded_outputs)➡️ バッチ推論!
from transformers import AudioFlamingo3ForConditionalGeneration, AutoProcessor
model_id = "nvidia/audio-flamingo-3-hf"
processor = AutoProcessor.from_pretrained(model_id)
model = AudioFlamingo3ForConditionalGeneration.from_pretrained(model_id, device_map="auto")
conversations = [
[
{
"role": "user",
"content": [
{"type": "text", "text": "Transcribe the input speech."},
{
"type": "audio",
"path": "https://huggingface.co/datasets/nvidia/AudioSkills/resolve/main/assets/t_837b89f2-26aa-4ee2-bdf6-f73f0dd59b26.wav",
},
],
}
],
[
{
"role": "user",
"content": [
{
"type": "text",
"text": "This track feels really peaceful and introspective. What elements make it feel so calming and meditative?",
},
{"type": "audio", "path": "https://huggingface.co/datasets/nvidia/AudioSkills/resolve/main/assets/FPSbCAANfbJLVSwD.mp3"},
],
}
],
]
inputs = processor.apply_chat_template(
conversations,
tokenize=True,
add_generation_prompt=True,
return_dict=True,
).to(model.device, dtype=model.dtype)
outputs = model.generate(**inputs, max_new_tokens=500)
decoded_outputs = processor.decode(outputs[:, inputs.input_ids.shape[1]:], skip_special_tokens=True)
print(decoded_outputs)➡️ 学習:
from transformers import AudioFlamingo3ForConditionalGeneration, AutoProcessor
model_id = "nvidia/audio-flamingo-3-hf"
processor = AutoProcessor.from_pretrained(model_id)
model = AudioFlamingo3ForConditionalGeneration.from_pretrained(model_id, device_map="auto")
model.train()
conversation = [
[
{
"role": "user",
"content": [
{"type": "text", "text": "Transcribe the input speech."},
{"type": "audio", "path": "https://huggingface.co/datasets/nvidia/AudioSkills/resolve/main/assets/WhDJDIviAOg_120_10.mp3"},
],
},
{
"role": "assistant",
"content": [{"type": "text", "text": "The transcription of the audio is 'summer follows spring the days grow longer and the nights are warm'."}],
}
],
[
{
"role": "user",
"content": [
{
"type": "text",
"text": "This track feels really peaceful and introspective. What elements make it feel so calming and meditative?",
},
{"type": "audio", "path": "https://huggingface.co/datasets/nvidia/AudioSkills/resolve/main/assets/FPSbCAANfbJLVSwD.mp3"},
],
},
{
"role": "assistant",
"content": [{"type": "text", "text": "The transcription of the audio is 'some transcription of the audio'."}],
}
]
]
inputs = processor.apply_chat_template(
conversation,
tokenize=True,
return_dict=True,
processor_kwargs={"output_labels": True},
).to(model.device, dtype=model.dtype)
loss = model(**inputs).loss
loss.backward()➡️ 文字起こしのショートカット
from transformers import AudioFlamingo3ForConditionalGeneration, AutoProcessor
model_id = "nvidia/audio-flamingo-3-hf"
processor = AutoProcessor.from_pretrained(model_id)
model = AudioFlamingo3ForConditionalGeneration.from_pretrained(model_id, device_map="auto")
inputs = processor.apply_transcription_request(audio="https://huggingface.co/datasets/nvidia/AudioSkills/resolve/main/assets/t_837b89f2-26aa-4ee2-bdf6-f73f0dd59b26.wav").to(model.device, dtype=model.dtype)
outputs = model.generate(**inputs, max_new_tokens=500)
decoded_outputs = processor.decode(outputs[:, inputs.input_ids.shape[1]:], skip_special_tokens=True, strip_prefix=True)
print(decoded_outputs)モデルは、The spoken content of the audio is "<text>". のようなアシスタントのフレーミングで接頭された文字起こしを出力するように学習されています。上記のように strip_prefix=True を使用すると、固定のアシスタント文と周囲の引用符が除去され、文字起こしのみが残ります。
モデルの動作
アーキテクチャ
AudioFlamingo3Encoderは、Whisper 風の機能抽出器とエンコーダーを備え、時間軸方向に平均プーリング(stride 2)を適用し、その後 LayerNorm を適用します。プーリング後のレートで、フレームごとの隠れ状態を生成します。
AudioFlamingo3MultiModalProjector エンコーダーの特徴量を言語モデルの隠れ層サイズにマッピングする小さな MLP です。
AudioFlamingo3ForConditionalGeneration は、各オーディオプレースホルダトークンスロットが、その場でオーディオフレーム埋め込みによって置き換えられたテキスト埋め込みを受け入れる因果言語モデルです。融合によってシーケンス長の变化は生じません。
プロセッサレベルの整合性
- 各生波形は、フィーチャーエクストラクターの
chunk_length(秒)とsampling_rate(Hz)に基づいて、固定長のウィンドウに分割されます。 - 各ウィンドウについて、プロセッサはエンコーダーが出力するプールの後のフレーム数
post_pool_lenを計算します(conv/poolのスケジュールに一致させます)。 - プロセッサは、すべてのウィンドウにわたるプールの後のフレームの総数に応じて、音声プレースホルダートークンを展開します。
- その後、モデルはこれらのトークン位置を、対応する投影されたオーディオ埋め込みで置き換えます。
使用パターン
文字起こしのショートカット
自動音声認識では、毎回デフォルトの指示を書く必要はなく、apply_transcription_request()を呼び出すことができます。
inputs = processor.apply_transcription_request(audio=audio_array)
prompt="Transcribe the input speech."(バッチオーディオの場合はプロンプトのリスト)を渡すことで、音声プレースホルダーの処理を維持したまま指示をカスタマイズできます。
audio は、メモリ上の配列、ローカルファイルパス、または URL を受け取ります。プロセッサの引数(text_kwargs、audio_kwargs など)はすべて転送されるため、processor(...) を呼び出す場合と同様に、パディングやテンソル形式を調整できます。
長い音声とウィンドウ処理
重要: 音声の最大長は10分です。 これを超える音声は切り捨てられます。
デフォルトのセットアップでは、16 kHzのモノラルで30秒のウィンドウを処理します。
プロセッサは1サンプルあたり20ウィンドウという上限を強制するため、音声の最大長は10分(20ウィンドウ × 30秒)となります。
各ウィンドウについて:
mel_lenは、パディング後のメル長です。- Convスタックにより、
conv_output_len = (mel_len - 1) // 2 + 1となるため、時間が短縮されます。 - ウィンドウあたりのプーリング後フレーム数:
post_pool_len = (conv_output_len - 2) // 2 + 1。 - 音声プレースホルダトークンは、すべてのウィンドウの
post_pool_lenの合計に展開されます。
パディング、アテンション、およびキャッシュ
- 左パディングと右パディング バッチ内でプロンプトの長さが混在する生成タスクでは、通常、左パディングが望ましいです。 学習では右パディングが一般的ですが、AF3の融合機構自体は、インプレースで置換を行うため、パディング方式に依存しません。
- アテンションマスク プロセッサーは
attention_mask(テキスト)とinput_features_mask(オーディオ)を返します。モデルは、エンコーダーのプールの前の軸で、パッド位置を負の無限大とする内部の4次元マスクを構築します。 - キャッシュ 生成中、
input_featuresとinput_features_maskは最初のステップでのみ渡されます。以降のステップでは、言語モデルからキャッシュされたキー/バリューが使用されます。
トラブルシューティング
- バッチ処理時の出力が空になる、または途中で切れる問題 クイックスタートに示すように、バッチ生成には左パディングを使用し、プロンプト長以降の新しいトークンのみをデコードします。
AudioFlamingo3Config
class transformers.AudioFlamingo3Config
< 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 = 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 = Noneaudio_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonetext_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Noneaudio_token_id: int = 151669projector_hidden_act: str = 'gelu'projector_bias: bool = True )
パラメータ
- audio_config (
Union[dict, ~configuration_utils.PreTrainedConfig]、任意) — オーディオバックボーンの config オブジェクトまたは辞書。 - text_config (
Union[dict, ~configuration_utils.PreTrainedConfig]、省略可) — テキストバックボーンの設定オブジェクトまたは辞書。 - audio_token_id (
int、任意、デフォルトは151669) — 入力音声のプレースホルダーとして使用されるオーディオトークンのインデックスです。 - projector_hidden_act (
str、任意、デフォルトはgelu) — マルチモーダルプロジェクターで使用する活性化関数です。 - projector_bias (
bool、任意、デフォルトはTrue) — マルチモーダルプロジェクターでバイアスを使用するかどうか。
これは AudioFlamingo3Model の設定を保存するための設定クラスです。指定された引数に基づいて Audioflamingo3 モデルをインスタンス化し、モデルのアーキテクチャを定義するために使用されます。デフォルト値で設定をインスタンス化すると、nvidia/audio-flamingo-3-hf と同様の設定が得られます。
設定オブジェクトはPreTrainedConfigを継承し、モデルの出力を制御するために使用できます。詳細については、PreTrainedConfigのドキュメントを参照してください。
例:
>>> from transformers import AudioFlamingo3ForConditionalGeneration, AudioFlamingo3Config, AudioFlamingo3EncoderConfig, Qwen2Config
>>> # Initializing an AudioFlamingo3Encoder config
>>> audio_config = AudioFlamingo3EncoderConfig()
>>> # Initializing a Qwen2 config
>>> text_config = Qwen2Config()
>>> # Initializing an AudioFlamingo3 configuration
>>> configuration = AudioFlamingo3Config(audio_config, text_config)
>>> # Initializing a model from the audioflamingo3 style configuration
>>> model = AudioFlamingo3ForConditionalGeneration(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configAudioFlamingo3EncoderConfig
クラス transformers.AudioFlamingo3EncoderConfig
< 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 = 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 = Nonenum_mel_bins: int = 128num_hidden_layers: int = 32num_attention_heads: int = 20intermediate_size: int = 5120layerdrop: float | int = 0.0activation_function: str = 'gelu'hidden_size: int = 1280dropout: float | int = 0.0attention_dropout: float | int = 0.0activation_dropout: float | int = 0.0initializer_range: float = 0.02scale_embedding: bool = Falsemax_source_positions: int = 1500 )
パラメータ
- num_mel_bins (
int, 任意、デフォルトは128) — 入力フレームごとに使用される mel 特徴の数を指定します。AutoFeatureExtractorクラスで使用された値と一致させる必要があります。 - num_hidden_layers (
int、任意、デフォルトは32) — Transformer デコーダーの隠れ層の数。 - num_attention_heads (
int、任意、デフォルトは20) — Transformer デコーダーの各アテンション層におけるアテンションヘッドの数。 - intermediate_size (
int、任意、デフォルトは5120) — MLP 表現の次元数。 - layerdrop (
Union[float, int]、任意、デフォルトは0.0) — LayerDrop の確率です。詳細は [LayerDrop の論文](https://huggingface.co/papers/1909.11556 を参照)をご覧ください。 - activation_function (
str、任意、デフォルトはgelu) — デコーダーで使用する非線形活性化関数(関数または文字列)。例えば、"gelu"、"relu"、"silu"など。 - hidden_size (
int、任意、デフォルトは1280) — 隠れ表現の次元数です。 - dropout (
Union[float, int]、省略可、デフォルト値は0.0) — すべての dropout レイヤーの比率です。 - attention_dropout (
Union[float, int]、任意、デフォルトは0.0) — アテンション確率のドロップアウト率です。 - activation_dropout (
Union[float, int]、任意、デフォルトは0.0) — 全結合層内の活性化に対する dropout 率です。 - initializer_range (
float、任意、デフォルトは0.02) — すべての重み行列を初期化するための truncated_normal_initializer の標準偏差です。 - scale_embedding (
bool、任意、デフォルトはFalse) — 埋め込みを sqrt(d_model) で割ることでスケーリングするかどうか。 - max_source_positions (
int、任意、デフォルトは 1500) — このモデルが使用される可能性がある log-mel フィルターバンク特徴量の最大シーケンス長です。
これは AudioFlamingo3Model の設定を保存するための設定クラスです。指定された引数に基づいて Audioflamingo3 モデルをインスタンス化し、モデルのアーキテクチャを定義するために使用されます。デフォルト値で設定をインスタンス化すると、nvidia/audio-flamingo-3-hf と同様の設定が得られます。
設定オブジェクトはPreTrainedConfigを継承し、モデルの出力を制御するために使用できます。詳細については、PreTrainedConfigのドキュメントを参照してください。
例:
>>> from transformers import AudioFlamingo3EncoderConfig, AudioFlamingo3Encoder
>>> # Initializing an AudioFlamingo3EncoderConfig
>>> configuration = AudioFlamingo3EncoderConfig()
>>> # Initializing an AudioFlamingo3Encoder (with random weights)
>>> model = AudioFlamingo3Encoder(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configAudioFlamingo3Processor
class transformers.AudioFlamingo3Processor
< source >( feature_extractortokenizerchat_template = Noneaudio_token = '<sound>'default_transcription_prompt = 'Transcribe the input speech.'max_audio_len = 600 )
パラメータ
- feature_extractor (
WhisperFeatureExtractor) — フィーチャーエクストラクターは必須の入力です。 - tokenizer (
Qwen2Tokenizer) — トークナイザーは必須の入力です。 - chat_template (
str) — チャット内のメッセージのリストをトークン化可能な文字列に変換するための Jinja テンプレート。 - audio_token (
Optional[str]、任意、デフォルトは"<sound>") — チャットテンプレート内でオーディオ入力を表すために使用される特殊トークンです。 - default_transcription_prompt (
str、任意、デフォルトは"Transcribe the input speech.") — 転写リクエストを適用する際に、転写タスクで使用するデフォルトのプロンプトです。 - max_audio_len (
int、任意、デフォルトは 600) — 音声シーケンスの最大長(秒)。これを超える音声は切り捨てられます。
AudioFlamingo3Processor を構築します。このクラスは、フィーチャーエクストラクターとトークナイザーを単一のプロセッサーにラップします。
AudioFlamingo3Processor は、WhisperFeatureExtractor と Qwen2Tokenizer のすべての機能を提供します。詳細については、~WhisperFeatureExtractor および ~Qwen2Tokenizer を参照してください。
__call__
< source >( text: str | list[str]audio: typing.Union[numpy.ndarray, ForwardRef('torch.Tensor'), collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence['torch.Tensor'], NoneType] = Noneoutput_labels: bool | None = False**kwargs: *<class 'transformers.models.audioflamingo3.processing_audioflamingo3.AudioFlamingo3ProcessorKwargs'> ) → BatchFeature
パラメータ
- text (
Union[str, list[str]]) — エンコード対象のシーケンスまたはシーケンスのバッチです。各シーケンスは文字列または文字列のリスト(事前トークン化済み文字列)であることができます。事前トークン化済み入力を渡す場合は、バッチ入力との曖昧さを避けるためにis_split_into_words=Trueを設定してください。 - audio (
Union[numpy.ndarray, torch.Tensor, collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence[torch.Tensor]], 任意) — 準備対象のオーディオまたはオーディオのバッチです。各オーディオは NumPy 配列または PyTorch テンソルであることができます。 NumPy 配列/PyTorch テンソルの場合、各オーディオの形状は (C, T) である必要があります。ここで C はチャネル数、T はオーディオのサンプル長です。 - output_labels (
bool、省略可、デフォルト: False) — 学習用のラベルを返すかどうか。 - return_tensors (
strまたは TensorType, 省略可) — 設定すると、特定のフレームワークのテンソルを返します。使用可能な値は以下の通りです:'pt': PyTorchのtorch.Tensorオブジェクトを返します。'np': NumPyのnp.ndarrayオブジェクトを返します。
- **kwargs (ProcessingKwargs、任意) — 各モダリティ(テキスト、画像、動画、音声)の追加処理オプション。モデル固有のパラメータは上記にリストされています。サポートされている引数の完全なリストについては、TypedDictクラスを参照してください。
戻り値
トークン化されたテキスト(input_ids、attention_mask)と音声特徴(input_features、input_features_mask)を含む辞書。
AudioFlamingo3Encoder
class transformers.AudioFlamingo3Encoder
< source >( config: AudioFlamingo3EncoderConfig )
パラメータ
- config (AudioFlamingo3EncoderConfig) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
AudioFlamingo3の音声モデルで、上部にヘッドや投影が一切付いていないものです。
このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。
このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。
forward
< source >( input_features: Tensorinput_features_mask: typing.Optional[torch.Tensor] = None**kwargs )
パラメータ
- input_features (
torch.FloatTensor、shape(batch_size, feature_size, sequence_length)) — 生オーディオから抽出された Log-Mel 特徴量。プロセッサ/特徴量抽出器を使用して、波形入力からこれらの特徴量を計算し、パディングを行ってください。 - input_features_mask (
torch.FloatTensorの形状(batch_size, sequence_length), 、任意) — パディングのフィーチャーインデックスに対するアテンションの計算を回避するためのマスク。[0, 1]:- マスクされていないトークンに対して1
- マスクされたトークンに対しては 0 です。
AudioFlamingo3Model
class transformers.AudioFlamingo3Model
< source >( config: AudioFlamingo3Config )
パラメータ
- config (AudioFlamingo3Config) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
AudioFlamingo3モデル(ファインチューニング済みWhisperエンコーダー、マルチモーダルプロジェクター、Qwen2言語モデル)、言語モデリングヘッドなし。
このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。
このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Noneinput_features: typing.Optional[torch.FloatTensor] = Noneinput_features_mask: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: 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'> ) → AudioFlamingo3ModelOutputWithPast or tuple(torch.FloatTensor)
パラメータ
- input_ids (
torch.LongTensorの形状(batch_size, sequence_length), 、省略可) — 語彙における入力シーケンスのトークンインデックスです。デフォルトではパディングは無視されます。インデックスはAutoTokenizerを使用して取得できます。詳細については、PreTrainedTokenizer.encode()およびPreTrainedTokenizer.call()を参照してください。
- input_features (
torch.FloatTensor、shape(batch_size, sequence_length, feature_dim)、任意) — 入力音声特徴に対応するテンソルです。音声特徴は WhisperFeatureExtractor を使用して取得できます。詳細は WhisperFeatureExtractor.call() を参照してください(AudioFlamingo3Processor は音声の処理に WhisperFeatureExtractor を使用します)。 - input_features_mask (
torch.Tensor、形状(batch_size, feature_sequence_length)) — パディングされた特徴インデックスに対するアテンションの計算を回避するためのマスク。 - attention_mask (
torch.Tensorの形状(batch_size, sequence_length), 、任意) — パディングトークンのインデックスに対するアテンションを回避するためのマスク。[0, 1]:- マスクされていないトークンに対して1
- マスクされたトークンに対しては 0 です。
- position_ids (
torch.LongTensorの形状(batch_size, sequence_length), 、任意) — 各入力シーケンスのトークンが位置埋め込み内で占める位置のインデックス。範囲[0, config.n_positions - 1]. - 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を参照)。
戻り値
AudioFlamingo3ModelOutputWithPast または tuple(torch.FloatTensor)
AudioFlamingo3ModelOutputWithPast または、torch.FloatTensor のタプル(return_dict=False が渡された場合、または config.return_dict=False の場合)。設定(AudioFlamingo3Config)や入力に応じて、さまざまな要素で構成されます。
AudioFlamingo3Model の forward メソッドは、__call__ という特殊メソッドをオーバーライドします。
この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなく
Moduleインスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを黙って無視するためです。
- audio_hidden_states (
torch.FloatTensor、任意) — 投影されたオーディオの隠れ状態。
AudioFlamingo3ForConditionalGeneration
クラス transformers.AudioFlamingo3ForConditionalGeneration
< source >( config: AudioFlamingo3Config )
パラメータ
- config (AudioFlamingo3Config) — モデルのすべてのパラメータを含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連付けられた重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
AudioFlamingo3モデルは、ファインチューニングされたWhisperエンコーダー、マルチモーダルプロジェクター、およびQwen2言語モデルで構成されています。
このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。
このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Noneinput_features: typing.Optional[torch.FloatTensor] = Noneinput_features_mask: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.FloatTensor] = Nonelabels: typing.Optional[torch.LongTensor] = Noneuse_cache: bool | None = Nonelogits_to_keep: typing.Union[int, torch.Tensor] = 0**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → AudioFlamingo3CausalLMOutputWithPast or tuple(torch.FloatTensor)
パラメータ
- input_ids (
torch.LongTensorの形状(batch_size, sequence_length), 、省略可) — 語彙における入力シーケンスのトークンインデックスです。デフォルトではパディングは無視されます。インデックスはAutoTokenizerを使用して取得できます。詳細については、PreTrainedTokenizer.encode()およびPreTrainedTokenizer.call()を参照してください。
- input_features (
torch.FloatTensor、形状(batch_size, sequence_length, feature_dim)、任意) — 入力音声特徴に対応するテンソルです。音声特徴は WhisperFeatureExtractor を使用して取得できます。詳細は WhisperFeatureExtractor.call() を参照してください(AudioFlamingo3Processor は音声の処理に WhisperFeatureExtractor を使用します)。 - input_features_mask (
torch.Tensor、形状(batch_size, feature_sequence_length)) — パディングされた特徴インデックスに対するアテンションの計算を回避するためのマスク。 - attention_mask (
torch.Tensorの形状(batch_size, sequence_length), 、任意) — パディングトークンのインデックスに対するアテンションを回避するためのマスク。[0, 1]:- マスクされていないトークンに対して1
- マスクされたトークンに対しては 0 です。
- position_ids (
torch.LongTensorの形状(batch_size, sequence_length), 、任意) — 各入力シーケンスのトークンが位置埋め込み内で占める位置のインデックス。範囲[0, config.n_positions - 1]. - 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)、任意) — マスク言語モデリング損失を計算するためのラベル。 - use_cache (
bool、任意) —Trueに設定すると、past_key_valuesのキーバリュー状態が返され、デコーディングの高速化に利用できます(past_key_valuesを参照)。 - logits_to_keep (
Union[int, torch.Tensor]、省略可、デフォルトは0) —intの場合、最後のlogits_to_keepトークンについて logits を計算します。0の場合、すべてのinput_idsについて logits を計算します(特殊ケース)。生成には最後のトークンの logits だけで十分であり、そのトークンのみについて計算することでメモリを節約できます。これは、長いシーケンスや大規模な語彙サイズの場合に特に顕著な効果があります。torch.Tensorの場合、シーケンス長次元で保持するインデックスに対応する 1 次元テンソルである必要があります。これは、パックされたテンソル形式(バッチとシーケンス長を単一の次元にまとめた形式)を使用する場合に有用です。
戻り値
AudioFlamingo3CausalLMOutputWithPast または tuple(torch.FloatTensor)
AudioFlamingo3CausalLMOutputWithPast または、return_dict=False が渡された場合、または config.return_dict=False の場合、torch.FloatTensor のタプル。設定(AudioFlamingo3Config)や入力に応じて、さまざまな要素で構成されます。
AudioFlamingo3ForConditionalGeneration の forward メソッドは、__call__ という特殊メソッドをオーバーライドします。
この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなく
Moduleインスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを黙って無視するためです。
loss (
torch.FloatTensor、shape(1,)、optional、labelsが指定された場合に返されます) — 言語モデリングの損失(次のトークン予測用)。logits (
torch.FloatTensor、shape(batch_size, sequence_length, config.vocab_size)) — 言語モデリングヘッドの予測スコア。past_key_values (
Cache、任意、use_cache=Trueが渡された場合またはconfig.use_cache=Trueの場合に返されます)— Cache のインスタンスです。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後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。
audio_hidden_states (
torch.FloatTensor、任意) — 投影後のオーディオエンコーダーの隠れ状態。