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"