Transformers 文件

Gemma3n

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

PyTorch SDPA

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 應用於不同視覺、音訊和語言任務的更多示例。

以下示例演示如何使用 PipelineAutoModel 類根據影像生成文字。

流水線
自動模型
Transformers CLI
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_featuresinput_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 的處理器,將特徵提取器、影像處理器和分詞器的全部功能封裝到一個處理器中。

batch_decode

< >

( *args **kwargs )

此方法將其所有引數轉發到 GemmaTokenizerFast 的 batch_decode()。有關更多資訊,請參閱此方法的文件字串。

decode

< >

( *args **kwargs )

此方法將其所有引數轉發給 GemmaTokenizerFast 的 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 (intSequence[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 (strfunction, 可選, 預設為 "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 類似的配置。

例如 google/gemma-3n-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.BaseModelOutputWithPasttuple(torch.FloatTensor)

引數

  • input_ids (torch.LongTensor 形狀為 (batch_size, sequence_length), 可選) — 詞彙表中輸入序列標記的索引。預設情況下將忽略填充。

    索引可以使用 AutoTokenizer 獲取。有關詳細資訊,請參見 PreTrainedTokenizer.encode()PreTrainedTokenizer.call()

    什麼是輸入 ID?

  • 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]

    什麼是位置 ID?

  • past_key_values (~cache_utils.Cache, 可選) — 預計算的隱藏狀態(自注意力塊和交叉注意力塊中的鍵和值),可用於加速順序解碼。這通常包括模型在解碼上一階段返回的 past_key_values,當 use_cache=Trueconfig.use_cache=True 時。

    允許兩種格式:

    • 一個 Cache 例項,參見我們的 kv 快取指南
    • 長度為 config.n_layerstuple(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.BaseModelOutputWithPasttuple(torch.FloatTensor)

一個 transformers.modeling_outputs.BaseModelOutputWithPasttorch.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.CausalLMOutputWithPasttuple(torch.FloatTensor)

引數

  • input_ids (形狀為 (batch_size, sequence_length)torch.LongTensor可選) — 詞彙表中輸入序列 token 的索引。預設情況下,填充將被忽略。

    索引可以使用 AutoTokenizer 獲取。有關詳細資訊,請參見 PreTrainedTokenizer.encode()PreTrainedTokenizer.call()

    什麼是輸入 ID?

  • 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]

    什麼是位置 ID?

  • past_key_values (~cache_utils.Cache可選) — 預先計算的隱藏狀態(自注意力塊和交叉注意力塊中的鍵和值),可用於加速順序解碼。這通常包括模型在解碼上一階段返回的 past_key_values,當 use_cache=Trueconfig.use_cache=True 時。

    允許兩種格式:

    • Cache 例項,請參閱我們的 kv 快取指南
    • 長度為 config.n_layerstuple(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.CausalLMOutputWithPasttuple(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.Gemma3nCausalLMOutputWithPasttuple(torch.FloatTensor)

引數

  • input_ids (形狀為 (batch_size, sequence_length)torch.LongTensor可選) — 詞彙表中輸入序列 token 的索引。預設情況下,填充將被忽略。

    索引可以使用 AutoTokenizer 獲取。有關詳細資訊,請參見 PreTrainedTokenizer.encode()PreTrainedTokenizer.call()

    什麼是輸入 ID?

  • 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]

    什麼是位置 ID?

  • past_key_values (Union[~cache_utils.Cache, list[torch.FloatTensor], NoneType]) — 預先計算的隱藏狀態(自注意力塊和交叉注意力塊中的鍵和值),可用於加速順序解碼。這通常包括模型在解碼上一階段返回的 past_key_values,當 use_cache=Trueconfig.use_cache=True 時。

    允許兩種格式:

    • Cache 例項,請參閱我們的 kv 快取指南
    • 長度為 config.n_layerstuple(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。

    什麼是 token 型別 ID?

  • 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.Gemma3nCausalLMOutputWithPasttuple(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_layerstuple(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"
< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.