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,
use_bidirectional_attention=False,
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''modelscope://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_270m | 268.10M | 2.7 亿参数(1.7 亿嵌入参数,1 亿 Transformer 参数)模型,18 层,纯文本模型,专为超高效 AI 设计,特别适合任务特定微调。 |
| gemma3_instruct_270m | 268.10M | 2.7 亿参数(1.7 亿嵌入参数,1 亿 Transformer 参数)模型,18 层,纯文本模型,指令微调模型,专为超高效 AI 设计,特别适合任务特定微调。 |
| 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_layer_names=None)
在骨干网络上启用 LoRA。
调用此方法将冻结骨干网络上的所有权重,同时在注意力层的查询和值 EinsumDense 层上启用 LoRA。
参数
None,则此列表将使用 backbone.default_lora_layer_names() 返回的默认 LoRA 层名称进行填充。