Transformers documentation
Qwen2.5-Omni
このモデルは2025年3月26日にHF papersで公開され、2025年4月14日にHugging Face Transformersに貢献されました。
Qwen2.5-Omni
概要
Qwen2.5-Omniモデルは、Alibaba GroupのQwenチームがQwen2.5-Omni Technical Reportで提案した、統合型マルチモーダルモデルです。
技術レポートの要旨は以下の通りです。
Qwen2.5-Omni は、テキスト、画像、音声、動画といった多様なモダリティを認識し、同時にテキストと自然な音声応答をストリーミング形式で生成するように設計されたエンドツーエンドのマルチモーダルモデルです。マルチモーダル情報入力のストリーミングを可能にするため、音声エンコーダーと視覚エンコーダーの両方がブロック単位の処理アプローチを採用しています。この戦略により、マルチモーダルデータの長いシーケンスの処理が効果的に分離され、知覚の責任はマルチモーダルエンコーダーに、拡張されたシーケンスのモデリングは大型言語モデルに委ねられます。このような役割分担により、共有アテンション機構を介した異なるモダリティの融合が強化されます。動画入力のタイムスタンプを音声と同期させるため、音声を動画と交互に順序立てて配置し、TMRoPE(Time-aligned Multimodal RoPE)と呼ばれる新しい位置埋め込み手法を提案しました。テキストと音声を同時に生成しつつ、2つのモダリティ間の干渉を回避するために、Thinker-Talker アーキテクチャを提案します。このフレームワークでは、Thinker はテキスト生成を担う大型言語モデルとして機能し、Talker は Thinker の隠れ表現を直接利用して音声トークンを出力として生成するデュアルトラックの自己回帰モデルです。Thinker と Talker の両方のモデルは、エンドツーエンドで学習および推論されるよう設計されています。音声トークンをストリーミング形式でデコードするために、感受野を制限して初期パッケージの遅延を削減することを目的としたスライディングウィンドウ DiT を導入しました。Qwen2.5-Omni は、画像および音声の機能の両面で、同サイズの Qwen2-VL や Qwen2-Audio を上回っています。さらに、Qwen2.5-Omni は Omni-Bench などのマルチモーダルベンチマークで最先端の性能を達成しています。特に注目すべきは、MMLU や GSM8K などのベンチマークが示すように、Qwen2.5-Omni が、テキスト入力時の能力と同等レベルのエンドツーエンドの音声指示追従性能を達成した初のオープンソースモデルである点です。音声生成については、Qwen2.5-Omni のストリーミング Talker は、堅牢性と自然さの面で、既存のほとんどのストリーミングおよび非ストリーミングの代替方案を上回っています。
use_kernels=Trueを from_pretrained() に設定すると、対応するレイヤーが Hub からの最適化されたカーネルに置き換えられます。詳細は カーネルの読み込み を参照してください。
注記
- Qwen2_5OmniForConditionalGeneration を使用して、音声とテキストの出力を生成します。出力タイプを1つだけ生成する場合は、テキストのみの出力には Qwen2_5OmniThinkerForConditionalGeneration を、音声のみの出力には
Qwen2_5OmniTalkersForConditionalGenerationを使用します。 - 動画入力での処理時にメモリ不足エラーが発生する場合は、
processor.max_pixelsを小さくしてください。デフォルトでは最大値が非常に大きな値に設定されており、解像度がprocessor.max_pixelsを超えない限り、高解像度のビジュアルはリサイズされません。 - プロセッサには、チャットメッセージをモデルの入力に変換するための独自の apply_chat_template() メソッドがあります。
使用例
Qwen2.5-Omni は Huggingface Hub で利用できます。
単一メディア推論
モデルは、テキスト、画像、音声、動画をインプットとして受け取ることができます。推論のコード例を以下に示します。
import soundfile as sf
from transformers import Qwen2_5OmniForConditionalGeneration, Qwen2_5OmniProcessor
model = Qwen2_5OmniForConditionalGeneration.from_pretrained(
"Qwen/Qwen2.5-Omni-7B",
device_map="auto",
)
processor = Qwen2_5OmniProcessor.from_pretrained("Qwen/Qwen2.5-Omni-7B")
conversations = [
{
"role": "system",
"content": [
{"type": "text", "text": "You are Qwen, a virtual human developed by the Qwen Team, Alibaba Group, capable of perceiving auditory and visual inputs, as well as generating text and speech."}
],
},
{
"role": "user",
"content": [
{"type": "video", "video": "/path/to/video.mp4"},
{"type": "text", "text": "What can't you hear and see in this video?"},
],
},
]
inputs = processor.apply_chat_template(
conversations,
load_audio_from_video=True,
add_generation_prompt=True,
tokenize=True,
return_dict=True,
return_tensors="pt",
fps=1,
# kwargs to be passed to `Qwen2-5-OmniProcessor`
padding=True,
use_audio_in_video=True,
).to(model.device)
# Generation params for audio or text can be different and have to be prefixed with `thinker_` or `talker_`
text_ids, audio = model.generate(**inputs, use_audio_in_video=True, thinker_do_sample=False, talker_do_sample=True)
text = processor.batch_decode(text_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)
sf.write(
"output.wav",
audio.reshape(-1).detach().cpu().numpy(),
samplerate=24000,
)
print(text)テキストのみの生成
テキスト出力のみを生成し、音声生成モデルを読み込まずに計算量を節約するには、Qwen2_5OmniThinkerForConditionalGenerationモデルを使用できます。
from transformers import Qwen2_5OmniProcessor, Qwen2_5OmniThinkerForConditionalGeneration
model = Qwen2_5OmniThinkerForConditionalGeneration.from_pretrained(
"Qwen/Qwen2.5-Omni-7B",
device_map="auto",
)
processor = Qwen2_5OmniProcessor.from_pretrained("Qwen/Qwen2.5-Omni-7B")
conversations = [
{
"role": "system",
"content": [
{"type": "text", "text": "You are Qwen, a virtual human developed by the Qwen Team, Alibaba Group, capable of perceiving auditory and visual inputs, as well as generating text and speech."}
],
},
{
"role": "user",
"content": [
{"type": "video", "video": "/path/to/video.mp4"},
{"type": "text", "text": "What can't you hear and see in this video?"},
],
},
]
inputs = processor.apply_chat_template(
conversations,
load_audio_from_video=True,
add_generation_prompt=True,
tokenize=True,
return_dict=True,
return_tensors="pt",
fps=1,
# kwargs to be passed to `Qwen2-5-OmniProcessor`
padding=True,
use_audio_in_video=True,
).to(model.device)
text_ids = model.generate(**inputs, use_audio_in_video=True)
text = processor.batch_decode(text_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)
print(text)バッチ混在メディア推論
Qwen2_5OmniThinkerForConditionalGeneration モデルを使用する場合、テキスト、画像、音声、動画など、さまざまなタイプのサンプルが混在した入力をバッチとして処理できます。以下に例を示します。
from transformers import Qwen2_5OmniForConditionalGeneration, Qwen2_5OmniProcessor
model = Qwen2_5OmniForConditionalGeneration.from_pretrained(
"Qwen/Qwen2.5-Omni-7B",
device_map="auto"
)
processor = Qwen2_5OmniProcessor.from_pretrained("Qwen/Qwen2.5-Omni-7B")
# Conversation with video only
conversation1 = [
{
"role": "system",
"content": [
{"type": "text", "text": "You are Qwen, a virtual human developed by the Qwen Team, Alibaba Group, capable of perceiving auditory and visual inputs, as well as generating text and speech."}
],
},
{
"role": "user",
"content": [
{"type": "video", "path": "/path/to/video.mp4"},
]
}
]
# Conversation with audio only
conversation2 = [
{
"role": "system",
"content": [
{"type": "text", "text": "You are Qwen, a virtual human developed by the Qwen Team, Alibaba Group, capable of perceiving auditory and visual inputs, as well as generating text and speech."}
],
},
{
"role": "user",
"content": [
{"type": "audio", "path": "/path/to/audio.wav"},
]
}
]
# Conversation with pure text
conversation3 = [
{
"role": "system",
"content": [
{"type": "text", "text": "You are Qwen, a virtual human developed by the Qwen Team, Alibaba Group, capable of perceiving auditory and visual inputs, as well as generating text and speech."}
],
},
{
"role": "user",
"content": [{"type": "text", "text": "who are you?"}],
}
]
# Conversation with mixed media
conversation4 = [
{
"role": "system",
"content": [
{"type": "text", "text": "You are Qwen, a virtual human developed by the Qwen Team, Alibaba Group, capable of perceiving auditory and visual inputs, as well as generating text and speech."}
],
},
{
"role": "user",
"content": [
{"type": "image", "path": "/path/to/image.jpg"},
{"type": "video", "path": "/path/to/video.mp4"},
{"type": "audio", "path": "/path/to/audio.wav"},
{"type": "text", "text": "What are the elements can you see and hear in these media?"},
],
}
]
conversations = [conversation1, conversation2, conversation3, conversation4]
inputs = processor.apply_chat_template(
conversations,
load_audio_from_video=True,
add_generation_prompt=True,
tokenize=True,
return_dict=True,
return_tensors="pt",
fps=1,
# kwargs to be passed to `Qwen2-5-OmniProcessor`
padding=True,
use_audio_in_video=True,
).to(model.thinker.device)
text_ids = model.generate(**inputs, use_audio_in_video=True)
text = processor.batch_decode(text_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)
print(text)オーディオのバッチ生成
Qwen2_5OmniForConditionalGeneration は、バッチ処理による音声出力の生成をサポートしています。例えば、テキストから音声へのバッチ生成が挙げられます。バッチサイズが 1 より大きい場合、生成された音声は、各サンプルごとに独自の長さにトリム済みの波形を 1 つずつ含むリストとして返されます。これにより、短いサンプルに不要な音声がパディングされることはありません。単一サンプルの呼び出しでは、引き続き 1 つのテンソルが返されます。
import soundfile as sf
from transformers import AutoModelForTextToWaveform, AutoProcessor
import torch
model_id = "Qwen/Qwen2.5-Omni-7B"
model = AutoModelForTextToWaveform.from_pretrained(model_id, device_map="auto")
processor = AutoProcessor.from_pretrained(model_id)
sampling_rate = 24000 # output sampling rate
max_new_tokens = 200 # maximum number of tokens to generate
system_text = (
"You are Qwen, a virtual human developed by the Qwen Team, Alibaba Group, capable of "
"perceiving auditory and visual inputs, as well as generating text and speech."
)
texts = [
"Hello, I'm Qwen. How can I help you today?",
"The weather is nice today. Let's go for a walk.",
]
inputs = processor.apply_chat_template(
[
[
{"role": "system", "content": [{"type": "text", "text": system_text}]},
{
"role": "user",
"content": [
{
"type": "text",
"text": (
"Please read the following text aloud exactly as written, with no "
f"additional commentary:\n\n{text}"
),
}
],
},
]
for text in texts
],
tokenize=True,
add_generation_prompt=True,
return_dict=True,
return_tensors="pt",
processor_kwargs={"padding": True},
).to(model.device, dtype=model.dtype)
gen_kwargs = {
"talker_do_sample": True,
"speaker": "Ethan", # Ethan, Chelsie
"talker_max_new_tokens": max_new_tokens,
}
_, pred_waveform = model.generate(**inputs, **gen_kwargs)
for sample_id, audio in enumerate(pred_waveform):
sf.write(
f"qwen2_5_omni_output_{sample_id}.wav",
audio.detach().to(torch.float32).cpu().numpy(),
sampling_rate,
)
print(f"Saved audio to qwen2_5_omni_output_{sample_id}.wav")使用のコツ
画像解像度のトレードオフ
このモデルは幅広い解像度の入力をサポートしています。デフォルトでは、入力にネイティブ解像度を使用しますが、より高い解像度を使用することで、計算コストの増加を代償にパフォーマンスを向上させることができます。ユーザーは、最小ピクセル数と最大ピクセル数を設定することで、ニーズに最適な構成を実現できます。
min_pixels = 128*28*28
max_pixels = 768*28*28
processor = AutoProcessor.from_pretrained("Qwen/Qwen2.5-Omni-7B", min_pixels=min_pixels, max_pixels=max_pixels)音声出力用のプロンプト
If users need audio output, the system prompt must be set as “You are Qwen, a virtual human developed by the Qwen Team, Alibaba Group, capable of perceiving auditory and visual inputs, as well as generating text and speech.”, otherwise the audio output may not work as expected.
{
"role": "system",
"content": "You are Qwen, a virtual human developed by the Qwen Team, Alibaba Group, capable of perceiving auditory and visual inputs, as well as generating text and speech.",
}音声出力を使用するかどうか
モデルはテキスト出力と音声出力の両方をサポートしています。音声出力を必要としない場合は、from_pretrained 関数で enable_audio_output を設定できます。このオプションにより、GPU メモリを約 ~2GB 節約できますが、generate 関数の return_audio オプションは False にのみ設定可能になります。
model = Qwen2_5OmniForConditionalGeneration.from_pretrained(
"Qwen/Qwen2.5-Omni-7B",
device_map="auto",
enable_audio_output=False,
)柔軟な体験を得るために、from_pretrained 関数でモデルを初期化する際に enable_audio_output を True に設定し、generate 関数を呼び出す際にオーディオを返すかどうかを決定することを推奨します。return_audio が False に設定されている場合、モデルはテキスト出力のみを返すため、テキストレスポンスをより高速に取得できます。
model = Qwen2_5OmniForConditionalGeneration.from_pretrained(
"Qwen/Qwen2.5-Omni-7B",
device_map="auto",
enable_audio_output=True,
)
...
text_ids = model.generate(**inputs, return_audio=False)出力音声のボイスタイプを変更する
Qwen2.5-Omni supports the ability to change the voice of the output audio. Users can use the speaker parameter of generate function to specify the voice type. The "Qwen/Qwen2.5-Omni-7B" checkpoint support two voice types: Chelsie and Ethan, while Chelsie is a female voice and Ethan is a male voice. By default, if speaker is not specified, the default voice type is Chelsie.
text_ids, audio = model.generate(**inputs, speaker="Chelsie")text_ids, audio = model.generate(**inputs, speaker="Ethan")Flash-Attention 2 を使用して生成を高速化
まず、Flash Attention 2 の最新バージョンをインストールしてください。
pip install -U flash-attn --no-build-isolation
また、FlashAttention 2 に対応するハードウェアが必要です。詳細については、flash attention リポジトリの公式ドキュメントを参照してください。FlashAttention-2 は、モデルが torch.float16 または torch.bfloat16 で読み込まれている場合のみ使用できます。
FlashAttention-2 を使用してモデルを読み込み、実行するには、モデルの読み込み時に attn_implementation="flash_attention_2" を追加します:
from transformers import Qwen2_5OmniForConditionalGeneration
model = Qwen2_5OmniForConditionalGeneration.from_pretrained(
"Qwen/Qwen2.5-Omni-7B",
device_map="auto",
attn_implementation="flash_attention_2",
)Qwen2_5OmniConfig
class transformers.Qwen2_5OmniConfig
< 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 = Nonethinker_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonetalker_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonetoken2wav_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Noneenable_audio_output: bool = True )
これは、Qwen2 5 OmniModel の設定を保存するための設定クラスです。指定された引数に基づいて Qwen2 5 Omni モデルをインスタンス化し、モデルのアーキテクチャを定義するために使用されます。デフォルト値で設定をインスタンス化すると、Qwen/Qwen2.5-Omni-7B と同様の設定が得られます。
設定オブジェクトはPreTrainedConfigを継承し、モデルの出力を制御するために使用できます。詳細については、PreTrainedConfigのドキュメントを参照してください。
例:
>>> from transformers import (
... Qwen2_5OmniThinkerConfig,
... Qwen2_5OmniTalkerConfig,
... Qwen2_5OmniToken2WavConfig,
... Qwen2_5OmniForConditionalGeneration,
... Qwen2_5OmniConfig,
... )
>>> # Initializing sub-modules configurations.
>>> thinker_config = Qwen2_5OmniThinkerConfig()
>>> talker_config = Qwen2_5OmniTalkerConfig()
>>> token2wav_config = Qwen2_5OmniToken2WavConfig()
>>> # Initializing a module style configuration
>>> configuration = Qwen2_5OmniConfig(
... thinker_config, talker_config, token2wav_config
... )
>>> # Initializing a model (with random weights)
>>> model = Qwen2_5OmniForConditionalGeneration(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configget_text_config
< source >( *args**kwargs )
テキスト I/O で使用される設定を返します。ほとんどのモデルでは、元の設定インスタンス自体が返されます。特定の複合モデルでは、有効な名前のセットの下に配置されています。
Qwen2_5OmniVisionEncoderConfig
class transformers.Qwen2_5OmniVisionEncoderConfig
< 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 = Nonedepth: int = 32hidden_size: int = 3584hidden_act: str = 'silu'intermediate_size: int = 3420num_heads: int = 16in_channels: int = 3patch_size: int | list[int] | tuple[int, int] = 14spatial_merge_size: int = 2temporal_patch_size: int | list[int] | tuple[int, int] = 2window_size: int = 112out_hidden_size: int = 3584fullatt_block_indexes: list[int] | tuple[int, ...] = (7, 15, 23, 31)initializer_range: float = 0.02rope_parameters: dict | None = None )
パラメータ
- depth (
int、任意、デフォルトは32) — ビジョンエンコーダーにおける Transformer レイヤーの数。 - hidden_size (
int、任意、デフォルトは3584) — 隠れ表現の次元数。 - hidden_act (
str、任意、デフォルトはsilu) — デコーダーで使用する非線形活性化関数(関数または文字列)。例えば、"gelu"、"relu"、"silu"など。 - intermediate_size (
int、任意、デフォルトは3420) — MLP 表現の次元数。 - num_heads (
int、任意、デフォルトは16) — Transformerデコーダーの各アテンション層におけるアテンションヘッドの数。 - in_channels (
int、任意、デフォルトは3) — 入力チャネル数。 - patch_size (
Union[int, list[int], tuple[int, int]]、任意、デフォルトは14) — 各パッチのサイズ(解像度)です。 - spatial_merge_size (
int, 省略可、デフォルトは2) — 隣接するパッチをマージしてビジュアルトークンの数を削減するために使用される、空間マージウィンドウのサイズです。 - temporal_patch_size (
Union[int, list[int], tuple[int, int]]、任意、デフォルトは2) — 動画入力における3Dパッチ埋め込みで使用する時間方向のパッチサイズ。 - window_size (
int、任意、デフォルトは 11) — ウィンドウのサイズ。 - out_hidden_size (
int, 任意、デフォルトは 3584) — ビジョンモデルの出力隠れ層サイズです。 - fullatt_block_indexes (
int、任意、デフォルトは[7, 15, 23, 31]) — フルアテンションを使用するレイヤーのインデックス - initializer_range (
float、任意、デフォルトは0.02) — すべての重み行列を初期化するための truncated_normal_initializer の標準偏差です。 - rope_parameters (
dict, 任意) — RoPE 埋め込みの設定パラメータを含む辞書です。辞書にはrope_thetaの値が含まれており、より長いmax_position_embeddingsで RoPE を使用する場合、スケーリングに使用されるパラメータが任意で含まれます。
これは、Qwen2 5 OmniModel の設定を保存するための設定クラスです。指定された引数に基づいて Qwen2 5 Omni モデルをインスタンス化し、モデルのアーキテクチャを定義するために使用されます。デフォルト値で設定をインスタンス化すると、Qwen/Qwen2.5-Omni-7B と同様の設定が得られます。
設定オブジェクトはPreTrainedConfigを継承し、モデルの出力を制御するために使用できます。詳細については、PreTrainedConfigのドキュメントを参照してください。
例:
>>> from transformers import Qwen2_5OmniVisionEncoderConfig, Qwen2_5OmniVisionEncoder
>>> # Initializing a Qwen2_5OmniVisionEncoderConfig
>>> configuration = Qwen2_5OmniVisionEncoderConfig()
>>> # Initializing a Qwen2_5OmniVisionEncoder (with random weights)
>>> model = Qwen2_5OmniVisionEncoder(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configQwen2_5OmniTextConfig
クラス transformers.Qwen2_5OmniTextConfig
< 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 = Nonevocab_size: int = 152064hidden_size: int = 3584intermediate_size: int = 18944num_hidden_layers: int = 28num_attention_heads: int = 28num_key_value_heads: int | None = 4hidden_act: str = 'silu'max_position_embeddings: int = 32768initializer_range: float = 0.02rms_norm_eps: float = 1e-06use_cache: bool = Truerope_parameters: transformers.modeling_rope_utils.RopeParameters | dict | None = Noneuse_sliding_window: bool = Falsesliding_window: int | None = 32768max_window_layers: int = 28layer_types: list[str] | None = Noneattention_dropout: float | int = 0.0pad_token_id: int | None = Nonebos_token_id: int | None = Noneeos_token_id: int | list[int] | None = Nonetie_word_embeddings: bool = True )
パラメータ
- vocab_size (
int、任意、デフォルトは152064) — モデルの語彙サイズです。input_idsで表現できるトークンの種類数を定義します。 - hidden_size (
int、任意、デフォルトは3584) — 隠れ表現の次元数。 - intermediate_size (
int、任意、デフォルトは18944) — MLP 表現の次元数。 - num_hidden_layers (
int、任意、デフォルトは28) — Transformer デコーダーの隠れ層の数。 - num_attention_heads (
int、任意、デフォルトは28) — Transformer デコーダーの各アテンション層におけるアテンションヘッドの数。 - num_key_value_heads (
int、任意、デフォルトは4) — Grouped Query Attention の実装に使用する key_value ヘッドの数を指定します。num_key_value_heads=num_attention_headsの場合、モデルは Multi Head Attention (MHA) を使用し、num_key_value_heads=1の場合は Multi Query Attention (MQA) を使用し、それ以外の場合は GQA が使用されます。 マルチヘッドのチェックポイントを GQA のチェックポイントに変換する際は、各グループの key と value ヘッドは、そのグループ内の元のすべてのヘッドを平均プーリングして構築する必要があります。詳細については、この論文を参照してください。指定しない場合、デフォルトでnum_attention_headsが使用されます。 - hidden_act (
str、任意、デフォルトはsilu) — デコーダーで使用する非線形活性化関数(関数または文字列)。例えば、"gelu"、"relu"、"silu"など。 - max_position_embeddings (
int、任意、デフォルトは32768) — このモデルが使用される可能性のある最大シーケンス長です。 - initializer_range (
float、任意、デフォルトは0.02) — すべての重み行列を初期化するための truncated_normal_initializer の標準偏差です。 - rms_norm_eps (
float、任意、デフォルトは1e-06) — RMS 正規化レイヤーで使用する epsilon。 - use_cache (
bool、任意、デフォルトはTrue) — モデルが最後のキー/バリューの注意を返すかどうか(すべてのモデルで利用されるわけではありません)。config.is_decoder=Trueの場合、またはモデルがデコーダー専用の生成モデルである場合にのみ関連します。 - rope_parameters (
Union[~modeling_rope_utils.RopeParameters, dict], 省略可) — RoPE 埋め込みの設定パラメータを含む辞書です。この辞書にはrope_thetaの値が含まれており、より長いmax_position_embeddingsで RoPE を使用する場合にスケーリングに使用されるパラメータが任意で含まれます。 - use_sliding_window (
bool、任意、デフォルトはFalse) — スライディングウィンドウアテンションを使用するかどうか。 - sliding_window (
int、任意、デフォルトは32768) — スライディングウィンドウアテンションのウィンドウサイズ。Noneの場合、スライディングウィンドウは適用されません。 - max_window_layers (
int、任意、デフォルトは28) — フルアテンションを使用するレイヤーの数です。最初のmax_window_layers個のレイヤーはフルアテンションを使用し、それ以降の追加レイヤーは SWA(Sliding Window Attention)を使用します。 - layer_types (
list[str]、省略可) — 各レイヤーのインデックスとレイヤータイプを明示的に対応付けるリストです。指定しない場合、config の値に基づいて自動的に生成されます。 - attention_dropout (
Union[float, int]、任意、デフォルトは0.0) — アテンション確率のドロップアウト率です。 - pad_token_id (
int, 任意) — 語彙内でパディングに使用されるトークン ID。 - bos_token_id (
int, 省略可) — 語彙におけるストリーム開始に使用されるトークン ID。 - eos_token_id (
Union[int, list[int]], 省略可) — 語彙内でストリーム終了に使用されるトークン ID。 - tie_word_embeddings (
bool、任意、デフォルトはTrue) — モデルのtied_weights_keysマッピングに従って重み埋め込みを共有するかどうかを指定します。
これは、Qwen2 5 OmniModel の設定を保存するための設定クラスです。指定された引数に基づいて Qwen2 5 Omni モデルをインスタンス化し、モデルのアーキテクチャを定義するために使用されます。デフォルト値で設定をインスタンス化すると、Qwen/Qwen2.5-Omni-7B と同様の設定が得られます。
設定オブジェクトはPreTrainedConfigを継承し、モデルの出力を制御するために使用できます。詳細については、PreTrainedConfigのドキュメントを参照してください。
例:
>>> from transformers import Qwen2_5OmniThinkerForConditionalGeneration, Qwen2_5OmniThinkerConfig, Qwen2_5OmniAudioEncoderConfig, Qwen2_5OmniVisionEncoderConfig
>>> # Initializing a Qwen2_5OmniAudioEncoder config
>>> audio_config = Qwen2_5OmniAudioEncoderConfig()
>>> # Initializing a Qwen2_5OmniVisionEncoder config
>>> vision_config = Qwen2_5OmniVisionEncoderConfig()
>>> # Initializing a Qwen2.5OmniThinker configuration
>>> configuration = Qwen2_5OmniThinkerConfig(audio_config, vision_config)
>>> # Initializing a model from the Qwen-Omni style configuration
>>> model = Qwen2_5OmniThinkerForConditionalGeneration(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configQwen2_5OmniDiTConfig
クラス transformers.Qwen2_5OmniDiTConfig
< 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 = Nonehidden_size: int = 1024num_hidden_layers: int = 22num_attention_heads: int = 16ff_mult: int = 2emb_dim: int = 512head_dim: int = 64rope_parameters: transformers.modeling_rope_utils.RopeParameters | dict | None = Nonemax_position_embeddings: int = 32768block_size: int = 24look_ahead_layers: list[int] | tuple[int, ...] = (10,)look_backward_layers: list[int] | tuple[int, ...] = (0, 20)repeats: int = 2num_embeds: int = 8193mel_dim: int = 80dropout: float | int = 0.1enc_emb_dim: int = 192enc_dim: int = 128enc_channels: list[int] | tuple[int, ...] = (256, 256, 256, 256, 768)enc_kernel_sizes: list[int] | tuple[int, ...] = (5, 3, 3, 3, 1)enc_dilations: list[int] | tuple[int, ...] = (1, 2, 3, 4, 1)enc_attention_channels: int = 64enc_res2net_scale: int = 2enc_se_channels: int = 64 )
パラメータ
- hidden_size (
int、任意、デフォルトは1024) — 隠れ表現の次元数。 - num_hidden_layers (
int、任意、デフォルトは22) — Transformer デコーダーの隠れ層の数。 - num_attention_heads (
int、任意、デフォルトは16) — Transformer デコーダーの各アテンション層におけるアテンションヘッドの数。 - ff_mult (
int、任意、デフォルト値は 2) — 各 Transformer ブロックにおけるフィードフォワード層の倍率です。 - emb_dim (
int、任意、デフォルトは 512) — 埋め込み層の次元数です。 - head_dim (
int、任意、デフォルトは64) — アテンションヘッドの次元です。None の場合、hidden_size // num_attention_heads がデフォルトとして使用されます。 - rope_parameters (
Union[~modeling_rope_utils.RopeParameters, dict], 省略可) — RoPE 埋め込みの設定パラメータを含む辞書です。この辞書にはrope_thetaの値が含まれており、より長いmax_position_embeddingsで RoPE を使用する場合にスケーリングに使用されるパラメータが任意で含まれます。 - max_position_embeddings (
int、任意、デフォルトは32768) — このモデルが使用される可能性のある最大シーケンス長です。 - block_size (
int、任意、デフォルトは 64)— 各処理ブロックに含まれるトークン(フレーム)の数。 - look_ahead_layers (
list[int]、任意、デフォルトは[10]) — 未来のブロックへの注意を許可される Transformer レイヤーの数 - look_backward_layers (
list[int]、任意、デフォルトは[0, 20]) — 現在のブロック境界を超えて過去のブロックに注意を払う Transformer レイヤーの数 - repeats (
int、任意、デフォルトは 2)— codec embeddings が繰り返し使用される回数を指定します。 - num_embeds (
int、任意、デフォルトは 8193) — codec におけるユニークな埋め込みの数を指定します。 - mel_dim (
int, 任意、デフォルトは 80) — メルスペクトログラムの次元数。 - dropout (
Union[float, int]、任意、デフォルト値は0.1) — すべての dropout レイヤーの比率です。 - enc_emb_dim (
int、任意、デフォルトは 192) — 事前学習済みスピーカー埋め込みの次元数。 - enc_dim (
int、任意、デフォルトは 128) — エンコーダー出力の次元数。 - enc_channels (
list[int]、任意、デフォルトは[256, 256, 256, 256, 768]) — エンコーダー内の各 TDNN/SERes2Net レイヤーの出力チャネル数を表すリストです。 - enc_kernel_sizes (
list[int]、任意、デフォルトは[5, 3, 3, 3, 1]) — エンコーダーの各レイヤーにおけるカーネルサイズのリストです。 - enc_dilations (
list[int]、任意、デフォルトは[1, 2, 3, 4, 1]) — エンコーダーの各レイヤーにおける dilation のリストです。 - enc_attention_channels (
int、任意、デフォルトは 64) — SqueezeExcitationBlock におけるアテンションチャネルの数です。 - enc_res2net_scale (
int、任意、デフォルト値は 2) — エンコーダー内の Res2Net ブロックのスケールです。 - enc_se_channels (
int、任意、デフォルトは 64)— SqueezeExcitationBlock における squeeze 後の出力チャネル数です。
これは、Qwen2 5 OmniModel の設定を保存するための設定クラスです。指定された引数に基づいて Qwen2 5 Omni モデルをインスタンス化し、モデルのアーキテクチャを定義するために使用されます。デフォルト値で設定をインスタンス化すると、Qwen/Qwen2.5-Omni-7B と同様の設定が得られます。
設定オブジェクトはPreTrainedConfigを継承し、モデルの出力を制御するために使用できます。詳細については、PreTrainedConfigのドキュメントを参照してください。
Qwen2_5OmniBigVGANConfig
クラス transformers.Qwen2_5OmniBigVGANConfig
< 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 = Nonemel_dim: int = 80upsample_initial_channel: int = 1536resblock_kernel_sizes: list[int] | tuple[int, ...] = (3, 7, 11)resblock_dilation_sizes: list | tuple = ((1, 3, 5), (1, 3, 5), (1, 3, 5))upsample_rates: list[int] | tuple[int, ...] = (5, 3, 2, 2, 2, 2)upsample_kernel_sizes: list[int] | tuple[int, ...] = (11, 7, 4, 4, 4, 4) )
パラメータ
- mel_dim (
int, 任意、デフォルトは 80) — メルスペクトログラムの次元数。 - upsample_initial_channel (
int、任意、デフォルト値は 1536) — 初期アップサンプリング層のチャネル数です。 - resblock_kernel_sizes (
list[int]、任意、デフォルトは[3, 7, 11]) — 各残差ブロックのカーネルサイズを指定するリストです。 - resblock_dilation_sizes (
list[list[int]]、任意、デフォルトは[[1, 3, 5], [1, 3, 5], [1, 3, 5]]) — 各残差ブロックのディレイションサイズを指定するリストです。 - upsample_rates (
list[int]、任意、デフォルトは[5, 3, 2, 2, 2, 2]) — 各アップサンプリング層のアップサンプリング率のリストです。 - upsample_kernel_sizes (
list[int]、任意、デフォルトは[11, 7, 4, 4, 4, 4]) — 各アップサンプリング層のカーネルサイズを指定するリストです。
これは、Qwen2 5 OmniModel の設定を保存するための設定クラスです。指定された引数に基づいて Qwen2 5 Omni モデルをインスタンス化し、モデルのアーキテクチャを定義するために使用されます。デフォルト値で設定をインスタンス化すると、Qwen/Qwen2.5-Omni-7B と同様の設定が得られます。
設定オブジェクトはPreTrainedConfigを継承し、モデルの出力を制御するために使用できます。詳細については、PreTrainedConfigのドキュメントを参照してください。
Qwen2_5OmniAudioEncoderConfig
クラス transformers.Qwen2_5OmniAudioEncoderConfig
< 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 = 128encoder_layers: int = 32encoder_attention_heads: int = 20encoder_ffn_dim: int = 5120d_model: int = 1280dropout: float | int = 0.0attention_dropout: float | int = 0.0activation_function: str = 'gelu'activation_dropout: float | int = 0.0scale_embedding: bool = Falseinitializer_range: float = 0.02max_source_positions: int = 1500n_window: int = 100output_dim: int = 3584 )
パラメータ
- num_mel_bins (
int, 任意、デフォルトは128) — 入力フレームごとに使用される mel 特徴の数を指定します。AutoFeatureExtractorクラスで使用された値と一致させる必要があります。 - encoder_layers (
int、任意、デフォルトは32) — Transformer エンコーダーの隠れ層の数です。設定されていない場合は、num_layersと同じ値が使用されます。 - encoder_attention_heads (
int、任意、デフォルトは20) — Transformer エンコーダーの各アテンション層におけるアテンションヘッドの数。 - encoder_ffn_dim (
int、任意、デフォルトは5120) — エンコーダー内の「中間」層(フィードフォワード層と呼ばれることが多い)の次元数。 - d_model (
int、任意、デフォルトは1280) — エンコーダ層とプーラ層のサイズ。 - dropout (
Union[float, int]、省略可、デフォルト値は0.0) — すべての dropout レイヤーの比率です。 - attention_dropout (
Union[float, int]、任意、デフォルトは0.0) — アテンション確率のドロップアウト率です。 - activation_function (
str、任意、デフォルトはgelu) — デコーダーで使用する非線形活性化関数(関数または文字列)。例えば、"gelu"、"relu"、"silu"など。 - activation_dropout (
Union[float, int]、任意、デフォルトは0.0) — 全結合層内の活性化に対する dropout 率です。 - scale_embedding (
bool、任意、デフォルトはFalse) — 埋め込みを sqrt(d_model) で割ることでスケーリングするかどうか。 - initializer_range (
float、任意、デフォルトは0.02) — すべての重み行列を初期化するための truncated_normal_initializer の標準偏差です。 - max_source_positions (
int、任意、デフォルトは 1500) — このモデルが使用される可能性がある log-mel フィルターバンク特徴量の最大シーケンス長です。 - n_window (
int、任意、デフォルトは 100) — AudioEncoder における conv と flash attn のチャンクサイズです。 - output_dim (
int、任意、デフォルトは 3584) — AudioEncoder の出力次元です。
これは、Qwen2 5 OmniModel の設定を保存するための設定クラスです。指定された引数に基づいて Qwen2 5 Omni モデルをインスタンス化し、モデルのアーキテクチャを定義するために使用されます。デフォルト値で設定をインスタンス化すると、Qwen/Qwen2.5-Omni-7B と同様の設定が得られます。
設定オブジェクトはPreTrainedConfigを継承し、モデルの出力を制御するために使用できます。詳細については、PreTrainedConfigのドキュメントを参照してください。
例:
>>> from transformers import Qwen2_5OmniAudioEncoderConfig, Qwen2_5OmniAudioEncoder
>>> # Initializing a Qwen2_5OmniAudioEncoderConfig
>>> configuration = Qwen2_5OmniAudioEncoderConfig()
>>> # Initializing a Qwen2_5OmniAudioEncoder (with random weights)
>>> model = Qwen2_5OmniAudioEncoder(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configQwen2_5OmniProcessor
class transformers.Qwen2_5OmniProcessor
< source >( image_processor = Nonevideo_processor = Nonefeature_extractor = Nonetokenizer = Nonechat_template = None )
パラメータ
- image_processor (
Qwen2VLImageProcessor) — 画像プロセッサは必須の入力です。 - video_processor (
Qwen2VLVideoProcessor) — 動画プロセッサは必須の入力です。 - feature_extractor (
WhisperFeatureExtractor) — フィーチャーエクストラクターは必須の入力です。 - tokenizer (
Qwen2Tokenizer) — トークナイザーは必須の入力です。 - chat_template (
str) — チャット内のメッセージのリストをトークン化可能な文字列に変換するための Jinja テンプレート。
画像プロセッサ、動画プロセッサ、特徴量抽出器、トークナイザーを単一のプロセッサにラップするQwen2_5OmniProcessorを構築します。
Qwen2_5OmniProcessor は、Qwen2VLImageProcessor、Qwen2VLVideoProcessor、WhisperFeatureExtractor、および Qwen2Tokenizer のすべての機能を提供します。詳細については、~Qwen2VLImageProcessor、~Qwen2VLVideoProcessor、~WhisperFeatureExtractor、および ~Qwen2Tokenizer を参照してください。
__call__
< source >( text: str | list[str] | list[list[str]] = Noneimages: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor'], NoneType] = Nonevideos: typing.Union[list['PIL.Image.Image'], numpy.ndarray, ForwardRef('torch.Tensor'), list[numpy.ndarray], list['torch.Tensor'], list[list['PIL.Image.Image']], list[list[numpy.ndarray]], list[list['torch.Tensor']], transformers.video_utils.URL, list[transformers.video_utils.URL], list[list[transformers.video_utils.URL]], transformers.video_utils.Path, list[transformers.video_utils.Path], list[list[transformers.video_utils.Path]], NoneType] = Noneaudio: typing.Union[numpy.ndarray, ForwardRef('torch.Tensor'), list[numpy.ndarray], list['torch.Tensor'], NoneType] = None**kwargs: *<class 'transformers.models.qwen2_5_omni.processing_qwen2_5_omni.Qwen2_5OmniProcessorKwargs'> ) → ~feature_extraction_utils.BatchFeature
パラメータ
- text (
Union[str, list[str], list[list[str]]]、省略可) — エンコード対象のシーケンスまたはシーケンスのバッチです。各シーケンスは文字列、または文字列のリスト(事前トークン化済み文字列)であることができます。事前トークン化済みの入力を渡す場合は、バッチ入力との曖昧さを避けるためにis_split_into_words=Trueを設定してください。 - images (
Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]], 任意) — 前処理対象の画像です。ピクセル値が 0 から 255 の範囲にある単一の画像またはバッチを想定しています。ピクセル値が 0 から 1 の範囲にある画像を渡す場合は、do_rescale=Falseを設定してください。 - videos (
Union[list[PIL.Image.Image], numpy.ndarray, torch.Tensor, list[numpy.ndarray], list[torch.Tensor], list[list[PIL.Image.Image]], list[list[numpy.ndarray]], list[list[torch.Tensor]], ~video_utils.URL, list[~video_utils.URL], list[list[~video_utils.URL]], ~video_utils.Path, list[~video_utils.Path], list[list[~video_utils.Path]]], 任意) — 前処理を行う動画です。ピクセル値が 0 から 255 の範囲にある、単一の動画またはバッチの動画を想定しています。ピクセル値が 0 から 1 の範囲にある動画を渡す場合は、do_rescale=Falseを設定してください。 - audio (
Union[numpy.ndarray, torch.Tensor, list[numpy.ndarray], list[torch.Tensor]], 任意) — 準備対象のオーディオまたはオーディオのバッチです。各オーディオは NumPy 配列または PyTorch テンソルである必要があります。 NumPy 配列/PyTorch テンソルの場合、各オーディオの形状は (C, T) である必要があります。ここで C はチャネル数、T はオーディオのサンプル長です。 - min_pixels (
int, kwargs, optional) — リサイズ後の動画フレームの最小ピクセル数(高さ × 幅)。この閾値未満のフレームは、最小要件を満たすようにアップスケールされます。 - max_pixels (
int, kwargs, optional) — リサイズ後の動画フレームの最大ピクセル数(高さ × 幅)。この閾値を超えるフレームは、上限内に収まるようダウンスケールされます。 - patch_size (
int、kwargs、optional) — ビジョンエンコーダーが使用する空間的なパッチサイズです。動画フレームは、高さおよび幅の両方の次元において、このサイズのパッチに分割されます。 - temporal_patch_size (
int、kwargs、任意) — ビジョンエンコーダーで使用される時間方向のパッチサイズです。これにより、1つの時間パッチとしてグループ化される連続フレームの数が決まります。 - merge_size (
int, kwargs, オプション) — 空間パッチを結合するために使用されるマージサイズです。複数のパッチをマージすることで、空間情報を保持したままシーケンス長を短縮します。 - min_frames (
int, kwargs, optional) — 動画から抽出するフレームの最小数。フレーム数がこれより少ない動画は、この要件を満たすためにパディングまたは繰り返しが行われます。 - max_frames (
int, kwargs, optional) — 動画から抽出するフレームの最大数です。この制限内に収めるため、長い動画は切り詰めまたはサンプリングされます。 - use_audio_in_video (
bool、kwargs、任意、デフォルトはFalse) — 非推奨の引数です。load_audio_from_videoを使用してください。 - load_audio_from_video (
bool、kwargs、任意、デフォルトはFalse) — 動画の処理時に音声情報を取り込むかどうかを指定します。有効にすると、時間軸の整合性に基づいて音声トークンが動画トークンと交互に配置され、統合されたマルチモーダル表現が作成されます。 - seconds_per_chunk (
float、kwargs、任意、デフォルトは2.0) — 長い動画を分割する際の、各動画チャンクの長さ(秒)です。このパラメータは、処理のために動画を時間的なセグメントに分割する方法を制御します。 - position_id_per_seconds (
int, kwargs orfloat, optional, defaults to25) — The number of position IDs allocated per second of video. This parameter controls the temporal resolution of position embeddings and is used to align video tokens with audio tokens whenuse_audio_in_video=True. - return_tensors (
strまたは TensorType, 省略可) — 設定すると、特定のフレームワークのテンソルを返します。使用可能な値は以下の通りです:'pt': PyTorchのtorch.Tensorオブジェクトを返します。'np': NumPyのnp.ndarrayオブジェクトを返します。
- **kwargs (ProcessingKwargs、任意) — 各モダリティ(テキスト、画像、動画、音声)の追加処理オプション。モデル固有のパラメータは上記にリストされています。サポートされている引数の完全なリストについては、TypedDictクラスを参照してください。
戻り値
~feature_extraction_utils.BatchFeature
- data (
dict、任意) — call/pad メソッドによって返されるリスト/配列/テンソルの辞書(‘input_values’、‘attention_mask’ など)。 - tensor_type (
Union[None, str, TensorType]、省略可) — 初期化時に PyTorch/Numpy の Tensor 内の整数リストを変換するために、ここで tensor_type を指定できます。 - skip_tensor_conversion (
list[str]またはset[str]、任意) —tensor_typeが指定されている場合でも、テンソルに変換すべきでないキーのリストまたはセット。
Qwen2_5OmniForConditionalGeneration
クラス transformers.Qwen2_5OmniForConditionalGeneration
< source >( config: Qwen2_5OmniConfig )
パラメータ
- config (Qwen2_5OmniConfig) — モデルのすべてのパラメータを含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連付けられた重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
3つのサブモデルで構成されるマルチモーダルモデルである、Qwen2.5Omniのフルモデル:
- Qwen2_5OmniThinkerForConditionalGeneration: 因果的オートレグレッシブTransformerであり、テキスト、音声、画像、動画を入力として受け取り、テキストトークンを予測します。
- Qwen2_5OmniTalkerForConditionalGeneration: 因果的オートレグレッシブ・トランスフォーマーであり、thinkerの隠れ状態と応答を入力として、音声トークンを予測します。
- Qwen2_5OmniToken2WavModel: DiTモデルで、音声トークンを入力として受け取り、メルスペクトログラムを予測します。また、BigVGANボコーダーはメルスペクトログラムを入力として受け取り、波形を予測します。
このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。
このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。
Qwen2_5OmniPreTrainedModelForConditionalGeneration
クラス transformers.Qwen2_5OmniPreTrainedModelForConditionalGeneration
< source >( config: PreTrainedConfig*inputs**kwargs )
get_chunked_index
< source >( token_indices: Tensortokens_per_chunk: intremove_index: int ) → list[tuple[int, int]]
トークン値の範囲に基づいて、トークンインデックスのリストをチャンクに分割します。
トークンインデックスのリストが与えられた場合、トークン値がt_ntoken_per_chunkの連続する範囲内に収まるリストのスライスを表す(start, end)インデックスのタプルのリストを返します。
例えば、t_ntoken_per_chunkが1000の場合、この関数は以下の条件を満たすようにチャンクを作成します。
- 最初のチャンクには、トークン値が 1000 未満のものが含まれます。
- 2番目のチャンクには1000以上かつ2000未満の値が含まれ、以下同様に続きます。
get_rope_index
< source >( input_ids: typing.Optional[torch.LongTensor] = Noneimage_grid_thw: typing.Optional[torch.LongTensor] = Nonevideo_grid_thw: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneuse_audio_in_video: bool = Falseaudio_seqlens: typing.Optional[torch.LongTensor] = Nonesecond_per_grids: typing.Optional[torch.Tensor] = None )
パラメータ
- input_ids (
torch.LongTensor、形状(batch_size, sequence_length)) — 語彙における入力シーケンスのトークンインデックスです。パディングを指定した場合、デフォルトでは無視されます。 - image_grid_thw (
torch.LongTensor、形状(num_images, 3)、任意) — LLM における各画像のフィーチャー形状の時間軸、高さ、幅です。 - video_grid_thw (
torch.LongTensor、形状(num_videos, 3)、任意) — LLM における各動画のフィーチャー形状の時間軸、高さ、幅です。 - attention_mask (
torch.Tensorの形状(batch_size, sequence_length), 、任意) — パディングトークンのインデックスに対するアテンションを回避するためのマスク。[0, 1]:- マスクされていないトークンに対して1
- マスクされたトークンに対しては 0 です。
- use_audio_in_video (
bool、任意) —Trueに設定すると、動画内のオーディオを使用します。 - audio_seqlens (
torch.LongTensor、形状(num_audios)、任意) — LLM における各オーディオの機能形状の長さです。 - second_per_grids (
torch.LongTensor、形状(num_videos)、任意) — 3D 位置 ID における時間軸方向の各グリッドの時間間隔(秒)。
LLMにおいて、画像および動画の時間軸・高さ・幅に基づいて3D ropeインデックスを計算します。
説明: 各埋め込みシーケンスには、ビジョン埋め込みとテキスト埋め込みの両方が含まれる場合と、テキスト埋め込みのみが含まれる場合があります。
純粋なテキスト埋め込みシーケンスの場合、回転位置埋め込みは最新のLLMと違いはありません。 例: input_ids: [T T T T T]、ここでTはテキストを表します。 temporal position_ids: [0, 1, 2, 3, 4] height position_ids: [0, 1, 2, 3, 4] width position_ids: [0, 1, 2, 3, 4]
ビジョンおよびテキストの埋め込みシーケンスでは、ビジョン部分には3次元の回転位置埋め込みを、テキスト部分には1次元の回転位置埋め込みを計算します。 例: 時間軸 (Time): 3つのパッチ。動画の時間的な異なるセグメントを表します。 高さ (Height): 2つのパッチ。各フレームを垂直方向に分割します。 幅 (Width): 2つのパッチ。各フレームを水平方向に分割します。 また、いくつかの重要なパラメータがあります: fps (Frames Per Second): 動画のフレームレートで、1に設定されています。これは1秒ごとに1フレームが処理されることを意味します。 tokens_per_second: 非常に重要なパラメータです。動画の1秒間隔に概念的に詰め込まれる「タイムステップ」または「時間トークン」の数を決定します。ここでは1秒あたり25トークンです。したがって、動画の1秒は25個の独立した時間点で表されます。本質的に時間的な粒度を定義します。 temporal_patch_size: 1つの時間パッチを構成するフレーム数。ここでは2フレームです。 interval: 時間位置IDのステップサイズで、tokens_per_second temporal_patch_size / fps として計算されます。この場合、25 2 / 1 = 50 です。これは、各時間パッチの時間位置IDに50の差があることを意味します。 input_ids: [V V V V V V V V V V V V T T T T T]、ここで V はビジョンを表します。 vision temporal position_ids: [0, 0, 0, 0, 50, 50, 50, 50, 100, 100, 100, 100] vision height position_ids: [0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1] vision width position_ids: [0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1] text temporal position_ids: [101, 102, 103, 104, 105] text height position_ids: [101, 102, 103, 104, 105] text width position_ids: [101, 102, 103, 104, 105] ここでは、テキストの開始 position_ids を、ビジョンの position_ids の最大値に1を加えた値として計算します。
Qwen2_5OmniThinkerConfig
クラス transformers.Qwen2_5OmniThinkerConfig
< 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 = Nonevision_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonetext_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Noneaudio_token_index: int = 151646image_token_index: int = 151655video_token_index: int = 151656position_id_per_seconds: int = 25seconds_per_chunk: int = 2audio_start_token_id: int = 151647audio_end_token_id: int = 151648user_token_id: int = 872initializer_range: float = 0.02tie_word_embeddings: bool = False )
パラメータ
- audio_config (
Union[dict, ~configuration_utils.PreTrainedConfig]、任意) — オーディオバックボーンの config オブジェクトまたは辞書。 - vision_config (
Union[dict, ~configuration_utils.PreTrainedConfig]、任意) — ビジョンバックボーンの config オブジェクトまたは辞書です。 - text_config (
Union[dict, ~configuration_utils.PreTrainedConfig]、省略可) — テキストバックボーンの設定オブジェクトまたは辞書。 - audio_token_index (
int、任意、デフォルトは151646) — 入力音声のプレースホルダーとして使用されるオーディオトークンのインデックスです。 - image_token_index (
int、任意、デフォルトは151655) — 入力画像のプレースホルダーとして使用される画像トークンのインデックスです。 - video_token_index (
int、任意、デフォルトは151656) — 入力動画のプレースホルダーとして使用される動画トークンのインデックスです。 - position_id_per_seconds (
int、任意、デフォルト値は 25)— 1 秒あたりの position id の増分です。 - seconds_per_chunk (
int、任意、デフォルトは 2) — 音声および動画データのチャンクの長さ(秒)。 - audio_start_token_id (
int、任意、デフォルトは 151647) — オーディオプロンプトをエンコードするためのオーディオ開始トークンのインデックスです。 - audio_end_token_id (
int、任意、デフォルトは 151648) — 音声プロンプトをエンコードするための音声終了トークンのインデックスです。 - user_token_id (`int, optional, デフォルトは 872) — ユーザートークンをエンコードするためのユーザートークンインデックス。
- initializer_range (
float、任意、デフォルトは0.02) — すべての重み行列を初期化するための truncated_normal_initializer の標準偏差です。 - tie_word_embeddings (
bool、任意、デフォルトはFalse) — モデルのtied_weights_keysマッピングに従って重み埋め込みを共有するかどうかを指定します。
これは、Qwen2 5 OmniModel の設定を保存するための設定クラスです。指定された引数に基づいて Qwen2 5 Omni モデルをインスタンス化し、モデルのアーキテクチャを定義するために使用されます。デフォルト値で設定をインスタンス化すると、Qwen/Qwen2.5-Omni-7B と同様の設定が得られます。
設定オブジェクトはPreTrainedConfigを継承し、モデルの出力を制御するために使用できます。詳細については、PreTrainedConfigのドキュメントを参照してください。
例:
>>> from transformers import Qwen2_5OmniThinkerForConditionalGeneration, Qwen2_5OmniThinkerConfig, Qwen2_5OmniAudioEncoderConfig, Qwen2_5OmniVisionEncoderConfig
>>> # Initializing a Qwen2_5OmniAudioEncoder config
>>> audio_config = Qwen2_5OmniAudioEncoderConfig()
>>> # Initializing a Qwen2_5OmniVisionEncoder config
>>> vision_config = Qwen2_5OmniVisionEncoderConfig()
>>> # Initializing a Qwen2_5OmniTextConfig config
>>> text_config = Qwen2_5OmniTextConfig()
>>> # Initializing a Qwen2.5OmniThinker configuration
>>> configuration = Qwen2_5OmniThinkerConfig(audio_config, vision_config, text_config)
>>> # Initializing a model from the Qwen-Omni style configuration
>>> model = Qwen2_5OmniThinkerForConditionalGeneration(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configQwen2_5OmniThinkerModel
class transformers.Qwen2_5OmniThinkerModel
< source >( config: Qwen2_5OmniThinkerConfig )
パラメータ
- config (Qwen2_5OmniThinkerConfig) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
音声バックボーンと言語モデルで構成されるQwen2.5OmniThinkerモデル。
このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。
このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Noneinput_features: typing.Optional[torch.FloatTensor] = Nonepixel_values: typing.Optional[torch.FloatTensor] = Nonepixel_values_videos: typing.Optional[torch.FloatTensor] = Noneimage_grid_thw: typing.Optional[torch.LongTensor] = Nonevideo_grid_thw: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonefeature_attention_mask: typing.Optional[torch.Tensor] = Noneaudio_feature_lengths: typing.Optional[torch.LongTensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.FloatTensor] = Noneuse_cache: bool | None = Noneuse_audio_in_video: bool | None = Nonevideo_second_per_grid: typing.Optional[torch.LongTensor] = Nonemm_encoder_outputs: dict[str, transformers.modeling_outputs.BaseModelOutputWithPooling] | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithPast 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() を参照してください(Qwen2_5OmniProcessor は音声の処理に WhisperFeatureExtractor を使用します)。 - pixel_values (
torch.FloatTensor、形状(batch_size, num_channels, image_size, image_size)、任意) — 入力画像に対応するテンソルです。ピクセル値は Qwen2VLImageProcessor を使用して取得できます。詳細については Qwen2VLImageProcessor.call() を参照してください(Qwen2_5OmniProcessor は画像の処理に Qwen2VLImageProcessor を使用します)。 - pixel_values_videos (
torch.FloatTensor、形状(batch_size, num_frames, num_channels, frame_size, frame_size)、任意) — 入力動画に対応するテンソルです。動画のピクセル値は、Qwen2VLVideoProcessor を使用して取得できます。詳細については、Qwen2VLVideoProcessor.call() を参照してください(Qwen2_5OmniProcessor は動画の処理に Qwen2VLVideoProcessor を使用します)。 - image_grid_thw (
torch.LongTensor、形状(num_images, 3)、任意) — LLM における各画像のフィーチャー形状の時間軸、高さ、幅です。 - video_grid_thw (
torch.LongTensor、形状(num_videos, 3)、任意) — LLM における各動画のフィーチャー形状の時間軸、高さ、幅です。 - attention_mask (
torch.Tensorの形状(batch_size, sequence_length), 、任意) — パディングトークンのインデックスに対するアテンションを回避するためのマスク。[0, 1]:- マスクされていないトークンに対して1
- マスクされたトークンに対しては 0 です。
- feature_attention_mask (
torch.Tensorの形状(batch_size, feature_sequence_length), 、任意) — パディングのフィーチャーインデックスに対するアテンションを回避するためのマスク。[0, 1]:- マスクされていないトークンに対して1
- マスクされたトークンに対しては 0 です。
- audio_feature_lengths (
torch.LongTensor、形状(num_audios)、任意) — LLMにおける各オーディオのフィーチャー形状の長さです。 - 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を参照)。 - use_audio_in_video (
bool, 任意) — 動画内のオーディオトラックを使用するかどうか。process_audio_infoのパラメータと同じである必要があります。 - video_second_per_grid (
torch.LongTensor、形状(num_videos)、任意) — 各動画のグリッドあたりの秒数。時間方向の特徴量マッピングに使用されます。 - mm_encoder_outputs (
dict[str, ~modeling_outputs.BaseModelOutputWithPooling], 省略可) — キーがサポートされているモダリティ、値がそのモダリティのエンコード済み出力である辞書。各エンコード済み出力は、(pooler_output, 省略可:last_hidden_states, 省略可:hidden_states, 省略可:attentions)pooler_output(形状(batch_size, sequence_length, hidden_size), 省略可) からなるタプルです。pooler_outputは、エンコーダーのマルチモーダル特徴量をテキスト埋め込みにマージしたシーケンスです。
戻り値
BaseModelOutputWithPast または tuple(torch.FloatTensor)
torch.FloatTensor のタプル(return_dict=False が渡された場合、または config.return_dict=False の場合)または BaseModelOutputWithPast。設定(Qwen2_5OmniConfig)や入力に応じて、さまざまな要素で構成されます。
Qwen2_5OmniThinkerModelの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後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。
Qwen2_5OmniThinkerForConditionalGeneration
class transformers.Qwen2_5OmniThinkerForConditionalGeneration
< source >( config: Qwen2_5OmniThinkerConfig )
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Noneinput_features: typing.Optional[torch.FloatTensor] = Nonepixel_values: typing.Optional[torch.FloatTensor] = Nonepixel_values_videos: typing.Optional[torch.FloatTensor] = Noneimage_grid_thw: typing.Optional[torch.LongTensor] = Nonevideo_grid_thw: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonefeature_attention_mask: typing.Optional[torch.Tensor] = Noneaudio_feature_lengths: typing.Optional[torch.LongTensor] = 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 = Noneuse_audio_in_video: bool | None = Nonevideo_second_per_grid: typing.Optional[torch.LongTensor] = Nonemm_encoder_outputs: dict[str, transformers.modeling_outputs.BaseModelOutputWithPooling] | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → Qwen2_5OmniThinkerCausalLMOutputWithPast 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() を参照してください(Qwen2_5OmniProcessor は音声の処理に WhisperFeatureExtractor を使用します)。 - pixel_values (
torch.FloatTensor、形状(batch_size, num_channels, image_size, image_size)、任意) — 入力画像に対応するテンソルです。ピクセル値は Qwen2VLImageProcessor を使用して取得できます。詳細については Qwen2VLImageProcessor.call() を参照してください(Qwen2_5OmniProcessor は画像の処理に Qwen2VLImageProcessor を使用します)。 - pixel_values_videos (
torch.FloatTensor、形状(batch_size, num_frames, num_channels, frame_size, frame_size)、任意) — 入力動画に対応するテンソルです。動画のピクセル値は、Qwen2VLVideoProcessor を使用して取得できます。詳細については、Qwen2VLVideoProcessor.call() を参照してください(Qwen2_5OmniProcessor は動画の処理に Qwen2VLVideoProcessor を使用します)。 - image_grid_thw (
torch.LongTensor、形状(num_images, 3)、任意) — LLM における各画像のフィーチャー形状の時間軸、高さ、幅です。 - video_grid_thw (
torch.LongTensor、形状(num_videos, 3)、任意) — LLM における各動画のフィーチャー形状の時間軸、高さ、幅です。 - attention_mask (
torch.Tensorの形状(batch_size, sequence_length), 、任意) — パディングトークンのインデックスに対するアテンションを回避するためのマスク。[0, 1]:- マスクされていないトークンに対して1
- マスクされたトークンに対しては 0 です。
- feature_attention_mask (
torch.Tensorの形状(batch_size, feature_sequence_length), 、任意) — パディングのフィーチャーインデックスに対するアテンションを回避するためのマスク。[0, 1]:- マスクされていないトークンに対して1
- マスクされたトークンに対しては 0 です。
- audio_feature_lengths (
torch.LongTensor、形状(num_audios)、任意) — LLMにおける各オーディオのフィーチャー形状の長さです。 - 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)、任意) — マスク言語モデリング損失を計算するためのラベルです。インデックスは[0, ..., config.vocab_size]の範囲内であるか、-100 である必要があります(input_idsの docstring を参照)。インデックスが-100に設定されたトークンは無視(マスク)され、損失は[0, ..., config.vocab_size]の範囲内のラベルを持つトークンに対してのみ計算されます。 - use_cache (
bool、任意) —Trueに設定すると、past_key_valuesのキーバリュー状態が返され、デコーディングの高速化に利用できます(past_key_valuesを参照)。 - use_audio_in_video (
bool, 任意) — 動画内のオーディオトラックを使用するかどうか。process_audio_infoのパラメータと同じである必要があります。 - video_second_per_grid (
torch.LongTensor、形状(num_videos)、任意) — 各動画のグリッドあたりの秒数。時間方向の特徴量マッピングに使用されます。 - mm_encoder_outputs (
dict[str, ~modeling_outputs.BaseModelOutputWithPooling], 省略可) — キーがサポートされているモダリティ、値がそのモダリティのエンコード済み出力である辞書。各エンコード済み出力は、(pooler_output, 省略可:last_hidden_states, 省略可:hidden_states, 省略可:attentions)pooler_output(形状(batch_size, sequence_length, hidden_size), 省略可) からなるタプルです。pooler_outputは、エンコーダーのマルチモーダル特徴量をテキスト埋め込みにマージしたシーケンスです。
戻り値
Qwen2_5OmniThinkerCausalLMOutputWithPast または tuple(torch.FloatTensor)
Qwen2_5OmniThinkerCausalLMOutputWithPast、または torch.FloatTensor のタプル(return_dict=False が渡された場合、または config.return_dict=False の場合)。設定(Qwen2_5OmniConfig)や入力に応じて、さまざまな要素で構成されます。
Qwen2_5OmniThinkerForConditionalGenerationの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後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。
rope_deltas (
torch.LongTensor、形状(batch_size, )、任意) — シーケンス長とマルチモーダル rope の間の rope インデックスの差分です。 この属性は非推奨であり、v5.20 で削除されます。代わりにmodel.base_model.rope_deltasを使用してください。
例:
>>> from transformers import Qwen2_5OmniProcessor, Qwen2_5OmniThinkerForConditionalGeneration
>>> thinker = Qwen2_5OmniThinkerForConditionalGeneration.from_pretrained("Qwen/Qwen2.5-Omni-7B")
>>> processor = Qwen2_5OmniProcessor.from_pretrained("Qwen/Qwen2.5-Omni-7B")
>>> conversations = [
>>> {'role': 'system', 'content': 'You are a helpful voice chat bot, and please respond to me in a casual conversation manner using random voice.'},
>>> {"role": "user", "content": [
>>> {"type": "image", "image": "https://www.ilankelman.org/stopsigns/australia.jpg"},
>>> {"type": "audio", "audio": "https://huggingface.co/datasets/hf-internal-testing/transformers-synthetic-assets/resolve/main/audio/glass_breaking.mp3"},
>>> ]},
>>> ]
>>> inputs = processor.apply_chat_template(
conversations,
tokenize=True,
add_generation_prompt=True,
return_dict=True,
return_tensors="pt"
)
>>> # Generate
>>> generation = thinker.generate(**inputs, max_new_tokens=2048)
>>> generate_ids = generation[:, inputs.input_ids.size(1):]
>>> response = processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]get_audio_features
< source >( input_features: FloatTensorfeature_attention_mask: typing.Optional[torch.LongTensor] = Noneaudio_feature_lengths: typing.Optional[torch.LongTensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithPooling or tuple(torch.FloatTensor)
パラメータ
- input_features (
torch.FloatTensor) — 入力音声に対応するテンソル。 - feature_attention_mask (
torch.LongTensor, 任意) — パディングされた特徴インデックスに対してアテンションを実行しないためのマスクです。マスクの値は[0, 1]から選択されます: - audio_feature_lengths (
torch.LongTensor、形状(num_audios)、任意) — LLMにおける各オーディオのフィーチャー形状の長さです。
戻り値
BaseModelOutputWithPooling または tuple(torch.FloatTensor)
torch.FloatTensor のタプル(return_dict=False が渡された場合、または config.return_dict=False の場合)、または BaseModelOutputWithPooling。設定(Qwen2_5OmniConfig)や入力に応じて、さまざまな要素で構成されます。
last_hidden_state (
torch.FloatTensor、shape(batch_size, sequence_length, hidden_size)) — モデルの最終層の出力における隠れ状態のシーケンス。pooler_output (
torch.FloatTensor、shape(batch_size, hidden_size)) — 補助事前学習タスクに使用される層をさらに通して処理された後、シーケンスの最初のトークン(分類トークン)の最終層の隠れ状態。例えば、BERT 系のモデルでは、線形層と tanh 活性化関数を経て処理された後の分類トークンを返します。この線形層の重みは、事前学習中の次文予測(分類)目的から学習されます。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後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。
例:
>>> from PIL import Image
>>> from transformers import AutoProcessor, Qwen2_5OmniThinkerForConditionalGeneration
>>> model = Qwen2_5OmniThinkerForConditionalGeneration.from_pretrained("Qwen/Qwen2.5-Omni-7B")
>>> processor = AutoProcessor.from_pretrained("Qwen/Qwen2.5-Omni-7B")
>>> messages = [
... {
... "role": "user", "content": [
... {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"},
... {"type": "text", "text": "Where is the cat standing?"},
... ]
... },
... ]
>>> inputs = processor.apply_chat_template(
... messages,
... tokenize=True,
... return_dict=True,
... return_tensors="pt",
... add_generation_prompt=True
... )
>>> # Generate
>>> generate_ids = model.generate(**inputs)
>>> processor.batch_decode(generate_ids, skip_special_tokens=True)[0]get_image_features
< source >( pixel_values: FloatTensorimage_grid_thw: typing.Optional[torch.LongTensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithPooling or tuple(torch.FloatTensor)
パラメータ
- pixel_values (
torch.FloatTensor、形状(batch_size, num_channels, image_size, image_size)) — 入力画像に対応するテンソルです。 - image_grid_thw (
torch.LongTensor、形状(num_images, 3)、任意) — LLM における各画像のフィーチャー形状の時間軸、高さ、幅です。
戻り値
BaseModelOutputWithPooling または tuple(torch.FloatTensor)
torch.FloatTensor のタプル(return_dict=False が渡された場合、または config.return_dict=False の場合)、または BaseModelOutputWithPooling。設定(Qwen2_5OmniConfig)や入力に応じて、さまざまな要素で構成されます。
last_hidden_state (
torch.FloatTensor、shape(batch_size, sequence_length, hidden_size)) — モデルの最終層の出力における隠れ状態のシーケンス。pooler_output (
torch.FloatTensor、shape(batch_size, hidden_size)) — 補助事前学習タスクに使用される層をさらに通して処理された後、シーケンスの最初のトークン(分類トークン)の最終層の隠れ状態。例えば、BERT 系のモデルでは、線形層と tanh 活性化関数を経て処理された後の分類トークンを返します。この線形層の重みは、事前学習中の次文予測(分類)目的から学習されます。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後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。
例:
>>> from PIL import Image
>>> from transformers import AutoProcessor, Qwen2_5OmniThinkerForConditionalGeneration
>>> model = Qwen2_5OmniThinkerForConditionalGeneration.from_pretrained("Qwen/Qwen2.5-Omni-7B")
>>> processor = AutoProcessor.from_pretrained("Qwen/Qwen2.5-Omni-7B")
>>> messages = [
... {
... "role": "user", "content": [
... {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"},
... {"type": "text", "text": "Where is the cat standing?"},
... ]
... },
... ]
>>> inputs = processor.apply_chat_template(
... messages,
... tokenize=True,
... return_dict=True,
... return_tensors="pt",
... add_generation_prompt=True
... )
>>> # Generate
>>> generate_ids = model.generate(**inputs)
>>> processor.batch_decode(generate_ids, skip_special_tokens=True)[0]get_video_features
< source >( pixel_values_videos: FloatTensorvideo_grid_thw: typing.Optional[torch.LongTensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithPooling or tuple(torch.FloatTensor)
パラメータ
- pixel_values_videos (
torch.FloatTensor、形状(batch_size, num_channels, image_size, image_size)) — 入力動画に対応するテンソルです。 - video_grid_thw (
torch.LongTensor、形状(num_videos, 3)、任意) — LLM における各動画のフィーチャー形状の時間軸、高さ、幅です。
戻り値
BaseModelOutputWithPooling または tuple(torch.FloatTensor)
torch.FloatTensor のタプル(return_dict=False が渡された場合、または config.return_dict=False の場合)、または BaseModelOutputWithPooling。設定(Qwen2_5OmniConfig)や入力に応じて、さまざまな要素で構成されます。
last_hidden_state (
torch.FloatTensor、shape(batch_size, sequence_length, hidden_size)) — モデルの最終層の出力における隠れ状態のシーケンス。pooler_output (
torch.FloatTensor、shape(batch_size, hidden_size)) — 補助事前学習タスクに使用される層をさらに通して処理された後、シーケンスの最初のトークン(分類トークン)の最終層の隠れ状態。例えば、BERT 系のモデルでは、線形層と tanh 活性化関数を経て処理された後の分類トークンを返します。この線形層の重みは、事前学習中の次文予測(分類)目的から学習されます。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後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。
例:
>>> from PIL import Image
>>> from transformers import AutoProcessor, Qwen2_5OmniThinkerForConditionalGeneration
>>> model = Qwen2_5OmniThinkerForConditionalGeneration.from_pretrained("Qwen/Qwen2.5-Omni-7B")
>>> processor = AutoProcessor.from_pretrained("Qwen/Qwen2.5-Omni-7B")
>>> messages = [
... {
... "role": "user", "content": [
... {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"},
... {"type": "text", "text": "Where is the cat standing?"},
... ]
... },
... ]
>>> inputs = processor.apply_chat_template(
... messages,
... tokenize=True,
... return_dict=True,
... return_tensors="pt",
... add_generation_prompt=True
... )
>>> # Generate
>>> generate_ids = model.generate(**inputs)
>>> processor.batch_decode(generate_ids, skip_special_tokens=True)[0]Qwen2_5OmniThinkerTextModel
クラス transformers.Qwen2_5OmniThinkerTextModel
< source >( config: Qwen2_5OmniTextConfig )
パラメータ
- config (Qwen2_5OmniTextConfig) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
Qwen2 5 Omni Text Modelの生モデルで、特定のヘッドを上に載せず、生のhidden-statesを出力します。
このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。
このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = 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.modeling_flash_attention_utils.FlashAttentionKwargs'> ) → BaseModelOutputWithPast 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 です。
- 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を参照)。
戻り値
BaseModelOutputWithPast または tuple(torch.FloatTensor)
torch.FloatTensor のタプル(return_dict=False が渡された場合、または config.return_dict=False の場合)または BaseModelOutputWithPast。設定(Qwen2_5OmniConfig)や入力に応じて、さまざまな要素で構成されます。
Qwen2_5OmniThinkerTextModelの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後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。
Qwen2_5OmniTalkerConfig
class transformers.Qwen2_5OmniTalkerConfig
< 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_token_index: int = 151646image_token_index: int = 151655video_token_index: int = 151656vocab_size: int = 8448tts_text_start_token_id: int = 151860tts_text_end_token_id: int = 151861tts_text_pad_token_id: int = 151859tts_codec_start_token_id: int = 8293tts_codec_end_token_id: int = 8294tts_codec_pad_token_id: int = 8292tts_codec_mask_token_id: int = 8296vision_start_token_id: int = 151652vision_end_token_id: int = 151653embedding_size: int = 3584hidden_size: int = 3584intermediate_size: int = 18944num_hidden_layers: int = 28num_attention_heads: int = 28num_key_value_heads: int = 4hidden_act: str = 'silu'max_position_embeddings: int = 32768rms_norm_eps: float = 1e-06head_dim: int = 128use_cache: bool = Truetie_word_embeddings: bool = Falseuse_sliding_window: bool = Falsesliding_window: int | None = 32768max_window_layers: int = 28attention_dropout: float | int = 0.0rope_parameters: transformers.modeling_rope_utils.RopeParameters | dict | None = Noneposition_id_per_seconds: int = 25seconds_per_chunk: int = 2audio_start_token_id: int = 151647audio_end_token_id: int = 151648initializer_range: float = 0.02spatial_merge_size: int = 2layer_types: list[str] | None = Nonepad_token_id: int | None = None )
パラメータ
- audio_token_index (
int、任意、デフォルトは151646) — 入力音声のプレースホルダーとして使用されるオーディオトークンのインデックスです。 - image_token_index (
int、任意、デフォルトは151655) — 入力画像のプレースホルダーとして使用される画像トークンのインデックスです。 - video_token_index (
int、任意、デフォルトは151656) — 入力動画のプレースホルダーとして使用される動画トークンのインデックスです。 - vocab_size (
int、任意、デフォルトは8448) — モデルの語彙サイズ。input_idsで表現できるトークンの種類数を定義します。 - tts_text_start_token_id (
int、任意、デフォルト値は 151860) — TTS テキストの開始をエンコードするための TTS テキスト開始トークンのインデックスです。 - tts_text_end_token_id (
int、任意、デフォルトは 151861) — TTS テキストの終了をエンコードするための tts テキスト終了トークンのインデックスです。 - tts_text_pad_token_id (
int、任意、デフォルトは 151859) — TTS テキストの pad をエンコードするための tts text pad トークンインデックスです。 - tts_codec_start_token_id (
int, 任意、デフォルトは 8293) — tts codec の開始をエンコードするための tts codec 開始トークンのインデックスです。 - tts_codec_end_token_id (
int, 任意、デフォルトは 8294) — tts コーデックの終了をエンコードするための tts コーデック終了トークンのインデックスです。 - tts_codec_pad_token_id (
int, 任意、デフォルトは 8292) — tts codec の pad をエンコードするための tts codec pad トークンインデックスです。 - tts_codec_mask_token_id (
int, 省略可、デフォルト値は 8296) — tts codec のマスクをエンコードするための tts codec マスクトークンインデックスです。 - vision_start_token_id (
int、任意、デフォルトは151652) — マルチモーダル入力シーケンスにおける視覚セグメントの開始を示すトークン ID。 - vision_end_token_id (
int、任意、デフォルトは151653) — マルチモーダル入力シーケンスにおける視覚セグメントの終了を示すトークン ID。 - embedding_size (
int、任意、デフォルトは3584) — 埋め込みおよび隠れ状態の次元数。 - hidden_size (
int、任意、デフォルトは3584) — 隠れ表現の次元数。 - intermediate_size (
int、任意、デフォルトは18944) — MLP 表現の次元数。 - num_hidden_layers (
int、任意、デフォルトは28) — Transformer デコーダーの隠れ層の数。 - num_attention_heads (
int、任意、デフォルトは28) — Transformer デコーダーの各アテンション層におけるアテンションヘッドの数。 - num_key_value_heads (
int、任意、デフォルトは4) — Grouped Query Attention の実装に使用する key_value ヘッドの数を指定します。num_key_value_heads=num_attention_headsの場合、モデルは Multi Head Attention (MHA) を使用し、num_key_value_heads=1の場合は Multi Query Attention (MQA) を使用し、それ以外の場合は GQA が使用されます。 マルチヘッドのチェックポイントを GQA のチェックポイントに変換する際は、各グループの key と value ヘッドは、そのグループ内の元のすべてのヘッドを平均プーリングして構築する必要があります。詳細については、この論文を参照してください。指定しない場合、デフォルトでnum_attention_headsが使用されます。 - hidden_act (
str、任意、デフォルトはsilu) — デコーダーで使用する非線形活性化関数(関数または文字列)。例えば、"gelu"、"relu"、"silu"など。 - max_position_embeddings (
int、任意、デフォルトは32768) — このモデルが使用される可能性のある最大シーケンス長です。 - rms_norm_eps (
float、任意、デフォルトは1e-06) — RMS 正規化レイヤーで使用する epsilon。 - head_dim (
int、任意、デフォルトは128) — アテンションヘッドの次元です。None の場合、hidden_size // num_attention_heads がデフォルトとして使用されます。 - use_cache (
bool、任意、デフォルトはTrue) — モデルが最後のキー/バリューの注意を返すかどうか(すべてのモデルで利用されるわけではありません)。config.is_decoder=Trueの場合、またはモデルがデコーダー専用の生成モデルである場合にのみ関連します。 - tie_word_embeddings (
bool、任意、デフォルトはFalse) — モデルのtied_weights_keysマッピングに従って重み埋め込みを共有するかどうかを指定します。 - use_sliding_window (
bool、任意、デフォルトはFalse) — スライディングウィンドウアテンションを使用するかどうか。 - sliding_window (
int、任意、デフォルトは32768) — スライディングウィンドウアテンションのウィンドウサイズ。Noneの場合、スライディングウィンドウは適用されません。 - max_window_layers (
int、任意、デフォルトは28) — フルアテンションを使用するレイヤーの数です。最初のmax_window_layers個のレイヤーはフルアテンションを使用し、それ以降の追加レイヤーは SWA(Sliding Window Attention)を使用します。 - attention_dropout (
Union[float, int]、任意、デフォルトは0.0) — アテンション確率のドロップアウト率です。 - rope_parameters (
Union[~modeling_rope_utils.RopeParameters, dict], 省略可) — RoPE 埋め込みの設定パラメータを含む辞書です。この辞書にはrope_thetaの値が含まれており、より長いmax_position_embeddingsで RoPE を使用する場合にスケーリングに使用されるパラメータが任意で含まれます。 - position_id_per_seconds (
int、任意、デフォルト値は 25)— 1 秒あたりの position id の増分です。 - seconds_per_chunk (
int、任意、デフォルトは 2) — 音声および動画データのチャンクの長さ(秒)。 - audio_start_token_id (
int、任意、デフォルトは 151647) — オーディオプロンプトをエンコードするためのオーディオ開始トークンのインデックスです。 - audio_end_token_id (
int、任意、デフォルトは 151648) — 音声プロンプトをエンコードするための音声終了トークンのインデックスです。 - initializer_range (
float、任意、デフォルトは0.02) — すべての重み行列を初期化するための truncated_normal_initializer の標準偏差です。 - spatial_merge_size (
int, 省略可、デフォルトは2) — 隣接するパッチをマージしてビジュアルトークンの数を削減するために使用される、空間マージウィンドウのサイズです。 - layer_types (
list[str]、省略可) — 各レイヤーのインデックスとレイヤータイプを明示的に対応付けるリストです。指定しない場合、config の値に基づいて自動的に生成されます。 - pad_token_id (
int, 任意) — 語彙内でパディングに使用されるトークン ID。
これは、Qwen2 5 OmniModel の設定を保存するための設定クラスです。指定された引数に基づいて Qwen2 5 Omni モデルをインスタンス化し、モデルのアーキテクチャを定義するために使用されます。デフォルト値で設定をインスタンス化すると、Qwen/Qwen2.5-Omni-7B と同様の設定が得られます。
設定オブジェクトはPreTrainedConfigを継承し、モデルの出力を制御するために使用できます。詳細については、PreTrainedConfigのドキュメントを参照してください。
例:
>>> from transformers import Qwen2_5OmniTalkerForConditionalGeneration, Qwen2_5OmniThinkerConfig, Qwen2_5OmniAudioEncoderConfig, Qwen2_5OmniVisionEncoderConfig
>>> # Initializing a Qwen2_5OmniAudioEncoder config
>>> audio_config = Qwen2_5OmniAudioEncoderConfig()
>>> # Initializing a Qwen2 config
>>> text_config = Qwen2Config()
>>> # Initializing a Qwen2_5Omni configuration
>>> configuration = Qwen2_5OmniThinkerConfig(audio_config, text_config)
>>> # Initializing a model from the qwen2-audio style configuration
>>> model = Qwen2_5OmniTalkerForConditionalGeneration(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configQwen2_5OmniTalkerForConditionalGeneration
クラス transformers.Qwen2_5OmniTalkerForConditionalGeneration
< source >( config: Qwen2_5OmniTalkerConfig )
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Nonethinker_reply_part: typing.Optional[torch.FloatTensor] = Noneinputs_embeds: typing.Optional[torch.FloatTensor] = Noneuse_cache: bool | None = Noneinput_text_ids: typing.Optional[torch.LongTensor] = Noneimage_grid_thw: typing.Optional[torch.LongTensor] = Nonevideo_grid_thw: typing.Optional[torch.LongTensor] = Noneuse_audio_in_video: bool | None = Noneaudio_feature_lengths: typing.Optional[torch.LongTensor] = Nonevideo_second_per_grid: typing.Optional[torch.LongTensor] = None**kwargs ) → Qwen2_5OmniTalkerCausalLMOutputWithPast 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 です。
- 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))のみを入力することになります。 - thinker_reply_part (
torch.FloatTensor、shape(batch_size, sequence_length, hidden_size)、任意) — thinker モデルの出力から得られる、処理対象のテキスト返信部分を表す隠れ状態です。 - inputs_embeds (
torch.FloatTensor、形状(batch_size, sequence_length, hidden_size)、任意) —input_idsを渡す代わりに、埋め込み表現を直接渡すこともできます。これは、モデル内部の埋め込みルックアップ行列よりも、input_idsのインデックスを対応するベクトルに変換する方法をより細かく制御したい場合に有用です。 - use_cache (
bool、任意) —Trueに設定すると、past_key_valuesのキーバリュー状態が返され、デコーディングの高速化に利用できます(past_key_valuesを参照)。 - input_text_ids (
torch.LongTensor、形状(batch_size, sequence_length)、任意) — テキストのみを含むコンテンツのインプットトークンIDです。マルチモーダル環境における位置計算に使用されます。 - image_grid_thw (
torch.LongTensor、形状(num_images, 3)、任意) — LLM における各画像のフィーチャー形状の時間軸、高さ、幅です。 - video_grid_thw (
torch.LongTensor、形状(num_videos, 3)、任意) — LLM における各動画のフィーチャー形状の時間軸、高さ、幅です。 - use_audio_in_video (
bool, 任意) — 動画内のオーディオトラックを使用するかどうか。process_audio_infoのパラメータと同じである必要があります。 - audio_feature_lengths (
torch.LongTensor、形状(num_audios)、任意) — LLMにおける各オーディオのフィーチャー形状の長さです。 - video_second_per_grid (
torch.LongTensor、形状(num_videos)、任意) — 各動画のグリッドあたりの秒数。時間方向の特徴量マッピングに使用されます。
戻り値
Qwen2_5OmniTalkerCausalLMOutputWithPast または tuple(torch.FloatTensor)
Qwen2_5OmniTalkerCausalLMOutputWithPast、または torch.FloatTensor のタプル(return_dict=False が渡された場合、または config.return_dict=False の場合)。設定(Qwen2_5OmniConfig)や入力に応じて、さまざまな要素で構成されます。
Qwen2_5OmniTalkerForConditionalGenerationの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後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。
rope_deltas (
torch.LongTensor、形状(batch_size, )、任意) — シーケンス長とマルチモーダル rope の間の rope インデックスの差分です。 この属性は非推奨であり、v5.20 で削除されます。代わりにmodel.base_model.rope_deltasを使用してください。thinker_reply_part (
torch.FloatTensor、shape(batch_size, sequence_length, hidden_size)) — thinker モデルからの隠れ状態。talker モデルの入力として使用されます。これは、talker モデルが音声トークンを生成するために使用する、エンコードされた応答を表します。
例:
>>> from io import BytesIO
>>> from urllib.request import urlopen
>>> import librosa
>>> from transformers import AutoProcessor, Qwen2_5OmniTalkerForConditionalGeneration
>>> model = Qwen2_5OmniTalkerForConditionalGeneration.from_pretrained("Qwen/Qwen2-Audio-7B")
>>> processor = AutoProcessor.from_pretrained("Qwen/Qwen2-Audio-7B")
>>> prompt = "<|audio_bos|><|AUDIO|><|audio_eos|>Generate the caption in English:"
>>> url = "https://huggingface.co/datasets/hf-internal-testing/transformers-synthetic-assets/resolve/main/audio/glass_breaking.mp3"
>>> audio, _ = librosa.load(BytesIO(urlopen(url).read()), sr=self.processor.feature_extractor.sampling_rate)
>>> inputs = processor(text=prompt, audio=audio, return_tensors="pt")
>>> # Generate
>>> generate_ids = model.generate(**inputs, max_length=30)
>>> processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
"Generate the caption in English: Glass is breaking."Qwen2_5OmniTalkerModel
クラス transformers.Qwen2_5OmniTalkerModel
< source >( config: Qwen2_5OmniTalkerConfig )
パラメータ
- config (Qwen2_5OmniTalkerConfig) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
Qwen2 5 Omniの素のモデルは、上部に特定のヘッドを付加せずに生のhidden-statesを出力します。
このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。
このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = 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.modeling_flash_attention_utils.FlashAttentionKwargs'> ) → BaseModelOutputWithPast 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 です。
- 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を参照)。
戻り値
BaseModelOutputWithPast または tuple(torch.FloatTensor)
torch.FloatTensor のタプル(return_dict=False が渡された場合、または config.return_dict=False の場合)または BaseModelOutputWithPast。設定(Qwen2_5OmniConfig)や入力に応じて、さまざまな要素で構成されます。
Qwen2_5OmniTalkerModelの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後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。
Qwen2_5OmniToken2WavConfig
クラス transformers.Qwen2_5OmniToken2WavConfig
< 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 = Nonedit_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonebigvgan_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None )
これは、Qwen2 5 OmniModel の設定を保存するための設定クラスです。指定された引数に基づいて Qwen2 5 Omni モデルをインスタンス化し、モデルのアーキテクチャを定義するために使用されます。デフォルト値で設定をインスタンス化すると、Qwen/Qwen2.5-Omni-7B と同様の設定が得られます。
設定オブジェクトはPreTrainedConfigを継承し、モデルの出力を制御するために使用できます。詳細については、PreTrainedConfigのドキュメントを参照してください。
例:
>>> from transformers import Qwen2_5OmniToken2WavModel, DiT_Args, BigVGAN_Args
>>> # Initialize DiT configuration
>>> dit_config = DiT_Args(
... dim=1024,
... depth=22,
... heads=16,
... ff_mult=2
... )
>>> # Initialize BigVGAN configuration
>>> bigvgan_config = BigVGAN_Args(
... mel_dim=80,
... upsample_rates=[5,3,2,2,2,2]
... )
>>> # Initialize main configuration
>>> config = Qwen2_5OmniToken2WavConfig(dit_config, bigvgan_config)
>>> # Initialize model with config
>>> model = Qwen2_5OmniToken2Wav(config)
>>> # Accessing the model configuration
>>> configuration = model.configQwen2_5OmniToken2WavModel
class transformers.Qwen2_5OmniToken2WavModel
< source >( config: Qwen2_5OmniToken2WavConfig )
パラメータ
- config (Qwen2_5OmniToken2WavConfig) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
完全な Qwen2.5Omni Token2Wav モデルです。音声トークンを入力として受け取り、メルスペクトログラムを予測する DiT モデルと、メルスペクトログラムを入力として受け取り、波形を予測する BigVGAN ボコーダーで構成されています。
このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。
このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。
forward
< source >( codeconditioningreference_melnum_steps = 10guidance_scale = 0.5sway_coefficient = -1.0**kwargs )
入力コードと条件付けパラメータから波形を生成します。
Qwen2_5OmniToken2WavDiTModel
class transformers.Qwen2_5OmniToken2WavDiTModel
< source >( config: Qwen2_5OmniDiTConfig )
パラメータ
- config (Qwen2_5OmniDiTConfig) — モデルのすべてのパラメータを含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
Qwen2.5Omni Token2WavDiT の完全なモデルです。音声トークンを入力として受け取り、メロスペクトログラムを予測します。
このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。
このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。
Qwen2_5OmniToken2WavBigVGANModel
class transformers.Qwen2_5OmniToken2WavBigVGANModel
< source >( config: Qwen2_5OmniBigVGANConfig )
パラメータ
- config (Qwen2_5OmniBigVGANConfig) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
完全なQwen2.5Omni Token2WavBigVGANモデルです。メロスペクトログラムを入力として受け取り、波形を予測します。
このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。
このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。