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 和层归一化)无论 dtype 如何,都将始终以 float32 精度完成。默认为 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()
来列出该类上所有可用的内置预设。
参数
True
,权重将加载到模型架构中。如果为 False
,权重将随机初始化。示例
# 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 | 999.89M | 10 亿参数、26 层、仅文本的预训练 Gemma3 模型。 |
gemma3_instruct_1b | 999.89M | 10 亿参数、26 层、仅文本的指令微调 Gemma3 模型。 |
gemma3_4b_text | 3.88B | 40 亿参数、34 层、仅文本的预训练 Gemma3 模型。 |
gemma3_instruct_4b_text | 3.88B | 40 亿参数、34 层、仅文本的指令微调 Gemma3 模型。 |
gemma3_4b | 4.30B | 40 亿参数、34 层、视觉+文本的预训练 Gemma3 模型。 |
gemma3_instruct_4b | 4.30B | 40 亿参数、34 层、视觉+文本的指令微调 Gemma3 模型。 |
gemma3_12b_text | 11.77B | 120 亿参数、48 层、仅文本的预训练 Gemma3 模型。 |
gemma3_instruct_12b_text | 11.77B | 120 亿参数、48 层、仅文本的指令微调 Gemma3 模型。 |
gemma3_12b | 12.19B | 120 亿参数、48 层、视觉+文本的预训练 Gemma3 模型。 |
gemma3_instruct_12b | 12.19B | 120 亿参数、48 层、视觉+文本的指令微调 Gemma3 模型。 |
gemma3_27b_text | 27.01B | 270 亿参数、62 层、仅文本的预训练 Gemma3 模型。 |
gemma3_instruct_27b_text | 27.01B | 270 亿参数、62 层、仅文本的指令微调 Gemma3 模型。 |
gemma3_27b | 27.43B | 270 亿参数、62 层、视觉+文本的预训练 Gemma3 模型。 |
gemma3_instruct_27b | 27.43B | 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。