Transformers 文件

Aya Vision

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

PyTorch

Aya Vision

Aya Vision 是 Cohere Labs 的一個開放權重多模態視覺語言模型系列。它採用合成標註框架進行訓練,該框架生成高質量的多語言影像字幕,從而改進 Aya Vision 生成的響應。此外,還使用跨模態模型合併技術,以防止模型在新增視覺能力後失去其文字能力。該模型結合了 CommandR-7B 語言模型和 SigLIP 視覺編碼器。

您可以在 Aya Vision 集合下找到所有原始 Aya Vision 檢查點。

此模型由 saurabhdashyonigozlan 貢獻。

單擊右側邊欄中的 Aya Vision 模型,瞭解更多將 Aya Vision 應用於不同影像到文字任務的示例。

以下示例演示瞭如何使用 PipelineAutoModel 類根據影像生成文字。

流水線
自動模型
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 處理器,它將 AutoImageProcessorPretrainedTokenizerFast 分詞器封裝到一個同時繼承影像處理器和分詞器功能的處理器中。有關更多資訊,請參閱 __call__()decode()

batch_decode

< >

( *args **kwargs )

此方法將其所有引數轉發給 PreTrainedTokenizerFast 的 batch_decode()。有關更多資訊,請參閱此方法的文件字串。

decode

< >

( *args **kwargs )

此方法將其所有引數轉發給 PreTrainedTokenizerFast 的 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.AyaVisionModelOutputWithPasttuple(torch.FloatTensor)

引數

  • input_ids (形狀為 (batch_size, sequence_length)torch.LongTensor) — 詞彙表中輸入序列標記的索引。預設情況下會忽略填充。

    可以使用 AutoTokenizer 獲取索引。有關詳細資訊,請參閱 PreTrainedTokenizer.encode()PreTrainedTokenizer.call()

    什麼是輸入 ID?

  • 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]

    什麼是位置 ID?

  • past_key_values (list[torch.FloatTensor], 可選) — 預先計算的隱藏狀態(自注意力塊和交叉注意力塊中的鍵和值),可用於加速順序解碼。這通常包括模型在解碼上一階段返回的 past_key_values,當 use_cache=Trueconfig.use_cache=True 時。

    允許兩種格式:

    • 一個 Cache 例項,詳見我們的 kv 快取指南
    • 長度為 config.n_layerstuple(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.AyaVisionModelOutputWithPasttuple(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_layerstuple(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.AyaVisionCausalLMOutputWithPasttuple(torch.FloatTensor)

引數

  • input_ids (形狀為 (batch_size, sequence_length)torch.LongTensor, 可選) — 詞彙表中輸入序列標記的索引。預設情況下將忽略填充。

    索引可以透過 AutoTokenizer 獲取。有關詳細資訊,請參閱 PreTrainedTokenizer.encode()PreTrainedTokenizer.__call__()

    什麼是輸入 ID?

  • 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]

    什麼是位置 ID?

  • past_key_values (list[torch.FloatTensor], 可選) — 預先計算的隱藏狀態(自注意力塊和交叉注意力塊中的鍵和值),可用於加速順序解碼。這通常包括模型在解碼上一階段返回的 past_key_values,當 use_cache=Trueconfig.use_cache=True 時。

    允許兩種格式:

    • 一個 Cache 例項,詳見我們的 kv 快取指南
    • 長度為 config.n_layerstuple(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.AyaVisionCausalLMOutputWithPasttuple(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_layerstuple(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)
< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.