Transformers 4.37 中文文档(八十七)(4)

简介: Transformers 4.37 中文文档(八十七)

Transformers 4.37 中文文档(八十七)(3)https://developer.aliyun.com/article/1563244


class transformers.InstructBlipQFormerConfig

<来源>

( vocab_size = 30522 hidden_size = 768 num_hidden_layers = 12 num_attention_heads = 12 intermediate_size = 3072 hidden_act = 'gelu' hidden_dropout_prob = 0.1 attention_probs_dropout_prob = 0.1 max_position_embeddings = 512 initializer_range = 0.02 layer_norm_eps = 1e-12 pad_token_id = 0 position_embedding_type = 'absolute' cross_attention_frequency = 2 encoder_hidden_size = 1408 **kwargs )

参数

  • vocab_size (int, optional, 默认为 30522) — Q-Former 模型的词汇量。定义了在调用模型时可以表示的不同标记数量。
  • hidden_size (int, optional, 默认为 768) — 编码器层和池化层的维度。
  • num_hidden_layers (int, optional, 默认为 12) — Transformer 编码器中的隐藏层数量。
  • num_attention_heads (int, optional, 默认为 12) — Transformer 编码器中每个注意力层的注意力头数量。
  • intermediate_size (int, optional, 默认为 3072) — Transformer 编码器中“中间”(通常称为前馈)层的维度。
  • hidden_act (strCallable, optional, 默认为"gelu") — 编码器和池化器中的非线性激活函数(函数或字符串)。如果是字符串,支持"gelu""relu""silu""gelu_new"
  • hidden_dropout_prob (float, optional, 默认为 0.1) — 嵌入层、编码器和池化器中所有全连接层的 dropout 概率。
  • attention_probs_dropout_prob (float, optional, 默认为 0.1) — 注意力概率的 dropout 比率。
  • max_position_embeddings (int, optional, 默认为 512) — 此模型可能使用的最大序列长度。通常将其设置为较大的值以防万一(例如 512、1024 或 2048)。
  • initializer_range (float, optional, 默认为 0.02) — 用于初始化所有权重矩阵的截断正态初始化器的标准差。
  • layer_norm_eps (float, optional, 默认为 1e-12) — 层归一化层使用的 epsilon。
  • position_embedding_type (str, optional, 默认为"absolute") — 位置嵌入的类型。选择"absolute""relative_key""relative_key_query"中的一个。对于位置嵌入,请使用"absolute"。有关"relative_key"的更多信息,请参考Self-Attention with Relative Position Representations (Shaw et al.)。有关"relative_key_query"的更多信息,请参考Improve Transformer Models with Better Relative Position Embeddings (Huang et al.)中的Method 4
  • cross_attention_frequency (int, optional, 默认为 2) — 向 Transformer 层添加交叉注意力的频率。
  • encoder_hidden_size (int, optional, 默认为 1408) — 用于交叉注意力的隐藏状态的隐藏大小。

这是一个配置类,用于存储 InstructBlipQFormerModel 的配置。它用于根据指定的参数实例化一个  InstructBLIP Querying Transformer (Q-Former)模型,定义模型架构。使用默认值实例化配置将产生类似于  InstructBLIP Salesforce/instruct-blip-flan-t5架构的配置。配置对象继承自 PretrainedConfig,可用于控制模型输出。阅读 PretrainedConfig 的文档以获取更多信息。

请注意,InstructBlipQFormerModel 与 BertLMHeadModel 非常相似,具有交错的交叉注意力。

示例:

>>> from transformers import InstructBlipQFormerConfig, InstructBlipQFormerModel
>>> # Initializing a InstructBLIP Salesforce/instruct-blip-flan-t5 style configuration
>>> configuration = InstructBlipQFormerConfig()
>>> # Initializing a model (with random weights) from the Salesforce/instruct-blip-flan-t5 style configuration
>>> model = InstructBlipQFormerModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config

InstructBlipProcessor

class transformers.InstructBlipProcessor

< source >

( image_processor tokenizer qformer_tokenizer )

参数

  • image_processor (BlipImageProcessor) — BlipImageProcessor 的一个实例。图像处理器是必需的输入。
  • tokenizer (AutoTokenizer) — [‘PreTrainedTokenizer`]的一个实例。分词器是必需的输入。
  • qformer_tokenizer (AutoTokenizer) — [‘PreTrainedTokenizer`]的一个实例。Q-Former tokenizer 是必需的输入。

构建一个 InstructBLIP 处理器,将 BLIP 图像处理器和 LLaMa/T5 分词器包装成一个单一处理器。

InstructBlipProcessor 提供了 BlipImageProcessor 和 AutoTokenizer 的所有功能。查看__call__()和 decode()的文档字符串以获取更多信息。

batch_decode

< source >

( *args **kwargs )

此方法将其所有参数转发给 PreTrainedTokenizer 的 batch_decode()。有关更多信息,请参阅此方法的文档字符串。

decode

< source >

( *args **kwargs )

此方法将其所有参数转发给 PreTrainedTokenizer 的 decode()。有关更多信息,请参阅此方法的文档字符串。

InstructBlipVisionModel

class transformers.InstructBlipVisionModel

< source >

( config: InstructBlipVisionConfig )
forward

< source >

( pixel_values: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.modeling_outputs.BaseModelOutputWithPooling or tuple(torch.FloatTensor)

参数

  • pixel_values (torch.FloatTensor,形状为(batch_size, num_channels, height, width)) — 像素值。像素值可以使用 InstructBlipProcessor 获取。有关详细信息,请参阅InstructBlipProcessor.__call__()
  • output_attentions (bool可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的attentions
  • output_hidden_states (bool可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的hidden_states
  • return_dict (bool, 可选) — 是否返回一个 ModelOutput 而不是一个普通的元组。

返回

transformers.modeling_outputs.BaseModelOutputWithPooling 或 tuple(torch.FloatTensor)

一个 transformers.modeling_outputs.BaseModelOutputWithPooling 或一个torch.FloatTensor元组(如果传递return_dict=Falseconfig.return_dict=False时)包含各种元素,这取决于配置()和输入。

  • last_hidden_state (torch.FloatTensor,形状为(batch_size, sequence_length, hidden_size)) — 模型最后一层的隐藏状态序列。
  • pooler_output (torch.FloatTensor,形状为(batch_size, hidden_size)) — 经过用于辅助预训练任务的层进一步处理后,序列中第一个标记(分类标记)的最后一层隐藏状态。例如,对于 BERT 系列模型,这返回经过线性层和 tanh 激活函数处理后的分类标记。线性层的权重是在预训练期间从下一个句子预测(分类)目标中训练的。
  • hidden_states (tuple(torch.FloatTensor)可选,当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回) — 形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor元组(如果模型有嵌入层,则为嵌入的输出和每一层的输出)。
    模型在每一层输出的隐藏状态以及可选的初始嵌入输出。
  • attentions (tuple(torch.FloatTensor)可选,当传递output_attentions=Trueconfig.output_attentions=True时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor元组(每层一个)。
    在注意力 softmax 之后的注意力权重,用于计算自注意力头中的加权平均值。

InstructBlipVisionModel 的前向方法,覆盖了__call__特殊方法。

虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用Module实例,而不是在此处调用,因为前者会负责运行预处理和后处理步骤,而后者会默默地忽略它们。

InstructBlipQFormerModel

class transformers.InstructBlipQFormerModel

<来源>

( config: InstructBlipQFormerConfig )

查询变换器(Q-Former),用于 InstructBLIP。与 BLIP-2 略有修改,因为它还将指令作为输入。

forward

<来源>

( input_ids: LongTensor attention_mask: Optional = None position_ids: Optional = None query_embeds: Optional = None head_mask: Optional = None encoder_hidden_states: Optional = None encoder_attention_mask: Optional = None past_key_values: Optional = None use_cache: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None )

encoder_hidden_states(形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor可选):编码器最后一层的隐藏状态序列。如果模型配置为解码器,则在交叉注意力中使用。encoder_attention_mask(形状为(batch_size, sequence_length)torch.FloatTensor可选):避免对编码器输入的填充标记索引执行注意力的掩码。如果模型配置为解码器,则在交叉注意力中使用。选择的掩码值为[0, 1]

  • 对于未被masked的标记,值为 1。
  • 对于被masked的标记,值为 0。past_key_values(长度为config.n_layerstuple(tuple(torch.FloatTensor)),每个元组有 4 个张量,形状为(batch_size, num_heads, sequence_length - 1, embed_size_per_head)):包含注意力块的预计算键和值隐藏状态。可用于加速解码。如果使用past_key_values,用户可以选择仅输入最后的decoder_input_ids(那些没有将其过去的键值状态提供给此模型的)的形状为(batch_size, 1),而不是所有形状为(batch_size, sequence_length)decoder_input_ids。use_cache(bool可选):如果设置为True,将返回past_key_values键值状态,并可用于加速解码(参见past_key_values)。

InstructBlipForConditionalGeneration

class transformers.InstructBlipForConditionalGeneration

<来源>

( config: InstructBlipConfig )

参数

  • config(InstructBlipConfig)—模型的所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只加载配置。查看 from_pretrained()方法以加载模型权重。

InstructBLIP 模型用于根据图像和可选文本提示生成文本。该模型由视觉编码器、查询变换器(Q-Former)和语言模型组成。

可以选择向模型传递input_ids,作为文本提示,以使语言模型继续提示。否则,语言模型将从[BOS](序列开始)标记开始生成文本。

此模型继承自 PreTrainedModel。查看超类文档以了解库为所有模型实现的通用方法(如下载或保存、调整输入嵌入、修剪头等)。

此模型还是 PyTorch torch.nn.Module子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有相关信息。

forward

<来源>

( pixel_values: FloatTensor qformer_input_ids: FloatTensor qformer_attention_mask: Optional = None input_ids: Optional = None attention_mask: Optional = None decoder_input_ids: Optional = None decoder_attention_mask: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None labels: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.models.instructblip.modeling_instructblip.InstructBlipForConditionalGenerationModelOutput or tuple(torch.FloatTensor)

参数

  • pixel_values(形状为(batch_size, num_channels, height, width)torch.FloatTensor)—像素值。像素值可以使用 InstructBlipProcessor 获取。有关详细信息,请参阅InstructBlipProcessor.__call__()
  • qformer_input_ids(形状为(batch_size, sequence_length)torch.LongTensor可选)—Q-Former 词汇表中输入序列标记的索引。可以选择提供输入标记作为文本提示,Q-Former 模型将对其进行编码。
    可以使用 InstructBlipProcessor 获取索引。有关详细信息,请参阅InstructBlipProcessor.__call__()
    什么是输入 ID?
  • qformer_attention_mask (torch.Tensor of shape (batch_size, sequence_length), optional) — 避免在填充标记索引上执行注意力的掩码。掩码值选择在[0, 1]中:
  • 对于未被masked的标记为 1,
  • 对于被masked的标记为 0。
  • 什么是注意力掩码?
  • input_ids (torch.LongTensor of shape (batch_size, sequence_length), optional) — 输入序列标记在语言模型词汇中的索引。输入标记可以选择作为文本提示提供,语言模型可以继续。
    可以使用 InstructBlipProcessor 获取索引。有关详细信息,请参阅InstructBlipProcessor.__call__()
    什么是输入 ID?
  • attention_mask (torch.Tensor of shape (batch_size, sequence_length), optional) — 避免在填充标记索引上执行注意力的掩码。掩码值选择在[0, 1]中:
  • 对于未被masked的标记为 1,
  • 对于被masked的标记为 0。
  • 什么是注意力掩码?
  • decoder_input_ids (torch.LongTensor of shape (batch_size, target_sequence_length), optional) — 解码器输入序列标记在语言模型词汇中的索引。仅在使用编码器-解码器语言模型(如 T5)时相关。
    可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call()。什么是解码器输入 ID?
  • decoder_attention_mask (torch.BoolTensor of shape (batch_size, target_sequence_length), optional) — 默认行为:生成一个忽略decoder_input_ids中填充标记的张量。因果掩码也将默认使用。
    仅在使用编码器-解码器语言模型(如 T5)时相关。
  • output_attentions (bool, optional) — 是否返回所有注意力层的注意力张量。有关更多细节,请参阅返回的张量下的attentions
  • output_hidden_states (bool, optional) — 是否返回所有层的隐藏状态。有关更多细节,请参阅返回的张量下的hidden_states
  • return_dict (bool, optional) — 是否返回 ModelOutput 而不是普通元组。
  • labels (torch.LongTensor of shape (batch_size,), optional) — 用于计算语言建模损失的标签。索引应在[-100, 0, ..., config.vocab_size - 1]中。所有设置为-100的标签将被忽略(被masked),损失仅计算标签在[0, ..., config.vocab_size]中的标签

返回

transformers.models.instructblip.modeling_instructblip.InstructBlipForConditionalGenerationModelOutputtuple(torch.FloatTensor)

transformers.models.instructblip.modeling_instructblip.InstructBlipForConditionalGenerationModelOutputtorch.FloatTensor 元组(如果传递了return_dict=Falseconfig.return_dict=False时)包含根据配置()和输入的各种元素。

  • loss (torch.FloatTensor, optional, 当提供labels时返回,形状为(1,)) — 语言建模损失来自语言模型。
  • logits (torch.FloatTensor of shape (batch_size, sequence_length, config.vocab_size)) — 语言模型的语言建模头的预测分数。
  • vision_outputs (BaseModelOutputWithPooling) — 视觉编码器的输出。
  • qformer_outputs (BaseModelOutputWithPoolingAndCrossAttentions) — Q-Former(查询变换器)的输出。
  • language_model_outputs (CausalLMOutputWithPastSeq2SeqLMOutput) — 语言模型的输出。

InstructBlipForConditionalGeneration 的前向方法,覆盖了__call__特殊方法。

虽然前向传递的配方需要在此函数内定义,但应该在此之后调用Module实例,而不是在此处调用,因为前者负责运行预处理和后处理步骤,而后者会默默地忽略它们。

示例:

>>> from transformers import InstructBlipProcessor, InstructBlipForConditionalGeneration
>>> import torch
>>> from PIL import Image
>>> import requests
>>> model = InstructBlipForConditionalGeneration.from_pretrained("Salesforce/instructblip-vicuna-7b")
>>> processor = InstructBlipProcessor.from_pretrained("Salesforce/instructblip-vicuna-7b")
>>> device = "cuda" if torch.cuda.is_available() else "cpu"
>>> model.to(device)
>>> url = "https://raw.githubusercontent.com/salesforce/LAVIS/main/docs/_static/Confusing-Pictures.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw).convert("RGB")
>>> prompt = "What is unusual about this image?"
>>> inputs = processor(images=image, text=prompt, return_tensors="pt").to(device)
>>> outputs = model.generate(
...     **inputs,
...     do_sample=False,
...     num_beams=5,
...     max_length=256,
...     min_length=1,
...     top_p=0.9,
...     repetition_penalty=1.5,
...     length_penalty=1.0,
...     temperature=1,
... )
>>> generated_text = processor.batch_decode(outputs, skip_special_tokens=True)[0].strip()
>>> print(generated_text)
The unusual aspect of this image is that a man is ironing clothes on the back of a yellow SUV, which is parked in the middle of a busy city street. This is an unconventional approach to ironing clothes, as it requires the man to balance himself and his ironing equipment on top of the vehicle while navigating through traffic. Additionally, the presence of taxis and other vehicles in the scene further emphasizes the unusual nature of this situation.
generate

<来源>

( pixel_values: FloatTensor qformer_input_ids: Optional = None qformer_attention_mask: Optional = None input_ids: Optional = None attention_mask: Optional = None **generate_kwargs ) → export const metadata = 'undefined';captions (list)

参数

  • pixel_values (torch.FloatTensor of shape (batch_size, num_channels, height, width)) — 要处理的输入图像。
  • qformer_input_ids (torch.LongTensor of shape (batch_size, sequence_length), optional) — 用作输入到 Q-Former 模块的提示序列。
  • qformer_attention_mask (torch.LongTensor of shape (batch_size, sequence_length), optional) — 用于避免在填充标记索引上执行注意力的掩码。
  • input_ids (torch.LongTensor of shape (batch_size, sequence_length), optional) — 用作生成提示的序列。
  • attention_mask (torch.LongTensor of shape (batch_size, sequence_length), optional) — 用于避免在填充标记索引上执行注意力的掩码。

返回

字幕(列表)

一个长度为 batch_size * num_captions 的字符串列表。

覆盖generate函数以能够将模型用作有条件生成器。

KOSMOS-2

原始文本:huggingface.co/docs/transformers/v4.37.2/en/model_doc/kosmos-2

概述

KOSMOS-2 模型是由 Zhiliang Peng、Wenhui Wang、Li Dong、Yaru Hao、Shaohan Huang、Shuming Ma、Furu Wei 在Kosmos-2: Grounding Multimodal Large Language Models to the World中提出的。

KOSMOS-2 是基于 Transformer 的因果语言模型,通过在基于网络规模的图像文本对数据集GRIT上进行下一个单词预测任务进行训练。数据集中边界框的空间坐标被转换为位置标记序列,这些标记被附加到它们各自的实体文本跨度上(例如,a snowman后跟)。数据格式类似于将图像中的对象区域与相应标题中的文本跨度连接起来的“超链接”。

论文摘要如下:

我们介绍了  Kosmos-2,一个多模态大型语言模型(MLLM),使其能够感知对象描述(例如,边界框)并将文本与视觉世界联系起来。具体来说,我们将引用表达式表示为  Markdown 中的链接,即“文本跨度”,其中对象描述是位置标记序列。与多模态语料库一起,我们构建了大规模的基于图像文本对的数据(称为  GrIT)来训练模型。除了 MLLM 的现有功能(例如,感知一般模态,遵循指令以及执行上下文学习)之外,Kosmos-2  还将接地能力整合到下游应用中。我们在广泛的任务上评估了  Kosmos-2,包括(i)多模态接地,例如引用表达理解和短语接地,(ii)多模态引用,例如引用表达生成,(iii)感知语言任务,以及(iv)语言理解和生成。这项工作为实体  AI 的发展奠定了基础,并为语言、多模态感知、行动和世界建模的大融合提供了启示,这是通往人工通用智能的关键一步。代码和预训练模型可在aka.ms/kosmos-2上获得。

KOSMOS-2 可以处理的任务概述。摘自原始论文

示例

>>> from PIL import Image
>>> import requests
>>> from transformers import AutoProcessor, Kosmos2ForConditionalGeneration
>>> model = Kosmos2ForConditionalGeneration.from_pretrained("microsoft/kosmos-2-patch14-224")
>>> processor = AutoProcessor.from_pretrained("microsoft/kosmos-2-patch14-224")
>>> url = "https://huggingface.co/microsoft/kosmos-2-patch14-224/resolve/main/snowman.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw)
>>> prompt = "<grounding> An image of"
>>> inputs = processor(text=prompt, images=image, return_tensors="pt")
>>> generated_ids = model.generate(
...     pixel_values=inputs["pixel_values"],
...     input_ids=inputs["input_ids"],
...     attention_mask=inputs["attention_mask"],
...     image_embeds=None,
...     image_embeds_position_mask=inputs["image_embeds_position_mask"],
...     use_cache=True,
...     max_new_tokens=64,
... )
>>> generated_text = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]
>>> processed_text = processor.post_process_generation(generated_text, cleanup_and_extract=False)
>>> processed_text
'<grounding> An image of<phrase> a snowman</phrase><object><patch_index_0044><patch_index_0863></object> warming himself by<phrase> a fire</phrase><object><patch_index_0005><patch_index_0911></object>.'
>>> caption, entities = processor.post_process_generation(generated_text)
>>> caption
'An image of a snowman warming himself by a fire.'
>>> entities
[('a snowman', (12, 21), [(0.390625, 0.046875, 0.984375, 0.828125)]), ('a fire', (41, 47), [(0.171875, 0.015625, 0.484375, 0.890625)])]

这个模型是由Yih-Dar SHIEH贡献的。原始代码可以在这里找到


Transformers 4.37 中文文档(八十七)(5)https://developer.aliyun.com/article/1563246

相关文章
|
7月前
|
存储 PyTorch 算法框架/工具
Transformers 4.37 中文文档(八十七)(5)
Transformers 4.37 中文文档(八十七)
45 3
|
7月前
|
存储 编解码 PyTorch
Transformers 4.37 中文文档(八十七)(1)
Transformers 4.37 中文文档(八十七)
27 2
|
7月前
|
存储 编解码 索引
Transformers 4.37 中文文档(八十七)(3)
Transformers 4.37 中文文档(八十七)
39 2
|
7月前
|
存储 PyTorch 算法框架/工具
Transformers 4.37 中文文档(八十七)(2)
Transformers 4.37 中文文档(八十七)
34 2
|
7月前
|
自然语言处理 文字识别 PyTorch
Transformers 4.37 中文文档(八十九)(5)
Transformers 4.37 中文文档(八十九)
43 3
|
7月前
|
文字识别 PyTorch 算法框架/工具
Transformers 4.37 中文文档(八十九)(2)
Transformers 4.37 中文文档(八十九)
56 2
|
7月前
|
PyTorch TensorFlow 算法框架/工具
Transformers 4.37 中文文档(八十九)(3)
Transformers 4.37 中文文档(八十九)
39 2
|
7月前
|
机器学习/深度学习 PyTorch TensorFlow
Transformers 4.37 中文文档(八十九)(1)
Transformers 4.37 中文文档(八十九)
49 2
|
7月前
|
自然语言处理 PyTorch 算法框架/工具
Transformers 4.37 中文文档(八十九)(4)
Transformers 4.37 中文文档(八十九)
38 2
|
7月前
|
机器学习/深度学习 存储 PyTorch
Transformers 4.37 中文文档(九十七)(4)
Transformers 4.37 中文文档(九十七)
40 1