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)