KerasHub:预训练模型 / API 文档 / 模型架构 / SmolLM3 / SmolLM3Backbone 模型

SmolLM3Backbone 模型

[源代码]

SmolLM3Backbone

keras_hub.models.SmolLM3Backbone(
    vocabulary_size,
    hidden_dim,
    intermediate_dim,
    num_layers,
    num_attention_heads,
    num_key_value_heads,
    attention_bias,
    attention_dropout,
    rope_layer_enabled_list,
    layer_types,
    mlp_bias,
    layer_norm_epsilon,
    max_position_embeddings,
    rope_theta,
    partial_rotary_factor,
    **kwargs
)

SmolLM3 核心网络,包含超参数。

该网络实现了基于 Transformer 的解码器网络 SmolLM3,如 SmolLM3 模型架构中所述。它包含嵌入查找和 Transformer 层。

默认构造函数提供了一个完全可定制的、随机初始化的 SmolLM3 模型,具有任意数量的层、注意力头和嵌入维度。要加载预设架构和权重,请使用 from_preset 构造函数。

参数

  • vocabulary_size:整数。词元词汇表的大小。
  • hidden_dim: int。每个Transformer层的末尾的Transformer隐藏状态的大小。
  • intermediate_dim: int. MLP 网络中每个 Transformer 层的第一个 Dense 层的输出维度。
  • num_layers:整数。Transformer 层的数量。
  • num_attention_heads: int. 每个 Transformer 层的注意力头数量。
  • num_key_value_heads: int. 每个 Transformer 层中分组查询注意力(grouped query attention)的键值头数量。
  • attention_bias: bool. 在注意力块的查询、键、值和输出投影层中使用偏置(bias)。
  • attention_dropout: float. 注意力层的 dropout 概率。
  • rope_layer_enabled_list: list of bool. 指示 RoPE(旋转位置嵌入)是否在每一层启用的列表。通常,一些层可能会禁用 RoPE 以实现架构变体。
  • layer_types: list of str. 每个 Transformer 层的层类型列表(例如,“attention”或其他自定义类型)。
  • mlp_bias: bool. 在 MLP(前馈)层中使用偏置(bias)。
  • layer_norm_epsilon: float. 层归一化层(layer normalization)的 epsilon 值,用于防止除零错误。
  • max_position_embeddings: int. 该模型可能使用的最大序列长度。
  • rope_theta: float. RoPE 嵌入的基础周期。
  • partial_rotary_factor: float. 在 RoPE 中旋转的隐藏维度的百分比。值为 1.0 表示旋转所有维度,而小于 1.0 的值仅旋转一部分。

示例

input_data = {
    "token_ids": np.ones(shape=(1, 12), dtype="int32"),
    "padding_mask": np.array([[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0]]),
}

# Pretrained SmolLM3 decoder.
model = keras_hub.models.SmolLM3Backbone.from_preset(
    "hf://HuggingFaceTB/SmolLM3-3B"
)
model(input_data)

# Randomly initialized SmolLM3 decoder with custom config.
model = keras_hub.models.SmolLM3Backbone(
    vocabulary_size=49152,
    hidden_dim=576,
    intermediate_dim=1536,
    num_layers=30,
    num_attention_heads=9,
    num_key_value_heads=3,
    attention_bias=False,
    attention_dropout=0.0,
    rope_layer_enabled_list=[True] * 30,
    layer_types=["attention"] * 30,
    mlp_bias=False,
    layer_norm_epsilon=1e-5,
    max_position_embeddings=2048,
    rope_theta=10000.0,
    partial_rotary_factor=1.0,
)
model(input_data)

[源代码]

from_preset 方法

SmolLM3Backbone.from_preset(preset, load_weights=True, **kwargs)

从模型预设实例化一个 keras_hub.models.Backbone

预设是一个包含配置、权重和其他文件资源的目录,用于保存和加载预训练模型。preset 可以作为以下之一传递:

  1. 一个内置的预设标识符,如 'bert_base_en'
  2. 一个 Kaggle Models 句柄,如 'kaggle://user/bert/keras/bert_base_en'
  3. 一个 Hugging Face 句柄,如 'hf://user/bert_base_en'
  4. 一个 ModelScope 句柄,例如 'modelscope://user/bert_base_en'
  5. 一个本地预设目录的路径,如 './bert_base_en'

此构造函数可以通过两种方式之一调用。要么从基类调用,如 keras_hub.models.Backbone.from_preset(),要么从模型类调用,如 keras_hub.models.GemmaBackbone.from_preset()。如果从基类调用,则返回对象的子类将根据预设目录中的配置进行推断。

对于任何 Backbone 子类,您可以运行 cls.presets.keys() 来列出该类上所有可用的内置预设。

参数

  • preset:字符串。一个内置预设标识符、一个 Kaggle Models 句柄、一个 Hugging Face 句柄或一个本地目录的路径。
  • load_weights:布尔值。如果为 `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,
)

token_embedding 属性

keras_hub.models.SmolLM3Backbone.token_embedding

一个用于嵌入词元 ID 的 keras.layers.Embedding 实例。

该层将整数词元 ID 嵌入到模型的隐藏维度。