keras-hub-nightly 0.23.0.dev202509190415__py3-none-any.whl → 0.23.0.dev202509290422__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of keras-hub-nightly might be problematic. Click here for more details.
- keras_hub/layers/__init__.py +3 -0
- keras_hub/models/__init__.py +24 -0
- keras_hub/src/models/depth_anything/__init__.py +9 -0
- keras_hub/src/models/depth_anything/depth_anything_backbone.py +232 -0
- keras_hub/src/models/depth_anything/depth_anything_depth_estimator.py +70 -0
- keras_hub/src/models/depth_anything/depth_anything_depth_estimator_preprocessor.py +16 -0
- keras_hub/src/models/depth_anything/depth_anything_image_converter.py +10 -0
- keras_hub/src/models/depth_anything/depth_anything_layers.py +725 -0
- keras_hub/src/models/depth_anything/depth_anything_loss.py +89 -0
- keras_hub/src/models/depth_anything/depth_anything_presets.py +4 -0
- keras_hub/src/models/depth_anything/interpolate.py +62 -0
- keras_hub/src/models/depth_estimator.py +239 -0
- keras_hub/src/models/depth_estimator_preprocessor.py +78 -0
- keras_hub/src/models/dinov2/dinov2_backbone.py +29 -3
- keras_hub/src/models/dinov2/dinov2_layers.py +13 -3
- keras_hub/src/models/qwen3_moe/qwen3_moe_attention.py +371 -0
- keras_hub/src/models/qwen3_moe/qwen3_moe_backbone.py +365 -0
- keras_hub/src/models/qwen3_moe/qwen3_moe_causal_lm.py +357 -0
- keras_hub/src/models/qwen3_moe/qwen3_moe_causal_lm_preprocessor.py +12 -0
- keras_hub/src/models/qwen3_moe/qwen3_moe_decoder.py +672 -0
- keras_hub/src/models/qwen3_moe/qwen3_moe_layernorm.py +45 -0
- keras_hub/src/models/qwen3_moe/qwen3_moe_tokenizer.py +48 -0
- keras_hub/src/tests/test_case.py +3 -2
- keras_hub/src/utils/transformers/convert_dinov2.py +1 -0
- keras_hub/src/utils/transformers/convert_qwen3_moe.py +216 -0
- keras_hub/src/utils/transformers/preset_loader.py +3 -0
- keras_hub/src/version.py +1 -1
- keras_hub/tokenizers/__init__.py +3 -0
- {keras_hub_nightly-0.23.0.dev202509190415.dist-info → keras_hub_nightly-0.23.0.dev202509290422.dist-info}/METADATA +1 -1
- {keras_hub_nightly-0.23.0.dev202509190415.dist-info → keras_hub_nightly-0.23.0.dev202509290422.dist-info}/RECORD +32 -13
- {keras_hub_nightly-0.23.0.dev202509190415.dist-info → keras_hub_nightly-0.23.0.dev202509290422.dist-info}/WHEEL +0 -0
- {keras_hub_nightly-0.23.0.dev202509190415.dist-info → keras_hub_nightly-0.23.0.dev202509290422.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import keras
|
|
2
|
+
from keras import ops
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class Qwen3MoeLayerNorm(keras.layers.Layer):
|
|
6
|
+
"""A normalization layer for Qwen that implements RMS normalization.
|
|
7
|
+
|
|
8
|
+
Args:
|
|
9
|
+
head_dim: int. The dimension of each attention head, used for per-head
|
|
10
|
+
normalization. Defaults to `None`.
|
|
11
|
+
epsilon: float. A small float added to variance to avoid dividing by
|
|
12
|
+
zero. Defaults to `1e-6`.
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
def __init__(self, head_dim=None, epsilon=1e-6, **kwargs):
|
|
16
|
+
super().__init__(**kwargs)
|
|
17
|
+
self.head_dim = head_dim
|
|
18
|
+
self.epsilon = epsilon
|
|
19
|
+
|
|
20
|
+
def build(self, input_shape):
|
|
21
|
+
if self.head_dim:
|
|
22
|
+
dim = self.head_dim
|
|
23
|
+
else:
|
|
24
|
+
dim = input_shape[-1]
|
|
25
|
+
|
|
26
|
+
self.scale = self.add_weight(
|
|
27
|
+
name="scale",
|
|
28
|
+
trainable=True,
|
|
29
|
+
shape=(dim,),
|
|
30
|
+
initializer="ones",
|
|
31
|
+
dtype=self.variable_dtype,
|
|
32
|
+
)
|
|
33
|
+
self.built = True
|
|
34
|
+
|
|
35
|
+
def call(self, x):
|
|
36
|
+
input_dtype = x.dtype
|
|
37
|
+
x = ops.cast(x, "float32")
|
|
38
|
+
var = ops.mean(ops.power(x, 2), axis=-1, keepdims=True)
|
|
39
|
+
x = x * ops.rsqrt(var + self.epsilon)
|
|
40
|
+
return ops.cast(x * self.scale, input_dtype)
|
|
41
|
+
|
|
42
|
+
def get_config(self):
|
|
43
|
+
config = super().get_config()
|
|
44
|
+
config.update({"epsilon": self.epsilon, "head_dim": self.head_dim})
|
|
45
|
+
return config
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
from keras_hub.src.api_export import keras_hub_export
|
|
2
|
+
from keras_hub.src.models.qwen3_moe.qwen3_moe_backbone import Qwen3MoeBackbone
|
|
3
|
+
from keras_hub.src.tokenizers.byte_pair_tokenizer import BytePairTokenizer
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
@keras_hub_export(
|
|
7
|
+
"keras_hub.tokenizers.Qwen3MoeTokenizer",
|
|
8
|
+
)
|
|
9
|
+
class Qwen3MoeTokenizer(BytePairTokenizer):
|
|
10
|
+
"""Tokenizer for Qwen Moe model.
|
|
11
|
+
|
|
12
|
+
This tokenizer implements byte-pair encoding (BPE) for Qwen models,
|
|
13
|
+
handling special tokens like BOS (beginning of sequence) and EOS (end of
|
|
14
|
+
sequence).
|
|
15
|
+
|
|
16
|
+
Args:
|
|
17
|
+
vocabulary: Dictionary mapping tokens to token IDs, or path to
|
|
18
|
+
vocabulary file.
|
|
19
|
+
merges: List of BPE merges, or path to merges file.
|
|
20
|
+
bos_token: Beginning of sequence token. Defaults to None.
|
|
21
|
+
eos_token: End of sequence token. Defaults to "<|endoftext|>".
|
|
22
|
+
misc_special_tokens: Set of additional special tokens. Defaults to
|
|
23
|
+
empty set.
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
backbone_cls = Qwen3MoeBackbone
|
|
27
|
+
|
|
28
|
+
def __init__(
|
|
29
|
+
self,
|
|
30
|
+
vocabulary=None,
|
|
31
|
+
merges=None,
|
|
32
|
+
**kwargs,
|
|
33
|
+
):
|
|
34
|
+
# Add EOS token
|
|
35
|
+
eos_token = "<|im_end|>"
|
|
36
|
+
self._add_special_token(eos_token, "end_token")
|
|
37
|
+
|
|
38
|
+
pad_token = "<|endoftext|>"
|
|
39
|
+
self._add_special_token(pad_token, "pad_token")
|
|
40
|
+
|
|
41
|
+
self.start_token_id = None
|
|
42
|
+
self.start_token = None
|
|
43
|
+
|
|
44
|
+
super().__init__(
|
|
45
|
+
vocabulary=vocabulary,
|
|
46
|
+
merges=merges,
|
|
47
|
+
**kwargs,
|
|
48
|
+
)
|
keras_hub/src/tests/test_case.py
CHANGED
|
@@ -538,10 +538,11 @@ class TestCase(tf.test.TestCase, parameterized.TestCase):
|
|
|
538
538
|
|
|
539
539
|
self.assertIsInstance(output_data, dict)
|
|
540
540
|
self.assertEqual(
|
|
541
|
-
|
|
541
|
+
sorted(output_data.keys()),
|
|
542
|
+
sorted(backbone.pyramid_outputs.keys()),
|
|
542
543
|
)
|
|
543
544
|
self.assertEqual(
|
|
544
|
-
|
|
545
|
+
sorted(output_data.keys()), sorted(expected_pyramid_output_keys)
|
|
545
546
|
)
|
|
546
547
|
# check height and width of each level.
|
|
547
548
|
for i, (k, v) in enumerate(output_data.items()):
|
|
@@ -29,6 +29,7 @@ def convert_backbone_config(transformers_config):
|
|
|
29
29
|
"image_shape": (image_size, image_size, 3),
|
|
30
30
|
"position_embedding_shape": (image_size, image_size),
|
|
31
31
|
"antialias_in_interpolation": antialias_in_interpolation,
|
|
32
|
+
"apply_layernorm": transformers_config.get("apply_layernorm", False),
|
|
32
33
|
}
|
|
33
34
|
|
|
34
35
|
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
import numpy as np
|
|
2
|
+
|
|
3
|
+
from keras_hub.src.models.qwen3_moe.qwen3_moe_backbone import Qwen3MoeBackbone
|
|
4
|
+
from keras_hub.src.utils.preset_utils import load_json
|
|
5
|
+
|
|
6
|
+
backbone_cls = Qwen3MoeBackbone
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def convert_backbone_config(transformers_config):
|
|
10
|
+
return {
|
|
11
|
+
"vocabulary_size": transformers_config["vocab_size"],
|
|
12
|
+
"hidden_dim": transformers_config["hidden_size"],
|
|
13
|
+
"head_dim": transformers_config["head_dim"],
|
|
14
|
+
"num_layers": transformers_config["num_hidden_layers"],
|
|
15
|
+
"num_query_heads": transformers_config["num_attention_heads"],
|
|
16
|
+
"num_key_value_heads": transformers_config["num_key_value_heads"],
|
|
17
|
+
"intermediate_dim": transformers_config["intermediate_size"],
|
|
18
|
+
"moe_intermediate_dim": transformers_config["moe_intermediate_size"],
|
|
19
|
+
"num_experts": transformers_config["num_experts"],
|
|
20
|
+
"top_k": transformers_config["num_experts_per_tok"],
|
|
21
|
+
"norm_top_k_prob": transformers_config["norm_topk_prob"],
|
|
22
|
+
"decoder_sparse_step": transformers_config["decoder_sparse_step"],
|
|
23
|
+
"layer_norm_epsilon": transformers_config["rms_norm_eps"],
|
|
24
|
+
"rope_max_wavelength": transformers_config["rope_theta"],
|
|
25
|
+
"sliding_window_size": transformers_config["sliding_window"],
|
|
26
|
+
"router_aux_loss_coefficient": transformers_config[
|
|
27
|
+
"router_aux_loss_coef"
|
|
28
|
+
],
|
|
29
|
+
"tie_word_embeddings": transformers_config.get(
|
|
30
|
+
"tie_word_embeddings", False
|
|
31
|
+
),
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def convert_weights(backbone, loader, transformers_config):
|
|
36
|
+
loader.port_weight(
|
|
37
|
+
keras_variable=backbone.get_layer("token_embedding").embeddings,
|
|
38
|
+
hf_weight_key="model.embed_tokens.weight",
|
|
39
|
+
)
|
|
40
|
+
if not backbone.tie_word_embeddings:
|
|
41
|
+
loader.port_weight(
|
|
42
|
+
keras_variable=backbone.get_layer(
|
|
43
|
+
"token_embedding"
|
|
44
|
+
).reverse_embeddings,
|
|
45
|
+
hf_weight_key="lm_head.weight",
|
|
46
|
+
# rearrange_pattern="b a -> a b",
|
|
47
|
+
hook_fn=lambda hf_tensor, _: np.transpose(hf_tensor, axes=(1, 0)),
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
def transpose_and_reshape(x, shape):
|
|
51
|
+
return np.reshape(np.transpose(x), shape)
|
|
52
|
+
|
|
53
|
+
for i in range(backbone.num_layers):
|
|
54
|
+
decoder_layer = backbone.get_layer(f"transformer_layer_{i}")
|
|
55
|
+
|
|
56
|
+
# Input layernorm
|
|
57
|
+
loader.port_weight(
|
|
58
|
+
keras_variable=decoder_layer._self_attention_layernorm.scale,
|
|
59
|
+
hf_weight_key=f"model.layers.{i}.input_layernorm.weight",
|
|
60
|
+
)
|
|
61
|
+
|
|
62
|
+
# Attention layers
|
|
63
|
+
|
|
64
|
+
## Query
|
|
65
|
+
loader.port_weight(
|
|
66
|
+
keras_variable=decoder_layer._self_attention_layer._query_dense.kernel,
|
|
67
|
+
hf_weight_key=f"model.layers.{i}.self_attn.q_proj.weight",
|
|
68
|
+
hook_fn=transpose_and_reshape,
|
|
69
|
+
)
|
|
70
|
+
loader.port_weight(
|
|
71
|
+
keras_variable=decoder_layer._self_attention_layer._query_dense_layer_norm.scale,
|
|
72
|
+
hf_weight_key=f"model.layers.{i}.self_attn.q_norm.weight",
|
|
73
|
+
)
|
|
74
|
+
## Key
|
|
75
|
+
loader.port_weight(
|
|
76
|
+
keras_variable=decoder_layer._self_attention_layer._key_dense.kernel,
|
|
77
|
+
hf_weight_key=f"model.layers.{i}.self_attn.k_proj.weight",
|
|
78
|
+
hook_fn=transpose_and_reshape,
|
|
79
|
+
)
|
|
80
|
+
loader.port_weight(
|
|
81
|
+
keras_variable=decoder_layer._self_attention_layer._key_dense_layer_norm.scale,
|
|
82
|
+
hf_weight_key=f"model.layers.{i}.self_attn.k_norm.weight",
|
|
83
|
+
)
|
|
84
|
+
## Value
|
|
85
|
+
loader.port_weight(
|
|
86
|
+
keras_variable=decoder_layer._self_attention_layer._value_dense.kernel,
|
|
87
|
+
hf_weight_key=f"model.layers.{i}.self_attn.v_proj.weight",
|
|
88
|
+
hook_fn=transpose_and_reshape,
|
|
89
|
+
)
|
|
90
|
+
## Output
|
|
91
|
+
loader.port_weight(
|
|
92
|
+
keras_variable=decoder_layer._self_attention_layer._output_dense.kernel,
|
|
93
|
+
hf_weight_key=f"model.layers.{i}.self_attn.o_proj.weight",
|
|
94
|
+
# rearrange_patterns="c (a b) -> a b c",
|
|
95
|
+
# rearrange_dims={"a": backbone.num_query_heads},
|
|
96
|
+
hook_fn=transpose_and_reshape,
|
|
97
|
+
)
|
|
98
|
+
|
|
99
|
+
# MLP layers
|
|
100
|
+
if (
|
|
101
|
+
(i not in backbone.mlp_only_layers)
|
|
102
|
+
and backbone.num_experts > 0
|
|
103
|
+
and ((i + 1) % backbone.decoder_sparse_step == 0)
|
|
104
|
+
):
|
|
105
|
+
# MoE layers
|
|
106
|
+
loader.port_weight(
|
|
107
|
+
keras_variable=decoder_layer.mlp._sparse_feedforward_gate_dense.kernel,
|
|
108
|
+
hf_weight_key=f"model.layers.{i}.mlp.gate.weight",
|
|
109
|
+
# rearrange_patterns="b a -> a b",
|
|
110
|
+
hook_fn=lambda hf_tensor, _: np.transpose(
|
|
111
|
+
hf_tensor, axes=(1, 0)
|
|
112
|
+
),
|
|
113
|
+
)
|
|
114
|
+
# Batched experts: gate_up_proj and down_proj
|
|
115
|
+
gate_up_proj_list = []
|
|
116
|
+
down_proj_list = []
|
|
117
|
+
for expert_idx in range(backbone.num_experts):
|
|
118
|
+
# Load gate_proj and up_proj for each expert
|
|
119
|
+
gate_proj = loader.get_tensor(
|
|
120
|
+
f"model.layers.{i}.mlp.experts.{expert_idx}.gate_proj.weight"
|
|
121
|
+
)
|
|
122
|
+
up_proj = loader.get_tensor(
|
|
123
|
+
f"model.layers.{i}.mlp.experts.{expert_idx}.up_proj.weight"
|
|
124
|
+
)
|
|
125
|
+
# Transpose to (hidden_dim, intermediate_dim)
|
|
126
|
+
gate_proj = np.transpose(gate_proj, axes=(1, 0))
|
|
127
|
+
up_proj = np.transpose(up_proj, axes=(1, 0))
|
|
128
|
+
# Concatenate gate_proj and up_proj along the last dimension
|
|
129
|
+
gate_up_proj = np.concatenate([gate_proj, up_proj], axis=-1)
|
|
130
|
+
gate_up_proj_list.append(gate_up_proj)
|
|
131
|
+
|
|
132
|
+
# Load down_proj for each expert
|
|
133
|
+
down_proj = loader.get_tensor(
|
|
134
|
+
f"model.layers.{i}.mlp.experts.{expert_idx}.down_proj.weight"
|
|
135
|
+
)
|
|
136
|
+
down_proj = np.transpose(
|
|
137
|
+
down_proj, axes=(1, 0)
|
|
138
|
+
) # (intermediate_dim, hidden_dim)
|
|
139
|
+
down_proj_list.append(down_proj)
|
|
140
|
+
|
|
141
|
+
# Stack the lists to create batched weights
|
|
142
|
+
gate_up_proj_batched = np.stack(
|
|
143
|
+
gate_up_proj_list, axis=0
|
|
144
|
+
) # (num_experts, hidden_dim, 2 * intermediate_dim)
|
|
145
|
+
down_proj_batched = np.stack(
|
|
146
|
+
down_proj_list, axis=0
|
|
147
|
+
) # (num_experts, intermediate_dim, hidden_dim)
|
|
148
|
+
|
|
149
|
+
# Assign batched weights to expert_bank
|
|
150
|
+
decoder_layer.mlp.expert_bank._expert_feedforward_gate_dense.assign(
|
|
151
|
+
gate_up_proj_batched
|
|
152
|
+
)
|
|
153
|
+
decoder_layer.mlp.expert_bank._expert_feedforward_output_dense.assign(
|
|
154
|
+
down_proj_batched
|
|
155
|
+
)
|
|
156
|
+
else:
|
|
157
|
+
loader.port_weight(
|
|
158
|
+
keras_variable=decoder_layer._feedforward_intermediate_dense.kernel,
|
|
159
|
+
hf_weight_key=f"model.layers.{i}.mlp.up_proj.weight",
|
|
160
|
+
# rearrange_patterns="b a -> a b",
|
|
161
|
+
hook_fn=lambda hf_tensor, _: np.transpose(
|
|
162
|
+
hf_tensor, axes=(1, 0)
|
|
163
|
+
),
|
|
164
|
+
)
|
|
165
|
+
loader.port_weight(
|
|
166
|
+
keras_variable=decoder_layer._feedforward_output_dense.kernel,
|
|
167
|
+
hf_weight_key=f"model.layers.{i}.mlp.down_proj.weight",
|
|
168
|
+
# rearrange_patterns="b a -> a b",
|
|
169
|
+
hook_fn=lambda hf_tensor, _: np.transpose(
|
|
170
|
+
hf_tensor, axes=(1, 0)
|
|
171
|
+
),
|
|
172
|
+
)
|
|
173
|
+
loader.port_weight(
|
|
174
|
+
keras_variable=decoder_layer._feedforward_gate_dense.kernel,
|
|
175
|
+
hf_weight_key=f"model.layers.{i}.mlp.gate_proj.weight",
|
|
176
|
+
# rearrange_patterns="b a -> a b",
|
|
177
|
+
hook_fn=lambda hf_tensor, _: np.transpose(
|
|
178
|
+
hf_tensor, axes=(1, 0)
|
|
179
|
+
),
|
|
180
|
+
)
|
|
181
|
+
|
|
182
|
+
# Feedforward layernorm
|
|
183
|
+
loader.port_weight(
|
|
184
|
+
keras_variable=decoder_layer._feedforward_layernorm.scale,
|
|
185
|
+
hf_weight_key=f"model.layers.{i}.post_attention_layernorm.weight",
|
|
186
|
+
)
|
|
187
|
+
|
|
188
|
+
# Final normalization layer
|
|
189
|
+
loader.port_weight(
|
|
190
|
+
keras_variable=backbone.get_layer("sequence_output_layernorm").scale,
|
|
191
|
+
hf_weight_key="model.norm.weight",
|
|
192
|
+
)
|
|
193
|
+
|
|
194
|
+
return backbone
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
def convert_tokenizer(cls, preset, **kwargs):
|
|
198
|
+
tokenizer_config = load_json(preset, "tokenizer.json")
|
|
199
|
+
vocab = tokenizer_config["model"]["vocab"]
|
|
200
|
+
merges = tokenizer_config["model"]["merges"]
|
|
201
|
+
merges = [" ".join(item) for item in merges]
|
|
202
|
+
|
|
203
|
+
# Load all special tokens with the exception of "reserved" ones.
|
|
204
|
+
special_tokens = set()
|
|
205
|
+
for token in tokenizer_config["added_tokens"]:
|
|
206
|
+
if not token["content"].startswith("<|reserved_special_token_"):
|
|
207
|
+
vocab[token["content"]] = token["id"]
|
|
208
|
+
special_tokens.add(token["content"])
|
|
209
|
+
|
|
210
|
+
kwargs.update(
|
|
211
|
+
{
|
|
212
|
+
"unsplittable_tokens": list(special_tokens),
|
|
213
|
+
}
|
|
214
|
+
)
|
|
215
|
+
|
|
216
|
+
return cls(vocabulary=vocab, merges=merges, **kwargs)
|
|
@@ -18,6 +18,7 @@ from keras_hub.src.utils.transformers import convert_mixtral
|
|
|
18
18
|
from keras_hub.src.utils.transformers import convert_pali_gemma
|
|
19
19
|
from keras_hub.src.utils.transformers import convert_qwen
|
|
20
20
|
from keras_hub.src.utils.transformers import convert_qwen3
|
|
21
|
+
from keras_hub.src.utils.transformers import convert_qwen3_moe
|
|
21
22
|
from keras_hub.src.utils.transformers import convert_qwen_moe
|
|
22
23
|
from keras_hub.src.utils.transformers import convert_t5gemma
|
|
23
24
|
from keras_hub.src.utils.transformers import convert_vit
|
|
@@ -61,6 +62,8 @@ class TransformersPresetLoader(PresetLoader):
|
|
|
61
62
|
self.converter = convert_mixtral
|
|
62
63
|
elif model_type == "qwen2_moe":
|
|
63
64
|
self.converter = convert_qwen_moe
|
|
65
|
+
elif model_type == "qwen3_moe":
|
|
66
|
+
self.converter = convert_qwen3_moe
|
|
64
67
|
elif model_type == "qwen3":
|
|
65
68
|
self.converter = convert_qwen3
|
|
66
69
|
elif model_type == "t5gemma":
|
keras_hub/src/version.py
CHANGED
keras_hub/tokenizers/__init__.py
CHANGED
|
@@ -78,6 +78,9 @@ from keras_hub.src.models.qwen.qwen_tokenizer import (
|
|
|
78
78
|
from keras_hub.src.models.qwen.qwen_tokenizer import (
|
|
79
79
|
QwenTokenizer as QwenTokenizer,
|
|
80
80
|
)
|
|
81
|
+
from keras_hub.src.models.qwen3_moe.qwen3_moe_tokenizer import (
|
|
82
|
+
Qwen3MoeTokenizer as Qwen3MoeTokenizer,
|
|
83
|
+
)
|
|
81
84
|
from keras_hub.src.models.qwen_moe.qwen_moe_tokenizer import (
|
|
82
85
|
QwenMoeTokenizer as QwenMoeTokenizer,
|
|
83
86
|
)
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
keras_hub/__init__.py,sha256=bJbUZkqwhZvTb1Tqx1fbkq6mzBYiEyq-Hin3oQIkhdE,558
|
|
2
|
-
keras_hub/layers/__init__.py,sha256=
|
|
2
|
+
keras_hub/layers/__init__.py,sha256=8FTy8HwjgFdBvbl_QKTxXmOc13TXjUUBgLYrSTtkc0M,5807
|
|
3
3
|
keras_hub/metrics/__init__.py,sha256=KYalsMPBnfwim9BdGHFfJ5WxUKFXOQ1QoKIMT_0lwlM,439
|
|
4
|
-
keras_hub/models/__init__.py,sha256=
|
|
4
|
+
keras_hub/models/__init__.py,sha256=wy75CGuTVxRIEXSCqmXgMyf23vUbuRbByWrlAaPWXB0,30737
|
|
5
5
|
keras_hub/samplers/__init__.py,sha256=aFQIkiqbZpi8vjrPp2MVII4QUfE-eQjra5fMeHsoy7k,886
|
|
6
6
|
keras_hub/src/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
7
7
|
keras_hub/src/api_export.py,sha256=9pQZK27JObxWZ96QPLBp1OBsjWigh1iuV6RglPGMRk0,1499
|
|
8
|
-
keras_hub/src/version.py,sha256=
|
|
8
|
+
keras_hub/src/version.py,sha256=6vVMy1kMb4I1OSgSm3ncQsx0SGa1cjzECH_NtNJJO5w,222
|
|
9
9
|
keras_hub/src/layers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10
10
|
keras_hub/src/layers/modeling/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
11
11
|
keras_hub/src/layers/modeling/alibi_bias.py,sha256=1XBTHI52L_iJDhN_w5ydu_iMhCuTgQAxEPwcLA6BPuk,4411
|
|
@@ -46,6 +46,8 @@ keras_hub/src/models/audio_to_text_preprocessor.py,sha256=GS-WWyJ6aSsPRxi_0bxvxA
|
|
|
46
46
|
keras_hub/src/models/backbone.py,sha256=BdqPsne7lIITIxn6jY6AN4vZ-Rc9VnpqTxvVNR3CS7M,12210
|
|
47
47
|
keras_hub/src/models/causal_lm.py,sha256=FHGpbyFrDrnPSv5eRLfDgcpvjS6jDhSokMRl-kuumyg,18164
|
|
48
48
|
keras_hub/src/models/causal_lm_preprocessor.py,sha256=nxl-sfmCfkfl6JmVRASa878QbaZUgWSA6Jdu48x4-dY,7155
|
|
49
|
+
keras_hub/src/models/depth_estimator.py,sha256=JR7wtunOPrfEoDkLspoZnL2ItWhZFDeAxxw2vue5QLs,8992
|
|
50
|
+
keras_hub/src/models/depth_estimator_preprocessor.py,sha256=2iE8NAUyiD2AvjZwNoXKUaOUogcE1fRzTNXLQ75GZpQ,2822
|
|
49
51
|
keras_hub/src/models/feature_pyramid_backbone.py,sha256=clEW-TTQSVJ_5qFNdDF0iABkin1p_xlBUFjJrC7T0IA,2247
|
|
50
52
|
keras_hub/src/models/image_classifier.py,sha256=yt6cjhPfqs8A_eWXBsXdXFzn-aRgH2rVHUq7Zu7CyK8,7804
|
|
51
53
|
keras_hub/src/models/image_classifier_preprocessor.py,sha256=Bf7jSqHB1hX2ZWoWQS4GcXNOY_EjeoJi-_vtzCAqw4o,2690
|
|
@@ -160,10 +162,19 @@ keras_hub/src/models/densenet/densenet_image_classifier.py,sha256=ye-Ix3oU42pfsD
|
|
|
160
162
|
keras_hub/src/models/densenet/densenet_image_classifier_preprocessor.py,sha256=xDZbTw_h6pjLDzf8QmbDyMnMsFzgh-dPX1ldg9kddhg,563
|
|
161
163
|
keras_hub/src/models/densenet/densenet_image_converter.py,sha256=DoxYlJVZ9uaabFhVjWOmzvhONoc8KNcQj2vQ6Z1AUpU,354
|
|
162
164
|
keras_hub/src/models/densenet/densenet_presets.py,sha256=d2GEB9cWYrzP8Qj1w8CWiRW976MibQBuk_YQYvgCzr4,1222
|
|
165
|
+
keras_hub/src/models/depth_anything/__init__.py,sha256=NAU7sgJ68ddqKO0X8h5C1V0QC8PQ2lT8QdmM-oZe91M,321
|
|
166
|
+
keras_hub/src/models/depth_anything/depth_anything_backbone.py,sha256=bZzfCJI5Altrs85t8f_QYfQ-C-uhgaWXz_TWQBdaJsU,9308
|
|
167
|
+
keras_hub/src/models/depth_anything/depth_anything_depth_estimator.py,sha256=sqAgwA5x2U8EhoRQhLNgHynFzFY5dKUZs8xFTMrxrMM,2904
|
|
168
|
+
keras_hub/src/models/depth_anything/depth_anything_depth_estimator_preprocessor.py,sha256=ucmXNfY5RoRRYlSvRBZzZm6CuBGbHVlbiehXiM_yOg8,621
|
|
169
|
+
keras_hub/src/models/depth_anything/depth_anything_image_converter.py,sha256=Xutwc8IyklFilDcc4psNBwPGRDcFlzalWXsHvEz7rUc,395
|
|
170
|
+
keras_hub/src/models/depth_anything/depth_anything_layers.py,sha256=_43iEE7F8P7BL4xssjpPeFyhiDk4gGLu-wPxuqQ-nT8,27739
|
|
171
|
+
keras_hub/src/models/depth_anything/depth_anything_loss.py,sha256=GJqzvLkCZrWsMDO6T2Gt_9-TYJqorfNnyOXSNgLUjQg,3389
|
|
172
|
+
keras_hub/src/models/depth_anything/depth_anything_presets.py,sha256=mJ1Kg6J5lP1GkrEDH_qS1XJ__98Tjt5noRZVZaHCn9k,121
|
|
173
|
+
keras_hub/src/models/depth_anything/interpolate.py,sha256=qwrPGP6wA4jZ-XcSeulhkyxPDiMRxHlC92EqSd0H5Tk,2041
|
|
163
174
|
keras_hub/src/models/dinov2/__init__.py,sha256=qacZi82EfAloVND4gDLZjqgR5_yVdz_dc4mMKyCsjOA,257
|
|
164
|
-
keras_hub/src/models/dinov2/dinov2_backbone.py,sha256=
|
|
175
|
+
keras_hub/src/models/dinov2/dinov2_backbone.py,sha256=QH3lzE1EnxTcOSii9KS1Qx3lq0XcZMsvElB7AL_ejZY,10672
|
|
165
176
|
keras_hub/src/models/dinov2/dinov2_image_converter.py,sha256=gfFROdYV5rOzo3kJFlRvRHYjek8z9YirKfrFwlVJO3g,342
|
|
166
|
-
keras_hub/src/models/dinov2/dinov2_layers.py,sha256
|
|
177
|
+
keras_hub/src/models/dinov2/dinov2_layers.py,sha256=UCcia2kWA1O37SMmUbyhUcSXmUpLfNjk1E6mPTPDrF0,33647
|
|
167
178
|
keras_hub/src/models/dinov2/dinov2_presets.py,sha256=ho493GPH98K4LH1E54UV2qZZ4h7Un9ylbBmMQjNoKh4,2937
|
|
168
179
|
keras_hub/src/models/distil_bert/__init__.py,sha256=3Z0w-Mt3aOR0u9RGzjHQ7B3J3qBF2pGjupDGQ9yyzoc,303
|
|
169
180
|
keras_hub/src/models/distil_bert/distil_bert_backbone.py,sha256=rnAf_GokB3wAeJwVZtgUKQO_bKJIa8RavhL_ykTJpNw,6440
|
|
@@ -371,6 +382,13 @@ keras_hub/src/models/qwen3/qwen3_decoder.py,sha256=68s9jQj53zFmXE4-SGXKYHu546fXO
|
|
|
371
382
|
keras_hub/src/models/qwen3/qwen3_layernorm.py,sha256=EJxjf7Pr6ufPQnNeuYQxkExzPjPk4PQxqMsoBeSEkDo,1073
|
|
372
383
|
keras_hub/src/models/qwen3/qwen3_presets.py,sha256=eAqRbjLyRTSXcN-jnGHqoCHejKm2gmt8_zL4EPoE-JA,2518
|
|
373
384
|
keras_hub/src/models/qwen3/qwen3_tokenizer.py,sha256=LmPtg0vprMchDvYfTj8m5PraXI2QS3-YgdIIpIm5iAs,1448
|
|
385
|
+
keras_hub/src/models/qwen3_moe/qwen3_moe_attention.py,sha256=rZnzWA-cAhuWSuHSJfrNqf5_Cu0PNEe7PKbPNbhJdeM,13355
|
|
386
|
+
keras_hub/src/models/qwen3_moe/qwen3_moe_backbone.py,sha256=gguc_M5akemEaQCklTDFiABSRa4nwa4IuDzlfzRRpKM,14618
|
|
387
|
+
keras_hub/src/models/qwen3_moe/qwen3_moe_causal_lm.py,sha256=g3IlpuNzKbcAt_VBYnm895GBLQIPDuMP9eVbL44tf-A,13286
|
|
388
|
+
keras_hub/src/models/qwen3_moe/qwen3_moe_causal_lm_preprocessor.py,sha256=CU5sH0bljNCPuN7sKNnP1FV-jexc12WK0HFU7RWsAvU,499
|
|
389
|
+
keras_hub/src/models/qwen3_moe/qwen3_moe_decoder.py,sha256=lUmDkxrikv4s40tcT9a8muCbEbfUBN97nTFWQEelIJw,25926
|
|
390
|
+
keras_hub/src/models/qwen3_moe/qwen3_moe_layernorm.py,sha256=T6BjJm93F37_0XrrqkWPPXXg4DFOt3f6Al0LDF8N15Y,1360
|
|
391
|
+
keras_hub/src/models/qwen3_moe/qwen3_moe_tokenizer.py,sha256=tDx1WSxmpiWn39NhzkQO-YUbdy713RYHKc_F-EUa6Tw,1473
|
|
374
392
|
keras_hub/src/models/qwen_moe/__init__.py,sha256=5D8GUmVDsJs0J4sVZHcXOLkZf12U96l-WtwyVee4lu8,267
|
|
375
393
|
keras_hub/src/models/qwen_moe/qwen_moe_attention.py,sha256=o0mcVTDMtElMYq3NSYRCfuYVdF-W8YDSU5ogensrVJg,13277
|
|
376
394
|
keras_hub/src/models/qwen_moe/qwen_moe_backbone.py,sha256=nrfELvIvRLmrgKrUNXci2CrecmeI6bWzJj7HH-RcWJA,15341
|
|
@@ -523,7 +541,7 @@ keras_hub/src/samplers/serialization.py,sha256=K6FC4AY1sfOLLIk2k4G783XWnQ_Rk3z1Q
|
|
|
523
541
|
keras_hub/src/samplers/top_k_sampler.py,sha256=WSyrhmOCan55X2JYAnNWE88rkx66sXqdoerl87nOrDQ,2250
|
|
524
542
|
keras_hub/src/samplers/top_p_sampler.py,sha256=9r29WdqBlrW_2TBma6QqkRps2Uit4a6iZPmq1Gsiuko,3400
|
|
525
543
|
keras_hub/src/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
526
|
-
keras_hub/src/tests/test_case.py,sha256=
|
|
544
|
+
keras_hub/src/tests/test_case.py,sha256=Ie0L8NbFJjSO0NWcjU0BRQRdbyCLxT1ru2M0FdU_uHo,29291
|
|
527
545
|
keras_hub/src/tests/mocks/mock_gemma3_tokenizer.py,sha256=a4mSer84-xh9dVJUVpFUPzglCh-7NcFqHRKPDR35c8c,4888
|
|
528
546
|
keras_hub/src/tokenizers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
529
547
|
keras_hub/src/tokenizers/byte_pair_tokenizer.py,sha256=WeUlHMAf5y_MUjFIfVhEcFoOZu-z4kkSj-Dq-pegM9w,24052
|
|
@@ -558,7 +576,7 @@ keras_hub/src/utils/transformers/convert_albert.py,sha256=VdKclZpCxtDWq3UbUUQZf4
|
|
|
558
576
|
keras_hub/src/utils/transformers/convert_bart.py,sha256=Tk4h9Md9rwN5wjQbGIVrC7qzDpF8kI8qm-FKL8HlUok,14411
|
|
559
577
|
keras_hub/src/utils/transformers/convert_bert.py,sha256=4gQqXCJzC9QWdLPDUAq741K8t_kjPIET050YjUnLeDA,5977
|
|
560
578
|
keras_hub/src/utils/transformers/convert_deit.py,sha256=ubcqYzMlhWTCE2S_TsXICCMmqjN9RsQPaw_70vArnjo,5306
|
|
561
|
-
keras_hub/src/utils/transformers/convert_dinov2.py,sha256=
|
|
579
|
+
keras_hub/src/utils/transformers/convert_dinov2.py,sha256=Zmxz33hKJCcykQOcW8XhG_Yy1l8XqIYam1cjzM69-Mk,6986
|
|
562
580
|
keras_hub/src/utils/transformers/convert_distilbert.py,sha256=SlfIRhSRk5c1ir2HGiDPiXa5XdOId_DbcnZO9lbwyZ8,6498
|
|
563
581
|
keras_hub/src/utils/transformers/convert_esm.py,sha256=rOgGnNY37ZbYnoVC3L-Y-yGGAxTRmYtQV0nJoandH2Y,6214
|
|
564
582
|
keras_hub/src/utils/transformers/convert_gemma.py,sha256=ElCgwBpSN5Q7rV5PJawTsoytPzs5ZjuwoY60YAe8y_A,6533
|
|
@@ -569,16 +587,17 @@ keras_hub/src/utils/transformers/convert_mixtral.py,sha256=PxeCY8Xe7U_caICugwOCE
|
|
|
569
587
|
keras_hub/src/utils/transformers/convert_pali_gemma.py,sha256=B1leeDw96Yvu81hYumf66hIid07k5NLqoeWAJgPnaLs,10649
|
|
570
588
|
keras_hub/src/utils/transformers/convert_qwen.py,sha256=WUxMAEFVqRs7TRw7QU5TH3_ev4yf02R1xFVliMvTQqg,5886
|
|
571
589
|
keras_hub/src/utils/transformers/convert_qwen3.py,sha256=LIormvCMWPq6X9Wo2eNbADjtFZ0nI7tFGZFBxmo4GKw,5700
|
|
590
|
+
keras_hub/src/utils/transformers/convert_qwen3_moe.py,sha256=4Cr2haS20VNHF1iqKRpKeZ47baV0TAXg87zkCfl-JTg,8876
|
|
572
591
|
keras_hub/src/utils/transformers/convert_qwen_moe.py,sha256=a7R28aln-PdAcNuKAXdrtzvslho2Co6GypChxLMKPpc,10618
|
|
573
592
|
keras_hub/src/utils/transformers/convert_t5gemma.py,sha256=DPOwd61UhjspKuCsk3_EaNvSADGP_f8KLcZARHYVk5Y,9490
|
|
574
593
|
keras_hub/src/utils/transformers/convert_vit.py,sha256=YAmXh519ecSgEO5B4g-aEQg1Bb_6ifFafLMqDTfLn_c,5259
|
|
575
|
-
keras_hub/src/utils/transformers/preset_loader.py,sha256=
|
|
594
|
+
keras_hub/src/utils/transformers/preset_loader.py,sha256=_NX7T6ecEQ8I01FkaZApJf-u8JUymNplixR8vcriRlQ,5075
|
|
576
595
|
keras_hub/src/utils/transformers/safetensor_utils.py,sha256=CYUHyA4y-B61r7NDnCsFb4t_UmSwZ1k9L-8gzEd6KRg,3339
|
|
577
596
|
keras_hub/src/utils/transformers/export/gemma.py,sha256=xX_vfQwvFZ_-lQX4kgMNOGKL7fL_1yk7QyGYV2Qyly4,4699
|
|
578
597
|
keras_hub/src/utils/transformers/export/hf_exporter.py,sha256=Qk52c6LIA2eMHUNY9Vy4STJSpnhLMdJ_t-3ljqhSr4k,5081
|
|
579
|
-
keras_hub/tokenizers/__init__.py,sha256=
|
|
598
|
+
keras_hub/tokenizers/__init__.py,sha256=kyFWYm4mb--U4xYU-2Gb1COM8xEFWNK6LcKxr8h9Ivc,4561
|
|
580
599
|
keras_hub/utils/__init__.py,sha256=jXPqVGBpJr_PpYmqD8aDG-fRMlxH-ulqCR2SZMn288Y,646
|
|
581
|
-
keras_hub_nightly-0.23.0.
|
|
582
|
-
keras_hub_nightly-0.23.0.
|
|
583
|
-
keras_hub_nightly-0.23.0.
|
|
584
|
-
keras_hub_nightly-0.23.0.
|
|
600
|
+
keras_hub_nightly-0.23.0.dev202509290422.dist-info/METADATA,sha256=fanU24D6N_08vXWQ13ieahbuEi_ihgg4m6jSlkHT8BQ,7395
|
|
601
|
+
keras_hub_nightly-0.23.0.dev202509290422.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
602
|
+
keras_hub_nightly-0.23.0.dev202509290422.dist-info/top_level.txt,sha256=N4J6piIWBKa38A4uV-CnIopnOEf8mHAbkNXafXm_CuA,10
|
|
603
|
+
keras_hub_nightly-0.23.0.dev202509290422.dist-info/RECORD,,
|
|
File without changes
|