Gemma3Backbone
类keras_hub.models.Gemma3Backbone(
vocabulary_size,
image_size,
num_layers,
num_query_heads,
num_key_value_heads,
hidden_dim,
intermediate_dim,
head_dim,
query_head_dim_normalize=True,
use_query_key_norm=True,
use_post_ffw_norm=False,
use_post_attention_norm=False,
attention_logit_soft_cap=None,
final_logit_soft_cap=None,
use_sliding_window_attention=False,
sliding_window_size=1024,
local_rope_scaling_factor=1.0,
global_rope_scaling_factor=1.0,
vision_encoder=None,
layer_norm_epsilon=1e-06,
dropout=0,
dtype=None,
**kwargs
)
具有超参数的 Gemma3 核心网络。
此骨干网络实现了 Gemma3 模型架构。Gemma3 是一种视觉语言模型(输入图像和文本,输出文本)。文本输入通过嵌入层编码;图像通过视觉 Transformer (ViT) 编码。对这两种模态进行编码后,图像嵌入被放置在文本嵌入序列中的正确位置。然后,混合的嵌入序列通过 Transformer 解码器层。
有关更高级的文本生成对象,请参阅 keras_hub.models.Gemma3CausalLM
。
默认构造函数提供了一个完全可定制的、随机初始化的 Gemma3 模型,支持任何视觉编码器、头数、嵌入维度以及解码器层的等效配置。要加载预设架构和权重,请使用 from_preset
构造函数。
参数
True
,则在注意力之前使用 head_dim
对查询进行归一化。如果为 False
,则使用 hidden_dim / num_query_heads
对查询进行归一化。默认为 True
。True
,则在投影查询和键之前对其应用 RMS Norm 层。默认为 True
。False
。False
。None
或 int。注意力 logits 的软上限。默认为 None
。None
或 int。最终 logits 的软上限。默认为 None
。False
。4096
。Gemma3VisionEncoder
实例。call()
接收图像并返回相应的嵌入序列。如果为 None
,则模型为纯文本模型。1e-6
。0
。keras.mixed_precision.DTypePolicy
。用于模型计算和权重的 dtype。请注意,某些计算(例如 softmax 和层归一化)将始终以 float32 精度完成,无论 dtype 如何。默认为 bfloat16
。示例
# === Language Gemma3 model ===
input_data = {}
input_data["token_ids"] = np.ones(shape=(1, 300), dtype="int32")
input_data["padding_mask"] = (
np.expand_dims(np.array([1] * 280 + [0] * (300 - 280)), axis=0)
.astype(bool)
)
# Pretrained Gemma3 decoder.
model = keras_hub.models.Gemma3Backbone.from_preset(
"gemma3_instruct_4b_text"
)
model(input_data)
# Randomly initialized Gemma3 decoder with a custom config.
model = keras_hub.models.Gemma3Backbone(
vocabulary_size=262144,
image_size=896,
num_layers=34,
num_query_heads=8,
num_key_value_heads=4,
hidden_dim=2560,
intermediate_dim=10240,
head_dim=256,
query_head_dim_normalize=True,
use_post_ffw_norm=True,
use_post_attention_norm=True,
final_logit_soft_cap=None,
attention_logit_soft_cap=None,
sliding_window_size=1024,
use_sliding_window_attention=True,
vision_encoder=None,
layer_norm_epsilon=1e-06,
dtype="bfloat16",
)
model(input_data)
# === Vision + Language Gemma3 model ===
input_data = {}
input_data["images"] = np.ones(shape=(1, 1, 896, 896, 3))
input_data["token_ids"] = np.ones(shape=(1, 300), dtype="int32")
# images after the text part of the sequence.
input_data["vision_mask"] = np.expand_dims(
np.array([0] * 30 + [1] * 256 + [0] * 14),
axis=0,
).astype(bool)
input_data["vision_indices"] = (
np.expand_dims(np.arange(30, 286), axis=0)
)
input_data["padding_mask"] = (
np.expand_dims(np.array([1] * 286 + [0] * (300 - 286)), axis=0)
.astype(bool)
)
# Pretrained Gemma3 decoder.
model = keras_hub.models.Gemma3Backbone.from_preset("gemma3_instruct_4b")
model(input_data)
# Randomly initialized Gemma3 decoder with a custom config.
vision_encoder = Gemma3VisionEncoder(
image_size=896,
patch_size=14,
num_heads=16,
hidden_dim=1152,
num_layers=27,
intermediate_dim=4304,
output_dim=2560,
pool_size=4,
layer_norm_epsilon=1e-6,
dtype="float32",
)
model = keras_hub.models.Gemma3Backbone(
vocabulary_size=262144,
image_size=896,
num_layers=34,
num_query_heads=8,
num_key_value_heads=4,
hidden_dim=2560,
intermediate_dim=10240,
head_dim=256,
query_head_dim_normalize=True,
use_post_ffw_norm=True,
use_post_attention_norm=True,
final_logit_soft_cap=None,
attention_logit_soft_cap=None,
sliding_window_size=1024,
use_sliding_window_attention=True,
vision_encoder=vision_encoder,
layer_norm_epsilon=1e-06,
dtype="bfloat16"
)
model(input_data)
from_preset
方法Gemma3Backbone.from_preset(preset, load_weights=True, **kwargs)
从模型预设实例化一个 keras_hub.models.Backbone
。
预设是一个包含配置、权重和其他文件资源的目录,用于保存和加载预训练模型。preset
可以作为以下之一传递:
'bert_base_en'
'kaggle://user/bert/keras/bert_base_en'
'hf://user/bert_base_en'
'./bert_base_en'
此构造函数可以通过两种方式调用。可以从基类(如 keras_hub.models.Backbone.from_preset()
)调用,也可以从模型类(如 keras_hub.models.GemmaBackbone.from_preset()
)调用。如果从基类调用,返回对象的子类将根据预设目录中的配置推断。
对于任何 Backbone
子类,您可以运行 cls.presets.keys()
来列出该类上所有可用的内置预设。
参数
示例
# Load a Gemma backbone with pre-trained weights.
model = keras_hub.models.Backbone.from_preset(
"gemma_2b_en",
)
# Load a Bert backbone with a pre-trained config and random weights.
model = keras_hub.models.Backbone.from_preset(
"bert_base_en",
load_weights=False,
)
预设 | 参数 | 描述 |
---|---|---|
gemma3_1b | 9.9989亿 | 10 亿参数,26 层,仅文本预训练 Gemma3 模型。 |
gemma3_instruct_1b | 9.9989亿 | 10 亿参数,26 层,仅文本指令微调 Gemma3 模型。 |
gemma3_4b_text | 38.8亿 | 40 亿参数,34 层,仅文本预训练 Gemma3 模型。 |
gemma3_instruct_4b_text | 38.8亿 | 40 亿参数,34 层,仅文本指令微调 Gemma3 模型。 |
gemma3_4b | 43.0亿 | 40 亿参数,34 层,视觉+文本预训练 Gemma3 模型。 |
gemma3_instruct_4b | 43.0亿 | 40 亿参数,34 层,视觉+文本指令微调 Gemma3 模型。 |
gemma3_12b_text | 117.7亿 | 120 亿参数,48 层,仅文本预训练 Gemma3 模型。 |
gemma3_instruct_12b_text | 117.7亿 | 120 亿参数,48 层,仅文本指令微调 Gemma3 模型。 |
gemma3_12b | 121.9亿 | 120 亿参数,48 层,视觉+文本预训练 Gemma3 模型。 |
gemma3_instruct_12b | 121.9亿 | 120 亿参数,48 层,视觉+文本指令微调 Gemma3 模型。 |
gemma3_27b_text | 270.1亿 | 270 亿参数,62 层,仅文本预训练 Gemma3 模型。 |
gemma3_instruct_27b_text | 270.1亿 | 270 亿参数,62 层,仅文本指令微调 Gemma3 模型。 |
gemma3_27b | 274.3亿 | 270 亿参数,62 层,视觉+文本预训练 Gemma3 模型。 |
gemma3_instruct_27b | 274.3亿 | 270 亿参数,62 层,视觉+文本指令微调 Gemma3 模型。 |
token_embedding
属性keras_hub.models.Gemma3Backbone.token_embedding
一个用于嵌入词元 ID 的 keras.layers.Embedding
实例。
该层将整数词元 ID 嵌入到模型的隐藏维度。
enable_lora
方法Gemma3Backbone.enable_lora(rank, target_names=None)
在骨干网络上启用 LoRA。
调用此方法将冻结骨干网络上的所有权重,同时在注意力层的查询和值 EinsumDense
层上启用 LoRA。