keras-hub-nightly 0.24.0.dev202510300423__py3-none-any.whl → 0.24.0.dev202510310430__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 +3 -0
- keras_hub/src/models/dinov2/dinov2_layers.py +3 -1
- keras_hub/src/models/dinov3/__init__.py +5 -0
- keras_hub/src/models/dinov3/dinov3_backbone.py +263 -0
- keras_hub/src/models/dinov3/dinov3_image_converter.py +8 -0
- keras_hub/src/models/dinov3/dinov3_layers.py +1013 -0
- keras_hub/src/models/dinov3/dinov3_presets.py +4 -0
- keras_hub/src/utils/transformers/convert_dinov3.py +106 -0
- keras_hub/src/utils/transformers/preset_loader.py +3 -0
- keras_hub/src/version.py +1 -1
- {keras_hub_nightly-0.24.0.dev202510300423.dist-info → keras_hub_nightly-0.24.0.dev202510310430.dist-info}/METADATA +1 -1
- {keras_hub_nightly-0.24.0.dev202510300423.dist-info → keras_hub_nightly-0.24.0.dev202510310430.dist-info}/RECORD +15 -9
- {keras_hub_nightly-0.24.0.dev202510300423.dist-info → keras_hub_nightly-0.24.0.dev202510310430.dist-info}/WHEEL +0 -0
- {keras_hub_nightly-0.24.0.dev202510300423.dist-info → keras_hub_nightly-0.24.0.dev202510310430.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import numpy as np
|
|
2
|
+
|
|
3
|
+
from keras_hub.src.models.dinov3.dinov3_backbone import DINOV3Backbone
|
|
4
|
+
|
|
5
|
+
backbone_cls = DINOV3Backbone
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def convert_backbone_config(transformers_config):
|
|
9
|
+
image_size = transformers_config["image_size"]
|
|
10
|
+
return {
|
|
11
|
+
"patch_size": transformers_config["patch_size"],
|
|
12
|
+
"num_layers": transformers_config["num_hidden_layers"],
|
|
13
|
+
"hidden_dim": transformers_config["hidden_size"],
|
|
14
|
+
"num_heads": transformers_config["num_attention_heads"],
|
|
15
|
+
"intermediate_dim": transformers_config["intermediate_size"],
|
|
16
|
+
"layer_scale_init_value": transformers_config["layerscale_value"],
|
|
17
|
+
"num_register_tokens": transformers_config["num_register_tokens"],
|
|
18
|
+
"use_mask_token": True,
|
|
19
|
+
"hidden_activation": transformers_config["hidden_act"],
|
|
20
|
+
"use_gated_mlp": transformers_config["use_gated_mlp"],
|
|
21
|
+
"use_query_bias": transformers_config["query_bias"],
|
|
22
|
+
"use_key_bias": transformers_config["key_bias"],
|
|
23
|
+
"use_value_bias": transformers_config["value_bias"],
|
|
24
|
+
"use_proj_bias": transformers_config["proj_bias"],
|
|
25
|
+
"use_mlp_bias": transformers_config["mlp_bias"],
|
|
26
|
+
"attention_dropout": transformers_config["attention_dropout"],
|
|
27
|
+
"drop_path_rate": transformers_config["drop_path_rate"],
|
|
28
|
+
"layer_norm_eps": transformers_config["layer_norm_eps"],
|
|
29
|
+
"image_shape": (image_size, image_size, 3),
|
|
30
|
+
"rope_theta": transformers_config["rope_theta"],
|
|
31
|
+
"apply_layernorm": False,
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def convert_weights(backbone, loader, transformers_config):
|
|
36
|
+
if not isinstance(backbone, DINOV3Backbone):
|
|
37
|
+
raise ValueError(
|
|
38
|
+
"The provided backbone must be an instance of DINOV3Backbone. "
|
|
39
|
+
f"Received: {type(backbone)}"
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
def port_ln(keras_variable, weight_key):
|
|
43
|
+
loader.port_weight(keras_variable.gamma, f"{weight_key}.weight")
|
|
44
|
+
loader.port_weight(keras_variable.beta, f"{weight_key}.bias")
|
|
45
|
+
|
|
46
|
+
def port_dense(keras_variable, weight_key):
|
|
47
|
+
loader.port_weight(
|
|
48
|
+
keras_variable.kernel,
|
|
49
|
+
f"{weight_key}.weight",
|
|
50
|
+
hook_fn=lambda x, _: x.T,
|
|
51
|
+
)
|
|
52
|
+
if keras_variable.bias is not None:
|
|
53
|
+
loader.port_weight(keras_variable.bias, f"{weight_key}.bias")
|
|
54
|
+
|
|
55
|
+
# Embedding.
|
|
56
|
+
loader.port_weight(
|
|
57
|
+
keras_variable=backbone.embeddings.cls_token,
|
|
58
|
+
hf_weight_key="embeddings.cls_token",
|
|
59
|
+
)
|
|
60
|
+
if backbone.use_mask_token:
|
|
61
|
+
loader.port_weight(
|
|
62
|
+
keras_variable=backbone.embeddings.mask_token,
|
|
63
|
+
hf_weight_key="embeddings.mask_token",
|
|
64
|
+
)
|
|
65
|
+
if backbone.num_register_tokens > 0:
|
|
66
|
+
loader.port_weight(
|
|
67
|
+
keras_variable=backbone.embeddings.register_tokens,
|
|
68
|
+
hf_weight_key="embeddings.register_tokens",
|
|
69
|
+
)
|
|
70
|
+
loader.port_weight(
|
|
71
|
+
keras_variable=backbone.embeddings.patch_embeddings.projection.kernel,
|
|
72
|
+
hf_weight_key="embeddings.patch_embeddings.weight",
|
|
73
|
+
hook_fn=lambda x, _: np.transpose(x, (2, 3, 1, 0)),
|
|
74
|
+
)
|
|
75
|
+
loader.port_weight(
|
|
76
|
+
keras_variable=backbone.embeddings.patch_embeddings.projection.bias,
|
|
77
|
+
hf_weight_key="embeddings.patch_embeddings.bias",
|
|
78
|
+
)
|
|
79
|
+
|
|
80
|
+
# Encoder.
|
|
81
|
+
for i, layer in enumerate(backbone.encoder.layers):
|
|
82
|
+
prefix = f"layer.{i}"
|
|
83
|
+
port_ln(layer.norm1, f"{prefix}.norm1")
|
|
84
|
+
port_dense(layer.attention.query_dense, f"{prefix}.attention.q_proj")
|
|
85
|
+
port_dense(layer.attention.key_dense, f"{prefix}.attention.k_proj")
|
|
86
|
+
port_dense(layer.attention.value_dense, f"{prefix}.attention.v_proj")
|
|
87
|
+
port_dense(layer.attention.output_dense, f"{prefix}.attention.o_proj")
|
|
88
|
+
|
|
89
|
+
loader.port_weight(
|
|
90
|
+
keras_variable=layer.layer_scale1.lambda1,
|
|
91
|
+
hf_weight_key=f"{prefix}.layer_scale1.lambda1",
|
|
92
|
+
)
|
|
93
|
+
port_ln(layer.norm2, f"{prefix}.norm2")
|
|
94
|
+
if backbone.use_gated_mlp:
|
|
95
|
+
port_dense(layer.mlp.gate_proj, f"{prefix}.mlp.gate_proj")
|
|
96
|
+
port_dense(layer.mlp.up_proj, f"{prefix}.mlp.up_proj")
|
|
97
|
+
port_dense(layer.mlp.down_proj, f"{prefix}.mlp.down_proj")
|
|
98
|
+
else:
|
|
99
|
+
port_dense(layer.mlp.up_proj, f"{prefix}.mlp.up_proj")
|
|
100
|
+
port_dense(layer.mlp.down_proj, f"{prefix}.mlp.down_proj")
|
|
101
|
+
loader.port_weight(
|
|
102
|
+
keras_variable=layer.layer_scale2.lambda1,
|
|
103
|
+
hf_weight_key=f"{prefix}.layer_scale2.lambda1",
|
|
104
|
+
)
|
|
105
|
+
|
|
106
|
+
port_ln(backbone.layernorm, "norm")
|
|
@@ -8,6 +8,7 @@ from keras_hub.src.utils.transformers import convert_bart
|
|
|
8
8
|
from keras_hub.src.utils.transformers import convert_bert
|
|
9
9
|
from keras_hub.src.utils.transformers import convert_deit
|
|
10
10
|
from keras_hub.src.utils.transformers import convert_dinov2
|
|
11
|
+
from keras_hub.src.utils.transformers import convert_dinov3
|
|
11
12
|
from keras_hub.src.utils.transformers import convert_distilbert
|
|
12
13
|
from keras_hub.src.utils.transformers import convert_esm
|
|
13
14
|
from keras_hub.src.utils.transformers import convert_gemma
|
|
@@ -42,6 +43,8 @@ class TransformersPresetLoader(PresetLoader):
|
|
|
42
43
|
self.converter = convert_distilbert
|
|
43
44
|
elif model_type in ("dinov2", "dinov2_with_registers"):
|
|
44
45
|
self.converter = convert_dinov2
|
|
46
|
+
elif model_type == "dinov3_vit":
|
|
47
|
+
self.converter = convert_dinov3
|
|
45
48
|
elif model_type == "esm":
|
|
46
49
|
self.converter = convert_esm
|
|
47
50
|
elif model_type in ("gemma", "gemma2"):
|
keras_hub/src/version.py
CHANGED
|
@@ -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=hY5hZX5oOxRTFxfPe2hGhrHWJwF1kB7QiwITSS4Xp2A,6061
|
|
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=XGYkwfBVZiPw5ZjSV5S_n3FnkPf06yYNzxZjXMhiX70,32166
|
|
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=0WSFntCJ00ZL9TcilPRyrdBCIRF1MwNcsHiA0ziHfMw,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
|
|
@@ -174,8 +174,13 @@ keras_hub/src/models/depth_anything/interpolate.py,sha256=qwrPGP6wA4jZ-XcSeulhky
|
|
|
174
174
|
keras_hub/src/models/dinov2/__init__.py,sha256=qacZi82EfAloVND4gDLZjqgR5_yVdz_dc4mMKyCsjOA,257
|
|
175
175
|
keras_hub/src/models/dinov2/dinov2_backbone.py,sha256=QH3lzE1EnxTcOSii9KS1Qx3lq0XcZMsvElB7AL_ejZY,10672
|
|
176
176
|
keras_hub/src/models/dinov2/dinov2_image_converter.py,sha256=gfFROdYV5rOzo3kJFlRvRHYjek8z9YirKfrFwlVJO3g,342
|
|
177
|
-
keras_hub/src/models/dinov2/dinov2_layers.py,sha256=
|
|
177
|
+
keras_hub/src/models/dinov2/dinov2_layers.py,sha256=wo80Re043Gjly-XE-sT01QAYq3h793zhmU-Nb6SFN4g,33702
|
|
178
178
|
keras_hub/src/models/dinov2/dinov2_presets.py,sha256=ho493GPH98K4LH1E54UV2qZZ4h7Un9ylbBmMQjNoKh4,2937
|
|
179
|
+
keras_hub/src/models/dinov3/__init__.py,sha256=AI7vTZJBG6Ygb48o6pXtHzxKk0Rek3p7-HffD-Y48cc,257
|
|
180
|
+
keras_hub/src/models/dinov3/dinov3_backbone.py,sha256=WDHipJSG10seRzYG_hARifF52wqhj9enkhuZ6mgJmjw,10511
|
|
181
|
+
keras_hub/src/models/dinov3/dinov3_image_converter.py,sha256=_oHDcI2CoxjbSLxLfkK1zEPcf4Goy0S66igmrXt58cQ,342
|
|
182
|
+
keras_hub/src/models/dinov3/dinov3_layers.py,sha256=w5K2btblrgrULqzPQdbvtkyR5Px2UZkqcZQ7jq2K3Uk,37169
|
|
183
|
+
keras_hub/src/models/dinov3/dinov3_presets.py,sha256=AXXdrgrs9WBrsGlac0TgWV0DIPnvKdlxD3kUhbii1sk,114
|
|
179
184
|
keras_hub/src/models/distil_bert/__init__.py,sha256=3Z0w-Mt3aOR0u9RGzjHQ7B3J3qBF2pGjupDGQ9yyzoc,303
|
|
180
185
|
keras_hub/src/models/distil_bert/distil_bert_backbone.py,sha256=rnAf_GokB3wAeJwVZtgUKQO_bKJIa8RavhL_ykTJpNw,6440
|
|
181
186
|
keras_hub/src/models/distil_bert/distil_bert_masked_lm.py,sha256=axeZd5UcxFr3_Q8H4yG10CINh93wbcyjlPLauqe5N9E,4289
|
|
@@ -598,6 +603,7 @@ keras_hub/src/utils/transformers/convert_bart.py,sha256=Tk4h9Md9rwN5wjQbGIVrC7qz
|
|
|
598
603
|
keras_hub/src/utils/transformers/convert_bert.py,sha256=4gQqXCJzC9QWdLPDUAq741K8t_kjPIET050YjUnLeDA,5977
|
|
599
604
|
keras_hub/src/utils/transformers/convert_deit.py,sha256=ubcqYzMlhWTCE2S_TsXICCMmqjN9RsQPaw_70vArnjo,5306
|
|
600
605
|
keras_hub/src/utils/transformers/convert_dinov2.py,sha256=Zmxz33hKJCcykQOcW8XhG_Yy1l8XqIYam1cjzM69-Mk,6986
|
|
606
|
+
keras_hub/src/utils/transformers/convert_dinov3.py,sha256=rZqowTASKSAQQ1HrwlD9_tY7VAQHY_C4_61ky5wUbvE,4448
|
|
601
607
|
keras_hub/src/utils/transformers/convert_distilbert.py,sha256=SlfIRhSRk5c1ir2HGiDPiXa5XdOId_DbcnZO9lbwyZ8,6498
|
|
602
608
|
keras_hub/src/utils/transformers/convert_esm.py,sha256=rOgGnNY37ZbYnoVC3L-Y-yGGAxTRmYtQV0nJoandH2Y,6214
|
|
603
609
|
keras_hub/src/utils/transformers/convert_gemma.py,sha256=ElCgwBpSN5Q7rV5PJawTsoytPzs5ZjuwoY60YAe8y_A,6533
|
|
@@ -613,13 +619,13 @@ keras_hub/src/utils/transformers/convert_qwen_moe.py,sha256=a7R28aln-PdAcNuKAXdr
|
|
|
613
619
|
keras_hub/src/utils/transformers/convert_smollm3.py,sha256=V2vWES85YSNXNx39I8OwAcOvSpb9KxUscrDr7ra-LPA,5281
|
|
614
620
|
keras_hub/src/utils/transformers/convert_t5gemma.py,sha256=DPOwd61UhjspKuCsk3_EaNvSADGP_f8KLcZARHYVk5Y,9490
|
|
615
621
|
keras_hub/src/utils/transformers/convert_vit.py,sha256=YAmXh519ecSgEO5B4g-aEQg1Bb_6ifFafLMqDTfLn_c,5259
|
|
616
|
-
keras_hub/src/utils/transformers/preset_loader.py,sha256=
|
|
622
|
+
keras_hub/src/utils/transformers/preset_loader.py,sha256=alzuIEhDI6gLpEw05wPJVbOJ2LhwmLB_s7JhDqkb4ec,5364
|
|
617
623
|
keras_hub/src/utils/transformers/safetensor_utils.py,sha256=CYUHyA4y-B61r7NDnCsFb4t_UmSwZ1k9L-8gzEd6KRg,3339
|
|
618
624
|
keras_hub/src/utils/transformers/export/gemma.py,sha256=xX_vfQwvFZ_-lQX4kgMNOGKL7fL_1yk7QyGYV2Qyly4,4699
|
|
619
625
|
keras_hub/src/utils/transformers/export/hf_exporter.py,sha256=Qk52c6LIA2eMHUNY9Vy4STJSpnhLMdJ_t-3ljqhSr4k,5081
|
|
620
626
|
keras_hub/tokenizers/__init__.py,sha256=XFOxDmM1Mz9TxiE8ICZK_-yTTyRFywUUiVwRIzz2QZ8,4770
|
|
621
627
|
keras_hub/utils/__init__.py,sha256=jXPqVGBpJr_PpYmqD8aDG-fRMlxH-ulqCR2SZMn288Y,646
|
|
622
|
-
keras_hub_nightly-0.24.0.
|
|
623
|
-
keras_hub_nightly-0.24.0.
|
|
624
|
-
keras_hub_nightly-0.24.0.
|
|
625
|
-
keras_hub_nightly-0.24.0.
|
|
628
|
+
keras_hub_nightly-0.24.0.dev202510310430.dist-info/METADATA,sha256=idj79ww2N2X7uewaMLtsQ95IbxA3T9Q-BWT8ZP0CvAQ,7395
|
|
629
|
+
keras_hub_nightly-0.24.0.dev202510310430.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
630
|
+
keras_hub_nightly-0.24.0.dev202510310430.dist-info/top_level.txt,sha256=N4J6piIWBKa38A4uV-CnIopnOEf8mHAbkNXafXm_CuA,10
|
|
631
|
+
keras_hub_nightly-0.24.0.dev202510310430.dist-info/RECORD,,
|
|
File without changes
|