Transformers 文件
Aya Vision
並獲得增強的文件體驗
開始使用
Aya Vision
Aya Vision 是 Cohere Labs 的一個開放權重多模態視覺語言模型系列。它採用合成標註框架進行訓練,該框架生成高質量的多語言影像字幕,從而改進 Aya Vision 生成的響應。此外,還使用跨模態模型合併技術,以防止模型在新增視覺能力後失去其文字能力。該模型結合了 CommandR-7B 語言模型和 SigLIP 視覺編碼器。
您可以在 Aya Vision 集合下找到所有原始 Aya Vision 檢查點。
此模型由 saurabhdash 和 yonigozlan 貢獻。
單擊右側邊欄中的 Aya Vision 模型,瞭解更多將 Aya Vision 應用於不同影像到文字任務的示例。
以下示例演示瞭如何使用 Pipeline 或 AutoModel 類根據影像生成文字。
from transformers import pipeline
pipe = pipeline(model="CohereLabs/aya-vision-8b", task="image-text-to-text", device_map="auto")
# Format message with the aya-vision chat template
messages = [
{"role": "user",
"content": [
{"type": "image", "url": "https://media.istockphoto.com/id/458012057/photo/istanbul-turkey.jpg?s=612x612&w=0&k=20&c=qogAOVvkpfUyqLUMr_XJQyq-HkACXyYUSZbKhBlPrxo="},
{"type": "text", "text": "Bu resimde hangi anıt gösterilmektedir?"},
]},
]
outputs = pipe(text=messages, max_new_tokens=300, return_full_text=False)
print(outputs)
量化透過以較低精度表示權重來減少大型模型的記憶體佔用。有關支援的後端,請參閱量化概述。
以下示例使用 bitsandbytes 僅將權重量化為 4 位。
import torch
from transformers import (
AutoProcessor,
AutoModelForImageTextToText,
BitsAndBytesConfig
)
bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype=torch.bfloat16,
bnb_4bit_use_double_quant=True
)
processor = AutoProcessor.from_pretrained("CohereLabs/aya-vision-32b", use_fast=True)
model = AutoModelForImageTextToText.from_pretrained(
"CohereLabs/aya-vision-32b",
quantization_config=bnb_config,
device_map="auto"
)
inputs = processor.apply_chat_template(
[
{"role": "user", "content": [
{"type": "image", "url": "https://huggingface.co/roschmid/dog-races/resolve/main/images/Border_Collie.jpg"},
{"type": "text", "text":"Describe what you see."}
]}
],
padding=True,
add_generation_prompt=True,
tokenize=True,
return_tensors="pt"
).to("cuda")
generated = model.generate(**inputs, max_new_tokens=50)
print(processor.tokenizer.decode(generated[0], skip_special_tokens=True))
注意事項
影像在聊天模板中以
<image>
標籤表示。使用 apply_chat_template() 方法正確格式化輸入。
以下示例演示了使用多張影像進行推理。
from transformers import AutoProcessor, AutoModelForImageTextToText import torch processor = AutoProcessor.from_pretrained("CohereForAI/aya-vision-8b") model = AutoModelForImageTextToText.from_pretrained( "CohereForAI/aya-vision-8b", device_map="cuda", torch_dtype=torch.float16 ) messages = [ { "role": "user", "content": [ { "type": "image", "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg", }, { "type": "image", "url": "https://thumbs.dreamstime.com/b/golden-gate-bridge-san-francisco-purple-flowers-california-echium-candicans-36805947.jpg", }, { "type": "text", "text": "These images depict two different landmarks. Can you identify them?", }, ], }, ] inputs = processor.apply_chat_template( messages, padding=True, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt" ).to("cuda") gen_tokens = model.generate( **inputs, max_new_tokens=300, do_sample=True, temperature=0.3, ) gen_text = processor.tokenizer.decode(gen_tokens[0][inputs.input_ids.shape[1]:], skip_special_tokens=True) print(gen_text)
以下示例演示了使用批次輸入進行推理。
from transformers import AutoProcessor, AutoModelForImageTextToText import torch processor = AutoProcessor.from_pretrained(model_id) model = AutoModelForImageTextToText.from_pretrained( "CohereForAI/aya-vision-8b", device_map="cuda", torch_dtype=torch.float16 ) batch_messages = [ [ { "role": "user", "content": [ {"type": "image", "url": "https://llava-vl.github.io/static/images/view.jpg"}, {"type": "text", "text": "Write a haiku for this image"}, ], }, ], [ { "role": "user", "content": [ { "type": "image", "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg", }, { "type": "image", "url": "https://thumbs.dreamstime.com/b/golden-gate-bridge-san-francisco-purple-flowers-california-echium-candicans-36805947.jpg", }, { "type": "text", "text": "These images depict two different landmarks. Can you identify them?", }, ], }, ], ] batch_inputs = processor.apply_chat_template( batch_messages, padding=True, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt" ).to(model.device) batch_outputs = model.generate( **batch_inputs, max_new_tokens=300, do_sample=True, temperature=0.3, ) for i, output in enumerate(batch_outputs): response = processor.tokenizer.decode( output[batch_inputs.input_ids.shape[1]:], skip_special_tokens=True ) print(f"Response {i+1}:\n{response}\n")
AyaVisionProcessor
class transformers.AyaVisionProcessor
< 來源 >( image_processor = None tokenizer = None patch_size: int = 28 img_size: int = 364 image_token = '<image>' downsample_factor: int = 1 start_of_img_token = '<|START_OF_IMG|>' end_of_img_token = '<|END_OF_IMG|>' img_patch_token = '<|IMG_PATCH|>' img_line_break_token = '<|IMG_LINE_BREAK|>' tile_token = 'TILE' tile_global_token = 'TILE_GLOBAL' chat_template = None **kwargs )
引數
- image_processor (AutoImageProcessor, 可選) — 影像處理器是必需輸入。
- tokenizer ([
PreTrainedTokenizer
,PreTrainedTokenizerFast
], 可選) — 分詞器是必需輸入。 - patch_size (
int
, 可選, 預設為 28) — 用於分詞的影像塊大小。 - img_size (
int
, 可選, 預設為 364) — 要分詞的影像大小。這應該與影像處理器指定的大小相對應。 - image_token (
str
, 可選, 預設為"<image>"
) — 用於在文字中表示影像的標記。 - downsample_factor (
int
, 可選, 預設為 1) — 應用於視覺特徵的下采樣因子。 - start_of_img_token (
str
, 可選, 預設為"<|START_OF_IMG|>"
) — 用於在文字中表示影像開頭的標記。 - end_of_img_token (
str
, 可選, 預設為"<|END_OF_IMG|>"
) — 用於在文字中表示影像結束的標記。 - img_patch_token (
str
, 可選, 預設為"<|IMG_PATCH|>"
) — 用於在文字中表示影像塊的標記。 - img_line_break_token (
str
, 可選, 預設為"<|IMG_LINE_BREAK|>"
) — 用於在文字中表示換行符的標記。 - tile_token (
str
, 可選, 預設為"TILE"
) — 用於在文字中表示影像塊的標記。 - tile_global_token (
str
, 可選, 預設為"TILE_GLOBAL"
) — 用於在文字中表示封面影像的標記。 - chat_template (
str
, 可選) — 用於將聊天訊息列表轉換為可分詞字串的 Jinja 模板。
構造一個 AyaVision 處理器,它將 AutoImageProcessor 和 PretrainedTokenizerFast
分詞器封裝到一個同時繼承影像處理器和分詞器功能的處理器中。有關更多資訊,請參閱 __call__()
和 decode()。
此方法將其所有引數轉發給 PreTrainedTokenizerFast 的 batch_decode()。有關更多資訊,請參閱此方法的文件字串。
AyaVisionConfig
class transformers.AyaVisionConfig
< 來源 >( vision_config = None text_config = None vision_feature_select_strategy = 'full' vision_feature_layer = -1 downsample_factor = 2 adapter_layer_norm_eps = 1e-06 image_token_index = 255036 **kwargs )
引數
- vision_config (
Union[AutoConfig, dict]
, 可選, 預設為CLIPVisionConfig
) — 視覺骨幹網路的配置物件或字典。 - text_config (
Union[AutoConfig, dict]
, 可選, 預設為LlamaConfig
) — 文字骨幹網路的配置物件或字典。 - vision_feature_select_strategy (
str
, 可選, 預設為"full"
) — 用於從視覺骨幹網路中選擇視覺特徵的特徵選擇策略。可以是"default"
或"full"
之一。如果為"default"
,則從視覺特徵中移除 CLS 標記。如果為"full"
,則使用完整的視覺特徵。 - vision_feature_layer (
int
, 可選, 預設為 -1) — 用於選擇視覺特徵的層索引。 - downsample_factor (
int
, 可選, 預設為 2) — 應用於視覺特徵的下采樣因子。 - adapter_layer_norm_eps (
float
, 可選, 預設為 1e-06) — 介面卡中用於層歸一化的 epsilon 值。 - image_token_index (
int
, 可選, 預設為 255036) — 用於編碼影像提示的影像標記索引。
這是用於儲存 AyaVisionForConditionalGeneration 配置的配置類。它用於根據指定引數例項化 AyaVision 模型,定義模型架構。使用預設值例項化配置將產生類似於 AyaVision 的配置,例如 CohereForAI/aya-vision-8b
配置物件繼承自 PretrainedConfig,可用於控制模型輸出。有關更多資訊,請參閱 PretrainedConfig 的文件。
AyaVisionModel
class transformers.AyaVisionModel
< 來源 >( config: AyaVisionConfig )
引數
- config (AyaVisionConfig) — 包含模型所有引數的模型配置類。使用配置檔案初始化並不會載入與模型相關的權重,只會載入配置。請檢視 from_pretrained() 方法來載入模型權重。
AyaVision 模型由視覺骨幹網路和語言模型組成,不帶語言建模頭。
此模型繼承自 PreTrainedModel。請檢視超類文件,瞭解庫為其所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭等)。
此模型也是 PyTorch torch.nn.Module 子類。將其作為常規 PyTorch 模組使用,並參考 PyTorch 文件以獲取所有與通用使用和行為相關的事項。
forward
< 來源 >( input_ids: LongTensor = None pixel_values: FloatTensor = None attention_mask: typing.Optional[torch.Tensor] = None position_ids: typing.Optional[torch.LongTensor] = None past_key_values: typing.Optional[list[torch.FloatTensor]] = None inputs_embeds: typing.Optional[torch.FloatTensor] = None vision_feature_layer: typing.Union[int, list[int], NoneType] = None vision_feature_select_strategy: typing.Optional[str] = None use_cache: typing.Optional[bool] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None cache_position: typing.Optional[torch.LongTensor] = None **kwargs: typing_extensions.Unpack[transformers.modeling_flash_attention_utils.FlashAttentionKwargs] ) → transformers.models.aya_vision.modeling_aya_vision.AyaVisionModelOutputWithPast
或 tuple(torch.FloatTensor)
引數
- input_ids (形狀為
(batch_size, sequence_length)
的torch.LongTensor
) — 詞彙表中輸入序列標記的索引。預設情況下會忽略填充。可以使用 AutoTokenizer 獲取索引。有關詳細資訊,請參閱 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- pixel_values (形狀為
(batch_size, num_channels, image_size, image_size)
的torch.FloatTensor
) — 對應於輸入影像的張量。畫素值可以使用{image_processor_class}
獲取。有關詳細資訊,請參閱{image_processor_class}.__call__
({processor_class}
使用{image_processor_class}
處理影像)。 - attention_mask (形狀為
(batch_size, sequence_length)
的torch.Tensor
, 可選) — 避免在填充標記索引上執行注意力操作的掩碼。掩碼值選擇在[0, 1]
中:- 1 表示**未被掩碼**的標記,
- 0 表示**被掩碼**的標記。
- position_ids (形狀為
(batch_size, sequence_length)
的torch.LongTensor
, 可選) — 每個輸入序列標記在位置嵌入中的位置索引。選擇範圍為[0, config.n_positions - 1]
。 - past_key_values (
list[torch.FloatTensor]
, 可選) — 預先計算的隱藏狀態(自注意力塊和交叉注意力塊中的鍵和值),可用於加速順序解碼。這通常包括模型在解碼上一階段返回的past_key_values
,當use_cache=True
或config.use_cache=True
時。允許兩種格式:
- 一個 Cache 例項,詳見我們的 kv 快取指南;
- 長度為
config.n_layers
的tuple(torch.FloatTensor)
元組,每個元組包含兩個形狀為(batch_size, num_heads, sequence_length, embed_size_per_head)
的張量)。這也被稱為舊版快取格式。
模型將輸出與輸入相同的快取格式。如果未傳入
past_key_values
,將返回舊版快取格式。如果使用
past_key_values
,使用者可以選擇只輸入形狀為(batch_size, 1)
的最後一個input_ids
(那些沒有將其過去鍵值狀態提供給此模型的),而不是所有形狀為(batch_size, sequence_length)
的input_ids
。 - inputs_embeds (形狀為
(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
, 可選) — 可選地,您可以選擇直接傳入嵌入表示而不是傳入input_ids
。如果您想比模型內部嵌入查詢矩陣更好地控制如何將input_ids
索引轉換為關聯向量,這會很有用。 - vision_feature_layer (
Union[int, list[int], NoneType]
) — 選擇視覺特徵的層索引。如果提供多個索引,則相應索引的視覺特徵將被連線以形成視覺特徵。 - vision_feature_select_strategy (
str
, 可選) — 用於從視覺骨幹中選擇視覺特徵的特徵選擇策略。可以是"default"
或"full"
之一。 - use_cache (
bool
, 可選) — 如果設定為True
,將返回past_key_values
鍵值狀態,可用於加速解碼(參見past_key_values
)。 - output_attentions (
bool
, 可選) — 是否返回所有注意力層的注意力張量。更多詳細資訊請參閱返回張量中的attentions
。 - output_hidden_states (
bool
, 可選) — 是否返回所有層的隱藏狀態。更多詳細資訊請參閱返回張量中的hidden_states
。 - return_dict (
bool
, 可選) — 是否返回 ModelOutput 而不是普通元組。 - cache_position (形狀為
(sequence_length)
的torch.LongTensor
, 可選) — 指示輸入序列標記在序列中位置的索引。與position_ids
不同,此張量不受填充影響。它用於在正確位置更新快取並推斷完整的序列長度。
返回
transformers.models.aya_vision.modeling_aya_vision.AyaVisionModelOutputWithPast
或 tuple(torch.FloatTensor)
一個 transformers.models.aya_vision.modeling_aya_vision.AyaVisionModelOutputWithPast
或一個 torch.FloatTensor
元組(如果傳入 return_dict=False
或當 config.return_dict=False
時),包含根據配置(AyaVisionConfig)和輸入的不同元素。
-
last_hidden_state (形狀為
(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
, 可選) — 模型最後一層輸出的隱藏狀態序列。 -
past_key_values (
tuple(tuple(torch.FloatTensor))
, 可選, 當傳入use_cache=True
或當config.use_cache=True
時返回) — 長度為config.n_layers
的tuple(torch.FloatTensor)
元組,每個元組包含兩個形狀為(batch_size, num_heads, sequence_length, embed_size_per_head)
的張量)包含預計算的隱藏狀態(自注意力塊中的鍵和值),可用於(參見
past_key_values
輸入)加速順序解碼。 -
hidden_states (
tuple[torch.FloatTensor, ...]
, 可選, 當傳入output_hidden_states=True
或當config.output_hidden_states=True
時返回) —torch.FloatTensor
元組(如果模型有嵌入層,則其中一個用於嵌入層輸出,加上每個層的輸出),形狀為(batch_size, sequence_length, hidden_size)
。模型在每個層輸出的隱藏狀態以及可選的初始嵌入輸出。
-
attentions (
tuple[torch.FloatTensor, ...]
, 可選, 當傳入output_attentions=True
或當config.output_attentions=True
時返回) —torch.FloatTensor
元組(每個層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均值。
-
image_hidden_states (
torch.FloatTensor
, 可選) — 形狀為(batch_size, num_images, sequence_length, hidden_size)
的torch.FloatTensor
。由視覺編碼器生成並投影最後一個隱藏狀態後的模型影像隱藏狀態。
AyaVisionModel forward 方法,覆蓋了 __call__
特殊方法。
儘管在此函式中需要定義前向傳播的配方,但在此之後應呼叫 Module
例項而不是此函式,因為前者負責執行預處理和後處理步驟,而後者則默默地忽略它們。
獲取影像特徵
< 來源 >( pixel_values: FloatTensor vision_feature_layer: typing.Union[int, list[int], NoneType] = None vision_feature_select_strategy: typing.Optional[str] = None **kwargs ) → image_features (torch.Tensor
)
引數
- pixel_values (形狀為
(batch_size, channels, height, width)
的torch.FloatTensor]
) — 對應於輸入影像的張量。 - vision_feature_layer (
Union[int, list[int]]
, 可選) — 選擇視覺特徵的層索引。如果提供多個索引,則相應索引的視覺特徵將被連線以形成視覺特徵。 - vision_feature_select_strategy (
str
, 可選) — 用於從視覺骨幹中選擇視覺特徵的特徵選擇策略。可以是"default"
或"full"
之一。
返回
影像特徵 (torch.Tensor
)
形狀為 (num_images, image_length, embed_dim)
的影像特徵張量。
從視覺塔獲取影像最後隱藏狀態並應用多模態投影。
AyaVisionForConditionalGeneration
類 transformers.AyaVisionForConditionalGeneration
< 來源 >( config: AyaVisionConfig )
引數
- config (AyaVisionConfig) — 模型配置類,包含模型的所有引數。使用配置檔案初始化不會載入與模型關聯的權重,只會載入配置。請檢視 from_pretrained() 方法載入模型權重。
AYA_VISION 模型,由視覺骨幹和語言模型組成。
此模型繼承自 PreTrainedModel。請檢視超類文件,瞭解庫為其所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭等)。
此模型也是 PyTorch torch.nn.Module 子類。將其作為常規 PyTorch 模組使用,並參考 PyTorch 文件以獲取所有與通用使用和行為相關的事項。
forward
< 來源 >( input_ids: typing.Optional[torch.LongTensor] = None pixel_values: typing.Optional[torch.FloatTensor] = None attention_mask: typing.Optional[torch.Tensor] = None position_ids: typing.Optional[torch.LongTensor] = None past_key_values: typing.Optional[list[torch.FloatTensor]] = None inputs_embeds: typing.Optional[torch.FloatTensor] = None vision_feature_layer: typing.Union[int, list[int], NoneType] = None vision_feature_select_strategy: typing.Optional[str] = None labels: typing.Optional[torch.LongTensor] = None use_cache: typing.Optional[bool] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None cache_position: typing.Optional[torch.LongTensor] = None logits_to_keep: typing.Union[int, torch.Tensor] = 0 image_sizes: typing.Optional[torch.Tensor] = None **kwargs: typing_extensions.Unpack[transformers.models.aya_vision.modeling_aya_vision.KwargsForCausalLM] ) → transformers.models.aya_vision.modeling_aya_vision.AyaVisionCausalLMOutputWithPast
或 tuple(torch.FloatTensor)
引數
- input_ids (形狀為
(batch_size, sequence_length)
的torch.LongTensor
, 可選) — 詞彙表中輸入序列標記的索引。預設情況下將忽略填充。索引可以透過 AutoTokenizer 獲取。有關詳細資訊,請參閱 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.__call__()。
- pixel_values (形狀為
(batch_size, num_channels, image_size, image_size)
的torch.FloatTensor
, 可選) — 對應於輸入影像的張量。畫素值可以使用{image_processor_class}
獲取。有關詳細資訊,請參閱{image_processor_class}.__call__
({processor_class}
使用{image_processor_class}
處理影像)。 - attention_mask (形狀為
(batch_size, sequence_length)
的torch.Tensor
, 可選) — 用於避免對填充標記索引執行注意力的掩碼。掩碼值選擇在[0, 1]
之間:- 對於未掩碼的標記,值為 1,
- 對於已掩碼的標記,值為 0。
- position_ids (形狀為
(batch_size, sequence_length)
的torch.LongTensor
, 可選) — 每個輸入序列標記在位置嵌入中的位置索引。選擇範圍為[0, config.n_positions - 1]
。 - past_key_values (
list[torch.FloatTensor]
, 可選) — 預先計算的隱藏狀態(自注意力塊和交叉注意力塊中的鍵和值),可用於加速順序解碼。這通常包括模型在解碼上一階段返回的past_key_values
,當use_cache=True
或config.use_cache=True
時。允許兩種格式:
- 一個 Cache 例項,詳見我們的 kv 快取指南;
- 長度為
config.n_layers
的tuple(torch.FloatTensor)
元組,每個元組包含兩個形狀為(batch_size, num_heads, sequence_length, embed_size_per_head)
的張量)。這也被稱為舊版快取格式。
模型將輸出與輸入相同的快取格式。如果未傳入
past_key_values
,將返回舊版快取格式。如果使用
past_key_values
,使用者可以選擇只輸入形狀為(batch_size, 1)
的最後一個input_ids
(那些沒有將其過去鍵值狀態提供給此模型的),而不是所有形狀為(batch_size, sequence_length)
的input_ids
。 - inputs_embeds (形狀為
(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
, 可選) — 可選地,您可以選擇直接傳入嵌入表示而不是傳入input_ids
。如果您想比模型內部嵌入查詢矩陣更好地控制如何將input_ids
索引轉換為關聯向量,這會很有用。 - vision_feature_layer (
Union[int, list[int], NoneType]
) — 選擇視覺特徵的層索引。如果提供多個索引,則相應索引的視覺特徵將被連線以形成視覺特徵。 - vision_feature_select_strategy (
str
, 可選) — 用於從視覺骨幹中選擇視覺特徵的特徵選擇策略。可以是"default"
或"full"
之一。 - labels (形狀為
(batch_size, sequence_length)
的torch.LongTensor
, 可選) — 用於計算掩碼語言建模損失的標籤。索引應在[0, ..., config.vocab_size]
或 -100 之間(參見input_ids
文件字串)。索引設定為-100
的標記將被忽略(掩碼),損失僅針對標籤在[0, ..., config.vocab_size]
之間的標記計算。 - use_cache (
bool
, 可選) — 如果設定為True
,將返回past_key_values
鍵值狀態,可用於加速解碼(參見past_key_values
)。 - output_attentions (
bool
, 可選) — 是否返回所有注意力層的注意力張量。更多詳細資訊請參閱返回張量中的attentions
。 - output_hidden_states (
bool
, 可選) — 是否返回所有層的隱藏狀態。更多詳細資訊請參閱返回張量中的hidden_states
。 - return_dict (
bool
, 可選) — 是否返回 ModelOutput 而不是普通元組。 - cache_position (形狀為
(sequence_length)
的torch.LongTensor
, 可選) — 指示輸入序列標記在序列中位置的索引。與position_ids
不同,此張量不受填充影響。它用於在正確位置更新快取並推斷完整的序列長度。 - logits_to_keep (
Union[int, torch.Tensor]
, 預設為0
) — 如果是int
,則計算最後logits_to_keep
個標記的 logits。如果是0
,則計算所有input_ids
的 logits(特殊情況)。生成時只需要最後一個標記的 logits,只計算該標記可以節省記憶體,這對於長序列或大詞彙量來說非常重要。如果是torch.Tensor
,則必須是 1D,對應於序列長度維度中要保留的索引。這在使用打包張量格式(批次和序列長度的單維度)時很有用。 - image_sizes (形狀為
(batch_size, 2)
的torch.Tensor
, 可選) — 批次中影像的大小,為每個影像的(高度,寬度)。
返回
transformers.models.aya_vision.modeling_aya_vision.AyaVisionCausalLMOutputWithPast
或 tuple(torch.FloatTensor)
一個 transformers.models.aya_vision.modeling_aya_vision.AyaVisionCausalLMOutputWithPast
或一個 torch.FloatTensor
元組(如果傳入 return_dict=False
或當 config.return_dict=False
時),包含根據配置(AyaVisionConfig)和輸入的不同元素。
-
loss (
torch.FloatTensor
形狀為(1,)
,可選,當提供labels
時返回) — 語言建模損失(用於下一個 token 預測)。 -
logits (形狀為
(batch_size, sequence_length, config.vocab_size)
的torch.FloatTensor
) — 語言建模頭部的預測分數(SoftMax 之前的每個詞彙標記的分數)。 -
past_key_values (
tuple(tuple(torch.FloatTensor))
, 可選, 當傳入use_cache=True
或當config.use_cache=True
時返回) — 長度為config.n_layers
的tuple(torch.FloatTensor)
元組,每個元組包含兩個形狀為(batch_size, num_heads, sequence_length, embed_size_per_head)
的張量)包含預計算的隱藏狀態(自注意力塊中的鍵和值),可用於(參見
past_key_values
輸入)加速順序解碼。 -
hidden_states (
tuple[torch.FloatTensor]
, 可選, 當傳入output_hidden_states=True
或當config.output_hidden_states=True
時返回) —torch.FloatTensor
元組(如果模型有嵌入層,則其中一個用於嵌入層輸出,加上每個層的輸出),形狀為(batch_size, sequence_length, hidden_size)
。模型在每個層輸出的隱藏狀態以及可選的初始嵌入輸出。
-
attentions (
tuple[torch.FloatTensor]
, 可選, 當傳入output_attentions=True
或當config.output_attentions=True
時返回) —torch.FloatTensor
元組(每個層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均值。
-
image_hidden_states (
torch.FloatTensor
, 可選) — 形狀為(batch_size, num_images, sequence_length, hidden_size)
的torch.FloatTensor
。由視覺編碼器生成並投影最後一個隱藏狀態後的模型影像隱藏狀態。
AyaVisionForConditionalGeneration forward 方法,覆蓋了 __call__
特殊方法。
儘管在此函式中需要定義前向傳播的配方,但在此之後應呼叫 Module
例項而不是此函式,因為前者負責執行預處理和後處理步驟,而後者則默默地忽略它們。
示例
>>> from transformers import AutoProcessor, AyaVisionForConditionalGeneration
>>> import torch
>>> torch_device = "cuda:0"
>>> processor = AutoProcessor.from_pretrained("CohereForAI/aya-vision-8b", use_fast=True)
>>> model = AyaVisionForConditionalGeneration.from_pretrained("CohereForAI/aya-vision-8b", device_map=torch_device)
>>> messages = [
... {
... "role": "user",
... "content": [
... {
... "type": "image",
... "url": "https://pbs.twimg.com/media/Fx7YvfQWYAIp6rZ?format=jpg&name=medium",
... },
... {"type": "text", "text": "चित्र में लिखा पाठ क्या कहता है?"},
... ],
... }
... ]
>>> inputs = processor.apply_chat_template(
... messages, padding=True, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", device=torch_device
... ).to(model.device)
>>> gen_tokens = model.generate(**inputs, max_new_tokens=300, do_sample=True, temperature=0.3)
>>> processor.tokenizer.decode(gen_tokens[0][inputs.input_ids.shape[1]:], skip_special_tokens=True)