Transformers 文档
Gemma3n
并获得增强的文档体验
开始使用
Gemma3n
概述
Gemma3n 是一个多模态模型,具有预训练和指令微调版本,提供 E4B 和 E2B 尺寸。虽然语言模型架构的大部分与之前的 Gemma 版本共享,但该模型中有许多新增功能,包括 交替更新 (AltUp)、学习增强残差层 (LAuReL)、MatFormer、逐层嵌入 (PLE)、激活稀疏性和 KV 缓存共享。该语言模型使用与 Gemma 3 相似的注意力模式,每隔一个全局自注意力层交替使用 4 个局部滑动窗口自注意力层,最大上下文长度为 32k 标记。Gemma 3n 引入了 [MobileNet v5][mobilenetv5] 作为视觉编码器,默认分辨率为 768x768 像素,并添加了 通用语音模型 (USM) 作为音频编码器。
指令微调版本通过知识蒸馏和强化学习进行后训练。
您可以在 Gemma 3n 版本下找到所有原始 Gemma 3n 检查点。
单击右侧边栏中的 Gemma 3n 模型,可查看如何将 Gemma 应用于不同视觉、音频和语言任务的更多示例。
以下示例演示如何使用 Pipeline 或 AutoModel 类根据图像生成文本。
import torch
from transformers import pipeline
pipeline = pipeline(
task="image-text-to-text",
model="google/gemma-3n-e4b",
device=0,
torch_dtype=torch.bfloat16
)
pipeline(
"https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg",
text="<start_of_image> What is shown in this image?"
)
注意事项
对于图像-音频-文本、图像-文本、图像-音频、音频-文本、仅图像和仅音频输入,请使用 Gemma3nForConditionalGeneration。
Gemma 3n 支持每个输入多张图像,但在将图像传递给处理器之前,请确保图像已正确批处理。每个批次应是一个或多个图像的列表。
url_cow = "https://media.istockphoto.com/id/1192867753/photo/cow-in-berchida-beach-siniscola.jpg?s=612x612&w=0&k=20&c=v0hjjniwsMNfJSuKWZuIn8pssmD5h5bSN1peBd1CmH4=" url_cat = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg" messages =[ { "role": "system", "content": [ {"type": "text", "text": "You are a helpful assistant."} ] }, { "role": "user", "content": [ {"type": "image", "url": url_cow}, {"type": "image", "url": url_cat}, {"type": "text", "text": "Which image is cuter?"}, ] }, ]
传递给处理器的文本应在应插入图像的位置包含
<image_soft_token>
标记。Gemma 3n 每个输入最多接受一个目标音频片段,但例如在少量样本提示中可以提供多个音频片段。
传递给处理器的文本应在应插入音频片段的位置包含
<audio_soft_token>
标记。处理器拥有自己的 apply_chat_template() 方法,可将聊天消息转换为模型输入。
Gemma3nAudioFeatureExtractor
class transformers.Gemma3nAudioFeatureExtractor
< 源 >( feature_size: int = 128 sampling_rate: int = 16000 padding_value: float = 0.0 return_attention_mask: bool = True frame_length_ms: float = 32.0 hop_length_ms: float = 10.0 min_frequency: float = 125.0 max_frequency: float = 7600.0 preemphasis: float = 0.97 preemphasis_htk_flavor: bool = True fft_overdrive: bool = True dither: float = 0.0 input_scale_factor: float = 1.0 mel_floor: float = 1e-05 per_bin_mean: typing.Optional[collections.abc.Sequence[float]] = None per_bin_stddev: typing.Optional[collections.abc.Sequence[float]] = None **kwargs )
参数
- feature_size (
int
, 可选, 默认为 128) — 提取特征的特征维度。 - sampling_rate (
int
, 可选, 默认为 16000) — 音频文件应数字化赫兹 (Hz) 的采样率。 - padding_value (
float
, 可选, 默认为 0.0) — 用于填充音频的填充值。应与静音相对应。 - return_attention_mask (
bool
, 可选, 默认为True
) — 是否为生成的 MEL 频谱图返回注意力掩码。 - frame_length_ms (
float
, 可选, 默认为 32.0) — 帧的毫秒长度。 - hop_length_ms (
float
, 可选, 默认为 10.0) — 用于获取梅尔频率系数的 STFT 重叠窗口的长度。 - min_frequency (
float
, 可选, 默认为 125.0) — 梅尔滤波器组的最低频率(赫兹)。 - max_frequency (
float
, 可选, 默认为 7600.0) — 梅尔滤波器组的最高频率(赫兹)。 - preemphasis (
float
, 可选, 默认为 0.97) — 预加重系数。 - preemphasis_htk_flavor (
bool
, 可选, 默认为True
) — 是否使用 HTK 风格的预加重。 - fft_overdrive (
bool
, 可选, 默认为True
) — 是否使用 FFT 过载。 - dither (
float
, 可选, 默认为 0.0) — 添加抖动。换句话说,为每个帧添加一个小的高斯噪声。例如,使用 0.0001 将以 0.0 为中心,标准差为 0.0001 的正态分布添加抖动(假设 raw_speech 的范围为 [-1,+1])。值为 0.0 表示无抖动。抖动具有与spectrogram(mel_floor=...)
相似的效果。当信号中存在 VAD 截止时,它会降低具有硬零部分的信号的高 log_mel_fbank 值。 - input_scale_factor (
float
, 可选, 默认为 1.0) — 应用于输入波形的缩放因子。 - mel_floor (
float
, 可选, 默认为 1e-05) — 梅尔频谱图的最小值,以避免 log(0)。 - per_bin_mean (
Optional[Sequence[float]]
, 可选) — 逐 bin 归一化的平均值。 - per_bin_stddev (
Optional[Sequence[float]]
, 可选) — 逐 bin 归一化的标准差值。
通用语音模型 https://arxiv.org/abs/2303.01037 的音频特征提取器。
Gemma3nProcessor
class transformers.Gemma3nProcessor
< 源 >( feature_extractor image_processor tokenizer chat_template = None audio_seq_length: int = 188 image_seq_length: int = 256 **kwargs )
参数
- feature_extractor (
Gemma3nAudioFeatureExtractor
) — 特征提取器,将原始音频波形转换为音频编码器的 MEL 频谱图。这应该返回一个带有input_features
和input_features_mask
特征的BatchFeature
。 - image_processor (
SiglipImageProcessorFast
) — 图像处理器,用于为视觉编码器准备图像批次。这应该返回一个带有pixel_values
特征的BatchFeature
。 - tokenizer (
GemmaTokenizerFast
) — 模型的文本分词器。 - chat_template (
string
, 可选) — 用于从一组消息生成文本提示的 Jinja 模板。 - audio_seq_length (int, 可选, 默认为 188) — 将添加到文本提示中的音频软标记的数量。
- image_seq_length (int, 可选, 默认为 256) — 将添加到图像软标记的数量。
Gemma 3n 的处理器,将特征提取器、图像处理器和分词器的全部功能封装到一个处理器中。
此方法将其所有参数转发到 GemmaTokenizerFast 的 batch_decode()。有关更多信息,请参阅此方法的文档字符串。
Gemma3nTextConfig
class transformers.Gemma3nTextConfig
< 源 >( vocab_size: int = 262400 vocab_size_per_layer_input: int = 262144 hidden_size: int = 2048 hidden_size_per_layer_input: int = 256 intermediate_size: typing.Union[int, collections.abc.Sequence[int]] = 16384 num_hidden_layers: int = 35 num_attention_heads: int = 8 num_key_value_heads: int = 2 head_dim: int = 256 hidden_activation: str = 'gelu_pytorch_tanh' max_position_embeddings: int = 32768 initializer_range: float = 0.02 rms_norm_eps: float = 1e-06 use_cache: bool = True pad_token_id: int = 0 eos_token_id: int = 1 bos_token_id: int = 2 rope_theta: float = 1000000.0 rope_scaling: typing.Optional[dict[str, typing.Any]] = None rope_local_base_freq: float = 10000.0 attention_bias: bool = False attention_dropout: float = 0.0 sliding_window: int = 512 layer_types: typing.Optional[collections.abc.Sequence[str]] = None final_logit_softcapping: float = 30.0 altup_active_idx: int = 0 altup_coef_clip: float = 120.0 altup_correct_scale: bool = True altup_num_inputs: int = 4 num_kv_shared_layers: int = 15 laurel_rank: int = 64 activation_sparsity_pattern: typing.Union[float, collections.abc.Sequence[float], NoneType] = (0.95, 0.95, 0.95, 0.95, 0.95, 0.95, 0.95, 0.95, 0.95, 0.95, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) **kwargs )
参数
- vocab_size (
int
, 可选, 默认为 262400) — Gemma3nText 模型的词汇表大小。定义了调用 Gemma3nTextModel 时传入的inputs_ids
可以表示的不同词元的数量。 - vocab_size_per_layer_input (
int
, 可选, 默认为 262144) — 用于增强标准嵌入的每层文本嵌入的词汇表大小。 - hidden_size (
int
, 可选, 默认为 2048) — 隐藏表示的维度。 - hidden_size_per_layer_input (
int
, 可选, 默认为 256) — 每层嵌入的隐藏表示的维度。 - intermediate_size (
int
或Sequence[int]
, 可选, 默认为 16384) — MLP 表示的维度。MatFormer 配置可能希望提供一个整数序列以考虑跨层的可变 intermediate_size 值。在这种情况下,len(intermediate_size) == num_hidden_layers
。 - num_hidden_layers (
int
, 可选, 默认为 35) — Transformer 解码器中的隐藏层数量。 - num_attention_heads (
int
, 可选, 默认为 8) — Transformer 解码器中每个注意力层的注意力头数量。 - num_key_value_heads (
int
, 可选, 默认为 2) — 这是应实现分组查询注意力 (Grouped Query Attention) 的键值头数量。如果num_key_value_heads=num_attention_heads
,模型将使用多头注意力 (MHA);如果num_key_value_heads=1
,模型将使用多查询注意力 (MQA),否则使用 GQA。将多头检查点转换为 GQA 检查点时,每个组的键和值头应通过对该组内的所有原始头进行均值池化来构建。有关更多详细信息,请查看这篇论文。如果未指定,将默认为num_attention_heads
。 - head_dim (
int
, 可选, 默认为 256) — 注意力头的维度。 - hidden_activation (
str
或function
, 可选, 默认为"gelu_pytorch_tanh"
) — 解码器中的非线性激活函数(函数或字符串)。如果未指定,将默认为"gelu_pytorch_tanh"
。"gelu_pytorch_tanh"
使用"gelu"
激活函数的近似值。 - max_position_embeddings (
int
, 可选, 默认为 32768) — 此模型可能使用的最大序列长度。 - initializer_range (
float
, 可选, 默认为 0.02) — 用于初始化所有权重矩阵的截断正态分布初始化器的标准差。 - rms_norm_eps (
float
, 可选, 默认为 1e-06) — RMS 归一化层使用的 epsilon 值。 - use_cache (
bool
, 可选, 默认为True
) — 模型是否应返回最后一个键/值注意力(并非所有模型都使用)。仅当config.is_decoder=True
时才相关。 - pad_token_id (
int
, 可选, 默认为 0) — 填充词元 ID。 - eos_token_id (
int
, 可选, 默认为 1) — 流结束词元 ID。 - bos_token_id (
int
, 可选, 默认为 2) — 流开始词元 ID。 - rope_theta (
float
, 可选, 默认为 1000000.0) — RoPE 嵌入的基础周期。 - rope_scaling (
Dict
, 可选) — 包含全局注意力中使用的 RoPE 嵌入的缩放配置的字典。注意:如果您应用新的 RoPE 类型并期望模型在更长的max_position_embeddings
上工作,我们建议您相应地更新此值。预期内容:rope_type
(str
):要使用的 RoPE 子变体。可以是 ['default', 'linear', 'dynamic', 'yarn', 'longrope', 'llama3'] 之一,其中 'default' 是原始 RoPE 实现。factor
(float
, 可选):除 'default' 外的所有 RoPE 类型均使用。应用于 RoPE 嵌入的缩放因子。在大多数缩放类型中,因子 x 将使模型能够处理长度为 x * 原始最大预训练长度的序列。original_max_position_embeddings
(int
, 可选):与 'dynamic'、'longrope' 和 'llama3' 一起使用。预训练期间使用的原始最大位置嵌入。attention_factor
(float
, 可选):与 'yarn' 和 'longrope' 一起使用。应用于注意力计算的缩放因子。如果未指定,则默认为实现建议的值,使用factor
字段推断建议值。beta_fast
(float
, 可选):仅与 'yarn' 一起使用。用于设置线性斜坡函数(仅限外推)边界的参数。如果未指定,则默认为 32。beta_slow
(float
, 可选):仅与 'yarn' 一起使用。用于设置线性斜坡函数(仅限内插)边界的参数。如果未指定,则默认为 1。short_factor
(List[float]
, 可选):仅与 'longrope' 一起使用。应用于短上下文(<original_max_position_embeddings
)的缩放因子。必须是长度与隐藏大小除以注意力头数除以 2 相同的数字列表。long_factor
(List[float]
, 可选):仅与 'longrope' 一起使用。应用于长上下文(<original_max_position_embeddings
)的缩放因子。必须是长度与隐藏大小除以注意力头数除以 2 相同的数字列表。low_freq_factor
(float
, 可选):仅与 'llama3' 一起使用。应用于 RoPE 低频分量的缩放因子。high_freq_factor
(float
, 可选):仅与 'llama3' 一起使用。应用于 RoPE 高频分量的缩放因子。 - rope_local_base_freq (float, 可选, 默认为 10000.0) — 局部注意力中 RoPE 嵌入的基础周期。
- attention_bias (
bool
, 默认为False
, 可选, 默认为False
) — 在自注意力期间是否在查询、键、值和输出投影层中使用偏差。 - attention_dropout (
float
, 可选, 默认为 0.0) — 注意力概率的 dropout 比率。 - sliding_window (
int
, 可选, 默认为 512) — 局部注意力层使用的滑动窗口大小。 - layer_types (
Optional
, 可选) — 定义每层注意力类型的字符串序列,可以是 "sliding_attention" 或 "full_attention"。如果未提供,layer_types
将根据num_hidden_layers
推断,采用四个 "sliding_attention" 层后跟一个 "full_attention" 层的模式。模型中的最后一层应始终是 "full_attention" 层。 - final_logit_softcapping (
float
, 可选, 默认为 30.0) — 对数应用 tanh 软限制时的缩放因子。 - altup_active_idx (
int
, 可选, 默认为 0) — AltUp 将从中计算额外预测或修正的预测索引。 - altup_coef_clip (
float
, 可选, 默认为 120.0) — AltUp 预测或修正系数权重的最大幅度。 - altup_correct_scale (
bool
, 可选, 默认为True
) — 如果为 True,则将AltUp.correct_output_scale
应用于altup_active_idx
处的修正预测。 - altup_num_inputs (
int
, 可选, 默认为 4) — AltUp 在给定输入序列的情况下应进行的预测数量。 - num_kv_shared_layers (
int
, 可选, 默认为 15) — 共享 KV 缓存值的层数。在前向传播期间,模型中最后的num_kv_shared_layers
层“共享”KV 值,即此范围内的每个局部和全局层都使用在该范围开始之前为最后一个局部或全局层计算的 KV 缓存值。该值num_kv_shared_layers
应为sliding_window_pattern
的标量。 - laurel_rank (int, 可选, 默认为 64) — 学习增强残差层中线性投影的中间大小。
- activation_sparsity_pattern (Sequence[float], 可选, 默认为
(0.95, 0.95, 0.95, 0.95, 0.95, 0.95, 0.95, 0.95, 0.95, 0.95, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
) — 用于提取给定层的前 k 个激活值的稀疏度因子。提供的序列必须明确为模型中的每一层提供一个稀疏度值。
这是用于存储 Gemma3nTextModel 配置的配置类。它用于根据指定参数实例化 Gemma3nTextModel 模型,定义模型架构。使用默认值实例化配置将产生与 Gemma 3n E4B 类似的配置,例如 google/gemma-3n-E4B。
继承自 Gemma3nTextConfig 的配置对象可用于控制模型输出。有关更多信息,请阅读 Gemma3nTextConfig 的文档。
>>> from transformers import Gemma3nTextModel, Gemma3nTextConfig
>>> # Initializing a Gemma3nText gemma3n_text-E4B style configuration
>>> configuration = Gemma3nTextConfig()
>>> # Initializing a model from the gemma3n_text-E4B style configuration
>>> model = Gemma3nTextModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config
Gemma3nVisionConfig
类 transformers.Gemma3nVisionConfig
< 来源 >( initializer_range: float = 0.02 do_pooling: bool = False architecture: str = 'mobilenetv5_300m_enc' hidden_size: int = 2048 vocab_size: int = 128 vocab_offset: int = 262144 rms_norm_eps: float = 1e-06 model_args: typing.Optional[dict] = None **kwargs )
参数
- initializer_range (
float
, 可选, 默认为 0.02) — 用于初始化所有权重矩阵的截断正态分布初始化器的标准差。 - do_pooling (
bool
, 可选, 默认为False
) — 是否对TimmWrapper
中的last_hidden_state
进行池化。 - architecture (
str
, 可选, 默认为"mobilenetv5_300m_enc"
) — 确定 TimmWrapper 的视觉架构。 - hidden_size (
int
, 可选, 默认为 2048) — 隐藏表示的维度。 - vocab_size (
int
, 可选, 默认为 128) — 视觉模型的额外硬词元嵌入的词汇表大小。 - vocab_offset (
int
, 可选, 默认为 262144) —Gemma3nMultimodalEmbedder
嵌入的词元 ID 的分词器词汇表索引与 0 索引的Gemma3nMultimodalEmbedder.embedding
表之间的偏移量。 - rms_norm_eps (
float
, 可选, 默认为 1e-06) — RMS 归一化层使用的 epsilon 值。
这是用于存储 timm backbone TimmWrapper
配置的配置类。它用于根据指定参数实例化 timm 模型,定义模型架构。使用默认值实例化配置将产生与 Gemma 3n E4B 视觉塔类似的配置,例如 google/gemma-3n-E4B。
配置对象继承自 Gemma3nVisionConfig,可用于控制模型输出。有关更多信息,请阅读 Gemma3nVisionConfig 的文档。
配置加载 imagenet 标签描述并将其存储在 id2label
属性中,由于标签描述中的遮挡,默认 imagenet 模型的 label2id
属性设置为 None
。
示例
>>> from transformers import Gemma3nVisionConfig, TimmWrapper
>>> # Initializing a TimmWrapper gemma3n_vision-E4B-style configuration
>>> configuration = Gemma3nVisionConfig()
>>> # Initializing a gemma3n_vision-E4B-style TimmWrapper from the configuration
>>> model = TimmWrapper(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config
Gemma3nAudioConfig
类 transformers.Gemma3nAudioConfig
< 来源 >( vocab_size: int = 128 vocab_offset: int = 262272 input_feat_size: int = 128 hidden_size: int = 1536 rms_norm_eps: float = 1e-06 gradient_clipping: float = 10000000000.0 conf_attention_chunk_size: int = 12 conf_attention_context_left: int = 13 conf_attention_context_right: int = 0 conf_attention_logit_cap: float = 50.0 conf_num_attention_heads: int = 8 conf_num_hidden_layers: int = 12 conf_conv_kernel_size: int = 5 conf_reduction_factor: int = 4 conf_residual_weight: float = 0.5 sscp_conv_channel_size: tuple = (128, 32) sscp_conv_group_norm_eps: float = 0.001 sscp_conv_kernel_size: tuple = ((3, 3), (3, 3)) sscp_conv_stride_size: tuple = ((2, 2), (2, 2)) **kwargs )
参数
- vocab_size (
int
, 可选, 默认为 128) — 音频模型的额外硬词元嵌入的词汇表大小。这些词元增强了Gemma3nTextModel
中包含的嵌入,例如在Gemma3nForConditionalGeneration
模型中将input_ids
转换为嵌入时提供音频结束和音频软词元占位符词元。 - vocab_offset (
int
, 可选, 默认为 262272) —Gemma3nMultimodalEmbedder
嵌入的词元 ID 的分词器词汇表索引与 0 索引的Gemma3nMultimodalEmbedder.embedding
表之间的偏移量。 - input_feat_size (
int
, 可选, 默认为 128) — 每个梅尔频谱图帧中的通道数。 - hidden_size (
int
, 可选, 默认为 1536) — 隐藏表示的维度。 - rms_norm_eps (
float
, 可选, 默认为 1e-06) — RMS 归一化层使用的 epsilon 值。 - gradient_clipping (
float
, 可选, 默认为 10000000000.0) — 用于稳定极大梯度值的剪切值。 - conf_attention_chunk_size (
int
, 可选, 默认为 12) — 通用语音模型("conf")部分内部局部注意力的子序列大小。 - conf_attention_context_left (
int
, 可选, 默认为 13) — 通用语音模型("conf")部分内部局部注意力的左上下文大小。 - conf_attention_context_right (
int
, 可选, 默认为 0) — 通用语音模型("conf")部分内部局部注意力的右上下文大小。 - conf_attention_logit_cap (
float
, 可选, 默认为 50.0) — 通用语音模型("conf")部分内部局部注意力期间应用的 Logit 限制。 - conf_num_attention_heads (
int
, 可选, 默认为 8) — 通用语音模型("conf")部分内部局部注意力中的注意力头数量。 - conf_num_hidden_layers (
int
, 可选, 默认为 12) — 通用语音模型("conf")部分内部使用局部注意力的层数。 - conf_conv_kernel_size (
int
, 可选, 默认为 5) — 通用语音模型("conf")部分内部一致性块的卷积核大小。 - conf_reduction_factor (
int
, 可选, 默认为 4) — Universal Speech Model 的 Conformer(“conf”)部分中 Conformer 块使用的缩减因子。 - conf_residual_weight (
float
, 可选, 默认为 0.5) — Universal Speech Model 的 Conformer(“conf”)部分中的残差连接权重。 - sscp_conv_channel_size (
tuple(int, int)
, 可选, 默认为(128, 32)
) — Universal Speech Model 的子采样卷积投影(“sscp”)部分中第一个和第二个卷积层的通道大小。 - sscp_conv_group_norm_eps (
float
, 可选, 默认为 0.001) — Universal Speech Model 的子采样卷积投影(“sscp”)部分中子采样卷积投影中组归一化使用的 epsilon。 - sscp_conv_kernel_size (
tuple(tuple(int, int), tuple(int, int))
, 可选, 默认为((3, 3), (3, 3))
) — Universal Speech Model 的子采样卷积投影(“sscp”)部分中两个卷积层的核大小。核大小指定为每个层的高度和宽度的元组,其中高度对应于时间维度,宽度对应于频率维度。 - sscp_conv_stride_size (
tuple(tuple(int, int), tuple(int, int))
, 可选, 默认为((2, 2), (2, 2))
) — Universal Speech Model 的子采样卷积投影(“sscp”)部分中两个卷积层的步长大小。步长大小指定为每个层的高度和宽度的元组,其中高度对应于时间维度,宽度对应于频率维度。
这是一个配置类,用于存储 Gemma3nAudioEncoder
的配置,基于 Gogole 的 Universal Speech Model。它用于根据指定参数实例化 Gemma3nAudioEncoder 模型,定义模型架构。使用默认值实例化配置将生成与 Gemma 3n E4B 类似的配置,例如 google/gemma-3n-E4B。
继承自 Gemma3nAudioConfig 的配置对象,可用于控制模型输出。有关更多信息,请阅读 Gemma3nAudioConfig 的文档。
示例
>>> from transformers import Gemma3nAudioConfig, Gemma3nAudioEncoder
>>> # Initializing a Gemma3nAudioEncoder gemma3n_audio-E4B-style configuration
>>> configuration = Gemma3nAudioConfig()
>>> # Initializing a model from the gemma3n_audio-E4B style configuration
>>> model = Gemma3nAudioEncoder(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config
Gemma3nConfig
class transformers.Gemma3nConfig
< 源 >( text_config: typing.Union[transformers.models.gemma3n.configuration_gemma3n.Gemma3nTextConfig, dict[str, typing.Any], NoneType] = None vision_config: typing.Union[transformers.models.gemma3n.configuration_gemma3n.Gemma3nVisionConfig, dict[str, typing.Any], NoneType] = None audio_config: typing.Union[transformers.models.gemma3n.configuration_gemma3n.Gemma3nAudioConfig, dict[str, typing.Any], NoneType] = None audio_soft_tokens_per_image: int = 188 vision_soft_tokens_per_image: int = 256 boi_token_id: int = 255999 eoi_token_id: int = 262144 image_token_id: int = 262145 boa_token_id: int = 256000 eoa_token_id: int = 262272 audio_token_id: int = 262273 initializer_range: float = 0.02 **kwargs )
参数
- text_config (
Union[Gemma3nTextConfig, dict]
, 可选) — 文本主干的配置对象。 - vision_config (
Union[AutoConfig, dict]
, 可选) — 自定义视觉配置或字典。 - audio_config (
Union[AutoConfig, dict]
, 可选) — 自定义音频配置或字典。 - audio_soft_tokens_per_image (
int
, 可选, 默认为 188) — 每个音频片段的软标记数量。 - vision_soft_tokens_per_image (
int
, 可选, 默认为 256) — 每张图片的软标记数量。 - boi_token_id (
int
, 可选, 默认为 255999) — 用于封装图像提示的图像起始标记索引。 - eoi_token_id (
int
, 可选, 默认为 262144) — 用于封装图像提示的图像结束标记索引。 - image_token_id (
int
, 可选, 默认为 262145) — 用于编码图像提示的图像标记索引。 - boa_token_id (
int
, 可选, 默认为 256000) — 用于封装音频提示的音频起始标记索引。 - eoa_token_id (
int
, 可选, 默认为 262272) — 用于封装音频提示的音频结束标记索引。 - audio_token_id (
int
, 可选, 默认为 262273) — 用于编码音频提示的音频标记索引。 - initializer_range (
float
, 可选, 默认为 0.02) — 用于初始化所有权重矩阵的 truncated_normal_initializer 的标准差。
这是一个配置类,用于存储 Gemma3nForConditionalGeneration 的配置。它用于根据指定参数实例化 Gemma3nForConditionalGeneration,定义模型架构。使用默认值实例化配置将生成与 Gemma3n-E4B 类似的配置。
配置对象继承自 PretrainedConfig,可用于控制模型输出。有关更多信息,请阅读 PretrainedConfig 的文档。
示例
>>> from transformers import Gemma3nForConditionalGeneration, Gemma3nConfig, Gemma3nTextConfig
>>> # Initializing a MobileNet vision config, which is loaded from TIMM
>>> vision_config = Gemma3nVisionConfig()
>>> # Initializing a Gemma3n Audio config
>>> audio_config = Gemma3nAudioConfig()
>>> # Initializing a Gemma3n Text config
>>> text_config = Gemma3nTextConfig()
>>> # Initializing a Gemma3n gemma-3-4b style configuration
>>> configuration = Gemma3nConfig(text_config, vision_config, audio_config)
>>> # Initializing a model from the gemma-3-4b style configuration
>>> model = Gemma3nTextConfig(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config
Gemma3nTextModel
class transformers.Gemma3nTextModel
< 源 >( config: Gemma3nTextConfig )
参数
- config (Gemma3nTextConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化不加载与模型关联的权重,只加载配置。请查看 from_pretrained() 方法加载模型权重。
不带语言建模头的基本 Gemma 3n 语言模型。
此模型继承自 PreTrainedModel。有关库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、修剪头部等),请查看超类文档。
此模型也是 PyTorch torch.nn.Module 的子类。将其作为常规 PyTorch 模块使用,并参考 PyTorch 文档以了解所有与一般使用和行为相关的事项。
forward
< 源 >( input_ids: typing.Optional[torch.LongTensor] = None per_layer_inputs: typing.Optional[torch.Tensor] = None attention_mask: typing.Optional[torch.Tensor] = None position_ids: typing.Optional[torch.LongTensor] = None past_key_values: typing.Optional[transformers.cache_utils.Cache] = None inputs_embeds: typing.Optional[torch.FloatTensor] = None use_cache: typing.Optional[bool] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None cache_position: typing.Optional[torch.LongTensor] = None **flash_attn_kwargs: typing_extensions.Unpack[transformers.modeling_flash_attention_utils.FlashAttentionKwargs] ) → transformers.modeling_outputs.BaseModelOutputWithPast 或 tuple(torch.FloatTensor)
参数
- input_ids (
torch.LongTensor
形状为(batch_size, sequence_length)
, 可选) — 词汇表中输入序列标记的索引。默认情况下将忽略填充。索引可以使用 AutoTokenizer 获取。有关详细信息,请参见 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- per_layer_inputs (
torch.Tensor
, 可选, 默认为 None) — 预计算的分层嵌入。如果为 None,则从提供的 input_ids 中派生。 - attention_mask (
torch.Tensor
形状为(batch_size, sequence_length)
, 可选) — 掩码,用于避免对填充标记索引执行注意力。掩码值选择在[0, 1]
之间:- 1 表示**未被掩码**的标记,
- 0 表示**被掩码**的标记。
- position_ids (
torch.LongTensor
形状为(batch_size, sequence_length)
, 可选) — 每个输入序列标记在位置嵌入中的位置索引。选择范围为[0, config.n_positions - 1]
。 - past_key_values (
~cache_utils.Cache
, 可选) — 预计算的隐藏状态(自注意力块和交叉注意力块中的键和值),可用于加速顺序解码。这通常包括模型在解码上一阶段返回的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
。 - 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
。 - cache_position (
torch.LongTensor
形状为(sequence_length)
, 可选) — 表示输入序列标记在序列中位置的索引。与position_ids
不同,此张量不受填充影响。它用于在正确位置更新缓存并推断完整的序列长度。
返回
transformers.modeling_outputs.BaseModelOutputWithPast 或 tuple(torch.FloatTensor)
一个 transformers.modeling_outputs.BaseModelOutputWithPast 或 torch.FloatTensor
的元组(如果传入 return_dict=False
或当 config.return_dict=False
时),包含根据配置 (Gemma3nConfig) 和输入的不同元素。
-
last_hidden_state (
torch.FloatTensor
, 形状为(batch_size, sequence_length, hidden_size)
) — 模型最后一层输出的隐藏状态序列。如果使用了
past_key_values
,则只输出形状为(batch_size, 1, hidden_size)
的序列的最后一个隐藏状态。 -
past_key_values (
Cache
, 可选, 当传入use_cache=True
或当config.use_cache=True
时返回) — 这是一个 Cache 实例。有关更多详细信息,请参见我们的 kv 缓存指南。包含预计算的隐藏状态(自注意力块中的键和值,如果
config.is_encoder_decoder=True
,则可选地包含交叉注意力块中的键和值),可用于(参见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 后的注意力权重,用于计算自注意力头中的加权平均值。
Gemma3nTextModel 的 forward 方法,覆盖了 __call__
特殊方法。
尽管前向传播的实现需要在函数内部定义,但之后应该调用 Module
实例,而不是直接调用此函数,因为前者会处理预处理和后处理步骤,而后者会静默忽略它们。
Gemma3nModel
class transformers.Gemma3nModel
< 源 >( config: Gemma3nConfig )
参数
- config (Gemma3nConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化不加载与模型关联的权重,只加载配置。请查看 from_pretrained() 方法加载模型权重。
基本 Gemma 3n 模型,包含视觉主干、音频主干和不带语言建模头的语言模型。
此模型继承自 PreTrainedModel。有关库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、修剪头部等),请查看超类文档。
此模型也是 PyTorch torch.nn.Module 的子类。将其作为常规 PyTorch 模块使用,并参考 PyTorch 文档以了解所有与一般使用和行为相关的事项。
forward
< 源 >( input_ids: typing.Optional[torch.LongTensor] = None pixel_values: typing.Optional[torch.FloatTensor] = None input_features: typing.Optional[torch.FloatTensor] = None attention_mask: typing.Optional[torch.Tensor] = None input_features_mask: typing.Optional[torch.Tensor] = None position_ids: typing.Optional[torch.LongTensor] = None past_key_values: typing.Union[transformers.cache_utils.Cache, list[torch.FloatTensor], 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 **lm_kwargs )
labels (torch.LongTensor
形状为 (batch_size, sequence_length)
, 可选): 用于计算掩码语言建模损失的标签。索引应为 [0, ..., config.text_config.vocab_size]
或 -100 (参见 input_ids
文档字符串)。索引设置为 -100
的标记将被忽略(掩码),损失仅针对标签在 [0, ..., config.text_config.vocab_size]
中的标记计算。
示例
>>> from PIL import Image
>>> import requests
>>> from transformers import AutoProcessor, Gemma3nForConditionalGeneration
>>> model = Gemma3nForConditionalGeneration.from_pretrained("google/gemma3n2-3b-mix-224")
>>> processor = AutoProcessor.from_pretrained("google/gemma3n2-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"
Gemma3nForCausalLM
class transformers.Gemma3nForCausalLM
< 源 >( config: Gemma3nTextConfig )
参数
- config (Gemma3nTextConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化不加载与模型关联的权重,只加载配置。请查看 from_pretrained() 方法加载模型权重。
带语言建模头的基本 Gemma 3n 语言模型。
此模型继承自 PreTrainedModel。有关库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、修剪头部等),请查看超类文档。
此模型也是 PyTorch torch.nn.Module 的子类。将其作为常规 PyTorch 模块使用,并参考 PyTorch 文档以了解所有与一般使用和行为相关的事项。
forward
< 源 >( input_ids: typing.Optional[torch.LongTensor] = None attention_mask: typing.Optional[torch.Tensor] = None position_ids: typing.Optional[torch.LongTensor] = None past_key_values: typing.Optional[transformers.cache_utils.Cache] = 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 cache_position: typing.Optional[torch.LongTensor] = None logits_to_keep: typing.Union[int, torch.Tensor] = 0 **loss_kwargs ) → transformers.modeling_outputs.CausalLMOutputWithPast 或 tuple(torch.FloatTensor)
参数
- input_ids (形状为
(batch_size, sequence_length)
的torch.LongTensor
,可选) — 词汇表中输入序列 token 的索引。默认情况下,填充将被忽略。索引可以使用 AutoTokenizer 获取。有关详细信息,请参见 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- 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 (
~cache_utils.Cache
,可选) — 预先计算的隐藏状态(自注意力块和交叉注意力块中的键和值),可用于加速顺序解码。这通常包括模型在解码上一阶段返回的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
。 - inputs_embeds (形状为
(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
,可选) — 可选地,您可以选择直接传递嵌入表示,而不是传递input_ids
。如果您希望对input_ids
索引如何转换为关联向量有比模型内部嵌入查找矩阵更多的控制,这很有用。 - labels (形状为
(batch_size, sequence_length)
的torch.LongTensor
,可选) — 用于计算掩码语言建模损失的标签。索引应在[0, ..., config.vocab_size]
或 -100 之间(参见input_ids
文档字符串)。索引设置为-100
的 token 将被忽略(掩码),损失仅针对标签在[0, ..., config.vocab_size]
中的 token 计算。 - use_cache (
bool
,可选) — 如果设置为True
,将返回past_key_values
键值状态,可用于加速解码(参见past_key_values
)。 - output_attentions (
bool
,可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参见返回张量下的attentions
。 - output_hidden_states (
bool
,可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回张量下的hidden_states
。 - cache_position (形状为
(sequence_length)
的torch.LongTensor
,可选) — 序列中输入序列 token 的位置索引。与position_ids
不同,此张量不受填充影响。它用于在正确位置更新缓存并推断完整的序列长度。 - logits_to_keep (
Union[int, torch.Tensor]
,默认为0
) — 如果是int
,则计算最后logits_to_keep
个 token 的 logits。如果是0
,则计算所有input_ids
的 logits(特殊情况)。生成时只需要最后一个 token 的 logits,只计算该 token 的 logits 可以节省内存,这对于长序列或大词汇量来说非常重要。如果是torch.Tensor
,则必须是 1D,对应于序列长度维度中要保留的索引。这在使用打包张量格式(批次和序列长度的单维度)时很有用。
返回
transformers.modeling_outputs.CausalLMOutputWithPast 或 tuple(torch.FloatTensor)
一个 transformers.modeling_outputs.CausalLMOutputWithPast 或一个 torch.FloatTensor
元组(如果传递了 return_dict=False
或当 config.return_dict=False
时),其中包含根据配置 (Gemma3nConfig) 和输入而变化的各种元素。
-
loss (
torch.FloatTensor
形状为(1,)
,可选,当提供labels
时返回) — 语言建模损失(用于下一个 token 预测)。 -
logits (形状为
(batch_size, sequence_length, config.vocab_size)
的torch.FloatTensor
) — 语言建模头部的预测分数(SoftMax 之前的每个词汇标记的分数)。 -
past_key_values (
Cache
, 可选, 当传入use_cache=True
或当config.use_cache=True
时返回) — 这是一个 Cache 实例。有关更多详细信息,请参见我们的 kv 缓存指南。包含预计算的隐藏状态(自注意力块中的键和值),可用于(参见
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 后的注意力权重,用于计算自注意力头中的加权平均值。
Gemma3nForCausalLM
的 forward 方法,覆盖了 __call__
特殊方法。
尽管前向传播的实现需要在函数内部定义,但之后应该调用 Module
实例,而不是直接调用此函数,因为前者会处理预处理和后处理步骤,而后者会静默忽略它们。
示例
>>> from transformers import AutoTokenizer, Gemma3nForCausalLM
>>> model = Gemma3nForCausalLM.from_pretrained("google/gemma-2-9b")
>>> tokenizer = AutoTokenizer.from_pretrained("google/gemma-2-9b")
>>> prompt = "What is your favorite condiment?"
>>> inputs = tokenizer(prompt, return_tensors="pt")
>>> # Generate
>>> generate_ids = model.generate(inputs.input_ids, max_length=30)
>>> tokenizer.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
"What is your favorite condiment?"
Gemma3nForConditionalGeneration
class transformers.Gemma3nForConditionalGeneration
< 来源 >( config: Gemma3nConfig )
参数
- config (Gemma3nConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只加载配置。请查看 from_pretrained() 方法来加载模型权重。
基础 Gemma 3n 模型,包含视觉骨干、音频骨干、语言模型和语言建模头部。
此模型继承自 PreTrainedModel。有关库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、修剪头部等),请查看超类文档。
此模型也是 PyTorch torch.nn.Module 的子类。将其作为常规 PyTorch 模块使用,并参考 PyTorch 文档以了解所有与一般使用和行为相关的事项。
forward
< 来源 >( input_ids: typing.Optional[torch.LongTensor] = None pixel_values: typing.Optional[torch.FloatTensor] = None input_features: typing.Optional[torch.FloatTensor] = None attention_mask: typing.Optional[torch.Tensor] = None input_features_mask: typing.Optional[torch.Tensor] = None position_ids: typing.Optional[torch.LongTensor] = None past_key_values: typing.Union[transformers.cache_utils.Cache, list[torch.FloatTensor], 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 logits_to_keep: typing.Union[int, torch.Tensor] = 0 **lm_kwargs ) → transformers.models.gemma3n.modeling_gemma3n.Gemma3nCausalLMOutputWithPast
或 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}
进行图像处理)。 - input_features (
torch.Tensor
,可选,默认为 None) — 要编码的音频输入。 - attention_mask (形状为
(batch_size, sequence_length)
的torch.Tensor
,可选) — 用于避免对填充 token 索引执行注意力计算的掩码。掩码值选择在[0, 1]
中:- 1 表示 未被掩盖 的 token,
- 0 表示 被掩盖 的 token。
- input_features_mask (
torch.Tensor
,可选,默认为 None) — 输入音频的注意力掩码。 - position_ids (形状为
(batch_size, sequence_length)
的torch.LongTensor
,可选) — 输入序列中每个 token 在位置嵌入中的位置索引。选择范围为[0, config.n_positions - 1]
。 - past_key_values (
Union[~cache_utils.Cache, list[torch.FloatTensor], 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
,可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回张量下的hidden_states
。 - logits_to_keep (
Union[int, torch.Tensor]
,默认为0
) — 如果是int
,则计算最后logits_to_keep
个 token 的 logits。如果是0
,则计算所有input_ids
的 logits(特殊情况)。生成时只需要最后一个 token 的 logits,只计算该 token 的 logits 可以节省内存,这对于长序列或大词汇量来说非常重要。如果是torch.Tensor
,则必须是 1D,对应于序列长度维度中要保留的索引。这在使用打包张量格式(批次和序列长度的单维度)时很有用。
返回
transformers.models.gemma3n.modeling_gemma3n.Gemma3nCausalLMOutputWithPast
或 tuple(torch.FloatTensor)
一个 transformers.models.gemma3n.modeling_gemma3n.Gemma3nCausalLMOutputWithPast
或一个 torch.FloatTensor
元组(如果传递了 return_dict=False
或当 config.return_dict=False
时),其中包含根据配置 (Gemma3nConfig) 和输入而变化的各种元素。
-
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。 -
audio_hidden_states (
torch.FloatTensor
,可选) — 形状为(batch_size, num_images, sequence_length, hidden_size)
的torch.FloatTensor
。音频编码器在投影最后隐藏状态后生成的模型 audio_hidden_states。
Gemma3nForConditionalGeneration
的 forward 方法,覆盖了 __call__
特殊方法。
尽管前向传播的实现需要在函数内部定义,但之后应该调用 Module
实例,而不是直接调用此函数,因为前者会处理预处理和后处理步骤,而后者会静默忽略它们。
示例
>>> from PIL import Image
>>> import requests
>>> from transformers import AutoProcessor, Gemma3ForConditionalGeneration
>>> model = Gemma3ForConditionalGeneration.from_pretrained("google/gemma-3-4b-it")
>>> processor = AutoProcessor.from_pretrained("google/gemma-3-4b-it")
>>> messages = [
... {
... "role": "system",
... "content": [
... {"type": "text", "text": "You are a helpful assistant."}
... ]
... },
... {
... "role": "user", "content": [
... {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"},
... {"type": "text", "text": "Where is the cat standing?"},
... ]
... },
... ]
>>> inputs = processor.apply_chat_template(
... messages,
... tokenizer=True,
... return_dict=True,
... return_tensors="pt",
... add_generation_prompt=True
... )
>>> # Generate
>>> generate_ids = model.generate(**inputs)
>>> processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
"user\nYou are a helpful assistant.\n\n\n\n\n\nWhere is the cat standing?\nmodel\nBased on the image, the cat is standing in a snowy area, likely outdoors. It appears to"