Transformers 文档
PaliGemma
并获得增强的文档体验
开始使用
PaliGemma
PaliGemma 是一系列视觉-语言模型 (VLM),结合了 SigLIP 和 Gemma 2B 模型。PaliGemma 提供 3B、10B 和 28B 参数版本。PaliGemma 的主要目的是提供一个可适应的基础 VLM,易于迁移到其他任务。SigLIP 视觉编码器是一个“形状优化”的对比预训练 ViT,它将图像转换为一系列 token,并可选择添加到可选的提示之前。Gemma 2B 模型用作解码器。PaliGemma 对所有图像和文本 token 使用全注意力机制,以最大化其容量。
PaliGemma 2 在第一个模型的基础上进行了改进,使用 Gemma 2(2B、9B 和 27B 参数变体)作为解码器。这些模型提供 pt 或 mix 变体。pt 检查点用于进一步微调,而 mix 检查点可直接使用。
您可以在 PaliGemma、PaliGemma 2 和 PaliGemma 2 Mix 系列中找到所有原始 PaliGemma 检查点。
点击右侧边栏中的 PaliGemma 模型,查看更多将 PaliGemma 应用于不同视觉和语言任务的示例。
下面的示例演示了如何使用 Pipeline 或 AutoModel 类根据图像生成文本。
import torch
from transformers import pipeline
pipeline = pipeline(
task="image-text-to-text",
model="google/paligemma2-3b-mix-224",
device=0,
torch_dtype=torch.bfloat16
)
pipeline(
"https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg",
text="What is in this image?"
)
量化通过以较低精度表示权重来减少大型模型的内存负担。有关更多可用量化后端,请参阅量化概述。
以下示例使用torchao仅将权重量化为int4。
# pip install torchao
import torch
import requests
from PIL import Image
from transformers import TorchAoConfig, AutoProcessor, PaliGemmaForConditionalGeneration
quantization_config = TorchAoConfig("int4_weight_only", group_size=128)
model = PaliGemmaForConditionalGeneration.from_pretrained(
"google/paligemma2-28b-mix-224",
torch_dtype=torch.bfloat16,
device_map="auto",
quantization_config=quantization_config
)
processor = AutoProcessor.from_pretrained(
"google/paligemma2-28b-mix-224",
)
prompt = "What is in this image?"
url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"
image = Image.open(requests.get(url, stream=True).raw)
inputs = processor(image, prompt, return_tensors="pt").to("cuda")
output = model.generate(**inputs, max_new_tokens=50, cache_implementation="static")
print(processor.decode(output[0], skip_special_tokens=True))
使用 AttentionMaskVisualizer 可以更好地理解模型能够或不能关注哪些 token。
from transformers.utils.attention_visualizer import AttentionMaskVisualizer
visualizer = AttentionMaskVisualizer("google/paligemma2-3b-mix-224")
visualizer("<img> What is in this image?")

注意事项
PaliGemma 不是一个对话模型,最适合用于微调特定下游任务,例如图像字幕、视觉问答 (VQA)、目标检测和文档理解。
PaliGemmaProcessor 可以为模型准备图像、文本和可选标签。在微调期间,将
suffix
参数传递给处理器,为模型创建标签。prompt = "What is in this image?" answer = "a pallas cat" inputs = processor(images=image, text=prompt, suffix=answer, return_tensors="pt")
如果 PaliGemma 经过微调以接受多张图像,则可以支持多张输入图像。例如,NLVR2 检查点支持多张图像。将图像作为列表传递给处理器。
import torch import requests from PIL import Image from transformers import TorchAoConfig, AutoProcessor, PaliGemmaForConditionalGeneration model = PaliGemmaForConditionalGeneration.from_pretrained("google/paligemma-3b-ft-nlvr2-448") processor = AutoProcessor.from_pretrained("google/paligemma-3b-ft-nlvr2-448") prompt = "Are these two images the same?" cat_image = Image.open( requests.get("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg", stream=True).raw ) cow_image = Image.open( requests.get( "https://media.istockphoto.com/id/1192867753/photo/cow-in-berchida-beach-siniscola.jpg?s=612x612&w=0&k=20&c=v0hjjniwsMNfJSuKWZuIn8pssmD5h5bSN1peBd1CmH4=", stream=True ).raw ) inputs = processor(images=[[cat_image, cow_image]], text=prompt, return_tensors="pt") output = model.generate(**inputs, max_new_tokens=20, cache_implementation="static") print(processor.decode(output[0], skip_special_tokens=True))
PaliGemmaConfig
class transformers.PaliGemmaConfig
< 来源 >( vision_config = None text_config = None image_token_index = 256000 vocab_size = 257152 projection_dim = 2048 hidden_size = 2048 **kwargs )
参数
- vision_config (
PaliGemmaVisionConfig
, 可选) — 自定义视觉配置或字典 - text_config (
Union[AutoConfig, dict]
, 可选) — 文本骨干的配置对象。可以是LlamaConfig
或MistralConfig
中的任何一个。 - image_token_index (
int
, 可选, 默认为 256000) — 用于编码图像提示的图像 token 索引。 - vocab_size (
int
, 可选, 默认为 257152) — PaliGemma 模型词汇表大小。定义了调用 ~PaliGemmaForConditionalGeneration 时可由inputs_ids
表示的不同 token 数量。 - projection_dim (
int
, 可选, 默认为 2048) — 多模态投影空间的维度。 - hidden_size (
int
, 可选, 默认为 2048) — 语言模型隐藏层的维度。
这是用于存储 PaliGemmaForConditionalGeneration 配置的配置类。它用于根据指定参数实例化 PaliGemma 模型,定义模型架构。使用默认值实例化配置将产生与 PaliGemma-2B 相似的配置。
配置对象继承自 PretrainedConfig,可用于控制模型输出。有关更多信息,请参阅 PretrainedConfig 的文档。
示例
>>> from transformers import PaliGemmaForConditionalGeneration, PaliGemmaConfig, SiglipVisionConfig, GemmaConfig
>>> # Initializing a Siglip-like vision config
>>> vision_config = SiglipVisionConfig()
>>> # Initializing a PaliGemma config
>>> text_config = GemmaConfig()
>>> # Initializing a PaliGemma paligemma-3b-224 style configuration
>>> configuration = PaliGemmaConfig(vision_config, text_config)
>>> # Initializing a model from the paligemma-3b-224 style configuration
>>> model = PaliGemmaForConditionalGeneration(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config
PaliGemmaProcessor
class transformers.PaliGemmaProcessor
< 来源 >( image_processor = None tokenizer = None chat_template = None **kwargs )
参数
- image_processor (SiglipImageProcessor, 可选) — 图像处理器是必需输入。
- tokenizer (GemmaTokenizerFast, 可选) — 分词器是必需输入。
- chat_template (
str
, 可选) — 一个 Jinja 模板,用于将聊天中的消息列表转换为可 token 化的字符串。
构建一个 PaliGemma 处理器,它将 PaliGemma 图像处理器和 PaliGemma 分词器封装成一个单一的处理器。
PaliGemmaProcessor 提供了 SiglipImageProcessor 和 GemmaTokenizerFast 的所有功能。有关更多信息,请参阅 __call__()
和 decode()。
此方法将其所有参数转发给 GemmaTokenizerFast 的 batch_decode()。有关更多信息,请参阅此方法的文档字符串。
PaliGemmaModel
class transformers.PaliGemmaModel
< 来源 >( config: PaliGemmaConfig )
参数
- config (PaliGemmaConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化并不会加载与模型相关的权重,只加载配置。请查阅 from_pretrained() 方法以加载模型权重。
基础 PaliGemma 模型,包含视觉骨干和不带语言建模头部的语言模型。
该模型继承自 PreTrainedModel。请查阅超类文档以了解库为其所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、修剪头部等)。
此模型也是 PyTorch torch.nn.Module 子类。将其作为常规 PyTorch 模块使用,并参考 PyTorch 文档以了解所有与一般使用和行为相关的事宜。
正向传播
< 来源 >( 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.Union[list[torch.FloatTensor], transformers.cache_utils.Cache, NoneType] = None token_type_ids: typing.Optional[torch.LongTensor] = None cache_position: typing.Optional[torch.LongTensor] = None inputs_embeds: typing.Optional[torch.FloatTensor] = 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 **kwargs: typing_extensions.Unpack[transformers.modeling_flash_attention_utils.FlashAttentionKwargs] ) → transformers.models.paligemma.modeling_paligemma.PaligemmaModelOutputWithPast
或 tuple(torch.FloatTensor)
参数
- input_ids (形状为
(batch_size, sequence_length)
的torch.LongTensor
) — 词汇表中输入序列 token 的索引。默认情况下会忽略填充。索引可以使用 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
, 可选) — 遮罩,用于避免在填充 token 索引上执行注意力。遮罩值在[0, 1]
中选择:- 1 表示 未被遮罩 的 token,
- 0 表示 被遮罩 的 token。
- position_ids (形状为
(batch_size, sequence_length)
的torch.LongTensor
, 可选) — 每个输入序列 token 在位置嵌入中的位置索引。在[0, config.n_positions - 1]
范围内选择。 - past_key_values (
Union[list[torch.FloatTensor], ~cache_utils.Cache, NoneType]
) — 预先计算的隐藏状态(自注意力块和交叉注意力块中的键和值),可用于加速顺序解码。这通常包括模型在解码上一阶段返回的past_key_values
,当use_cache=True
或config.use_cache=True
时。允许两种格式:
- Cache 实例,请参阅我们的 kv 缓存指南;
- 长度为
config.n_layers
的tuple(torch.FloatTensor)
元组,每个元组包含 2 个形状为(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
。 - token_type_ids (形状为
(batch_size, sequence_length)
的torch.LongTensor
, 可选) — 段落 token 索引,用于指示输入的第一个和第二个部分。索引在[0, 1]
中选择:- 0 对应于 句子 A token,
- 1 对应于 句子 B token。
- cache_position (形状为
(sequence_length)
的torch.LongTensor
, 可选) — 描述输入序列 token 在序列中位置的索引。与position_ids
不同,此张量不受填充影响。它用于在正确位置更新缓存并推断完整的序列长度。 - inputs_embeds (形状为
(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
, 可选) — 可选地,您可以直接传递嵌入表示,而不是传递input_ids
。如果您希望对如何将input_ids
索引转换为相关向量具有比模型内部嵌入查找矩阵更多的控制,则此功能很有用。 - labels (形状为
(batch_size, sequence_length)
的torch.LongTensor
, 可选) — 用于计算遮罩语言建模损失的标签。索引应在[0, ..., config.text_config.vocab_size]
或 -100 之间(请参阅input_ids
文档字符串)。索引设置为-100
的 token 将被忽略(遮罩),损失仅针对标签在[0, ..., config.text_config.vocab_size]
中的 token 计算。 - use_cache (
bool
, 可选) — 如果设置为True
,将返回past_key_values
键值状态,并可用于加速解码(请参阅past_key_values
)。 - output_attentions (
bool
, 可选) — 是否返回所有注意力层的注意力张量。有关更多详情,请参阅返回张量下的attentions
。 - output_hidden_states (
bool
, optional) — 是否返回所有层的隐藏状态。更多详细信息请参阅返回张量中的hidden_states
。 - return_dict (
bool
, optional) — 是否返回 ModelOutput 而不是纯元组。
返回
transformers.models.paligemma.modeling_paligemma.PaligemmaModelOutputWithPast
或 tuple(torch.FloatTensor)
一个 transformers.models.paligemma.modeling_paligemma.PaligemmaModelOutputWithPast
或一个 torch.FloatTensor
元组(如果传递 return_dict=False
或当 config.return_dict=False
时),包含根据配置 (PaliGemmaConfig) 和输入而定的各种元素。
-
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)
元组,每个元组包含 2 个形状为(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
。由视觉编码器生成并投影最后一个隐藏状态后的模型的 image_hidden_states。
PaliGemmaModel forward 方法覆盖了 __call__
特殊方法。
虽然前向传播的实现需要在该函数中定义,但之后应该调用 Module
实例而不是此函数,因为前者负责运行预处理和后处理步骤,而后者则默默地忽略它们。
示例
>>> from PIL import Image
>>> import requests
>>> from transformers import AutoProcessor, PaliGemmaForConditionalGeneration
>>> model = PaliGemmaForConditionalGeneration.from_pretrained("google/paligemma2-3b-mix-224")
>>> processor = AutoProcessor.from_pretrained("google/paligemma2-3b-mix-224")
>>> prompt = "Where is the cat standing?"
>>> url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"
>>> image = Image.open(requests.get(url, stream=True).raw)
>>> inputs = processor(images=image, text=prompt, return_tensors="pt")
>>> # Generate
>>> generate_ids = model.generate(**inputs,)
>>> processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
"Where is the cat standing?\nsnow"
get_image_features
< source >( pixel_values: FloatTensor ) → image_features (torch.Tensor
)
从视觉塔获取图像最后隐藏状态并应用多模态投影。
PaliGemmaForConditionalGeneration
class transformers.PaliGemmaForConditionalGeneration
< source >( config: PaliGemmaConfig )
参数
- config (PaliGemmaConfig) — 模型配置类,包含模型的所有参数。用配置文件初始化不会加载与模型相关的权重,只加载配置。请查看 from_pretrained() 方法以加载模型权重。
基础 PaliGemma 模型,由视觉骨干网络和无语言建模头的语言模型组成。
该模型继承自 PreTrainedModel。请查阅超类文档以了解库为其所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、修剪头部等)。
此模型也是 PyTorch torch.nn.Module 子类。将其作为常规 PyTorch 模块使用,并参考 PyTorch 文档以了解所有与一般使用和行为相关的事宜。
正向传播
< source >( 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.Union[list[torch.FloatTensor], transformers.cache_utils.Cache, NoneType] = None token_type_ids: typing.Optional[torch.LongTensor] = None cache_position: typing.Optional[torch.LongTensor] = None inputs_embeds: typing.Optional[torch.FloatTensor] = 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 logits_to_keep: typing.Union[int, torch.Tensor] = 0 **kwargs: typing_extensions.Unpack[transformers.models.paligemma.modeling_paligemma.KwargsForCausalLM] ) → transformers.models.paligemma.modeling_paligemma.PaliGemmaCausalLMOutputWithPast
或 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 (
Union[list[torch.FloatTensor], ~cache_utils.Cache, NoneType]
) — 预先计算的隐藏状态(自注意力块和交叉注意力块中的键和值),可用于加速顺序解码。这通常包括模型在解码上一阶段返回的past_key_values
,当use_cache=True
或config.use_cache=True
时。允许两种格式:
- 一个 Cache 实例,请参阅我们的 kv 缓存指南;
- 长度为
config.n_layers
的tuple(torch.FloatTensor)
元组,每个元组包含 2 个形状为(batch_size, num_heads, sequence_length, embed_size_per_head)
的张量)。这也被称为旧版缓存格式。
模型将输出与输入相同的缓存格式。如果没有传入
past_key_values
,将返回旧版缓存格式。如果使用
past_key_values
,用户可以选择只输入最后input_ids
(那些没有将其过去的键值状态提供给此模型的)的形状为(batch_size, 1)
,而不是所有input_ids
的形状为(batch_size, sequence_length)
。 - token_type_ids (形状为
(batch_size, sequence_length)
的torch.LongTensor
, 可选) — 分段标记索引,用于指示输入的第一个和第二个部分。索引在[0, 1]
中选择:- 0 对应于 *句子 A* 标记,
- 1 对应于 *句子 B* 标记。
- cache_position (形状为
(sequence_length)
的torch.LongTensor
, 可选) — 描绘输入序列标记在序列中位置的索引。与position_ids
不同,此张量不受填充影响。它用于在正确位置更新缓存并推断完整的序列长度。 - inputs_embeds (形状为
(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
, 可选) — (可选)您可以选择直接传入嵌入表示,而不是传入input_ids
。如果您希望对如何将input_ids
索引转换为关联向量拥有比模型内部嵌入查找矩阵更多的控制权,这将非常有用。 - labels (形状为
(batch_size, sequence_length)
的torch.LongTensor
, 可选) — 用于计算遮罩语言建模损失的标签。索引应为[0, ..., config.text_config.vocab_size]
或 -100(参阅input_ids
文档字符串)。索引设置为-100
的标记将被忽略(遮罩),损失仅针对标签在[0, ..., config.text_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 而不是纯元组。 - logits_to_keep (
Union[int, torch.Tensor]
, 默认为0
) — 如果是int
,则计算最后logits_to_keep
个标记的 logits。如果是0
,则计算所有input_ids
的 logits(特殊情况)。生成时只需要最后一个标记的 logits,只计算该标记可以节省内存,这对于长序列或大词汇量来说非常重要。如果是torch.Tensor
,则必须是与序列长度维度中要保留的索引相对应的 1D 张量。这在使用打包张量格式(批次和序列长度的单维度)时非常有用。
返回
transformers.models.paligemma.modeling_paligemma.PaliGemmaCausalLMOutputWithPast
或 tuple(torch.FloatTensor)
一个 transformers.models.paligemma.modeling_paligemma.PaliGemmaCausalLMOutputWithPast
或一个 torch.FloatTensor
元组(如果传递 return_dict=False
或当 config.return_dict=False
时),包含根据配置 (PaliGemmaConfig) 和输入而定的各种元素。
-
loss (
torch.FloatTensor
形状为(1,)
,可选,当提供labels
时返回) — 语言建模损失(用于下一个 token 预测)。 -
logits (形状为
(batch_size, sequence_length, config.text_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)
元组,每个元组包含 2 个形状为(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
。视觉编码器在投影最后一个隐藏状态后生成的模型的 image_hidden_states。
PaliGemmaForConditionalGeneration forward 方法覆盖了 __call__
特殊方法。
虽然前向传播的实现需要在该函数中定义,但之后应该调用 Module
实例而不是此函数,因为前者负责运行预处理和后处理步骤,而后者则默默地忽略它们。
示例
>>> from PIL import Image
>>> import requests
>>> from transformers import AutoProcessor, PaliGemmaForConditionalGeneration
>>> model = PaliGemmaForConditionalGeneration.from_pretrained("google/paligemma2-3b-mix-224")
>>> processor = AutoProcessor.from_pretrained("google/paligemma2-3b-mix-224")
>>> prompt = "Where is the cat standing?"
>>> url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"
>>> image = Image.open(requests.get(url, stream=True).raw)
>>> inputs = processor(images=image, text=prompt, return_tensors="pt")
>>> # Generate
>>> generate_ids = model.generate(**inputs,)
>>> processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
"Where is the cat standing?\nsnow"