Transformers documentation
Qwen2.5-Omni
Mô hình này được công bố trên HF papers vào ngày 2025-03-26 và được đóng góp cho Hugging Face Transformers vào ngày 2025-04-14.
Qwen2.5-Omni
Tổng quan
Mô hình Qwen2.5-Omni là một mô hình đa phương thức thống nhất được đề xuất trong Qwen2.5-Omni Technical Report từ nhóm Qwen, Alibaba Group.
Tóm tắt từ báo cáo kỹ thuật như sau:
Chúng tôi giới thiệu Qwen2.5-Omni, một mô hình đa phương thức end-to-end được thiết kế để nhận thức các phương thức đa dạng, bao gồm văn bản, hình ảnh, âm thanh và video, đồng thời tạo ra các phản hồi văn bản và giọng nói tự nhiên theo cách streaming. Để cho phép streaming các đầu vào thông tin đa phương thức, cả bộ mã hóa âm thanh và bộ mã hóa thị giác đều sử dụng phương pháp xử lý theo khối (block-wise). Chiến lược này tách rời hiệu quả việc xử lý các chuỗi dài dữ liệu đa phương thức, giao trách nhiệm nhận thức cho bộ mã hóa đa phương thức và giao việc mô hình hóa các chuỗi mở rộng cho một mô hình ngôn ngữ lớn. Sự phân công lao động như vậy tăng cường sự kết hợp của các phương thức khác nhau thông qua cơ chế chú ý (attention) được chia sẻ. Để đồng bộ hóa các mốc thời gian của đầu vào video với âm thanh, chúng tôi sắp xếp âm thanh và video theo trình tự một cách xen kẽ và đề xuất một phương pháp nhúng vị trí (position embedding) mới, có tên là TMRoPE (Time-aligned Multimodal RoPE). Để đồng thời tạo ra văn bản và giọng nói mà tránh sự can thiệp giữa hai phương thức, chúng tôi đề xuất kiến trúc Thinker-Talker. Trong khung làm việc này, Thinker hoạt động như một mô hình ngôn ngữ lớn có nhiệm vụ tạo văn bản, trong khi Talker là một mô hình tự hồi quy (autoregressive) hai đường ray (dual-track) trực tiếp sử dụng các biểu diễn ẩn (hidden representations) từ Thinker để tạo ra các token âm thanh làm đầu ra. Cả hai mô hình Thinker và Talker đều được thiết kế để huấn luyện và suy luận theo cách end-to-end. Để giải mã các token âm thanh theo cách streaming, chúng tôi giới thiệu một DiT có cửa sổ trượt (sliding-window) nhằm hạn chế trường nhận (receptive field), với mục tiêu giảm độ trễ của gói dữ liệu ban đầu. Qwen2.5-Omni vượt trội hơn Qwen2-VL và Qwen2-Audio có kích thước tương đương về cả khả năng hình ảnh và âm thanh. Hơn nữa, Qwen2.5-Omni đạt hiệu suất tiên tiến (state-of-the-art) trên các bộ chuẩn (benchmark) đa phương thức như Omni-Bench. Đáng chú ý, Qwen2.5-Omni là mô hình mã nguồn mở đầu tiên đạt được mức hiệu suất trong việc tuân theo chỉ thị giọng nói end-to-end tương đương với khả năng của nó với các đầu vào văn bản, như được chứng minh bởi các bộ chuẩn như MMLU và GSM8K. Về tạo giọng nói, Talker streaming của Qwen2.5-Omni vượt trội hơn hầu hết các phương án streaming và non-streaming hiện có về độ bền (robustness) và tính tự nhiên.
Đặt
use_kernels=Truetrong from_pretrained() để thay thế các lớp được hỗ trợ bằng các kernel tối ưu từ Hub. Xem Tải kernel để biết thêm.
Ghi chú
- Sử dụng Qwen2_5OmniForConditionalGeneration để tạo ra đầu ra âm thanh và văn bản. Để chỉ tạo ra một loại đầu ra, hãy dùng Qwen2_5OmniThinkerForConditionalGeneration cho đầu ra chỉ văn bản và
Qwen2_5OmniTalkersForConditionalGenerationcho đầu ra chỉ âm thanh. - Trong trường hợp xảy ra lỗi hết bộ nhớ khi làm việc với đầu vào video, hãy giảm
processor.max_pixels. Mặc định, giá trị tối đa được đặt ở mức rất lớn và các hình ảnh độ phân giải cao sẽ không được thay đổi kích thước, trừ khi độ phân giải vượt quáprocessor.max_pixels. - Bộ xử lý có phương thức apply_chat_template() riêng để chuyển đổi các tin nhắn chat thành đầu vào cho mô hình.
Ví dụ sử dụng
Qwen2.5-Omni có thể được tìm thấy trên Huggingface Hub.
Suy luận phương tiện đơn
Mô hình có thể nhận văn bản, hình ảnh, âm thanh và video làm đầu vào. Dưới đây là một mã ví dụ cho suy luận.
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)Tạo chỉ văn bản
Để chỉ tạo ra đầu ra dạng văn bản và tiết kiệm tài nguyên tính toán bằng cách không nạp mô hình tạo âm thanh, chúng ta có thể sử dụng mô hình 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)Suy luận phương tiện hỗn hợp theo lô
Mô hình có thể xử lý các lô đầu vào bao gồm các mẫu hỗn hợp của nhiều loại khác nhau như văn bản, hình ảnh, âm thanh và video khi sử dụng mô hình Qwen2_5OmniThinkerForConditionalGeneration. Dưới đây là một ví dụ.
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)Tạo âm thanh theo lô
Qwen2_5OmniForConditionalGeneration hỗ trợ tạo đầu ra âm thanh theo lô. Ví dụ, dưới đây là tạo âm thanh từ văn bản theo lô. Với một lô gồm nhiều hơn một mẫu, âm thanh được tạo sẽ được trả về dưới dạng danh sách với một dạng sóng cho mỗi mẫu, mỗi dạng sóng đã được cắt gọn theo độ dài riêng của nó, do đó các mẫu ngắn hơn sẽ không bị đệm bằng âm thanh giả. Một cuộc gọi chỉ với một mẫu vẫn trả về một tensor duy nhất.
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")Mẹo sử dụng
Sự đánh đổi về Độ phân giải ảnh
Mô hình hỗ trợ một phạm vi rộng các đầu vào độ phân giải. Mặc định, nó sử dụng độ phân giải gốc cho đầu vào, nhưng các độ phân giải cao hơn có thể cải thiện hiệu suất với chi phí là nhiều phép tính hơn. Người dùng có thể đặt số lượng pixel tối thiểu và tối thiểu để đạt được cấu hình tối ưu cho nhu cầu của mình.
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)Prompt cho đầu ra âm thanh
Nếu người dùng cần đầu ra âm thanh, prompt hệ thống phải được đặt là “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.”, nếu không đầu ra âm thanh có thể không hoạt động như mong đợi.
{
"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.",
}Sử dụng đầu ra âm thanh hay không
Mô hình hỗ trợ cả đầu ra văn bản và âm thanh. Nếu người dùng không cần đầu ra âm thanh, họ có thể đặt enable_audio_output trong hàm from_pretrained. Tùy chọn này sẽ tiết kiệm khoảng ~2GB bộ nhớ GPU, nhưng tùy chọn return_audio của hàm generate sẽ chỉ cho phép đặt ở False.
model = Qwen2_5OmniForConditionalGeneration.from_pretrained(
"Qwen/Qwen2.5-Omni-7B",
device_map="auto",
enable_audio_output=False,
)Để có trải nghiệm linh hoạt, chúng tôi khuyến nghị người dùng đặt enable_audio_output thành True khi khởi tạo mô hình thông qua hàm from_pretrained, sau đó quyết định có trả về âm thanh hay không khi gọi hàm generate. Khi return_audio được đặt thành False, mô hình sẽ chỉ trả về đầu ra dạng văn bản để nhận phản hồi văn bản nhanh hơn.
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)Thay đổi kiểu giọng của âm thanh đầu ra
Qwen2.5-Omni hỗ trợ khả năng thay đổi giọng nói của âm thanh đầu ra. Người dùng có thể sử dụng tham số speaker của hàm generate để chỉ định loại giọng nói. Checkpoint "Qwen/Qwen2.5-Omni-7B" hỗ trợ hai loại giọng nói: Chelsie và Ethan, trong đó Chelsie là giọng nữ và Ethan là giọng nam. Mặc định, nếu không chỉ định speaker, loại giọng nói mặc định sẽ là Chelsie.
text_ids, audio = model.generate(**inputs, speaker="Chelsie")text_ids, audio = model.generate(**inputs, speaker="Ethan")Flash-Attention 2 để tăng tốc độ tạo
Đầu tiên, hãy đảm bảo cài đặt phiên bản mới nhất của Flash Attention 2:
pip install -U flash-attn --no-build-isolation
Ngoài ra, bạn cần có phần cứng tương thích với FlashAttention 2. Đọc thêm về điều này trong tài liệu chính thức của flash attention repository. FlashAttention-2 chỉ có thể được sử dụng khi mô hình được nạp ở torch.float16 hoặc torch.bfloat16.
Để tải và chạy một mô hình bằng FlashAttention-2, hãy thêm attn_implementation="flash_attention_2" khi tải mô hình:
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
lớp 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 )
Tham số
- thinker_config (
dict, tùy chọn) — Cấu hình của mô hình con thinker bên dưới. - talker_config (
dict, tùy chọn) — Cấu hình của mô hình con talker bên dưới. - token2wav_config (
dict, tùy chọn) — Cấu hình của mô hình con codec bên dưới. - enable_audio_output (
bool, tùy chọn, mặc định làTrue) — Có bật đầu ra âm thanh và nạp module talker và token2wav hay không.
Đây là lớp cấu hình để lưu trữ cấu hình của một mô hình Qwen2 5 OmniModel. Nó được sử dụng để khởi tạo một mô hình Qwen2 5 Omni theo các đối số được chỉ định, xác định kiến trúc của mô hình. Khởi tạo một cấu hình với các giá trị mặc định sẽ tạo ra một cấu hình tương tự như cấu hình của Qwen/Qwen2.5-Omni-7B
Các đối tượng cấu hình kế thừa từ PreTrainedConfig và có thể được sử dụng để kiểm soát đầu ra của mô hình. Đọc tài liệu từ PreTrainedConfig để biết thêm thông tin.
Ví dụ:
>>> 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 )
Trả về cấu hình được thiết kế để sử dụng với IO văn bản. Trên hầu hết các mô hình, đây chính là bản thân instance cấu hình gốc. Trên một số mô hình composite cụ thể, nó nằm dưới một tập hợp các tên hợp lệ.
Qwen2_5OmniVisionEncoderConfig
lớp 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 )
Tham số
- depth (
int, tùy chọn, mặc định là32) — Số lượng lớp Transformer trong bộ mã hóa thị giác. - hidden_size (
int, tùy chọn, mặc định là3584) — Kích thước của các biểu diễn ẩn. - hidden_act (
str, tùy chọn, mặc định làsilu) — Hàm kích hoạt phi tuyến (hàm hoặc chuỗi) trong bộ giải mã. Ví dụ,"gelu","relu","silu", v.v. - intermediate_size (
int, tùy chọn, mặc định là3420) — Kích thước của các biểu diễn MLP. - num_heads (
int, tùy chọn, mặc định là16) — Số lượng đầu chú ý cho mỗi lớp chú ý trong bộ giải mã Transformer. - in_channels (
int, tùy chọn, mặc định là3) — Số lượng kênh đầu vào. - patch_size (
Union[int, list[int], tuple[int, int]], tùy chọn, mặc định là14) — Kích thước (độ phân giải) của mỗi patch. - spatial_merge_size (
int, tuỳ chọn, mặc định là2) — Kích thước của cửa sổ hợp nhất không gian được sử dụng để giảm số lượng token thị giác bằng cách hợp nhất các patch lân cận. - temporal_patch_size (
Union[int, list[int], tuple[int, int]], tuỳ chọn, mặc định là2) — Kích thước patch theo thời gian được sử dụng trong nhúng patch 3D cho đầu vào video. - window_size (
int, tùy chọn, mặc định là 11) — Kích thước của các cửa sổ. - out_hidden_size (
int, tuỳ chọn, mặc định là 3584) — Kích thước ẩn đầu ra của mô hình thị giác. - fullatt_block_indexes (
int, tuỳ chọn, mặc định là[7, 15, 23, 31]) — Chỉ số của các lớp có chú ý đầy đủ - initializer_range (
float, tùy chọn, mặc định là0.02) — Độ lệch chuẩn của truncated_normal_initializer để khởi tạo tất cả các ma trận trọng số. - rope_parameters (
dict, tùy chọn) — Từ điển chứa các tham số cấu hình cho các embedding RoPE. Từ điển phải chứa một giá trị chorope_thetavà tùy chọn các tham số được sử dụng để mở rộng trong trường hợp bạn muốn sử dụng RoPE vớimax_position_embeddingsdài hơn.
Đây là lớp cấu hình để lưu trữ cấu hình của một mô hình Qwen2 5 OmniModel. Nó được sử dụng để khởi tạo một mô hình Qwen2 5 Omni theo các đối số được chỉ định, xác định kiến trúc của mô hình. Khởi tạo một cấu hình với các giá trị mặc định sẽ tạo ra một cấu hình tương tự như cấu hình của Qwen/Qwen2.5-Omni-7B
Các đối tượng cấu hình kế thừa từ PreTrainedConfig và có thể được sử dụng để kiểm soát đầu ra của mô hình. Đọc tài liệu từ PreTrainedConfig để biết thêm thông tin.
Ví dụ:
>>> 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
lớp 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 )
Tham số
- vocab_size (
int, tuỳ chọn, mặc định là152064) — Kích thước từ vựng của mô hình. Xác định số lượng token khác nhau có thể được biểu diễn bởiinput_ids. - hidden_size (
int, tùy chọn, mặc định là3584) — Kích thước của các biểu diễn ẩn. - intermediate_size (
int, tùy chọn, mặc định là18944) — Kích thước của các biểu diễn MLP. - num_hidden_layers (
int, tùy chọn, mặc định là28) — Số lượng lớp ẩn trong bộ giải mã Transformer. - num_attention_heads (
int, tùy chọn, mặc định là28) — Số lượng đầu chú ý (attention heads) cho mỗi lớp chú ý trong bộ giải mã Transformer. - num_key_value_heads (
int, tùy chọn, mặc định là4) — Đây là số lượng key_value heads cần được sử dụng để triển khai Grouped Query Attention. Nếunum_key_value_heads=num_attention_heads, mô hình sẽ sử dụng Multi Head Attention (MHA), nếunum_key_value_heads=1mô hình sẽ sử dụng Multi Query Attention (MQA), ngược lại sẽ sử dụng GQA. Khi chuyển đổi checkpoint multi-head sang checkpoint GQA, mỗi nhóm key và value head nên được xây dựng bằng cách meanpooling tất cả các head gốc trong nhóm đó. Để biết thêm chi tiết, hãy xem bài báo này. Nếu không được chỉ định, giá trị mặc định sẽ lànum_attention_heads. - hidden_act (
str, tùy chọn, mặc định làsilu) — Hàm kích hoạt phi tuyến (hàm hoặc chuỗi) trong bộ giải mã. Ví dụ,"gelu","relu","silu", v.v. - max_position_embeddings (
int, tùy chọn, mặc định là32768) — Chiều dài chuỗi tối đa mà mô hình này có thể được sử dụng. - initializer_range (
float, tùy chọn, mặc định là0.02) — Độ lệch chuẩn của truncated_normal_initializer để khởi tạo tất cả các ma trận trọng số. - rms_norm_eps (
float, tùy chọn, mặc định là1e-06) — Giá trị epsilon được sử dụng bởi các lớp chuẩn hóa rms. - use_cache (
bool, tùy chọn, mặc định làTrue) — Xác định xem mô hình có nên trả về các chú ý key/values cuối cùng hay không (không được sử dụng bởi tất cả các mô hình). Chỉ liên quan nếuconfig.is_decoder=Truehoặc khi mô hình là mô hình sinh chỉ có decoder. - rope_parameters (
Union[~modeling_rope_utils.RopeParameters, dict], tùy chọn) — Từ điển chứa các tham số cấu hình cho các embedding RoPE. Từ điển phải chứa một giá trị chorope_thetavà tùy chọn các tham số được sử dụng để mở rộng trong trường hợp bạn muốn sử dụng RoPE vớimax_position_embeddingsdài hơn. - use_sliding_window (
bool, tùy chọn, mặc định làFalse) — Có sử dụng chú ý cửa sổ trượt (sliding window attention) hay không. - sliding_window (
int, tùy chọn, mặc định là32768) — Kích thước cửa sổ của cơ chế chú ý cửa sổ trượt. Nếu làNone, sẽ không áp dụng cửa sổ trượt. - max_window_layers (
int, tùy chọn, mặc định là28) — Số lượng lớp sử dụng chú ý đầy đủ.max_window_layerslớp đầu tiên sẽ sử dụng chú ý đầy đủ, trong khi bất kỳ lớp nào thêm vào sau đó sẽ sử dụng SWA (Sliding Window Attention). - layer_types (
list[str], tùy chọn) — Một danh sách ánh xạ rõ ràng từng chỉ số lớp với kiểu lớp tương ứng. Nếu không được cung cấp, danh sách này sẽ được tạo tự động dựa trên các giá trị cấu hình. - attention_dropout (
Union[float, int], tùy chọn, mặc định là0.0) — Tỷ lệ dropout cho các xác suất chú ý. - pad_token_id (
int, tùy chọn) — Token id được sử dụng để đệm trong từ vựng. - bos_token_id (
int, tùy chọn) — Token id được sử dụng cho beginning-of-stream trong bảng từ vựng. - eos_token_id (
Union[int, list[int]], tùy chọn) — Token id được sử dụng cho end-of-stream trong bảng từ vựng. - tie_word_embeddings (
bool, tùy chọn, mặc định làTrue) — Có nên gắn kết các trọng số nhúng theo ánh xạtied_weights_keyscủa mô hình hay không.
Đây là lớp cấu hình để lưu trữ cấu hình của một mô hình Qwen2 5 OmniModel. Nó được sử dụng để khởi tạo một mô hình Qwen2 5 Omni theo các đối số được chỉ định, xác định kiến trúc của mô hình. Khởi tạo một cấu hình với các giá trị mặc định sẽ tạo ra một cấu hình tương tự như cấu hình của Qwen/Qwen2.5-Omni-7B
Các đối tượng cấu hình kế thừa từ PreTrainedConfig và có thể được sử dụng để kiểm soát đầu ra của mô hình. Đọc tài liệu từ PreTrainedConfig để biết thêm thông tin.
Ví dụ:
>>> 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
lớp 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 )
Tham số
- hidden_size (
int, tùy chọn, mặc định là1024) — Kích thước của các biểu diễn ẩn. - num_hidden_layers (
int, tùy chọn, mặc định là22) — Số lượng lớp ẩn trong bộ giải mã Transformer. - num_attention_heads (
int, tùy chọn, mặc định là16) — Số lượng đầu attention cho mỗi lớp attention trong bộ giải mã Transformer. - ff_mult (
int, tùy chọn, mặc định là 2) — Hệ số nhân cho lớp feedforward trong mỗi khối transformer. - emb_dim (
int, tùy chọn, mặc định là 512) — Kích thước của lớp nhúng. - head_dim (
int, tùy chọn, mặc định là64) — Kích thước chiều của đầu chú ý. Nếu là None, giá trị mặc định sẽ là hidden_size // num_attention_heads - rope_parameters (
Union[~modeling_rope_utils.RopeParameters, dict], tùy chọn) — Từ điển chứa các tham số cấu hình cho các embedding RoPE. Từ điển phải chứa một giá trị chorope_thetavà tùy chọn các tham số được sử dụng để mở rộng trong trường hợp bạn muốn sử dụng RoPE vớimax_position_embeddingsdài hơn. - max_position_embeddings (
int, tùy chọn, mặc định là32768) — Chiều dài chuỗi tối đa mà mô hình này có thể được sử dụng. - block_size (
int, tùy chọn, mặc định là 64) — Số lượng token (khung) trong mỗi khối xử lý. - look_ahead_layers (
list[int], tùy chọn, mặc định là[10]) — Số lượng lớp transformer được phép chú ý đến các khối tương lai - look_backward_layers (
list[int], tùy chọn, mặc định là[0, 20]) — Số lượng lớp transformer chú ý đến các khối quá khứ vượt ra ngoài ranh giới khối hiện tại - repeats (
int, tùy chọn, mặc định là 2) — Số lần các embedding của codec được lặp lại. - num_embeds (
int, tuỳ chọn, mặc định là 8193) — Số lượng embedding duy nhất trong codec. - mel_dim (
int, tùy chọn, mặc định là 80) — Kích thước của mel-spectrogram. - dropout (
Union[float, int], tùy chọn, mặc định là0.1) — Tỷ lệ cho tất cả các lớp dropout. - enc_emb_dim (
int, tùy chọn, mặc định là 192) — Kích thước của embedding người nói được huấn luyện trước. - enc_dim (
int, tùy chọn, mặc định là 128) — Kích thước của đầu ra bộ mã hóa. - enc_channels (
list[int], tùy chọn, mặc định là[256, 256, 256, 256, 768]) — Một danh sách các kênh đầu ra cho mỗi lớp TDNN/SERes2Net trong bộ mã hóa. - enc_kernel_sizes (
list[int], tùy chọn, mặc định là[5, 3, 3, 3, 1]) — Một danh sách các kích thước kernel cho từng lớp trong bộ mã hóa. - enc_dilations (
list[int], tùy chọn, mặc định là[1, 2, 3, 4, 1]) — Một danh sách các giá trị dilation cho từng lớp trong encoder. - enc_attention_channels (
int, tùy chọn, mặc định là 64) — Số lượng kênh chú ý trong SqueezeExcitationBlock. - enc_res2net_scale (
int, tùy chọn, mặc định là 2) — Hệ số scale của khối Res2Net trong encoder. - enc_se_channels (
int, tùy chọn, mặc định là 64) — Số lượng kênh đầu ra sau bước squeeze trong SqueezeExcitationBlock.
Đây là lớp cấu hình để lưu trữ cấu hình của một mô hình Qwen2 5 OmniModel. Nó được sử dụng để khởi tạo một mô hình Qwen2 5 Omni theo các đối số được chỉ định, xác định kiến trúc của mô hình. Khởi tạo một cấu hình với các giá trị mặc định sẽ tạo ra một cấu hình tương tự như cấu hình của Qwen/Qwen2.5-Omni-7B
Các đối tượng cấu hình kế thừa từ PreTrainedConfig và có thể được sử dụng để kiểm soát đầu ra của mô hình. Đọc tài liệu từ PreTrainedConfig để biết thêm thông tin.
Qwen2_5OmniBigVGANConfig
lớp 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) )
Tham số
- mel_dim (
int, tùy chọn, mặc định là 80) — Kích thước của mel-spectrogram. - upsample_initial_channel (
int, tùy chọn, mặc định là 1536) — Số lượng kênh trong lớp upsampling ban đầu. - resblock_kernel_sizes (
list[int], tùy chọn, mặc định là[3, 7, 11]) — Một danh sách kích thước kernel cho mỗi khối dư (residual block). - resblock_dilation_sizes (
list[list[int]], tuỳ chọn, mặc định là[[1, 3, 5], [1, 3, 5], [1, 3, 5]]) — Một danh sách các kích thước giãn nở (dilation) cho mỗi khối dư (residual block). - upsample_rates (
list[int], tùy chọn, mặc định là[5, 3, 2, 2, 2, 2]) — Một danh sách các tỷ lệ lấy mẫu lên cho từng lớp lấy mẫu lên. - upsample_kernel_sizes (
list[int], tùy chọn, mặc định là[11, 7, 4, 4, 4, 4]) — Một danh sách kích thước kernel cho từng lớp upsampling.
Đây là lớp cấu hình để lưu trữ cấu hình của một mô hình Qwen2 5 OmniModel. Nó được sử dụng để khởi tạo một mô hình Qwen2 5 Omni theo các đối số được chỉ định, xác định kiến trúc của mô hình. Khởi tạo một cấu hình với các giá trị mặc định sẽ tạo ra một cấu hình tương tự như cấu hình của Qwen/Qwen2.5-Omni-7B
Các đối tượng cấu hình kế thừa từ PreTrainedConfig và có thể được sử dụng để kiểm soát đầu ra của mô hình. Đọc tài liệu từ PreTrainedConfig để biết thêm thông tin.
Qwen2_5OmniAudioEncoderConfig
lớp 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 )
Tham số
- num_mel_bins (
int, tùy chọn, mặc định là128) — Số lượng đặc trưng mel được sử dụng cho mỗi khung đầu vào. Cần khớp với giá trị được dùng trong lớpAutoFeatureExtractor. - encoder_layers (
int, tùy chọn, mặc định là32) — Số lượng lớp ẩn trong bộ mã hóa Transformer. Nếu không được đặt, giá trị này sẽ giống vớinum_layers. - encoder_attention_heads (
int, tùy chọn, mặc định là20) — Số lượng đầu chú ý cho mỗi lớp chú ý trong bộ mã hóa Transformer. - encoder_ffn_dim (
int, tùy chọn, mặc định là5120) — Kích thước của lớp “trung gian” (thường được gọi là feed-forward) trong encoder. - d_model (
int, tùy chọn, mặc định là1280) — Kích thước của các lớp encoder và lớp pooler. - dropout (
Union[float, int], tùy chọn, mặc định là0.0) — Tỷ lệ cho tất cả các lớp dropout. - attention_dropout (
Union[float, int], tùy chọn, mặc định là0.0) — Tỷ lệ dropout cho các xác suất chú ý. - activation_function (
str, tùy chọn, mặc định làgelu) — Hàm kích hoạt phi tuyến (hàm hoặc chuỗi) trong bộ giải mã. Ví dụ,"gelu","relu","silu", v.v. - activation_dropout (
Union[float, int], tùy chọn, mặc định là0.0) — Tỷ lệ dropout cho các kích hoạt bên trong lớp liên kết đầy đủ. - scale_embedding (
bool, tùy chọn, mặc định làFalse) — Có nên chia embedding cho sqrt(d_model) để chuẩn hóa hay không. - initializer_range (
float, tùy chọn, mặc định là0.02) — Độ lệch chuẩn của truncated_normal_initializer để khởi tạo tất cả các ma trận trọng số. - max_source_positions (
int, tùy chọn, mặc định là 1500) — Chiều dài tối đa của chuỗi các đặc trưng log-mel filter-bank mà mô hình này có thể được sử dụng. - n_window (
int, tùy chọn, mặc định là 100) — Khối cho conv và flash attn trong AudioEncoder. - output_dim (
int, tùy chọn, mặc định là 3584) — Kích thước đầu ra của AudioEncoder.
Đây là lớp cấu hình để lưu trữ cấu hình của một mô hình Qwen2 5 OmniModel. Nó được sử dụng để khởi tạo một mô hình Qwen2 5 Omni theo các đối số được chỉ định, xác định kiến trúc của mô hình. Khởi tạo một cấu hình với các giá trị mặc định sẽ tạo ra một cấu hình tương tự như cấu hình của Qwen/Qwen2.5-Omni-7B
Các đối tượng cấu hình kế thừa từ PreTrainedConfig và có thể được sử dụng để kiểm soát đầu ra của mô hình. Đọc tài liệu từ PreTrainedConfig để biết thêm thông tin.
Ví dụ:
>>> 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
lớp transformers.Qwen2_5OmniProcessor
< source >( image_processor = Nonevideo_processor = Nonefeature_extractor = Nonetokenizer = Nonechat_template = None )
Tham số
- image_processor (
Qwen2VLImageProcessor) — Bộ xử lý ảnh là một đầu vào bắt buộc. - video_processor (
Qwen2VLVideoProcessor) — Bộ xử lý video là một đầu vào bắt buộc. - feature_extractor (
WhisperFeatureExtractor) — Bộ trích xuất đặc trưng là một đầu vào bắt buộc. - tokenizer (
Qwen2Tokenizer) — Tokenizer là đầu vào bắt buộc. - chat_template (
str) — Một mẫu Jinja để chuyển đổi các danh sách tin nhắn trong một cuộc trò chuyện thành chuỗi có thể token hóa.
Tạo một Qwen2_5OmniProcessor, đóng gói một bộ xử lý ảnh, một bộ xử lý video, một bộ trích xuất đặc trưng và một tokenizer thành một bộ xử lý duy nhất.
Qwen2_5OmniProcessor cung cấp đầy đủ các chức năng của Qwen2VLImageProcessor, Qwen2VLVideoProcessor, WhisperFeatureExtractor và Qwen2Tokenizer. Xem ~Qwen2VLImageProcessor, ~Qwen2VLVideoProcessor, ~WhisperFeatureExtractor và ~Qwen2Tokenizer để biết thêm thông tin.
__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
Tham số
- text (
Union[str, list[str], list[list[str]]], tùy chọn) — Chuỗi hoặc lô các chuỗi cần được mã hóa. Mỗi chuỗi có thể là một chuỗi ký tự hoặc một danh sách các chuỗi ký tự (chuỗi đã được tách token trước). Nếu bạn truyền vào dữ liệu đầu vào đã được tách token trước, hãy đặtis_split_into_words=Trueđể tránh nhầm lẫn với các đầu vào dạng lô. - images (
Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]], tuỳ chọn) — Hình ảnh cần tiền xử lý. Kỳ vọng một hình ảnh đơn lẻ hoặc một lô hình ảnh có giá trị pixel từ 0 đến 255. Nếu truyền vào các hình ảnh có giá trị pixel từ 0 đến 1, hãy đặtdo_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]]], tuỳ chọn) — Video cần tiền xử lý. Kỳ vọng một video đơn hoặc một lô video có giá trị pixel từ 0 đến 255. Nếu truyền vào video có giá trị pixel từ 0 đến 1, hãy đặtdo_rescale=False. - audio (
Union[numpy.ndarray, torch.Tensor, list[numpy.ndarray], list[torch.Tensor]], optional) — Âm thanh hoặc lô âm thanh cần được chuẩn bị. Mỗi âm thanh có thể là một mảng NumPy hoặc tensor PyTorch. Trong trường hợp là mảng NumPy/tensor PyTorch, mỗi âm thanh nên có hình dạng (C, T), trong đó C là số kênh và T là độ dài mẫu của âm thanh. - min_pixels (
int, kwargs, tuỳ chọn) — Số lượng pixel tối thiểu (chiều cao × chiều rộng) cho các khung hình video sau khi thay đổi kích thước. Các khung hình nhỏ hơn ngưỡng này sẽ được phóng to để đáp ứng yêu cầu tối thiểu. - max_pixels (
int, kwargs, tuỳ chọn) — Số lượng pixel tối đa (chiều cao × chiều rộng) cho các khung hình video sau khi thay đổi kích thước. Các khung hình lớn hơn ngưỡng này sẽ được thu nhỏ để nằm trong giới hạn. - patch_size (
int, kwargs, optional) — Kích thước patch không gian được sử dụng bởi bộ mã hóa thị giác. Các khung hình video được chia thành các patch có kích thước này theo cả chiều cao và chiều rộng. - temporal_patch_size (
int, kwargs, optional) — Kích thước patch thời gian được bộ mã hóa thị giác sử dụng. Giá trị này xác định số lượng khung hình liên tiếp được nhóm lại thành một patch thời gian duy nhất. - merge_size (
int, kwargs, tuỳ chọn) — Kích thước gộp được sử dụng để kết hợp các mảng không gian. Nhiều mảng được gộp lại với nhau để giảm độ dài chuỗi trong khi vẫn duy trì thông tin không gian. - min_frames (
int, kwargs, optional) — Số khung hình tối thiểu cần trích xuất từ video. Các video có ít khung hình hơn sẽ được đệm hoặc lặp lại để đáp ứng yêu cầu này. - max_frames (
int, kwargs, optional) — Số khung hình tối đa cần trích xuất từ video. Các video dài hơn sẽ bị cắt ngắn hoặc lấy mẫu để nằm trong giới hạn này. - use_audio_in_video (
bool, kwargs, tùy chọn, mặc định làFalse) — Tham số đã bị ngừng hỗ trợ - hãy dùngload_audio_from_videothay thế. - load_audio_from_video (
bool, kwargs, tuỳ chọn, mặc định làFalse) — Có nên tích hợp thông tin âm thanh khi xử lý video hay không. Khi được bật, các token âm thanh sẽ được xen kẽ với các token video dựa trên sự căn chỉnh theo thời gian, tạo ra một biểu diễn đa phương thức thống nhất. - seconds_per_chunk (
float, kwargs, optional, mặc định là2.0) — Thời lượng (tính bằng giây) của mỗi khối video khi chia nhỏ các video dài. Tham số này kiểm soát cách các video được chia thành các phân đoạn thời gian để xử lý. - 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 (
strhoặc TensorType, tùy chọn) — Nếu được đặt, sẽ trả về tensor của một framework cụ thể. Các giá trị chấp nhận được là:'pt': Trả về các đối tượngtorch.Tensorcủa PyTorch.'np': Trả về các đối tượngnp.ndarraycủa NumPy.
- **kwargs (ProcessingKwargs, optional) — Các tùy chọn xử lý bổ sung cho từng modality (text, images, videos, audio). Các tham số cụ thể của model được liệt kê ở trên; xem lớp TypedDict để biết danh sách đầy đủ các đối số được hỗ trợ.
Trả về
~feature_extraction_utils.BatchFeature
- data (
dict, tuỳ chọn) — Từ điển chứa các danh sách/mảng/tensor được trả về bởi các phương thức call/pad (‘input_values’, ‘attention_mask’, v.v.). - tensor_type (
Union[None, str, TensorType], tùy chọn) — Bạn có thể cung cấp một tensor_type tại đây để chuyển đổi các danh sách số nguyên trong Tensor PyTorch/Numpy khi khởi tạo. - skip_tensor_conversion (
list[str]hoặcset[str], tùy chọn) — Danh sách hoặc tập hợp các khóa KHÔNG được chuyển đổi thành tensor, ngay cả khitensor_typeđược chỉ định.
Qwen2_5OmniForConditionalGeneration
lớp transformers.Qwen2_5OmniForConditionalGeneration
< source >( config: Qwen2_5OmniConfig )
Tham số
- config (Qwen2_5OmniConfig) — Lớp cấu hình mô hình chứa tất cả các tham số của mô hình. Khởi tạo bằng tệp cấu hình sẽ không tải trọng số liên quan đến mô hình, chỉ tải cấu hình. Xem phương thức from_pretrained() để tải trọng số của mô hình.
Mô hình Qwen2.5Omni đầy đủ, một mô hình đa phương thức được cấu thành từ 3 mô hình con:
- Qwen2_5OmniThinkerForConditionalGeneration: một transformer tự hồi quy nhân quả nhận văn bản, âm thanh, hình ảnh, video làm đầu vào và dự đoán các token văn bản.
- Qwen2_5OmniTalkerForConditionalGeneration: một transformer tự hồi quy nhân quả nhận hidden states của thinker và response làm đầu vào và dự đoán các speech token.
- Qwen2_5OmniToken2WavModel: một mô hình DiT nhận các speech token làm đầu vào và dự đoán mel spectrogram, cùng một vocoder BigVGAN nhận mel spectrogram làm đầu vào và dự đoán waveform.
Mô hình này kế thừa từ PreTrainedModel. Xem tài liệu của lớp cha để biết các phương thức chung mà thư viện triển khai cho tất cả các mô hình của nó (chẳng hạn như tải xuống hoặc lưu trữ, thay đổi kích thước các nhúng đầu vào, cắt tỉa các đầu, v.v.)
Mô hình này cũng là một lớp con của torch.nn.Module trong PyTorch. Hãy sử dụng nó như một Module PyTorch thông thường và tham khảo tài liệu PyTorch cho mọi vấn đề liên quan đến cách sử dụng và hành vi chung.
Một giá trị giả lập cho một đường dẫn có dấu chấm (ví dụ: torch.float32): các chuỗi truy cập thuộc tính, các cuộc gọi hoạt động như các decorator pass-through, repr là đường dẫn có dấu chấm, và việc sử dụng nó như một lớp cơ sở sẽ thay thế bằng một lớp cơ sở type thông thường (PEP 560 __mro_entries__), do đó các lớp con thực sự vẫn giữ nguyên metaclass bình thường và inspect.signature sẽ đọc __init__ thực của chúng thay vì của một mock.
Qwen2_5OmniPreTrainedModelForConditionalGeneration
lớp transformers.Qwen2_5OmniPreTrainedModelForConditionalGeneration
< source >( config: PreTrainedConfig*inputs**kwargs )
get_chunked_index
< source >( token_indices: Tensortokens_per_chunk: intremove_index: int ) → list[tuple[int, int]]
Tham số
- token_indices (
torch.Tensorcó hình dạng(seq_len, )) — Một danh sách các giá trị chỉ số token tăng đơn điệu. - t_ntoken_per_chunk (
int) — Số lượng token mỗi chunk (được dùng làm ngưỡng kích thước chunk). - remove_index (
int) Một id chỉ mục để trừ khỏitoken_indicestrước khi chia thành các khối —
Trả về
list[tuple[int, int]]
Một danh sách các bộ (tuples), mỗi bộ đại diện cho chỉ số bắt đầu (bao gồm) và chỉ số kết thúc (không bao gồm) của một khối (chunk) trong token_indices.
Chia danh sách chỉ số token thành các khối dựa trên phạm vi giá trị token.
Cho một danh sách chỉ số token, trả về một danh sách các bộ ba (start, end) chỉ số đại diện cho các lát cắt của danh sách mà trong đó giá trị token nằm trong các khoảng liên tiếp của t_ntoken_per_chunk.
Ví dụ, nếu t_ntoken_per_chunk là 1000, hàm sẽ tạo ra các khối sao cho:
- chunk đầu tiên chứa các giá trị token < 1000,
- chunk thứ hai chứa các giá trị >= 1000 và < 2000, và cứ như vậy.
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 )
Tham số
- input_ids (
torch.LongTensorcó hình dạng(batch_size, sequence_length)) — Chỉ số của các token trong chuỗi đầu vào theo từ vựng. Việc đệm (padding) sẽ được bỏ qua theo mặc định nếu bạn cung cấp nó. - image_grid_thw (
torch.LongTensorcó hình dạng(num_images, 3), tùy chọn) — Trục thời gian, chiều cao và chiều rộng của hình dạng đặc trưng của từng hình ảnh trong LLM. - video_grid_thw (
torch.LongTensorcó hình dạng(num_videos, 3), tùy chọn) — Trục thời gian, chiều cao và chiều rộng của hình dạng đặc trưng của từng video trong LLM. - attention_mask (
torch.Tensorcó shape(batch_size, sequence_length), tùy chọn) — Mặt nạ để tránh thực hiện attention trên các chỉ số token padding. Các giá trị mặt nạ được chọn trong[0, 1]:- 1 cho các token không bị che,
- 0 cho các token bị che.
- use_audio_in_video (
bool, tùy chọn) — Nếu đặt thànhTrue, sẽ sử dụng âm thanh trong video. - audio_seqlens (
torch.LongTensorcó hình dạng(num_audios), tùy chọn) — Chiều dài của hình dạng đặc trưng của mỗi âm thanh trong LLM. - second_per_grids (
torch.LongTensorcó hình dạng(num_videos), tùy chọn) — Khoảng thời gian (tính bằng giây) cho mỗi lưới dọc theo chiều thời gian trong các ID vị trí 3D.
Tính chỉ số rope 3D dựa trên thời gian, chiều cao và chiều rộng của hình ảnh và video trong LLM.
Giải thích: Mỗi chuỗi nhúng chứa nhúng thị giác và nhúng văn bản hoặc chỉ chứa nhúng văn bản.
Đối với chuỗi nhúng văn bản thuần túy, nhúng vị trí quay (rotary position embedding) không có sự khác biệt so với các LLM hiện đại. Ví dụ: input_ids: [T T T T T], trong đó T là ký hiệu cho văn bản. position_ids thời gian: [0, 1, 2, 3, 4] position_ids chiều cao: [0, 1, 2, 3, 4] position_ids chiều rộng: [0, 1, 2, 3, 4]
Đối với chuỗi nhúng thị giác và văn bản, chúng ta tính nhúng vị trí xoay 3D cho phần thị giác và nhúng vị trí xoay 1D cho phần văn bản. Ví dụ: Thời gian (Temporal): 3 patch, đại diện cho các phân đoạn khác nhau của video theo thời gian. Chiều cao (Height): 2 patch, chia mỗi khung hình theo chiều dọc. Chiều rộng (Width): 2 patch, chia mỗi khung hình theo chiều ngang. Chúng ta cũng có một số tham số quan trọng: fps (Frames Per Second): Tốc độ khung hình của video, được đặt là 1. Điều này có nghĩa là một khung hình được xử lý mỗi giây. tokens_per_second: Đây là một tham số quan trọng. Nó quy định số lượng “bước thời gian” hoặc “token thời gian” được đóng gói về mặt khái niệm trong khoảng thời gian một giây của video. Trong trường hợp này, chúng ta có 25 token mỗi giây. Vì vậy, mỗi giây của video sẽ được biểu diễn bằng 25 điểm thời gian riêng biệt. Về cơ bản, nó xác định độ hạt thời gian. temporal_patch_size: Số khung hình tạo thành một patch thời gian. Ở đây, nó là 2 khung hình. interval: Kích thước bước cho các ID vị trí thời gian, được tính bằng tokens_per_second temporal_patch_size / fps. Trong trường hợp này, 25 2 / 1 = 50. Điều này có nghĩa là mỗi patch thời gian sẽ có sự chênh lệch 50 trong các ID vị trí thời gian. input_ids: [V V V V V V V V V V V V T T T T T], ở đây V là cho thị giác. 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] Ở đây chúng ta tính position_ids bắt đầu của văn bản bằng position_ids thị giác lớn nhất cộng thêm 1.
Qwen2_5OmniThinkerConfig
lớp 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 )
Tham số
- audio_config (
Union[dict, ~configuration_utils.PreTrainedConfig], tùy chọn) — Đối tượng cấu hình hoặc từ điển của audio backbone. - vision_config (
Union[dict, ~configuration_utils.PreTrainedConfig], tùy chọn) — Đối tượng cấu hình hoặc từ điển của bộ khung thị giác. - text_config (
Union[dict, ~configuration_utils.PreTrainedConfig], tùy chọn) — Đối tượng cấu hình hoặc từ điển của bộ khung văn bản. - audio_token_index (
int, tùy chọn, mặc định là151646) — Chỉ số token âm thanh được dùng làm ký tự thay thế cho âm thanh đầu vào. - image_token_index (
int, tùy chọn, mặc định là151655) — Chỉ số token hình ảnh được dùng làm ký tự thay thế cho các hình ảnh đầu vào. - video_token_index (
int, tùy chọn, mặc định là151656) — Chỉ số token video được dùng làm ký tự thay thế cho các video đầu vào. - position_id_per_seconds (
int, tùy chọn, mặc định là 25) — Bước tăng của position id mỗi giây. - seconds_per_chunk (
int, tùy chọn, mặc định là 2) — Thời lượng tính bằng giây của khối dữ liệu âm thanh và video. - audio_start_token_id (
int, tùy chọn, mặc định là 151647) — Chỉ số token bắt đầu âm thanh để mã hóa prompt âm thanh. - audio_end_token_id (
int, tùy chọn, mặc định là 151648) — Chỉ số token kết thúc âm thanh để mã hóa prompt âm thanh. - user_token_id (`int, tuỳ chọn, mặc định là 872) — Chỉ số token người dùng để mã hóa token người dùng.
- initializer_range (
float, tùy chọn, mặc định là0.02) — Độ lệch chuẩn của truncated_normal_initializer để khởi tạo tất cả các ma trận trọng số. - tie_word_embeddings (
bool, tùy chọn, mặc định làFalse) — Có nên gắn kết các trọng số nhúng theo ánh xạtied_weights_keyscủa mô hình hay không.
Đây là lớp cấu hình để lưu trữ cấu hình của một mô hình Qwen2 5 OmniModel. Nó được sử dụng để khởi tạo một mô hình Qwen2 5 Omni theo các đối số được chỉ định, xác định kiến trúc của mô hình. Khởi tạo một cấu hình với các giá trị mặc định sẽ tạo ra một cấu hình tương tự như cấu hình của Qwen/Qwen2.5-Omni-7B
Các đối tượng cấu hình kế thừa từ PreTrainedConfig và có thể được sử dụng để kiểm soát đầu ra của mô hình. Đọc tài liệu từ PreTrainedConfig để biết thêm thông tin.
Ví dụ:
>>> 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
lớp transformers.Qwen2_5OmniThinkerModel
< source >( config: Qwen2_5OmniThinkerConfig )
Tham số
- config (Qwen2_5OmniThinkerConfig) — Lớp cấu hình mô hình chứa tất cả các tham số của mô hình. Khởi tạo bằng tệp cấu hình sẽ không tải trọng số liên quan đến mô hình, chỉ tải cấu hình. Xem phương thức from_pretrained() để tải trọng số mô hình.
Mô hình Qwen2.5OmniThinker bao gồm một bộ khung âm thanh và một mô hình ngôn ngữ.
Mô hình này kế thừa từ PreTrainedModel. Xem tài liệu của lớp cha để biết các phương thức chung mà thư viện triển khai cho tất cả các mô hình của nó (chẳng hạn như tải xuống hoặc lưu trữ, thay đổi kích thước các nhúng đầu vào, cắt tỉa các đầu, v.v.)
Mô hình này cũng là một lớp con của torch.nn.Module trong PyTorch. Hãy sử dụng nó như một Module PyTorch thông thường và tham khảo tài liệu PyTorch cho mọi vấn đề liên quan đến cách sử dụng và hành vi chung.
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Noneinput_features: typing.Optional[torch.Tensor] = Nonepixel_values: typing.Optional[torch.Tensor] = Nonepixel_values_videos: typing.Optional[torch.Tensor] = 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.Tensor] = 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.Tensor)
Tham số
- input_ids (
torch.LongTensorcó dạng(batch_size, sequence_length), tùy chọn) — Chỉ số của các token trong chuỗi đầu vào theo từ điển. Mặc định, padding sẽ bị bỏ qua.Các chỉ số có thể được lấy bằng cách sử dụng AutoTokenizer. Xem PreTrainedTokenizer.encode() và PreTrainedTokenizer.call() để biết thêm chi tiết.
- input_features (
torch.Tensorcó hình dạng(batch_size, sequence_length, feature_dim), tùy chọn) — Các tensor tương ứng với các đặc trưng âm thanh đầu vào. Các đặc trưng âm thanh có thể được lấy bằng cách sử dụng WhisperFeatureExtractor. Xem WhisperFeatureExtractor.call() để biết chi tiết (Qwen2_5OmniProcessor sử dụng WhisperFeatureExtractor để xử lý âm thanh). - pixel_values (
torch.Tensorcó hình dạng(batch_size, num_channels, image_size, image_size), tùy chọn) — Các tensor tương ứng với các hình ảnh đầu vào. Giá trị pixel có thể được lấy bằng cách sử dụng Qwen2VLImageProcessor. Xem Qwen2VLImageProcessor.call() để biết chi tiết (Qwen2_5OmniProcessor sử dụng Qwen2VLImageProcessor để xử lý hình ảnh). - pixel_values_videos (
torch.Tensorcó hình dạng(batch_size, num_frames, num_channels, frame_size, frame_size), tùy chọn) — Các tensor tương ứng với video đầu vào. Giá trị pixel cho video có thể được lấy bằng cách sử dụng Qwen2VLVideoProcessor. Xem Qwen2VLVideoProcessor.call() để biết chi tiết (Qwen2_5OmniProcessor sử dụng Qwen2VLVideoProcessor để xử lý video). - image_grid_thw (
torch.LongTensorcó hình dạng(num_images, 3), tùy chọn) — Trục thời gian, chiều cao và chiều rộng của hình dạng đặc trưng của từng hình ảnh trong LLM. - video_grid_thw (
torch.LongTensorcó hình dạng(num_videos, 3), tùy chọn) — Trục thời gian, chiều cao và chiều rộng của hình dạng đặc trưng của từng video trong LLM. - attention_mask (
torch.Tensorcó hình dạng(batch_size, sequence_length), tùy chọn) — Mặt nạ để tránh thực hiện chú ý trên các chỉ số token đệm. Các giá trị mặt nạ được chọn trong[0, 1]:- 1 cho các token không bị che,
- 0 cho các token bị che.
- feature_attention_mask (
torch.Tensorcó hình dạng(batch_size, feature_sequence_length), tùy chọn) — Mặt nạ để tránh thực hiện attention trên các chỉ mục đặc trưng đệm. Các giá trị mặt nạ được chọn trong[0, 1]:- 1 cho các token không bị che,
- 0 cho các token bị che.
- audio_feature_lengths (
torch.LongTensorcó hình dạng(num_audios), tùy chọn) — Độ dài của hình dạng đặc trưng của mỗi âm thanh trong LLM. - position_ids (
torch.LongTensorcó hình dạng(batch_size, sequence_length), tùy chọn) — Chỉ số vị trí của các token trong mỗi chuỗi đầu vào trong các position embeddings. Được chọn trong khoảng[0, config.n_positions - 1]. - past_key_values (
~cache_utils.Cache, tuỳ chọn) — Các hidden-state đã tính trước (key và value trong các khối self-attention và cross-attention) có thể được sử dụng để tăng tốc giải mã tuần tự. Điều này thường bao gồmpast_key_valuesđược trả về bởi mô hình ở một giai đoạn giải mã trước đó, khiuse_cache=Truehoặcconfig.use_cache=True.Chỉ cho phép Cache instance làm đầu vào, xem hướng dẫn kv cache của chúng tôi. Nếu không truyền
past_key_values, DynamicCache sẽ được khởi tạo theo mặc định.Mô hình sẽ xuất ra cùng định dạng cache được đưa vào làm đầu vào.
Nếu
past_key_valuesđược sử dụng, người dùng được kỳ vọng chỉ nhậpinput_idschưa được xử lý (những phần chưa có trạng thái key value quá khứ được cung cấp cho mô hình này) có hình dạng(batch_size, unprocessed_length)thay vì toàn bộinput_idscó hình dạng(batch_size, sequence_length). - inputs_embeds (
torch.Tensorcó hình dạng(batch_size, sequence_length, hidden_size), tùy chọn) — Tùy chọn, thay vì truyềninput_ids, bạn có thể chọn truyền trực tiếp một biểu diễn nhúng. Điều này hữu ích nếu bạn muốn kiểm soát nhiều hơn cách chuyển đổi các chỉ sốinput_idsthành các vector liên quan so với ma trận tra cứu nhúng nội bộ của mô hình. - use_cache (
bool, tùy chọn) — Nếu đặt thànhTrue, các trạng thái key value củapast_key_valuessẽ được trả về và có thể được sử dụng để tăng tốc quá trình giải mã (xempast_key_values). - use_audio_in_video (
bool, tùy chọn) — Có sử dụng track âm thanh trong video hay không, phải giống với tham số trongprocess_audio_info. - video_second_per_grid (
torch.LongTensorcó hình dạng(num_videos), tùy chọn) — Số giây trên mỗi lưới cho từng video, được sử dụng cho ánh xạ đặc trưng theo thời gian. - mm_encoder_outputs (
dict[str, ~modeling_outputs.BaseModelOutputWithPooling], tùy chọn) — Dict trong đó các khóa là các chế độ (modality) được hỗ trợ và các giá trị là kết quả mã hóa cho chế độ đó. Mỗi kết quả mã hóa là một tuple gồm (pooler_output, tùy chọn:last_hidden_states, tùy chọn:hidden_states, tùy chọn:attentions)pooler_outputcó hình dạng(batch_size, sequence_length, hidden_size), tùy chọn) là một chuỗi các đặc trưng đa phương tiện của bộ mã hóa đã được hợp nhất vào các nhúng văn bản.
Trả về
BaseModelOutputWithPast hoặc tuple(torch.Tensor)
Một BaseModelOutputWithPast hoặc một tuple của
torch.Tensor (nếu return_dict=False được truyền hoặc khi config.return_dict=False) bao gồm các
thành phần khác nhau tùy thuộc vào cấu hình (Qwen2_5OmniConfig) và đầu vào.
Phương thức forward của Qwen2_5OmniThinkerModel ghi đè lên phương thức đặc biệt __call__.
Mặc dù công thức cho bước truyền tiến cần được định nghĩa bên trong hàm này, người dùng nên gọi instance của
Modulesau đó thay vì gọi hàm này, vì instanceModulesẽ đảm nhận việc thực hiện các bước tiền xử lý và hậu xử lý, trong khi hàm này sẽ lặng lẽ bỏ qua chúng.
last_hidden_state (
torch.Tensorcó hình dạng(batch_size, sequence_length, hidden_size)) — Chuỗi các hidden-state tại đầu ra của lớp cuối cùng của mô hình.Nếu
past_key_valuesđược sử dụng, chỉ có hidden-state cuối cùng của các chuỗi có shape(batch_size, 1, hidden_size)được xuất ra.past_key_values (
Cache, tùy chọn, được trả về khiuse_cache=Trueđược truyền vào hoặc khiconfig.use_cache=True) — Đây là một instance của Cache. Để biết thêm chi tiết, hãy xem hướng dẫn về kv cache của chúng tôi.Chứa các hidden-states đã được tính trước (key và values trong các khối self-attention và tùy chọn nếu
config.is_encoder_decoder=Truetrong các khối cross-attention) có thể được sử dụng (xem đầu vàopast_key_values) để tăng tốc độ giải mã tuần tự.hidden_states (
tuple(torch.Tensor), tuỳ chọn, được trả về khioutput_hidden_states=Trueđược truyền vào hoặc khiconfig.output_hidden_states=True) — Bộ tuple củatorch.Tensor(một cho đầu ra của embeddings, nếu mô hình có lớp embedding, + một cho đầu ra của mỗi lớp) có hình dạng(batch_size, sequence_length, hidden_size).Trạng thái ẩn của mô hình tại đầu ra của mỗi lớp cùng với các đầu ra embedding ban đầu tùy chọn.
attentions (
tuple(torch.Tensor), tuỳ chọn, được trả về khioutput_attentions=Trueđược truyền vào hoặc khiconfig.output_attentions=True) — Tuple củatorch.Tensor(một cho mỗi lớp) có hình dạng(batch_size, num_heads, sequence_length, sequence_length).Trọng số chú ý sau softmax của attention, được sử dụng để tính trung bình có trọng số trong các đầu self-attention.
Qwen2_5OmniThinkerForConditionalGeneration
lớp transformers.Qwen2_5OmniThinkerForConditionalGeneration
< source >( config: Qwen2_5OmniThinkerConfig )
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Noneinput_features: typing.Optional[torch.Tensor] = Nonepixel_values: typing.Optional[torch.Tensor] = Nonepixel_values_videos: typing.Optional[torch.Tensor] = 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.Tensor] = 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'> ) → CausalLMOutputWithPast or tuple(torch.Tensor)
Tham số
- input_ids (
torch.LongTensorcó dạng(batch_size, sequence_length), tùy chọn) — Chỉ số của các token trong chuỗi đầu vào theo từ điển. Mặc định, padding sẽ bị bỏ qua.Các chỉ số có thể được lấy bằng cách sử dụng AutoTokenizer. Xem PreTrainedTokenizer.encode() và PreTrainedTokenizer.call() để biết thêm chi tiết.
- input_features (
torch.Tensorcó hình dạng(batch_size, sequence_length, feature_dim), tùy chọn) — Các tensor tương ứng với các đặc trưng âm thanh đầu vào. Các đặc trưng âm thanh có thể được lấy bằng cách sử dụng WhisperFeatureExtractor. Xem WhisperFeatureExtractor.call() để biết chi tiết (Qwen2_5OmniProcessor sử dụng WhisperFeatureExtractor để xử lý âm thanh). - pixel_values (
torch.Tensorcó hình dạng(batch_size, num_channels, image_size, image_size), tùy chọn) — Các tensor tương ứng với các hình ảnh đầu vào. Giá trị pixel có thể được lấy bằng cách sử dụng Qwen2VLImageProcessor. Xem Qwen2VLImageProcessor.call() để biết chi tiết (Qwen2_5OmniProcessor sử dụng Qwen2VLImageProcessor để xử lý hình ảnh). - pixel_values_videos (
torch.Tensorcó hình dạng(batch_size, num_frames, num_channels, frame_size, frame_size), tùy chọn) — Các tensor tương ứng với video đầu vào. Giá trị pixel cho video có thể được lấy bằng cách sử dụng Qwen2VLVideoProcessor. Xem Qwen2VLVideoProcessor.call() để biết chi tiết (Qwen2_5OmniProcessor sử dụng Qwen2VLVideoProcessor để xử lý video). - image_grid_thw (
torch.LongTensorcó hình dạng(num_images, 3), tùy chọn) — Trục thời gian, chiều cao và chiều rộng của hình dạng đặc trưng của từng hình ảnh trong LLM. - video_grid_thw (
torch.LongTensorcó hình dạng(num_videos, 3), tùy chọn) — Trục thời gian, chiều cao và chiều rộng của hình dạng đặc trưng của từng video trong LLM. - attention_mask (
torch.Tensorcó hình dạng(batch_size, sequence_length), tùy chọn) — Mặt nạ để tránh thực hiện chú ý trên các chỉ số token đệm. Các giá trị mặt nạ được chọn trong[0, 1]:- 1 cho các token không bị che,
- 0 cho các token bị che.
- feature_attention_mask (
torch.Tensorcó hình dạng(batch_size, feature_sequence_length), tùy chọn) — Mặt nạ để tránh thực hiện attention trên các chỉ mục đặc trưng đệm. Các giá trị mặt nạ được chọn trong[0, 1]:- 1 cho các token không bị che,
- 0 cho các token bị che.
- audio_feature_lengths (
torch.LongTensorcó hình dạng(num_audios), tùy chọn) — Độ dài của hình dạng đặc trưng của mỗi âm thanh trong LLM. - position_ids (
torch.LongTensorcó hình dạng(batch_size, sequence_length), tùy chọn) — Chỉ số vị trí của các token trong mỗi chuỗi đầu vào trong các position embeddings. Được chọn trong khoảng[0, config.n_positions - 1]. - past_key_values (
~cache_utils.Cache, tuỳ chọn) — Các hidden-state đã tính trước (key và value trong các khối self-attention và cross-attention) có thể được sử dụng để tăng tốc giải mã tuần tự. Điều này thường bao gồmpast_key_valuesđược trả về bởi mô hình ở một giai đoạn giải mã trước đó, khiuse_cache=Truehoặcconfig.use_cache=True.Chỉ cho phép Cache instance làm đầu vào, xem hướng dẫn kv cache của chúng tôi. Nếu không truyền
past_key_values, DynamicCache sẽ được khởi tạo theo mặc định.Mô hình sẽ xuất ra cùng định dạng cache được đưa vào làm đầu vào.
Nếu
past_key_valuesđược sử dụng, người dùng được kỳ vọng chỉ nhậpinput_idschưa được xử lý (những phần chưa có trạng thái key value quá khứ được cung cấp cho mô hình này) có hình dạng(batch_size, unprocessed_length)thay vì toàn bộinput_idscó hình dạng(batch_size, sequence_length). - inputs_embeds (
torch.Tensorcó hình dạng(batch_size, sequence_length, hidden_size), tùy chọn) — Tùy chọn, thay vì truyềninput_ids, bạn có thể chọn truyền trực tiếp một biểu diễn nhúng. Điều này hữu ích nếu bạn muốn kiểm soát nhiều hơn cách chuyển đổi các chỉ sốinput_idsthành các vector liên quan so với ma trận tra cứu nhúng nội bộ của mô hình. - labels (
torch.LongTensorcó shape(batch_size, sequence_length), tùy chọn) — Nhãn để tính toán tổn thất mô hình hóa ngôn ngữ có che (masked language modeling loss). Chỉ số phải nằm trong[0, ..., config.vocab_size]hoặc -100 (xem docstring củainput_ids). Các token có chỉ số được đặt thành-100sẽ bị bỏ qua (che), tổn thất chỉ được tính cho các token có nhãn nằm trong[0, ..., config.vocab_size]. - use_cache (
bool, tùy chọn) — Nếu đặt thànhTrue, các trạng thái key value củapast_key_valuessẽ được trả về và có thể được sử dụng để tăng tốc quá trình giải mã (xempast_key_values). - use_audio_in_video (
bool, tùy chọn) — Có sử dụng track âm thanh trong video hay không, phải giống với tham số trongprocess_audio_info. - video_second_per_grid (
torch.LongTensorcó hình dạng(num_videos), tùy chọn) — Số giây trên mỗi lưới cho từng video, được sử dụng cho ánh xạ đặc trưng theo thời gian. - mm_encoder_outputs (
dict[str, ~modeling_outputs.BaseModelOutputWithPooling], tùy chọn) — Dict trong đó các khóa là các chế độ (modality) được hỗ trợ và các giá trị là kết quả mã hóa cho chế độ đó. Mỗi kết quả mã hóa là một tuple gồm (pooler_output, tùy chọn:last_hidden_states, tùy chọn:hidden_states, tùy chọn:attentions)pooler_outputcó hình dạng(batch_size, sequence_length, hidden_size), tùy chọn) là một chuỗi các đặc trưng đa phương tiện của bộ mã hóa đã được hợp nhất vào các nhúng văn bản.
Trả về
CausalLMOutputWithPast hoặc tuple(torch.Tensor)
Một CausalLMOutputWithPast hoặc một tuple của
torch.Tensor (nếu return_dict=False được truyền hoặc khi config.return_dict=False) bao gồm các
thành phần khác nhau tùy thuộc vào cấu hình (Qwen2_5OmniConfig) và đầu vào.
Phương thức forward của Qwen2_5OmniThinkerForConditionalGeneration ghi đè lên phương thức đặc biệt __call__.
Mặc dù công thức cho bước truyền tiến cần được định nghĩa bên trong hàm này, người dùng nên gọi instance của
Modulesau đó thay vì gọi hàm này, vì instanceModulesẽ đảm nhận việc thực hiện các bước tiền xử lý và hậu xử lý, trong khi hàm này sẽ lặng lẽ bỏ qua chúng.
loss (
torch.Tensorcó shape(1,), tùy chọn, được trả về khilabelsđược cung cấp) — Loss của language modeling (cho next-token prediction).logits (
torch.Tensorcó hình dạng(batch_size, sequence_length, config.vocab_size)) — Điểm dự đoán của đầu mô hình hóa ngôn ngữ (điểm cho mỗi token trong từ vựng trước SoftMax).past_key_values (
Cache, tùy chọn, được trả về khiuse_cache=Trueđược truyền vào hoặc khiconfig.use_cache=True) — Đây là một instance của Cache. Để biết thêm chi tiết, hãy xem hướng dẫn về kv cache của chúng tôi.Chứa các hidden-states đã được tính trước (key và values trong các khối self-attention) có thể được sử dụng (xem đầu vào
past_key_values) để tăng tốc độ giải mã tuần tự.hidden_states (
tuple(torch.Tensor), tuỳ chọn, được trả về khioutput_hidden_states=Trueđược truyền vào hoặc khiconfig.output_hidden_states=True) — Bộ tuple củatorch.Tensor(một cho đầu ra của embeddings, nếu mô hình có lớp embedding, + một cho đầu ra của mỗi lớp) có hình dạng(batch_size, sequence_length, hidden_size).Trạng thái ẩn của mô hình tại đầu ra của mỗi lớp cùng với các đầu ra embedding ban đầu tùy chọn.
attentions (
tuple(torch.Tensor), tuỳ chọn, được trả về khioutput_attentions=Trueđược truyền vào hoặc khiconfig.output_attentions=True) — Tuple củatorch.Tensor(một cho mỗi lớp) có hình dạng(batch_size, num_heads, sequence_length, sequence_length).Trọng số chú ý sau softmax của attention, được sử dụng để tính trung bình có trọng số trong các đầu self-attention.
Ví dụ:
>>> 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: Tensorfeature_attention_mask: typing.Optional[torch.LongTensor] = Noneaudio_feature_lengths: typing.Optional[torch.LongTensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithPooling or tuple(torch.Tensor)
Tham số
- input_features (
torch.Tensor) — Các tensor tương ứng với các âm thanh đầu vào. - feature_attention_mask (
torch.LongTensor, tùy chọn) — Mặt nạ để tránh thực hiện chú ý trên các chỉ số đặc trưng đệm. Các giá trị mặt nạ được chọn trong[0, 1]: - audio_feature_lengths (
torch.LongTensorcó hình dạng(num_audios), tùy chọn) — Độ dài của hình dạng đặc trưng của mỗi âm thanh trong LLM.
Trả về
BaseModelOutputWithPooling hoặc tuple(torch.Tensor)
Một BaseModelOutputWithPooling hoặc một tuple của
torch.Tensor (nếu return_dict=False được truyền hoặc khi config.return_dict=False) bao gồm các
thành phần khác nhau tùy thuộc vào cấu hình (Qwen2_5OmniConfig) và đầu vào.
last_hidden_state (
torch.Tensorcó hình dạng(batch_size, sequence_length, hidden_size)) — Chuỗi các hidden-state tại đầu ra của lớp cuối cùng của mô hình.pooler_output (
torch.Tensorcó hình dạng(batch_size, hidden_size)) — Trạng thái ẩn của lớp cuối cùng của token đầu tiên trong chuỗi (token phân loại) sau khi được xử lý thêm qua các lớp được sử dụng cho tác vụ tiền huấn luyện bổ trợ. Ví dụ, đối với các mô hình thuộc họ BERT, giá trị này trả về token phân loại sau khi được xử lý qua một lớp tuyến tính và một hàm kích hoạt tanh. Trọng số của lớp tuyến tính được huấn luyện từ mục tiêu dự đoán câu tiếp theo (phân loại) trong quá trình tiền huấn luyện.hidden_states (
tuple(torch.Tensor), tuỳ chọn, được trả về khioutput_hidden_states=Trueđược truyền vào hoặc khiconfig.output_hidden_states=True) — Bộ tuple củatorch.Tensor(một cho đầu ra của embeddings, nếu mô hình có lớp embedding, + một cho đầu ra của mỗi lớp) có hình dạng(batch_size, sequence_length, hidden_size).Trạng thái ẩn của mô hình tại đầu ra của mỗi lớp cùng với các đầu ra embedding ban đầu tùy chọn.
attentions (
tuple(torch.Tensor), tuỳ chọn, được trả về khioutput_attentions=Trueđược truyền vào hoặc khiconfig.output_attentions=True) — Tuple củatorch.Tensor(một cho mỗi lớp) có hình dạng(batch_size, num_heads, sequence_length, sequence_length).Trọng số chú ý sau softmax của attention, được sử dụng để tính trung bình có trọng số trong các đầu self-attention.
Ví dụ:
>>> 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: Tensorimage_grid_thw: typing.Optional[torch.LongTensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithPooling or tuple(torch.Tensor)
Tham số
- pixel_values (
torch.Tensorcó hình dạng(batch_size, num_channels, image_size, image_size)) — Các tensor tương ứng với các hình ảnh đầu vào. - image_grid_thw (
torch.LongTensorcó hình dạng(num_images, 3), tùy chọn) — Trục thời gian, chiều cao và chiều rộng của hình dạng đặc trưng của từng hình ảnh trong LLM.
Trả về
BaseModelOutputWithPooling hoặc tuple(torch.Tensor)
Một BaseModelOutputWithPooling hoặc một tuple của
torch.Tensor (nếu return_dict=False được truyền hoặc khi config.return_dict=False) bao gồm các
thành phần khác nhau tùy thuộc vào cấu hình (Qwen2_5OmniConfig) và đầu vào.
last_hidden_state (
torch.Tensorcó hình dạng(batch_size, sequence_length, hidden_size)) — Chuỗi các hidden-state tại đầu ra của lớp cuối cùng của mô hình.pooler_output (
torch.Tensorcó hình dạng(batch_size, hidden_size)) — Trạng thái ẩn của lớp cuối cùng của token đầu tiên trong chuỗi (token phân loại) sau khi được xử lý thêm qua các lớp được sử dụng cho tác vụ tiền huấn luyện bổ trợ. Ví dụ, đối với các mô hình thuộc họ BERT, giá trị này trả về token phân loại sau khi được xử lý qua một lớp tuyến tính và một hàm kích hoạt tanh. Trọng số của lớp tuyến tính được huấn luyện từ mục tiêu dự đoán câu tiếp theo (phân loại) trong quá trình tiền huấn luyện.hidden_states (
tuple(torch.Tensor), tuỳ chọn, được trả về khioutput_hidden_states=Trueđược truyền vào hoặc khiconfig.output_hidden_states=True) — Bộ tuple củatorch.Tensor(một cho đầu ra của embeddings, nếu mô hình có lớp embedding, + một cho đầu ra của mỗi lớp) có hình dạng(batch_size, sequence_length, hidden_size).Trạng thái ẩn của mô hình tại đầu ra của mỗi lớp cùng với các đầu ra embedding ban đầu tùy chọn.
attentions (
tuple(torch.Tensor), tuỳ chọn, được trả về khioutput_attentions=Trueđược truyền vào hoặc khiconfig.output_attentions=True) — Tuple củatorch.Tensor(một cho mỗi lớp) có hình dạng(batch_size, num_heads, sequence_length, sequence_length).Trọng số chú ý sau softmax của attention, được sử dụng để tính trung bình có trọng số trong các đầu self-attention.
Ví dụ:
>>> 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: Tensorvideo_grid_thw: typing.Optional[torch.LongTensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithPooling or tuple(torch.Tensor)
Tham số
- pixel_values_videos (
torch.Tensorcó hình dạng(batch_size, num_channels, image_size, image_size)) — Các tensor tương ứng với các video đầu vào. - video_grid_thw (
torch.LongTensorcó hình dạng(num_videos, 3), tùy chọn) — Trục thời gian, chiều cao và chiều rộng của hình dạng đặc trưng của từng video trong LLM.
Trả về
BaseModelOutputWithPooling hoặc tuple(torch.Tensor)
Một BaseModelOutputWithPooling hoặc một tuple của
torch.Tensor (nếu return_dict=False được truyền hoặc khi config.return_dict=False) bao gồm các
thành phần khác nhau tùy thuộc vào cấu hình (Qwen2_5OmniConfig) và đầu vào.
last_hidden_state (
torch.Tensorcó hình dạng(batch_size, sequence_length, hidden_size)) — Chuỗi các hidden-state tại đầu ra của lớp cuối cùng của mô hình.pooler_output (
torch.Tensorcó hình dạng(batch_size, hidden_size)) — Trạng thái ẩn của lớp cuối cùng của token đầu tiên trong chuỗi (token phân loại) sau khi được xử lý thêm qua các lớp được sử dụng cho tác vụ tiền huấn luyện bổ trợ. Ví dụ, đối với các mô hình thuộc họ BERT, giá trị này trả về token phân loại sau khi được xử lý qua một lớp tuyến tính và một hàm kích hoạt tanh. Trọng số của lớp tuyến tính được huấn luyện từ mục tiêu dự đoán câu tiếp theo (phân loại) trong quá trình tiền huấn luyện.hidden_states (
tuple(torch.Tensor), tuỳ chọn, được trả về khioutput_hidden_states=Trueđược truyền vào hoặc khiconfig.output_hidden_states=True) — Bộ tuple củatorch.Tensor(một cho đầu ra của embeddings, nếu mô hình có lớp embedding, + một cho đầu ra của mỗi lớp) có hình dạng(batch_size, sequence_length, hidden_size).Trạng thái ẩn của mô hình tại đầu ra của mỗi lớp cùng với các đầu ra embedding ban đầu tùy chọn.
attentions (
tuple(torch.Tensor), tuỳ chọn, được trả về khioutput_attentions=Trueđược truyền vào hoặc khiconfig.output_attentions=True) — Tuple củatorch.Tensor(một cho mỗi lớp) có hình dạng(batch_size, num_heads, sequence_length, sequence_length).Trọng số chú ý sau softmax của attention, được sử dụng để tính trung bình có trọng số trong các đầu self-attention.
Ví dụ:
>>> 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
lớp transformers.Qwen2_5OmniThinkerTextModel
< source >( config: Qwen2_5OmniTextConfig )
Tham số
- config (Qwen2_5OmniTextConfig) — Lớp cấu hình mô hình chứa tất cả các tham số của mô hình. Khởi tạo bằng tệp cấu hình sẽ không tải trọng số liên quan đến mô hình, chỉ tải cấu hình. Xem phương thức from_pretrained() để tải trọng số mô hình.
Mô hình văn bản Qwen2 5 Omni thuần túy, xuất ra các trạng thái ẩn thô mà không có bất kỳ đầu cụ thể nào ở phía trên.
Mô hình này kế thừa từ PreTrainedModel. Xem tài liệu của lớp cha để biết các phương thức chung mà thư viện triển khai cho tất cả các mô hình của nó (chẳng hạn như tải xuống hoặc lưu trữ, thay đổi kích thước các nhúng đầu vào, cắt tỉa các đầu, v.v.)
Mô hình này cũng là một lớp con của torch.nn.Module trong PyTorch. Hãy sử dụng nó như một Module PyTorch thông thường và tham khảo tài liệu PyTorch cho mọi vấn đề liên quan đến cách sử dụng và hành vi chung.
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.Tensor] = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.modeling_flash_attention_utils.FlashAttentionKwargs'> ) → BaseModelOutputWithPast or tuple(torch.Tensor)
Tham số
- input_ids (
torch.LongTensorcó dạng(batch_size, sequence_length), tùy chọn) — Chỉ số của các token trong chuỗi đầu vào theo từ điển. Mặc định, padding sẽ bị bỏ qua.Các chỉ số có thể được lấy bằng cách sử dụng AutoTokenizer. Xem PreTrainedTokenizer.encode() và PreTrainedTokenizer.call() để biết thêm chi tiết.
- attention_mask (
torch.Tensorcó hình dạng(batch_size, sequence_length), tùy chọn) — Mặt nạ để tránh thực hiện chú ý trên các chỉ số token đệm. Các giá trị mặt nạ được chọn trong[0, 1]:- 1 cho các token không bị che,
- 0 cho các token bị che.
- position_ids (
torch.LongTensorcó hình dạng(batch_size, sequence_length), tùy chọn) — Chỉ số vị trí của các token trong mỗi chuỗi đầu vào trong các position embeddings. Được chọn trong khoảng[0, config.n_positions - 1]. - past_key_values (
~cache_utils.Cache, tuỳ chọn) — Các hidden-state đã tính trước (key và value trong các khối self-attention và cross-attention) có thể được sử dụng để tăng tốc giải mã tuần tự. Điều này thường bao gồmpast_key_valuesđược trả về bởi mô hình ở một giai đoạn giải mã trước đó, khiuse_cache=Truehoặcconfig.use_cache=True.Chỉ cho phép Cache instance làm đầu vào, xem hướng dẫn kv cache của chúng tôi. Nếu không truyền
past_key_values, DynamicCache sẽ được khởi tạo theo mặc định.Mô hình sẽ xuất ra cùng định dạng cache được đưa vào làm đầu vào.
Nếu
past_key_valuesđược sử dụng, người dùng được kỳ vọng chỉ nhậpinput_idschưa được xử lý (những phần chưa có trạng thái key value quá khứ được cung cấp cho mô hình này) có hình dạng(batch_size, unprocessed_length)thay vì toàn bộinput_idscó hình dạng(batch_size, sequence_length). - inputs_embeds (
torch.Tensorcó hình dạng(batch_size, sequence_length, hidden_size), tùy chọn) — Tùy chọn, thay vì truyềninput_ids, bạn có thể chọn truyền trực tiếp một biểu diễn nhúng. Điều này hữu ích nếu bạn muốn kiểm soát nhiều hơn cách chuyển đổi các chỉ sốinput_idsthành các vector liên quan so với ma trận tra cứu nhúng nội bộ của mô hình. - use_cache (
bool, tùy chọn) — Nếu đặt thànhTrue, các trạng thái key value củapast_key_valuessẽ được trả về và có thể được sử dụng để tăng tốc quá trình giải mã (xempast_key_values).
Trả về
BaseModelOutputWithPast hoặc tuple(torch.Tensor)
Một BaseModelOutputWithPast hoặc một tuple của
torch.Tensor (nếu return_dict=False được truyền hoặc khi config.return_dict=False) bao gồm các
thành phần khác nhau tùy thuộc vào cấu hình (Qwen2_5OmniConfig) và đầu vào.
Phương thức forward của Qwen2_5OmniThinkerTextModel ghi đè lên phương thức đặc biệt __call__.
Mặc dù công thức cho bước truyền tiến cần được định nghĩa bên trong hàm này, người dùng nên gọi instance của
Modulesau đó thay vì gọi hàm này, vì instanceModulesẽ đảm nhận việc thực hiện các bước tiền xử lý và hậu xử lý, trong khi hàm này sẽ lặng lẽ bỏ qua chúng.
last_hidden_state (
torch.Tensorcó hình dạng(batch_size, sequence_length, hidden_size)) — Chuỗi các hidden-state tại đầu ra của lớp cuối cùng của mô hình.Nếu
past_key_valuesđược sử dụng, chỉ có hidden-state cuối cùng của các chuỗi có shape(batch_size, 1, hidden_size)được xuất ra.past_key_values (
Cache, tùy chọn, được trả về khiuse_cache=Trueđược truyền vào hoặc khiconfig.use_cache=True) — Đây là một instance của Cache. Để biết thêm chi tiết, hãy xem hướng dẫn về kv cache của chúng tôi.Chứa các hidden-states đã được tính trước (key và values trong các khối self-attention và tùy chọn nếu
config.is_encoder_decoder=Truetrong các khối cross-attention) có thể được sử dụng (xem đầu vàopast_key_values) để tăng tốc độ giải mã tuần tự.hidden_states (
tuple(torch.Tensor), tuỳ chọn, được trả về khioutput_hidden_states=Trueđược truyền vào hoặc khiconfig.output_hidden_states=True) — Bộ tuple củatorch.Tensor(một cho đầu ra của embeddings, nếu mô hình có lớp embedding, + một cho đầu ra của mỗi lớp) có hình dạng(batch_size, sequence_length, hidden_size).Trạng thái ẩn của mô hình tại đầu ra của mỗi lớp cùng với các đầu ra embedding ban đầu tùy chọn.
attentions (
tuple(torch.Tensor), tuỳ chọn, được trả về khioutput_attentions=Trueđược truyền vào hoặc khiconfig.output_attentions=True) — Tuple củatorch.Tensor(một cho mỗi lớp) có hình dạng(batch_size, num_heads, sequence_length, sequence_length).Trọng số chú ý sau softmax của attention, được sử dụng để tính trung bình có trọng số trong các đầu self-attention.
Qwen2_5OmniTalkerConfig
lớp 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 )
Tham số
- audio_token_index (
int, tùy chọn, mặc định là151646) — Chỉ số token âm thanh được dùng làm ký tự thay thế cho âm thanh đầu vào. - image_token_index (
int, tùy chọn, mặc định là151655) — Chỉ số token hình ảnh được dùng làm ký tự thay thế cho các hình ảnh đầu vào. - video_token_index (
int, tùy chọn, mặc định là151656) — Chỉ số token video được dùng làm ký tự thay thế cho các video đầu vào. - vocab_size (
int, tuỳ chọn, mặc định là8448) — Kích thước từ vựng của mô hình. Xác định số lượng token khác nhau có thể được biểu diễn bởiinput_ids. - tts_text_start_token_id (
int, tùy chọn, mặc định là 151860) — Chỉ số token bắt đầu văn bản tts để mã hóa phần bắt đầu của văn bản tts. - tts_text_end_token_id (
int, tùy chọn, mặc định là 151861) — Chỉ số token kết thúc văn bản tts để mã hóa phần kết thúc của văn bản tts. - tts_text_pad_token_id (
int, tùy chọn, mặc định là 151859) — Chỉ số token pad của văn bản tts để mã hóa phần đệm của văn bản tts. - tts_codec_start_token_id (
int, tùy chọn, mặc định là 8293) — Chỉ số token bắt đầu của tts codec để mã hóa phần bắt đầu của tts codec. - tts_codec_end_token_id (
int, tùy chọn, mặc định là 8294) — Chỉ số token kết thúc tts codec để mã hóa phần kết thúc của tts codec. - tts_codec_pad_token_id (
int, tùy chọn, mặc định là 8292) — Chỉ số token pad của tts codec để mã hóa phần đệm của tts codec. - tts_codec_mask_token_id (
int, tùy chọn, mặc định là 8296) — Chỉ số token mask của tts codec để mã hóa mask của tts codec. - vision_start_token_id (
int, tùy chọn, mặc định là151652) — ID của token đánh dấu điểm bắt đầu của một đoạn thị giác trong chuỗi đầu vào đa phương tiện. - vision_end_token_id (
int, tùy chọn, mặc định là151653) — ID của token đánh dấu kết thúc một đoạn thị giác trong chuỗi đầu vào đa phương thức. - embedding_size (
int, tùy chọn, mặc định là3584) — Kích thước của các embedding và hidden states. - hidden_size (
int, tùy chọn, mặc định là3584) — Kích thước của các biểu diễn ẩn. - intermediate_size (
int, tùy chọn, mặc định là18944) — Kích thước của các biểu diễn MLP. - num_hidden_layers (
int, tùy chọn, mặc định là28) — Số lượng lớp ẩn trong bộ giải mã Transformer. - num_attention_heads (
int, tùy chọn, mặc định là28) — Số lượng đầu chú ý (attention heads) cho mỗi lớp chú ý trong bộ giải mã Transformer. - num_key_value_heads (
int, tùy chọn, mặc định là4) — Đây là số lượng key_value heads cần được sử dụng để triển khai Grouped Query Attention. Nếunum_key_value_heads=num_attention_heads, mô hình sẽ sử dụng Multi Head Attention (MHA), nếunum_key_value_heads=1mô hình sẽ sử dụng Multi Query Attention (MQA), ngược lại sẽ sử dụng GQA. Khi chuyển đổi checkpoint multi-head sang checkpoint GQA, mỗi nhóm key và value head nên được xây dựng bằng cách meanpooling tất cả các head gốc trong nhóm đó. Để biết thêm chi tiết, hãy xem bài báo này. Nếu không được chỉ định, giá trị mặc định sẽ lànum_attention_heads. - hidden_act (
str, tùy chọn, mặc định làsilu) — Hàm kích hoạt phi tuyến (hàm hoặc chuỗi) trong bộ giải mã. Ví dụ,"gelu","relu","silu", v.v. - max_position_embeddings (
int, tùy chọn, mặc định là32768) — Chiều dài chuỗi tối đa mà mô hình này có thể được sử dụng. - rms_norm_eps (
float, tùy chọn, mặc định là1e-06) — Giá trị epsilon được sử dụng bởi các lớp chuẩn hóa rms. - head_dim (
int, tùy chọn, mặc định là128) — Kích thước chiều của đầu chú ý. Nếu là None, giá trị mặc định sẽ là hidden_size // num_attention_heads - use_cache (
bool, tùy chọn, mặc định làTrue) — Xác định xem mô hình có nên trả về các chú ý key/values cuối cùng hay không (không được sử dụng bởi tất cả các mô hình). Chỉ liên quan nếuconfig.is_decoder=Truehoặc khi mô hình là mô hình sinh chỉ có decoder. - tie_word_embeddings (
bool, tùy chọn, mặc định làFalse) — Có nên gắn kết các trọng số nhúng theo ánh xạtied_weights_keyscủa mô hình hay không. - use_sliding_window (
bool, tùy chọn, mặc định làFalse) — Có sử dụng chú ý cửa sổ trượt (sliding window attention) hay không. - sliding_window (
int, tùy chọn, mặc định là32768) — Kích thước cửa sổ của cơ chế chú ý cửa sổ trượt. Nếu làNone, sẽ không áp dụng cửa sổ trượt. - max_window_layers (
int, tùy chọn, mặc định là28) — Số lượng lớp sử dụng chú ý đầy đủ.max_window_layerslớp đầu tiên sẽ sử dụng chú ý đầy đủ, trong khi bất kỳ lớp nào thêm vào sau đó sẽ sử dụng SWA (Sliding Window Attention). - attention_dropout (
Union[float, int], tùy chọn, mặc định là0.0) — Tỷ lệ dropout cho các xác suất chú ý. - rope_parameters (
Union[~modeling_rope_utils.RopeParameters, dict], tùy chọn) — Từ điển chứa các tham số cấu hình cho các embedding RoPE. Từ điển phải chứa một giá trị chorope_thetavà tùy chọn các tham số được sử dụng để mở rộng trong trường hợp bạn muốn sử dụng RoPE vớimax_position_embeddingsdài hơn. - position_id_per_seconds (
int, tùy chọn, mặc định là 25) — Bước tăng của position id mỗi giây. - seconds_per_chunk (
int, tùy chọn, mặc định là 2) — Thời lượng tính bằng giây của khối dữ liệu âm thanh và video. - audio_start_token_id (
int, tùy chọn, mặc định là 151647) — Chỉ số token bắt đầu âm thanh để mã hóa prompt âm thanh. - audio_end_token_id (
int, tùy chọn, mặc định là 151648) — Chỉ số token kết thúc âm thanh để mã hóa prompt âm thanh. - initializer_range (
float, tùy chọn, mặc định là0.02) — Độ lệch chuẩn của truncated_normal_initializer để khởi tạo tất cả các ma trận trọng số. - spatial_merge_size (
int, tuỳ chọn, mặc định là2) — Kích thước của cửa sổ hợp nhất không gian được sử dụng để giảm số lượng token thị giác bằng cách hợp nhất các patch lân cận. - layer_types (
list[str], tùy chọn) — Một danh sách ánh xạ rõ ràng từng chỉ số lớp với kiểu lớp tương ứng. Nếu không được cung cấp, danh sách này sẽ được tạo tự động dựa trên các giá trị cấu hình. - pad_token_id (
int, tùy chọn) — Token id được sử dụng để đệm trong từ vựng.
Đây là lớp cấu hình để lưu trữ cấu hình của một mô hình Qwen2 5 OmniModel. Nó được sử dụng để khởi tạo một mô hình Qwen2 5 Omni theo các đối số được chỉ định, xác định kiến trúc của mô hình. Khởi tạo một cấu hình với các giá trị mặc định sẽ tạo ra một cấu hình tương tự như cấu hình của Qwen/Qwen2.5-Omni-7B
Các đối tượng cấu hình kế thừa từ PreTrainedConfig và có thể được sử dụng để kiểm soát đầu ra của mô hình. Đọc tài liệu từ PreTrainedConfig để biết thêm thông tin.
Ví dụ:
>>> 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
lớp 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.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = 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.Tensor)
Tham số
- input_ids (
torch.LongTensorcó dạng(batch_size, sequence_length), tùy chọn) — Chỉ số của các token trong chuỗi đầu vào theo từ điển. Mặc định, padding sẽ bị bỏ qua.Các chỉ số có thể được lấy bằng cách sử dụng AutoTokenizer. Xem PreTrainedTokenizer.encode() và PreTrainedTokenizer.call() để biết thêm chi tiết.
- attention_mask (
torch.Tensorcó hình dạng(batch_size, sequence_length), tùy chọn) — Mặt nạ để tránh thực hiện chú ý trên các chỉ số token đệm. Các giá trị mặt nạ được chọn trong[0, 1]:- 1 cho các token không bị che,
- 0 cho các token bị che.
- position_ids (
torch.LongTensorcó hình dạng(batch_size, sequence_length), tùy chọn) — Chỉ số vị trí của các token trong mỗi chuỗi đầu vào trong các position embeddings. Được chọn trong khoảng[0, config.n_positions - 1]. - past_key_values (
~cache_utils.Cache, tuỳ chọn) — Các hidden-state đã tính trước (key và value trong các khối self-attention và cross-attention) có thể được sử dụng để tăng tốc giải mã tuần tự. Điều này thường bao gồmpast_key_valuesđược trả về bởi mô hình ở một giai đoạn giải mã trước đó, khiuse_cache=Truehoặcconfig.use_cache=True.Chỉ cho phép Cache instance làm đầu vào, xem hướng dẫn kv cache của chúng tôi. Nếu không truyền
past_key_values, DynamicCache sẽ được khởi tạo theo mặc định.Mô hình sẽ xuất ra cùng định dạng cache được đưa vào làm đầu vào.
Nếu
past_key_valuesđược sử dụng, người dùng được kỳ vọng chỉ nhậpinput_idschưa được xử lý (những phần chưa có trạng thái key value quá khứ được cung cấp cho mô hình này) có hình dạng(batch_size, unprocessed_length)thay vì toàn bộinput_idscó hình dạng(batch_size, sequence_length). - thinker_reply_part (
torch.Tensorcó hình dạng(batch_size, sequence_length, hidden_size), tùy chọn) — Trạng thái ẩn từ đầu ra của mô hình thinker, đại diện cho phần phản hồi văn bản cần được xử lý. - inputs_embeds (
torch.Tensorcó hình dạng(batch_size, sequence_length, hidden_size), tùy chọn) — Tùy chọn, thay vì truyềninput_ids, bạn có thể chọn truyền trực tiếp một biểu diễn nhúng. Điều này hữu ích nếu bạn muốn kiểm soát nhiều hơn cách chuyển đổi các chỉ sốinput_idsthành các vector liên quan so với ma trận tra cứu nhúng nội bộ của mô hình. - use_cache (
bool, tùy chọn) — Nếu đặt thànhTrue, các trạng thái key value củapast_key_valuessẽ được trả về và có thể được sử dụng để tăng tốc quá trình giải mã (xempast_key_values). - input_text_ids (
torch.LongTensorcó hình dạng(batch_size, sequence_length), tùy chọn) — ID token đầu vào cho nội dung chỉ có văn bản, được sử dụng để tính toán vị trí trong ngữ cảnh đa phương tiện. - image_grid_thw (
torch.LongTensorcó hình dạng(num_images, 3), tùy chọn) — Trục thời gian, chiều cao và chiều rộng của hình dạng đặc trưng của từng hình ảnh trong LLM. - video_grid_thw (
torch.LongTensorcó hình dạng(num_videos, 3), tùy chọn) — Trục thời gian, chiều cao và chiều rộng của hình dạng đặc trưng của từng video trong LLM. - use_audio_in_video (
bool, tùy chọn) — Có sử dụng track âm thanh trong video hay không, phải giống với tham số trongprocess_audio_info. - audio_feature_lengths (
torch.LongTensorcó hình dạng(num_audios), tùy chọn) — Độ dài của hình dạng đặc trưng của mỗi âm thanh trong LLM. - video_second_per_grid (
torch.LongTensorcó hình dạng(num_videos), tùy chọn) — Số giây trên mỗi lưới cho từng video, được sử dụng cho ánh xạ đặc trưng theo thời gian.
Trả về
Qwen2_5OmniTalkerCausalLMOutputWithPast hoặc tuple(torch.Tensor)
Một Qwen2_5OmniTalkerCausalLMOutputWithPast hoặc một tuple của
torch.Tensor (nếu return_dict=False được truyền hoặc khi config.return_dict=False) bao gồm các
thành phần khác nhau tùy thuộc vào cấu hình (Qwen2_5OmniConfig) và đầu vào.
Phương thức forward của Qwen2_5OmniTalkerForConditionalGeneration ghi đè lên phương thức đặc biệt __call__.
Mặc dù công thức cho bước truyền tiến cần được định nghĩa bên trong hàm này, người dùng nên gọi instance của
Modulesau đó thay vì gọi hàm này, vì instanceModulesẽ đảm nhận việc thực hiện các bước tiền xử lý và hậu xử lý, trong khi hàm này sẽ lặng lẽ bỏ qua chúng.
loss (
torch.Tensorcó shape(1,), tùy chọn, được trả về khilabelsđược cung cấp) — Loss của language modeling (cho next-token prediction).logits (
torch.Tensorcó hình dạng(batch_size, sequence_length, config.vocab_size)) — Điểm dự đoán của đầu mô hình hóa ngôn ngữ (điểm cho mỗi token trong từ vựng trước SoftMax).past_key_values (
Cache, tùy chọn, được trả về khiuse_cache=Trueđược truyền vào hoặc khiconfig.use_cache=True) — Đây là một instance của Cache. Để biết thêm chi tiết, hãy xem hướng dẫn về kv cache của chúng tôi.Chứa các hidden-states đã được tính trước (key và values trong các khối self-attention) có thể được sử dụng (xem đầu vào
past_key_values) để tăng tốc độ giải mã tuần tự.hidden_states (
tuple(torch.Tensor), tuỳ chọn, được trả về khioutput_hidden_states=Trueđược truyền vào hoặc khiconfig.output_hidden_states=True) — Bộ tuple củatorch.Tensor(một cho đầu ra của embeddings, nếu mô hình có lớp embedding, + một cho đầu ra của mỗi lớp) có hình dạng(batch_size, sequence_length, hidden_size).Trạng thái ẩn của mô hình tại đầu ra của mỗi lớp cùng với các đầu ra embedding ban đầu tùy chọn.
attentions (
tuple(torch.Tensor), tuỳ chọn, được trả về khioutput_attentions=Trueđược truyền vào hoặc khiconfig.output_attentions=True) — Tuple củatorch.Tensor(một cho mỗi lớp) có hình dạng(batch_size, num_heads, sequence_length, sequence_length).Trọng số chú ý sau softmax của attention, được sử dụng để tính trung bình có trọng số trong các đầu self-attention.
thinker_reply_part (
torch.Tensorcó hình dạng(batch_size, sequence_length, hidden_size)) — Trạng thái ẩn từ mô hình thinker được sử dụng làm đầu vào cho mô hình talker. Chúng đại diện cho phản hồi đã được mã hóa mà mô hình talker sẽ dùng để tạo ra các token giọng nói.
Ví dụ:
>>> 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
lớp transformers.Qwen2_5OmniTalkerModel
< source >( config: Qwen2_5OmniTalkerConfig )
Tham số
- config (Qwen2_5OmniTalkerConfig) — Lớp cấu hình mô hình chứa tất cả các tham số của mô hình. Khởi tạo bằng tệp cấu hình sẽ không tải trọng số liên quan đến mô hình, chỉ tải cấu hình. Xem phương thức from_pretrained() để tải trọng số mô hình.
Mô hình Qwen2 5 Omni thuần túy, tạo ra các hidden-states thô mà không có bất kỳ head cụ thể nào ở phía trên.
Mô hình này kế thừa từ PreTrainedModel. Xem tài liệu của lớp cha để biết các phương thức chung mà thư viện triển khai cho tất cả các mô hình của nó (chẳng hạn như tải xuống hoặc lưu trữ, thay đổi kích thước các nhúng đầu vào, cắt tỉa các đầu, v.v.)
Mô hình này cũng là một lớp con của torch.nn.Module trong PyTorch. Hãy sử dụng nó như một Module PyTorch thông thường và tham khảo tài liệu PyTorch cho mọi vấn đề liên quan đến cách sử dụng và hành vi chung.
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.Tensor] = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.modeling_flash_attention_utils.FlashAttentionKwargs'> ) → BaseModelOutputWithPast or tuple(torch.Tensor)
Tham số
- input_ids (
torch.LongTensorcó dạng(batch_size, sequence_length), tùy chọn) — Chỉ số của các token trong chuỗi đầu vào theo từ điển. Mặc định, padding sẽ bị bỏ qua.Các chỉ số có thể được lấy bằng cách sử dụng AutoTokenizer. Xem PreTrainedTokenizer.encode() và PreTrainedTokenizer.call() để biết thêm chi tiết.
- attention_mask (
torch.Tensorcó hình dạng(batch_size, sequence_length), tùy chọn) — Mặt nạ để tránh thực hiện chú ý trên các chỉ số token đệm. Các giá trị mặt nạ được chọn trong[0, 1]:- 1 cho các token không bị che,
- 0 cho các token bị che.
- position_ids (
torch.LongTensorcó hình dạng(batch_size, sequence_length), tùy chọn) — Chỉ số vị trí của các token trong mỗi chuỗi đầu vào trong các position embeddings. Được chọn trong khoảng[0, config.n_positions - 1]. - past_key_values (
~cache_utils.Cache, tuỳ chọn) — Các hidden-state đã tính trước (key và value trong các khối self-attention và cross-attention) có thể được sử dụng để tăng tốc giải mã tuần tự. Điều này thường bao gồmpast_key_valuesđược trả về bởi mô hình ở một giai đoạn giải mã trước đó, khiuse_cache=Truehoặcconfig.use_cache=True.Chỉ cho phép Cache instance làm đầu vào, xem hướng dẫn kv cache của chúng tôi. Nếu không truyền
past_key_values, DynamicCache sẽ được khởi tạo theo mặc định.Mô hình sẽ xuất ra cùng định dạng cache được đưa vào làm đầu vào.
Nếu
past_key_valuesđược sử dụng, người dùng được kỳ vọng chỉ nhậpinput_idschưa được xử lý (những phần chưa có trạng thái key value quá khứ được cung cấp cho mô hình này) có hình dạng(batch_size, unprocessed_length)thay vì toàn bộinput_idscó hình dạng(batch_size, sequence_length). - inputs_embeds (
torch.Tensorcó hình dạng(batch_size, sequence_length, hidden_size), tùy chọn) — Tùy chọn, thay vì truyềninput_ids, bạn có thể chọn truyền trực tiếp một biểu diễn nhúng. Điều này hữu ích nếu bạn muốn kiểm soát nhiều hơn cách chuyển đổi các chỉ sốinput_idsthành các vector liên quan so với ma trận tra cứu nhúng nội bộ của mô hình. - use_cache (
bool, tùy chọn) — Nếu đặt thànhTrue, các trạng thái key value củapast_key_valuessẽ được trả về và có thể được sử dụng để tăng tốc quá trình giải mã (xempast_key_values).
Trả về
BaseModelOutputWithPast hoặc tuple(torch.Tensor)
Một BaseModelOutputWithPast hoặc một tuple của
torch.Tensor (nếu return_dict=False được truyền hoặc khi config.return_dict=False) bao gồm các
thành phần khác nhau tùy thuộc vào cấu hình (Qwen2_5OmniConfig) và đầu vào.
Phương thức forward của Qwen2_5OmniTalkerModel ghi đè lên phương thức đặc biệt __call__.
Mặc dù công thức cho bước truyền tiến cần được định nghĩa bên trong hàm này, người dùng nên gọi instance của
Modulesau đó thay vì gọi hàm này, vì instanceModulesẽ đảm nhận việc thực hiện các bước tiền xử lý và hậu xử lý, trong khi hàm này sẽ lặng lẽ bỏ qua chúng.
last_hidden_state (
torch.Tensorcó hình dạng(batch_size, sequence_length, hidden_size)) — Chuỗi các hidden-state tại đầu ra của lớp cuối cùng của mô hình.Nếu
past_key_valuesđược sử dụng, chỉ có hidden-state cuối cùng của các chuỗi có shape(batch_size, 1, hidden_size)được xuất ra.past_key_values (
Cache, tùy chọn, được trả về khiuse_cache=Trueđược truyền vào hoặc khiconfig.use_cache=True) — Đây là một instance của Cache. Để biết thêm chi tiết, hãy xem hướng dẫn về kv cache của chúng tôi.Chứa các hidden-states đã được tính trước (key và values trong các khối self-attention và tùy chọn nếu
config.is_encoder_decoder=Truetrong các khối cross-attention) có thể được sử dụng (xem đầu vàopast_key_values) để tăng tốc độ giải mã tuần tự.hidden_states (
tuple(torch.Tensor), tuỳ chọn, được trả về khioutput_hidden_states=Trueđược truyền vào hoặc khiconfig.output_hidden_states=True) — Bộ tuple củatorch.Tensor(một cho đầu ra của embeddings, nếu mô hình có lớp embedding, + một cho đầu ra của mỗi lớp) có hình dạng(batch_size, sequence_length, hidden_size).Trạng thái ẩn của mô hình tại đầu ra của mỗi lớp cùng với các đầu ra embedding ban đầu tùy chọn.
attentions (
tuple(torch.Tensor), tuỳ chọn, được trả về khioutput_attentions=Trueđược truyền vào hoặc khiconfig.output_attentions=True) — Tuple củatorch.Tensor(một cho mỗi lớp) có hình dạng(batch_size, num_heads, sequence_length, sequence_length).Trọng số chú ý sau softmax của attention, được sử dụng để tính trung bình có trọng số trong các đầu self-attention.
Qwen2_5OmniToken2WavConfig
lớp 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 )
Đây là lớp cấu hình để lưu trữ cấu hình của một mô hình Qwen2 5 OmniModel. Nó được sử dụng để khởi tạo một mô hình Qwen2 5 Omni theo các đối số được chỉ định, xác định kiến trúc của mô hình. Khởi tạo một cấu hình với các giá trị mặc định sẽ tạo ra một cấu hình tương tự như cấu hình của Qwen/Qwen2.5-Omni-7B
Các đối tượng cấu hình kế thừa từ PreTrainedConfig và có thể được sử dụng để kiểm soát đầu ra của mô hình. Đọc tài liệu từ PreTrainedConfig để biết thêm thông tin.
Ví dụ:
>>> 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
lớp transformers.Qwen2_5OmniToken2WavModel
< source >( config: Qwen2_5OmniToken2WavConfig )
Tham số
- config (Qwen2_5OmniToken2WavConfig) — Lớp cấu hình mô hình chứa tất cả các tham số của mô hình. Khởi tạo bằng tệp cấu hình sẽ không tải trọng số liên quan đến mô hình, chỉ tải cấu hình. Xem phương thức from_pretrained() để tải trọng số mô hình.
Mô hình Token2Wav đầy đủ của Qwen2.5Omni. Gồm một mô hình DiT nhận các token giọng nói làm đầu vào và dự đoán phổ mel, cùng một bộ tạo âm BigVGAN nhận phổ mel làm đầu vào và dự đoán dạng sóng.
Mô hình này kế thừa từ PreTrainedModel. Xem tài liệu của lớp cha để biết các phương thức chung mà thư viện triển khai cho tất cả các mô hình của nó (chẳng hạn như tải xuống hoặc lưu trữ, thay đổi kích thước các nhúng đầu vào, cắt tỉa các đầu, v.v.)
Mô hình này cũng là một lớp con của torch.nn.Module trong PyTorch. Hãy sử dụng nó như một Module PyTorch thông thường và tham khảo tài liệu PyTorch cho mọi vấn đề liên quan đến cách sử dụng và hành vi chung.
forward
< source >( codeconditioningreference_melnum_steps = 10guidance_scale = 0.5sway_coefficient = -1.0**kwargs )
Tạo ra sóng âm từ mã đầu vào và các tham số điều kiện.
Qwen2_5OmniToken2WavDiTModel
lớp transformers.Qwen2_5OmniToken2WavDiTModel
< source >( config: Qwen2_5OmniDiTConfig )
Tham số
- config (Qwen2_5OmniDiTConfig) — Lớp cấu hình mô hình chứa tất cả các tham số của mô hình. Khởi tạo bằng tệp cấu hình sẽ không tải trọng số liên quan đến mô hình, chỉ tải cấu hình. Xem phương thức from_pretrained() để tải trọng số của mô hình.
Mô hình Qwen2.5Omni Token2WavDiT đầy đủ. Mô hình này nhận các token giọng nói làm đầu vào và dự đoán phổ mel.
Mô hình này kế thừa từ PreTrainedModel. Xem tài liệu của lớp cha để biết các phương thức chung mà thư viện triển khai cho tất cả các mô hình của nó (chẳng hạn như tải xuống hoặc lưu trữ, thay đổi kích thước các nhúng đầu vào, cắt tỉa các đầu, v.v.)
Mô hình này cũng là một lớp con của torch.nn.Module trong PyTorch. Hãy sử dụng nó như một Module PyTorch thông thường và tham khảo tài liệu PyTorch cho mọi vấn đề liên quan đến cách sử dụng và hành vi chung.
Qwen2_5OmniToken2WavBigVGANModel
lớp transformers.Qwen2_5OmniToken2WavBigVGANModel
< source >( config: Qwen2_5OmniBigVGANConfig )
Tham số
- config (Qwen2_5OmniBigVGANConfig) — Lớp cấu hình mô hình chứa tất cả các tham số của mô hình. Khởi tạo bằng tệp cấu hình sẽ không tải trọng số liên quan đến mô hình, chỉ tải cấu hình. Xem phương thức from_pretrained() để tải trọng số mô hình.
Mô hình Qwen2.5Omni Token2WavBigVGAN đầy đủ. Mô hình này nhận phổ mel spectrogram làm đầu vào và dự đoán dạng sóng.
Mô hình này kế thừa từ PreTrainedModel. Xem tài liệu của lớp cha để biết các phương thức chung mà thư viện triển khai cho tất cả các mô hình của nó (chẳng hạn như tải xuống hoặc lưu trữ, thay đổi kích thước các nhúng đầu vào, cắt tỉa các đầu, v.v.)
Mô hình này cũng là một lớp con của torch.nn.Module trong PyTorch. Hãy sử dụng nó như một Module PyTorch thông thường và tham khảo tài liệu PyTorch cho mọi vấn đề liên quan đến cách sử dụng và hành vi chung.