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 上更新