IMvision12 commited on
Commit
28e2cbb
·
0 Parent(s):

Super-squash branch 'main' using huggingface_hub

Browse files
.gitattributes ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tar filter=lfs diff=lfs merge=lfs -text
29
+ *.tflite filter=lfs diff=lfs merge=lfs -text
30
+ *.tgz filter=lfs diff=lfs merge=lfs -text
31
+ *.wasm filter=lfs diff=lfs merge=lfs -text
32
+ *.xz filter=lfs diff=lfs merge=lfs -text
33
+ *.zip filter=lfs diff=lfs merge=lfs -text
34
+ *.zst filter=lfs diff=lfs merge=lfs -text
35
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ tokenizer.json filter=lfs diff=lfs merge=lfs -text
README.md ADDED
@@ -0,0 +1,103 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ pipeline_tag: image-text-to-text
3
+ license: gemma
4
+ base_model: google/gemma-3n-E2B-it
5
+ library_name: kerasformers
6
+ extra_gated_heading: Access Gemma on Hugging Face
7
+ extra_gated_prompt: >-
8
+ To access Gemma on Hugging Face, you're required to review and agree to
9
+ Google's usage license. To do this, please ensure you're logged in to Hugging
10
+ Face and click below. Requests are processed immediately.
11
+ extra_gated_button_content: Acknowledge license
12
+ license_link: https://ai.google.dev/gemma/terms
13
+ language:
14
+ - en
15
+ tags:
16
+ - keras
17
+ - kerasformers
18
+ - gemma3n
19
+ - gemma-3n
20
+ - image-text-to-text
21
+ - audio-text-to-text
22
+ - multimodal
23
+ - pytorch
24
+ - jax
25
+ - tf
26
+ ---
27
+
28
+ *See [our collection](https://huggingface.co/kerasformers) for all Gemma 3n sizes and variants.*
29
+
30
+ # Run Gemma 3n with Keras 3: JAX, PyTorch, or TensorFlow
31
+
32
+ [![GitHub](https://img.shields.io/badge/GitHub-KerasFormers-181717?logo=github)](https://github.com/IMvision12/KerasFormers) [![Docs](https://img.shields.io/badge/Docs-Gemma_3n-1f6feb)](https://imvision12.github.io/KerasFormers/gemma3n/) [![HuggingFace](https://img.shields.io/badge/HuggingFace-Gemma_3n-ffd21e?logo=huggingface&logoColor=black)](https://huggingface.co/kerasformers)
33
+
34
+ # kerasformers/gemma-3n-e2b-it
35
+
36
+ Pure-**Keras 3** conversion of [`google/gemma-3n-E2B-it`](https://huggingface.co/google/gemma-3n-E2B-it) for
37
+ [kerasformers](https://github.com/IMvision12/KerasFormers). One implementation runs unmodified on
38
+ **TensorFlow / Torch / JAX**. This is the instruction-tuned checkpoint, served here as **image + audio + text -> text** via `Gemma3nConditionalGenerate`; weights are
39
+ stored in **bfloat16**.
40
+
41
+ For model details, license, and usage terms, see Google's
42
+ [model card](https://huggingface.co/google/gemma-3n-E2B-it).
43
+
44
+ ## ✨ Quick start
45
+
46
+ ### Text-only
47
+
48
+ ```python
49
+ import os
50
+ os.environ["KERAS_BACKEND"] = "torch" # or "jax" / "tensorflow"
51
+
52
+ from kerasformers.models.gemma3n import Gemma3nTextGenerate, Gemma3nTokenizer
53
+
54
+ model = Gemma3nTextGenerate.from_weights("kerasformers/gemma-3n-e2b-it")
55
+ tokenizer = Gemma3nTokenizer.from_weights("kerasformers/gemma-3n-e2b-it")
56
+
57
+ inputs = tokenizer([{"role": "user", "content": "Hello, who are you?"}])
58
+ outputs = model.generate(**inputs, max_new_tokens=64)
59
+ print(tokenizer.decode(outputs[0]))
60
+ ```
61
+
62
+ ### Image + audio + text
63
+
64
+ ```python
65
+ from kerasformers.models.gemma3n import Gemma3nConditionalGenerate, Gemma3nProcessor
66
+
67
+ model = Gemma3nConditionalGenerate.from_weights("kerasformers/gemma-3n-e2b-it")
68
+ processor = Gemma3nProcessor.from_weights("kerasformers/gemma-3n-e2b-it")
69
+
70
+ conversation = [
71
+ {"role": "user", "content": [
72
+ {"type": "image", "url": "https://.../image.jpg"},
73
+ {"type": "text", "text": "Describe this image."},
74
+ ]},
75
+ ]
76
+ inputs = processor(conversation)
77
+ outputs = model.generate(**inputs, max_new_tokens=64)
78
+ print(processor.decode(outputs[0]))
79
+ ```
80
+
81
+ Load any Gemma 3n variant the same way with `from_weights("kerasformers/<variant>")`:
82
+
83
+ | Variant | Hub |
84
+ | --- | --- |
85
+ | `gemma-3n-e2b` | [kerasformers/gemma-3n-e2b](https://huggingface.co/kerasformers/gemma-3n-e2b) |
86
+ | `gemma-3n-e2b-it` | [kerasformers/gemma-3n-e2b-it](https://huggingface.co/kerasformers/gemma-3n-e2b-it) |
87
+ | `gemma-3n-e4b` | [kerasformers/gemma-3n-e4b](https://huggingface.co/kerasformers/gemma-3n-e4b) |
88
+ | `gemma-3n-e4b-it` | [kerasformers/gemma-3n-e4b-it](https://huggingface.co/kerasformers/gemma-3n-e4b-it) |
89
+
90
+ ## Tips
91
+
92
+ - Set `KERAS_BACKEND` **before** importing Keras / kerasformers.
93
+ - Loads in **bfloat16** by default. Pass `load_dtype="float32"` for full precision,
94
+ or `quantization="int8"` to shrink further.
95
+ - See the [Gemma 3n docs](https://imvision12.github.io/KerasFormers/gemma3n/).
96
+ - Community / upstream weights still work via the `hf:` prefix:
97
+ `Gemma3nConditionalGenerate.from_weights("hf:google/gemma-3n-E2B-it")`.
98
+
99
+ ## Special Thanks
100
+
101
+ A huge thank you to the Google Gemma authors for creating and releasing these models.
102
+
103
+ License: Gemma (gated). Accept the license on the upstream Hub card before downloading.
kf_config.json ADDED
@@ -0,0 +1,190 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "library_name": "kerasformers",
3
+ "kerasformers_version": "1.2.1",
4
+ "model_module": "kerasformers.models.gemma3n",
5
+ "model_class": "Gemma3nConditionalGenerate",
6
+ "variant": "gemma-3n-e2b-it",
7
+ "weights": "model.weights.h5",
8
+ "schema_version": 2,
9
+ "weight_dtype": "bfloat16",
10
+ "model_type": "gemma3n",
11
+ "text_config": {
12
+ "vocab_size": 262400,
13
+ "embed_dim": 2048,
14
+ "mlp_dim": [
15
+ 8192,
16
+ 8192,
17
+ 8192,
18
+ 8192,
19
+ 8192,
20
+ 8192,
21
+ 8192,
22
+ 8192,
23
+ 8192,
24
+ 8192,
25
+ 8192,
26
+ 8192,
27
+ 8192,
28
+ 8192,
29
+ 8192,
30
+ 8192,
31
+ 8192,
32
+ 8192,
33
+ 8192,
34
+ 8192,
35
+ 8192,
36
+ 8192,
37
+ 8192,
38
+ 8192,
39
+ 8192,
40
+ 8192,
41
+ 8192,
42
+ 8192,
43
+ 8192,
44
+ 8192
45
+ ],
46
+ "num_layers": 30,
47
+ "num_heads": 8,
48
+ "num_kv_heads": 2,
49
+ "head_dim": 256,
50
+ "sliding_window": 512,
51
+ "sliding_window_pattern": 5,
52
+ "layer_types": [
53
+ "sliding_attention",
54
+ "sliding_attention",
55
+ "sliding_attention",
56
+ "sliding_attention",
57
+ "full_attention",
58
+ "sliding_attention",
59
+ "sliding_attention",
60
+ "sliding_attention",
61
+ "sliding_attention",
62
+ "full_attention",
63
+ "sliding_attention",
64
+ "sliding_attention",
65
+ "sliding_attention",
66
+ "sliding_attention",
67
+ "full_attention",
68
+ "sliding_attention",
69
+ "sliding_attention",
70
+ "sliding_attention",
71
+ "sliding_attention",
72
+ "full_attention",
73
+ "sliding_attention",
74
+ "sliding_attention",
75
+ "sliding_attention",
76
+ "sliding_attention",
77
+ "full_attention",
78
+ "sliding_attention",
79
+ "sliding_attention",
80
+ "sliding_attention",
81
+ "sliding_attention",
82
+ "full_attention"
83
+ ],
84
+ "final_logit_softcapping": 30.0,
85
+ "norm_eps": 1e-06,
86
+ "rope_theta": 1000000.0,
87
+ "rope_local_theta": 10000.0,
88
+ "hidden_activation": "gelu_pytorch_tanh",
89
+ "tie_embeddings": true,
90
+ "vocab_size_per_layer_input": 262144,
91
+ "hidden_size_per_layer_input": 256,
92
+ "altup_num_inputs": 4,
93
+ "altup_active_idx": 0,
94
+ "altup_coef_clip": 120.0,
95
+ "altup_correct_scale": true,
96
+ "num_kv_shared_layers": 10,
97
+ "laurel_rank": 64,
98
+ "activation_sparsity_pattern": [
99
+ 0.95,
100
+ 0.95,
101
+ 0.95,
102
+ 0.95,
103
+ 0.95,
104
+ 0.95,
105
+ 0.95,
106
+ 0.95,
107
+ 0.95,
108
+ 0.95,
109
+ 0.0,
110
+ 0.0,
111
+ 0.0,
112
+ 0.0,
113
+ 0.0,
114
+ 0.0,
115
+ 0.0,
116
+ 0.0,
117
+ 0.0,
118
+ 0.0,
119
+ 0.0,
120
+ 0.0,
121
+ 0.0,
122
+ 0.0,
123
+ 0.0,
124
+ 0.0,
125
+ 0.0,
126
+ 0.0,
127
+ 0.0,
128
+ 0.0
129
+ ]
130
+ },
131
+ "vision_config": {
132
+ "architecture": "mobilenetv5_300m_enc",
133
+ "hidden_size": 2048,
134
+ "vocab_size": 128,
135
+ "vocab_offset": 262144,
136
+ "rms_norm_eps": 1e-06,
137
+ "do_pooling": false
138
+ },
139
+ "audio_config": {
140
+ "vocab_size": 128,
141
+ "vocab_offset": 262272,
142
+ "input_feat_size": 128,
143
+ "hidden_size": 1536,
144
+ "rms_norm_eps": 1e-06,
145
+ "gradient_clipping": 10000000000.0,
146
+ "conf_attention_chunk_size": 12,
147
+ "conf_attention_context_left": 13,
148
+ "conf_attention_context_right": 0,
149
+ "conf_attention_logit_cap": 50.0,
150
+ "conf_num_attention_heads": 8,
151
+ "conf_num_hidden_layers": 12,
152
+ "conf_conv_kernel_size": 5,
153
+ "conf_reduction_factor": 4,
154
+ "conf_residual_weight": 0.5,
155
+ "sscp_conv_channel_size": [
156
+ 128,
157
+ 32
158
+ ],
159
+ "sscp_conv_group_norm_eps": 0.001,
160
+ "sscp_conv_kernel_size": [
161
+ [
162
+ 3,
163
+ 3
164
+ ],
165
+ [
166
+ 3,
167
+ 3
168
+ ]
169
+ ],
170
+ "sscp_conv_stride_size": [
171
+ [
172
+ 2,
173
+ 2
174
+ ],
175
+ [
176
+ 2,
177
+ 2
178
+ ]
179
+ ]
180
+ },
181
+ "audio_soft_tokens_per_image": 188,
182
+ "vision_soft_tokens_per_image": 256,
183
+ "boi_token_id": 255999,
184
+ "eoi_token_id": 262144,
185
+ "image_token_id": 262145,
186
+ "boa_token_id": 256000,
187
+ "eoa_token_id": 262272,
188
+ "audio_token_id": 262273,
189
+ "tie_word_embeddings": true
190
+ }
kf_preprocessor.json ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "library_name": "kerasformers",
3
+ "kerasformers_version": "1.2.1",
4
+ "preprocessor_module": "kerasformers.models.gemma3n",
5
+ "preprocessor_class": "Gemma3nImageProcessor",
6
+ "variant": "gemma-3n-e2b-it",
7
+ "size": 768,
8
+ "rescale_factor": 0.00392156862745098,
9
+ "image_mean": [
10
+ 0.5,
11
+ 0.5,
12
+ 0.5
13
+ ],
14
+ "image_std": [
15
+ 0.5,
16
+ 0.5,
17
+ 0.5
18
+ ]
19
+ }
model.weights.json ADDED
The diff for this file is too large to render. See raw diff
 
model_00000.weights.h5 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:66230bc7b731ecdb2ecf2d44dcdaed6d222e6d2151943f5e9784ed7b23ca6b5a
3
+ size 7287699656
model_00001.weights.h5 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:3b2ab58395ba00977a4aea4e2cde8ad75ec33727fff94def360c1e41127abebe
3
+ size 9563886280
model_00002.weights.h5 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a29a57bb7468a182f0946a568e30689474d9d477d0874fc3be4ba11eeef91ba9
3
+ size 6572680264
tokenizer.json ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c4c19736bf24d1c6805cf49340e31bd02c70fb7857a2cb31065c90c2b5719c4e
3
+ size 33442559