Transformers 4.37 中文文档(八十七)(1)https://developer.aliyun.com/article/1563242
TFGroupViTModel
class transformers.TFGroupViTModel
( config: GroupViTConfig *inputs **kwargs )
参数
config
(GroupViTConfig](/docs/transformers/v4.37.2/en/main_classes/model#transformers.PreTrainedModel.from_pretrained)方法以加载模型权重。
此模型继承自 TFPreTrainedModel。查看超类文档,了解库为其所有模型实现的通用方法(如下载或保存、调整输入嵌入、修剪头等)。
此模型也是tf.keras.Model的子类。将其用作常规的 TF 2.0 Keras 模型,并参考 TF 2.0 文档以获取与一般用法和行为相关的所有内容。
TF 2.0 模型接受两种格式的输入:
- 将所有输入作为关键字参数(类似于 PyTorch 模型),或
- 将所有输入作为列表、元组或字典放在第一个位置参数中。
这第二个选项在使用tf.keras.Model.fit
方法时很有用,该方法目前要求在模型调用函数的第一个参数中具有所有张量:model(inputs)
。
如果选择第二个选项,则有三种可能性可用于收集第一个位置参数中的所有输入张量:
- 一个仅包含
input_ids
的单个张量,没有其他内容:model(input_ids)
- 一个长度可变的列表,其中包含一个或多个输入张量,按照文档字符串中给定的顺序:
model([input_ids, attention_mask])
或model([input_ids, attention_mask, token_type_ids])
- 一个字典,其中包含与文档字符串中给定的输入名称相关联的一个或多个输入张量:
model({"input_ids": input_ids, "token_type_ids": token_type_ids})
call
( input_ids: TFModelInputType | None = None pixel_values: TFModelInputType | None = None attention_mask: np.ndarray | tf.Tensor | None = None position_ids: np.ndarray | tf.Tensor | None = None return_loss: Optional[bool] = None output_attentions: Optional[bool] = None output_hidden_states: Optional[bool] = None output_segmentation: Optional[bool] = None return_dict: Optional[bool] = None training: bool = False ) → export const metadata = 'undefined';transformers.models.groupvit.modeling_tf_groupvit.TFGroupViTModelOutput or tuple(tf.Tensor)
参数
input_ids
(np.ndarray
,tf.Tensor
,List[tf.Tensor]
``Dict[str, tf.Tensor]或
Dict[str, np.ndarray],每个示例的形状必须为
(batch_size, sequence_length)`)-词汇表中输入序列标记的索引。
可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.call
()和 PreTrainedTokenizer.encode()。
什么是输入 ID?pixel_values
(形状为(batch_size, num_channels, height, width)
的np.ndarray
,tf.Tensor
,List[tf.Tensor]
Dict[str, tf.Tensor]
或Dict[str, np.ndarray]
,每个示例的形状必须为)-像素值。像素值可以使用 AutoImageProcessor 获取。有关详细信息,请参阅 CLIPImageProcessor.call
()。attention_mask
(形状为(batch_size, sequence_length)
的np.ndarray
或tf.Tensor
,可选)-避免在填充标记索引上执行注意力的掩码。掩码值选择在[0, 1]
中:
- 对于未被屏蔽的标记为 1,
- 对于被屏蔽的标记为 0。
- 什么是注意力掩码?
position_ids
(形状为(batch_size, sequence_length)
的np.ndarray
或tf.Tensor
,可选)-每个输入序列标记在位置嵌入中的位置索引。在范围[0, config.max_position_embeddings - 1]
中选择。
什么是位置 ID?return_loss
(bool
,可选)-是否返回对比损失。output_attentions
(bool
,可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参见返回张量下的attentions
。此参数仅在急切模式下使用,在图模式下将使用配置中的值。output_hidden_states
(bool
,可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回张量下的hidden_states
。此参数仅在急切模式下使用,在图模式下将使用配置中的值。return_dict
(bool
,可选) — 是否返回一个 ModelOutput 而不是一个普通元组。此参数可在急切模式下使用,在图模式下该值将始终设置为 True。training
(bool
,可选,默认为 `False“) — 是否在训练模式下使用模型(一些模块如 dropout 模块在训练和评估之间有不同的行为)。
返回
transformers.models.groupvit.modeling_tf_groupvit.TFGroupViTModelOutput
或者 tuple(tf.Tensor)
transformers.models.groupvit.modeling_tf_groupvit.TFGroupViTModelOutput
或者一个 tf.Tensor
元组(如果传入 return_dict=False
或者 config.return_dict=False
)包含不同元素,取决于配置()和输入。
loss
(tf.Tensor
,形状为(1,)
,可选,当return_loss
为True
时返回) — 图像-文本相似性的对比损失。logits_per_image
(tf.Tensor
,形状为(image_batch_size, text_batch_size)
) —image_embeds
和text_embeds
之间的缩放点积分数。这代表了图像-文本相似性分数。logits_per_text
(tf.Tensor
,形状为(text_batch_size, image_batch_size)
) —text_embeds
和image_embeds
之间的缩放点积分数。这代表了文本-图像相似性分数。segmentation_logits
(tf.Tensor
,形状为(batch_size, config.num_labels, logits_height, logits_width)
) — 每个像素的分类分数。
返回的对数不一定与作为输入传递的pixel_values
大小相同。这是为了避免进行两次插值并在用户需要将对数调整为原始图像大小时丢失一些质量。您应该始终检查您的对数形状并根据需要调整大小。text_embeds
(tf.Tensor
,形状为(batch_size, output_dim
) — 通过将投影层应用于 TFGroupViTTextModel 的汇聚输出获得的文本嵌入。image_embeds
(tf.Tensor
,形状为(batch_size, output_dim
) — 通过将投影层应用于 TFGroupViTVisionModel 的汇聚输出获得的图像嵌入。text_model_output
(TFBaseModelOutputWithPooling
) — TFGroupViTTextModel 的输出。vision_model_output
(TFBaseModelOutputWithPooling
) — TFGroupViTVisionModel 的输出。
TFGroupViTModel 的前向方法,覆盖了 __call__
特殊方法。
虽然前向传递的配方需要在此函数内定义,但应该在之后调用 Module
实例而不是这个,因为前者负责运行预处理和后处理步骤,而后者会默默地忽略它们。
示例:
>>> from PIL import Image >>> import requests >>> from transformers import AutoProcessor, TFGroupViTModel >>> import tensorflow as tf >>> model = TFGroupViTModel.from_pretrained("nvidia/groupvit-gcc-yfcc") >>> processor = AutoProcessor.from_pretrained("nvidia/groupvit-gcc-yfcc") >>> url = "http://images.cocodataset.org/val2017/000000039769.jpg" >>> image = Image.open(requests.get(url, stream=True).raw) >>> inputs = processor( ... text=["a photo of a cat", "a photo of a dog"], images=image, return_tensors="tf", padding=True ... ) >>> outputs = model(**inputs) >>> logits_per_image = outputs.logits_per_image # this is the image-text similarity score >>> probs = tf.math.softmax(logits_per_image, axis=1) # we can take the softmax to get the label probabilities
get_text_features
( input_ids: TFModelInputType | None = None attention_mask: np.ndarray | tf.Tensor | None = None position_ids: np.ndarray | tf.Tensor | None = None output_attentions: Optional[bool] = None output_hidden_states: Optional[bool] = None return_dict: Optional[bool] = None training: bool = False ) → export const metadata = 'undefined';text_features (tf.Tensor of shape (batch_size, output_dim)
参数
input_ids
(np.ndarray
、tf.Tensor
、List[tf.Tensor]
、Dict[str, tf.Tensor]
或Dict[str, np.ndarray]
,每个示例的形状必须为(batch_size, sequence_length)
)— 词汇表中输入序列标记的索引。
可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.call
()和 PreTrainedTokenizer.encode()。
输入 ID 是什么?attention_mask
(形状为(batch_size, sequence_length)
的np.ndarray
或tf.Tensor
,可选)— 用于避免在填充标记索引上执行注意力的掩码。选择在[0, 1]
范围内的掩码值:
- 1 表示未被
masked
的标记, - 0 表示被
masked
的标记。
- 注意力掩码是什么?
position_ids
(形状为(batch_size, sequence_length)
的np.ndarray
或tf.Tensor
,可选)— 每个输入序列标记在位置嵌入中的位置索引。选择范围为[0, config.max_position_embeddings - 1]
。
位置 ID 是什么?output_attentions
(可选,bool
)— 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量中的attentions
。此参数仅在急切模式下使用,在图模式下将使用配置中的值。output_hidden_states
(可选,bool
)— 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量中的hidden_states
。此参数仅在急切模式下使用,在图模式下将使用配置中的值。return_dict
(可选,bool
)— 是否返回 ModelOutput 而不是普通元组。此参数可以在急切模式下使用,在图模式下该值将始终设置为 True。training
(可选,默认为False
)— 是否在训练模式下使用模型(一些模块如 dropout 模块在训练和评估之间有不同的行为)。
返回
text_features(形状为(batch_size, output_dim)
的tf.Tensor
)
通过将投影层应用于 TFGroupViTTextModel 的汇聚输出获得的文本嵌入。
TFGroupViTModel 的前向方法覆盖了__call__
特殊方法。
虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用Module
实例,而不是在此处调用,因为前者会负责运行预处理和后处理步骤,而后者会默默地忽略它们。
示例:
>>> from transformers import CLIPTokenizer, TFGroupViTModel >>> model = TFGroupViTModel.from_pretrained("nvidia/groupvit-gcc-yfcc") >>> tokenizer = CLIPTokenizer.from_pretrained("nvidia/groupvit-gcc-yfcc") >>> inputs = tokenizer(["a photo of a cat", "a photo of a dog"], padding=True, return_tensors="tf") >>> text_features = model.get_text_features(**inputs)
get_image_features
( pixel_values: TFModelInputType | None = None output_attentions: Optional[bool] = None output_hidden_states: Optional[bool] = None return_dict: Optional[bool] = None training: bool = False ) → export const metadata = 'undefined';image_features (tf.Tensor of shape (batch_size, output_dim)
参数
pixel_values
(np.ndarray
、tf.Tensor
、List[tf.Tensor]
、Dict[str, tf.Tensor]
或Dict[str, np.ndarray]
,每个示例的形状必须为(batch_size, num_channels, height, width)
)— 像素值。可以使用 AutoImageProcessor 获取像素值。有关详细信息,请参阅 CLIPImageProcessor.call
()。output_attentions
(可选,bool
)— 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量中的attentions
。此参数仅在急切模式下使用,在图模式下将使用配置中的值。output_hidden_states
(bool
, 可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量中的hidden_states
。此参数仅在急切模式下使用,在图模式下将使用配置中的值。return_dict
(bool
, 可选) — 是否返回 ModelOutput 而不是普通元组。此参数可在急切模式下使用,在图模式下该值将始终设置为 True。training
(bool
, 可选,默认为 `False“) — 是否在训练模式下使用模型(一些模块如 dropout 模块在训练和评估之间有不同的行为)。
返回值
image_features (tf.Tensor
,形状为 (batch_size, output_dim
)
通过将投影层应用于 TFGroupViTVisionModel 的汇聚输出获得的图像嵌入。
TFGroupViTModel 的前向方法,覆盖了 __call__
特殊方法。
虽然前向传递的方法需要在此函数内定义,但应该在之后调用 Module
实例,而不是在此处调用,因为前者会负责运行前处理和后处理步骤,而后者会默默地忽略它们。
示例:
>>> from PIL import Image >>> import requests >>> from transformers import AutoProcessor, TFGroupViTModel >>> model = TFGroupViTModel.from_pretrained("nvidia/groupvit-gcc-yfcc") >>> processor = AutoProcessor.from_pretrained("nvidia/groupvit-gcc-yfcc") >>> url = "http://images.cocodataset.org/val2017/000000039769.jpg" >>> image = Image.open(requests.get(url, stream=True).raw) >>> inputs = processor(images=image, return_tensors="tf") >>> image_features = model.get_image_features(**inputs)
TFGroupViTTextModel
class transformers.TFGroupViTTextModel
( config: GroupViTTextConfig *inputs **kwargs )
call
( input_ids: TFModelInputType | None = None attention_mask: np.ndarray | tf.Tensor | None = None position_ids: np.ndarray | tf.Tensor | None = None output_attentions: Optional[bool] = None output_hidden_states: Optional[bool] = None return_dict: Optional[bool] = None training: bool = False ) → export const metadata = 'undefined';transformers.modeling_tf_outputs.TFBaseModelOutputWithPooling or tuple(tf.Tensor)
参数
input_ids
(np.ndarray
,tf.Tensor
,List[tf.Tensor]
``Dict[str, tf.Tensor]或
Dict[str, np.ndarray],每个示例的形状必须为
(batch_size, sequence_length)`) — 词汇表中输入序列标记的索引。
可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.call
() 和 PreTrainedTokenizer.encode()。
什么是输入 ID?attention_mask
(np.ndarray
或tf.Tensor
,形状为(batch_size, sequence_length)
,可选) — 避免在填充标记索引上执行注意力的掩码。掩码值选择在[0, 1]
:
- 对于未被掩码的标记为 1,
- 对于被掩码的标记为 0。
- 什么是注意力掩码?
position_ids
(np.ndarray
或tf.Tensor
,形状为(batch_size, sequence_length)
,可选) — 每个输入序列标记在位置嵌入中的位置索引。选择范围为[0, config.max_position_embeddings - 1]
。
什么是位置 ID?output_attentions
(bool
, 可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量中的attentions
。此参数仅在急切模式下使用,在图模式下将使用配置中的值。output_hidden_states
(bool
, 可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量中的hidden_states
。此参数仅在急切模式下使用,在图模式下将使用配置中的值。return_dict
(bool
, 可选) — 是否返回 ModelOutput 而不是普通元组。此参数可在急切模式下使用,在图模式下该值将始终设置为 True。training
(bool
,可选,默认为False
)— 是否在训练模式下使用模型(一些模块如 dropout 模块在训练和评估之间有不同的行为)。
返回
transformers.modeling_tf_outputs.TFBaseModelOutputWithPooling 或tuple(tf.Tensor)
一个 transformers.modeling_tf_outputs.TFBaseModelOutputWithPooling 或一个tf.Tensor
元组(如果传递了return_dict=False
或config.return_dict=False
时)包含根据配置()和输入的不同元素。
last_hidden_state
(形状为(batch_size, sequence_length, hidden_size)
的tf.Tensor
)— 模型最后一层的隐藏状态序列。pooler_output
(形状为(batch_size, hidden_size)
的tf.Tensor
)— 序列的第一个令牌(分类令牌)的最后一层隐藏状态,进一步由线性层和 Tanh 激活函数处理。线性层的权重是在预训练期间从下一个句子预测(分类)目标中训练的。
这个输出通常不是输入的语义内容的好摘要,通常最好对整个输入序列的隐藏状态进行平均或池化。hidden_states
(tuple(tf.Tensor)
,可选,当传递output_hidden_states=True
或config.output_hidden_states=True
时返回)— 形状为(batch_size, sequence_length, hidden_size)
的tf.Tensor
元组(一个用于嵌入的输出 + 一个用于每个层的输出)。
模型在每一层的隐藏状态加上初始嵌入输出。attentions
(tuple(tf.Tensor)
,可选,当传递output_attentions=True
或config.output_attentions=True
时返回)— 形状为(batch_size, num_heads, sequence_length, sequence_length)
的tf.Tensor
元组(每层一个)。
在注意力 softmax 之后的注意力权重,用于计算自注意力头中的加权平均值。
TFGroupViTTextModel 的 forward 方法,覆盖了__call__
特殊方法。
虽然前向传递的步骤需要在这个函数中定义,但应该在之后调用Module
实例,而不是这个函数,因为前者会处理运行前后处理步骤,而后者会默默地忽略它们。
示例:
>>> from transformers import CLIPTokenizer, TFGroupViTTextModel >>> tokenizer = CLIPTokenizer.from_pretrained("nvidia/groupvit-gcc-yfcc") >>> model = TFGroupViTTextModel.from_pretrained("nvidia/groupvit-gcc-yfcc") >>> inputs = tokenizer(["a photo of a cat", "a photo of a dog"], padding=True, return_tensors="tf") >>> outputs = model(**inputs) >>> last_hidden_state = outputs.last_hidden_state >>> pooled_output = outputs.pooler_output # pooled (EOS token) states
TFGroupViTVisionModel
class transformers.TFGroupViTVisionModel
( config: GroupViTVisionConfig *inputs **kwargs )
call
( pixel_values: TFModelInputType | None = None output_attentions: Optional[bool] = None output_hidden_states: Optional[bool] = None return_dict: Optional[bool] = None training: bool = False ) → export const metadata = 'undefined';transformers.modeling_tf_outputs.TFBaseModelOutputWithPooling or tuple(tf.Tensor)
参数
pixel_values
(np.ndarray
,tf.Tensor
,List[tf.Tensor]
,Dict[str, tf.Tensor]
或Dict[str, np.ndarray]
,每个示例必须具有形状(batch_size, num_channels, height, width)
)— 像素值。像素值可以使用 AutoImageProcessor 获取。有关详细信息,请参见 CLIPImageProcessor.call
()。output_attentions
(bool
,可选)— 是否返回所有注意力层的注意力张量。有关更多详细信息,请参见返回张量下的attentions
。此参数只能在急切模式下使用,在图模式下将使用配置中的值。output_hidden_states
(bool
,可选)- 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回张量下的hidden_states
。此参数仅在急切模式下使用,在图模式中将使用配置中的值。return_dict
(bool
,可选)- 是否返回一个 ModelOutput 而不是一个普通元组。此参数可以在急切模式下使用,在图模式中该值将始终设置为 True。training
(bool
,可选,默认为False
)- 是否在训练模式下使用模型(一些模块如 dropout 模块在训练和评估之间有不同的行为)。
返回
transformers.modeling_tf_outputs.TFBaseModelOutputWithPooling 或tuple(tf.Tensor)
transformers.modeling_tf_outputs.TFBaseModelOutputWithPooling 或一个tf.Tensor
元组(如果传递了return_dict=False
或config.return_dict=False
时)包含根据配置()和输入的不同元素。
last_hidden_state
(形状为(batch_size, sequence_length, hidden_size)
的tf.Tensor
)- 模型最后一层的隐藏状态序列。pooler_output
(形状为(batch_size, hidden_size)
的tf.Tensor
)- 序列第一个标记(分类标记)的最后一层隐藏状态,经过线性层和 Tanh 激活函数进一步处理。线性层的权重是在预训练期间从下一个句子预测(分类)目标中训练的。
这个输出通常不是输入语义内容的好摘要,通常最好对整个输入序列的隐藏状态序列进行平均或池化。hidden_states
(tuple(tf.Tensor)
,可选,当传递output_hidden_states=True
或config.output_hidden_states=True
时返回)- 形状为(batch_size, sequence_length, hidden_size)
的tf.Tensor
元组(一个用于嵌入的输出+一个用于每一层的输出)。
模型在每一层输出处的隐藏状态加上初始嵌入输出。attentions
(tuple(tf.Tensor)
,可选,当传递output_attentions=True
或config.output_attentions=True
时返回)- 形状为(batch_size, num_heads, sequence_length, sequence_length)
的tf.Tensor
元组(每层一个)。
在注意力 softmax 之后的注意力权重,用于计算自注意力头中的加权平均值。
TFGroupViTVisionModel 的前向方法,覆盖了__call__
特殊方法。
虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用Module
实例,而不是这个,因为前者负责运行预处理和后处理步骤,而后者则默默地忽略它们。
示例:
>>> from PIL import Image >>> import requests >>> from transformers import AutoProcessor, TFGroupViTVisionModel >>> processor = AutoProcessor.from_pretrained("nvidia/groupvit-gcc-yfcc") >>> model = TFGroupViTVisionModel.from_pretrained("nvidia/groupvit-gcc-yfcc") >>> url = "http://images.cocodataset.org/val2017/000000039769.jpg" >>> image = Image.open(requests.get(url, stream=True).raw) >>> inputs = processor(images=image, return_tensors="tf") >>> outputs = model(**inputs) >>> last_hidden_state = outputs.last_hidden_state >>> pooled_output = outputs.pooler_output # pooled CLS states
IDEFICS
原始文本:
huggingface.co/docs/transformers/v4.37.2/en/model_doc/idefics
概述
IDEFICS 模型是由 Hugo Laurençon、Lucile Saulnier、Léo Tronchon、Stas Bekman、Amanpreet Singh、Anton Lozhkov、Thomas Wang、Siddharth Karamcheti、Alexander M. Rush、Douwe Kiela、Matthieu Cord、Victor Sanh 提出的。
论文摘要如下:
在自然文档上训练的大型多模型,交替显示图像和文本,比在各种多模基准上训练的图像-文本对模型表现更好,这些基准需要对一个或多个图像进行推理以生成文本。然而,用于训练这些模型的数据集尚未发布,并且收集过程尚未完全指定。我们介绍了 OBELICS 数据集,这是一个包含来自 Common Crawl 的 141 亿个网页、3.53 亿个相关图像和 1150 亿个文本标记的开放式网络规模过滤数据集。我们描述了数据集创建过程,提出了全面的过滤规则,并对数据集内容进行了分析。为了展示 OBELISC 的可行性,我们在数据集上训练了一个拥有 800 亿参数的视觉和语言模型,并在各种多模基准上获得了竞争性能。我们发布了用于重现数据集的代码以及数据集本身。
此模型由HuggingFaceM4贡献。原始代码可以在这里找到。(TODO:目前没有公开链接)。
Transformers 中的 IDEFICS 建模代码用于微调和推理预训练的 IDEFICS 模型。
要从头开始训练一个新的 IDEFICS 模型,请使用 m4 代码库(一旦公开,将提供链接)
IdeficsConfig
class transformers.IdeficsConfig
( vocab_size = 32000 additional_vocab_size = 0 hidden_size = 4096 intermediate_size = 11008 num_hidden_layers = 32 num_attention_heads = 32 dropout = 0.0 hidden_act = 'silu' initializer_range = 0.02 alpha_initializer = 'zeros' alphas_initializer_range = 0.0 alpha_type = 'float' rms_norm_eps = 1e-06 use_cache = True pad_token_id = 0 bos_token_id = 1 eos_token_id = 2 tie_word_embeddings = False cross_layer_interval = 1 qk_layer_norms = False freeze_text_layers = True freeze_text_module_exceptions = [] freeze_lm_head = False freeze_vision_layers = True freeze_vision_module_exceptions = [] use_resampler = False vision_config = None perceiver_config = None **kwargs )
参数
additional_vocab_size
(int
, *optional`, defaults to 0) — 模型的额外词汇量,通常用于特殊的“”标记。额外的词汇标记始终是可训练的,而常规词汇标记可以冻结或不冻结。vocab_size
(int
, optional, defaults to 32000) — Idefics 模型的词汇量。定义了在调用~IdeficsModel 时可以表示的不同标记的数量。hidden_size
(int
, optional, defaults to 4096) — 隐藏表示的维度。intermediate_size
(int
, optional, defaults to 11008) — MLP 表示的维度。num_hidden_layers
(int
, optional, defaults to 32) — Transformer 编码器中隐藏层的数量。num_attention_heads
(int
, optional, defaults to 32) — Transformer 编码器中每个注意力层的注意力头数。dropout
(float
, optional, defaults to 0.0) — 嵌入层、编码器和池化器中所有全连接层的 dropout 概率。hidden_act
(str
orfunction
, optional, defaults to"silu"
) — 解码器中的非线性激活函数(函数或字符串)。initializer_range
(float
, optional, defaults to 0.02) — 用于初始化所有权重矩阵的 truncated_normal_initializer 的标准差。alpha_initializer
(str
, optional, defaults to"zeros"
) — alphas 的初始化类型。alphas_initializer_range
(float
, optional, defaults to 0.0) — 初始化 Gated Cross Attention 中 alphas 的 truncated_normal_initializer 的标准差。alpha_type
(str
, optional, defaults to"float"
) — 门控 alphas 应该是向量还是单个浮点数。rms_norm_eps
(float
, optional, defaults to 1e-6) — rms 归一化层使用的 epsilon。use_cache
(bool
, optional, defaults toTrue
) — 模型是否应返回最后的键/值注意力(并非所有模型都使用)。仅在config.is_decoder=True
时相关。pad_token_id
(int
, optional, defaults to 0) — 填充标记 id。bos_token_id
(int
, optional, defaults to 1) — 流的开始标记 id。eos_token_id
(int
, optional, defaults to 2) — 流的结束标记 id。tie_word_embeddings(bool,
optional, defaults toFalse
) — 是否绑定权重嵌入cross_layer_interval
(int
, optional, default to 1) — 交叉注意力(从文本到图像)层的间隔。qk_layer_norms
(bool
, optional, defaults toFalse
) — 是否在 q 和 k 之后添加层归一化freeze_text_layers
(bool
, optional, defaults toTrue
) — 是否冻结文本层freeze_text_module_exceptions
(bool
, optional, defaults to[]
) — 当freeze_text_layers
为True
时,冻结文本层的异常freeze_lm_head
(bool
, optional, defaults toFalse
) — 是否冻结 lm 头freeze_vision_layers
(bool
, optional, defaults toTrue
) — 是否冻结视觉层freeze_vision_module_exceptions
(bool
, optional, defaults to[]
) — 当freeze_vision_layers
为True
时,冻结视觉层的异常use_resampler
(bool
, optional, defaults toFalse
) — 是否使用重采样器vision_config
(IdeficsVisionConfig
, optional) — 自定义视觉配置或字典perceiver_config
(IdeficsPerceiverConfig
, optional) — 自定义感知器配置或字典
这是用于存储 IdeficsModel 配置的配置类。根据指定的参数实例化一个 Idefics 模型,定义模型架构。使用默认值实例化配置将产生类似于 Idefics-9B 的配置。
配置对象继承自 PretrainedConfig,可用于控制模型输出。阅读 PretrainedConfig 的文档以获取更多信息。
示例:
>>> from transformers import IdeficsModel, IdeficsConfig >>> # Initializing a Idefics idefics-9b style configuration >>> configuration = IdeficsConfig() >>> # Initializing a model from the idefics-9b style configuration >>> model = IdeficsModel(configuration) >>> # Accessing the model configuration >>> configuration = model.config
IdeficsModel
class transformers.IdeficsModel
( config: IdeficsConfig )
参数
config
(IdeficsConfig) — 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只会加载配置。查看 from_pretrained()方法以加载模型权重。config — IdeficsConfig
裸的 LLaMA 模型输出原始隐藏状态,没有特定的头部。该模型继承自 PreTrainedModel。查看超类文档以获取库为所有模型实现的通用方法(如下载或保存、调整输入嵌入、修剪头等)。
该模型也是 PyTorch torch.nn.Module子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有信息。
由config.num_hidden_layers
层组成的 Transformer 解码器。每一层都是一个IdeficsDecoderLayer
forward
( input_ids: LongTensor = None attention_mask: Optional = None position_ids: Optional = None past_key_values: Optional = None inputs_embeds: Optional = None pixel_values: Optional = None image_encoder_embeddings: Optional = None perceiver_embeddings: Optional = None image_attention_mask: Optional = None use_cache: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None interpolate_pos_encoding: Optional = False return_dict: Optional = None )
参数
input_ids
(torch.LongTensor
,形状为(batch_size, sequence_length)
)— 词汇表中输入序列标记的索引。默认情况下,如果提供填充,则将被忽略。
可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()。
什么是输入 ID?attention_mask
(torch.Tensor
,形状为(batch_size, sequence_length)
,可选)— 用于避免在填充标记索引上执行注意力的掩码。掩码值选在[0, 1]
之间:
- 对于未被
masked
的标记,为 1。 - 对于被
masked
的标记,为 0。
- 什么是注意力掩码?
可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()。
如果使用past_key_values
,可以选择仅输入最后的decoder_input_ids
(请参阅past_key_values
)。
如果要更改填充行为,您应该阅读modeling_opt._prepare_decoder_attention_mask
并根据您的需求进行修改。有关默认策略的更多信息,请参阅论文中的图表 1。
- 1 表示头部未被
masked
, - 0 表示头部被
masked
。
position_ids
(torch.LongTensor
,形状为(batch_size, sequence_length)
,可选)— 每个输入序列标记在位置嵌入中的位置索引。在范围[0, config.n_positions - 1]
中选择。什么是位置 ID?past_key_values
(tuple(tuple(torch.FloatTensor))
,可选,当传递use_cache=True
或当config.use_cache=True
时返回)— 长度为config.n_layers
的tuple(torch.FloatTensor)
元组,每个元组有 2 个形状为(batch_size, num_heads, sequence_length, embed_size_per_head)
的张量和 2 个额外的形状为(batch_size, num_heads, encoder_sequence_length, embed_size_per_head)
的张量。
包含预先计算的隐藏状态(自注意力块和交叉注意力块中的键和值),可以用于加速顺序解码(请参见past_key_values
输入)。
如果使用past_key_values
,用户可以选择仅输入形状为(batch_size, 1)
的最后一个decoder_input_ids
(那些没有将它们的过去键值状态提供给此模型的)而不是形状为(batch_size, sequence_length)
的所有decoder_input_ids
。inputs_embeds
(torch.FloatTensor
,形状为(batch_size, sequence_length, hidden_size)
,可选)— 可选地,您可以选择直接传递嵌入表示而不是传递input_ids
。如果您想要更多控制权来将input_ids
索引转换为相关向量,这将非常有用,而不是使用模型的内部嵌入查找矩阵。use_cache
(bool
,可选)— 如果设置为True
,将返回past_key_values
键值状态,并可用于加速解码(请参阅past_key_values
)。output_attentions
(bool
,可选)— 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的attentions
。output_hidden_states
(bool
,可选)— 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的hidden_states
。return_dict
(bool
,可选)— 是否返回 ModelOutput 而不是普通元组。
IdeficsModel 的前向方法,覆盖了__call__
特殊方法。
虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用Module
实例,而不是在此处调用,因为前者负责运行预处理和后处理步骤,而后者会默默地忽略它们。
Transformers 4.37 中文文档(八十七)(3)https://developer.aliyun.com/article/1563244