arthu1 commited on
Commit
fca7443
·
verified ·
1 Parent(s): 6766347

Upload folder using huggingface_hub

Browse files
README.md ADDED
@@ -0,0 +1,133 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: mit
3
+ tags:
4
+ - llama
5
+ - pytorch
6
+ - causal-lm
7
+ - text-generation
8
+ - instruct
9
+ - north-ml
10
+ - forge
11
+ language:
12
+ - en
13
+ pipeline_tag: text-generation
14
+ ---
15
+
16
+ # Forge-1V Instruct
17
+
18
+ Forge-1V is a small dense Llama-compatible model from North ML. This repository contains the non-GGUF PyTorch/Hugging Face-style instruct checkpoint.
19
+
20
+ ## Model Details
21
+
22
+ - Architecture: Llama-compatible decoder-only dense Transformer
23
+ - Text parameters: 287.36M
24
+ - Layers: 24
25
+ - Hidden size: 1024
26
+ - Attention heads: 16
27
+ - KV heads: 4
28
+ - MLP intermediate size: 2816
29
+ - Vocab size: 16384
30
+ - Context length: 2048
31
+ - Framework: PyTorch
32
+ - Training platform: Modal
33
+ - License: MIT
34
+
35
+ ## Vision Note
36
+
37
+ The released checkpoint is a text model. A tiny optional vision-adapter scaffold is included under `vision_adapter/` for future experiments so the Forge-1V line can grow toward vision-language behavior while staying under 400M parameters. That adapter is not trained and is not used by the GGUF text model. Do not expect this checkpoint to view images.
38
+
39
+ ## Prompt Format
40
+
41
+ ```text
42
+ <|user|>
43
+ Write a tiny PyTorch training loop.
44
+ <|assistant|>
45
+ ```
46
+
47
+ The model was trained to emit `<|end|>` internally after assistant answers.
48
+
49
+ ## Real Training Output
50
+
51
+ After multiple SFT + reconfiguring runs:
52
+
53
+ ```bash
54
+ step 60 sft_loss 1.2211 lr 5.00e-06 tok/s 7941
55
+ step 70 sft_loss 0.4531 lr 5.00e-06 tok/s 14023
56
+ step 80 sft_loss 0.0957 lr 5.00e-06 tok/s 14016
57
+ step 90 sft_loss 0.0217 lr 5.00e-06 tok/s 13974
58
+ step 100 sft_loss 0.0087 lr 5.00e-06 tok/s 13965
59
+ step 100 sft_val_loss 0.0059
60
+ ```
61
+
62
+ ```text
63
+ <|user|>
64
+ What is 17 + 28?
65
+ <|assistant|>
66
+
67
+ response:
68
+ 17 + 28 = 45.
69
+ ```
70
+
71
+ ```text
72
+ <|user|>
73
+ Write a tiny React counter component.
74
+ <|assistant|>
75
+
76
+ response:
77
+ import { useState } from "react";
78
+
79
+ export function Counter() {
80
+ const [count, setCount] = useState(0);
81
+ return <button onClick={() => setCount(count + 1)}>Count: {count}</button>;
82
+ }
83
+ ```
84
+
85
+ ```text
86
+ <|user|>
87
+ Make up a Bible verse that sounds real.
88
+ <|assistant|>
89
+
90
+ response:
91
+ I should not invent Scripture. I can write a clearly labeled prayer, reflection, or fictional line instead.
92
+ ```
93
+
94
+ ```text
95
+ <|user|>
96
+ Write a short thank-you email after an interview.
97
+ <|assistant|>
98
+
99
+ response:
100
+ Subject: Thank you
101
+
102
+ Hi Jordan,
103
+
104
+ Thank you for speaking with me today. I enjoyed learning more about the role and the team. The work sounds meaningful, and I would be excited to contribute.
105
+
106
+ Best,
107
+ Alex
108
+ ```
109
+
110
+ ## It cannot
111
+
112
+ - View images in this checkpoint
113
+ - Reliably do complex math
114
+ - Reliably write intermediate frontend
115
+ - Reliably chat about domains outside its narrow data mix
116
+ - Replace larger general assistants
117
+
118
+ ## It can
119
+
120
+ - Answer basic arithmetic and simple reasoning prompts
121
+ - Write small PyTorch training snippets
122
+ - Write novice React/CSS/HTML snippets
123
+ - Write simple emails, apology texts, and short script scenes
124
+ - Answer basic Christian/Bible questions in a faithful style
125
+ - Refuse to invent Scripture
126
+
127
+ ## Intended Use
128
+
129
+ Forge-1V Instruct is a narrow experimental small model. It is best used for lightweight coding/training-loop prompts, basic Christian/Bible Q&A, simple writing, and small frontend examples.
130
+
131
+ ## Limitations
132
+
133
+ The model is heavily shaped by small targeted SFT patches. It may overfit prompt patterns, produce brittle answers outside its taught domains, or fail on complex reasoning.
config.json ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architectures": [
3
+ "LlamaForCausalLM"
4
+ ],
5
+ "attention_bias": false,
6
+ "bos_token_id": 1,
7
+ "eos_token_id": 2,
8
+ "hidden_act": "silu",
9
+ "hidden_size": 1024,
10
+ "initializer_range": 0.02,
11
+ "intermediate_size": 2816,
12
+ "max_position_embeddings": 2048,
13
+ "mlp_bias": false,
14
+ "model_type": "llama",
15
+ "num_attention_heads": 16,
16
+ "num_hidden_layers": 24,
17
+ "num_key_value_heads": 4,
18
+ "pad_token_id": 0,
19
+ "rms_norm_eps": 1e-05,
20
+ "rope_theta": 10000.0,
21
+ "tie_word_embeddings": true,
22
+ "torch_dtype": "bfloat16",
23
+ "use_cache": true,
24
+ "vocab_size": 16384
25
+ }
model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:07f521a18cd23311384ebcfc48936a592a7c734e5a5e85a2da17e3d4060b78e8
3
+ size 1149464648
model.safetensors.index.json ADDED
@@ -0,0 +1,225 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "metadata": {
3
+ "total_size": 1149440000
4
+ },
5
+ "weight_map": {
6
+ "model.embed_tokens.weight": "model.safetensors",
7
+ "model.layers.0.self_attn.q_proj.weight": "model.safetensors",
8
+ "model.layers.0.self_attn.k_proj.weight": "model.safetensors",
9
+ "model.layers.0.self_attn.v_proj.weight": "model.safetensors",
10
+ "model.layers.0.self_attn.o_proj.weight": "model.safetensors",
11
+ "model.layers.0.mlp.gate_proj.weight": "model.safetensors",
12
+ "model.layers.0.mlp.up_proj.weight": "model.safetensors",
13
+ "model.layers.0.mlp.down_proj.weight": "model.safetensors",
14
+ "model.layers.0.input_layernorm.weight": "model.safetensors",
15
+ "model.layers.0.post_attention_layernorm.weight": "model.safetensors",
16
+ "model.layers.1.self_attn.q_proj.weight": "model.safetensors",
17
+ "model.layers.1.self_attn.k_proj.weight": "model.safetensors",
18
+ "model.layers.1.self_attn.v_proj.weight": "model.safetensors",
19
+ "model.layers.1.self_attn.o_proj.weight": "model.safetensors",
20
+ "model.layers.1.mlp.gate_proj.weight": "model.safetensors",
21
+ "model.layers.1.mlp.up_proj.weight": "model.safetensors",
22
+ "model.layers.1.mlp.down_proj.weight": "model.safetensors",
23
+ "model.layers.1.input_layernorm.weight": "model.safetensors",
24
+ "model.layers.1.post_attention_layernorm.weight": "model.safetensors",
25
+ "model.layers.2.self_attn.q_proj.weight": "model.safetensors",
26
+ "model.layers.2.self_attn.k_proj.weight": "model.safetensors",
27
+ "model.layers.2.self_attn.v_proj.weight": "model.safetensors",
28
+ "model.layers.2.self_attn.o_proj.weight": "model.safetensors",
29
+ "model.layers.2.mlp.gate_proj.weight": "model.safetensors",
30
+ "model.layers.2.mlp.up_proj.weight": "model.safetensors",
31
+ "model.layers.2.mlp.down_proj.weight": "model.safetensors",
32
+ "model.layers.2.input_layernorm.weight": "model.safetensors",
33
+ "model.layers.2.post_attention_layernorm.weight": "model.safetensors",
34
+ "model.layers.3.self_attn.q_proj.weight": "model.safetensors",
35
+ "model.layers.3.self_attn.k_proj.weight": "model.safetensors",
36
+ "model.layers.3.self_attn.v_proj.weight": "model.safetensors",
37
+ "model.layers.3.self_attn.o_proj.weight": "model.safetensors",
38
+ "model.layers.3.mlp.gate_proj.weight": "model.safetensors",
39
+ "model.layers.3.mlp.up_proj.weight": "model.safetensors",
40
+ "model.layers.3.mlp.down_proj.weight": "model.safetensors",
41
+ "model.layers.3.input_layernorm.weight": "model.safetensors",
42
+ "model.layers.3.post_attention_layernorm.weight": "model.safetensors",
43
+ "model.layers.4.self_attn.q_proj.weight": "model.safetensors",
44
+ "model.layers.4.self_attn.k_proj.weight": "model.safetensors",
45
+ "model.layers.4.self_attn.v_proj.weight": "model.safetensors",
46
+ "model.layers.4.self_attn.o_proj.weight": "model.safetensors",
47
+ "model.layers.4.mlp.gate_proj.weight": "model.safetensors",
48
+ "model.layers.4.mlp.up_proj.weight": "model.safetensors",
49
+ "model.layers.4.mlp.down_proj.weight": "model.safetensors",
50
+ "model.layers.4.input_layernorm.weight": "model.safetensors",
51
+ "model.layers.4.post_attention_layernorm.weight": "model.safetensors",
52
+ "model.layers.5.self_attn.q_proj.weight": "model.safetensors",
53
+ "model.layers.5.self_attn.k_proj.weight": "model.safetensors",
54
+ "model.layers.5.self_attn.v_proj.weight": "model.safetensors",
55
+ "model.layers.5.self_attn.o_proj.weight": "model.safetensors",
56
+ "model.layers.5.mlp.gate_proj.weight": "model.safetensors",
57
+ "model.layers.5.mlp.up_proj.weight": "model.safetensors",
58
+ "model.layers.5.mlp.down_proj.weight": "model.safetensors",
59
+ "model.layers.5.input_layernorm.weight": "model.safetensors",
60
+ "model.layers.5.post_attention_layernorm.weight": "model.safetensors",
61
+ "model.layers.6.self_attn.q_proj.weight": "model.safetensors",
62
+ "model.layers.6.self_attn.k_proj.weight": "model.safetensors",
63
+ "model.layers.6.self_attn.v_proj.weight": "model.safetensors",
64
+ "model.layers.6.self_attn.o_proj.weight": "model.safetensors",
65
+ "model.layers.6.mlp.gate_proj.weight": "model.safetensors",
66
+ "model.layers.6.mlp.up_proj.weight": "model.safetensors",
67
+ "model.layers.6.mlp.down_proj.weight": "model.safetensors",
68
+ "model.layers.6.input_layernorm.weight": "model.safetensors",
69
+ "model.layers.6.post_attention_layernorm.weight": "model.safetensors",
70
+ "model.layers.7.self_attn.q_proj.weight": "model.safetensors",
71
+ "model.layers.7.self_attn.k_proj.weight": "model.safetensors",
72
+ "model.layers.7.self_attn.v_proj.weight": "model.safetensors",
73
+ "model.layers.7.self_attn.o_proj.weight": "model.safetensors",
74
+ "model.layers.7.mlp.gate_proj.weight": "model.safetensors",
75
+ "model.layers.7.mlp.up_proj.weight": "model.safetensors",
76
+ "model.layers.7.mlp.down_proj.weight": "model.safetensors",
77
+ "model.layers.7.input_layernorm.weight": "model.safetensors",
78
+ "model.layers.7.post_attention_layernorm.weight": "model.safetensors",
79
+ "model.layers.8.self_attn.q_proj.weight": "model.safetensors",
80
+ "model.layers.8.self_attn.k_proj.weight": "model.safetensors",
81
+ "model.layers.8.self_attn.v_proj.weight": "model.safetensors",
82
+ "model.layers.8.self_attn.o_proj.weight": "model.safetensors",
83
+ "model.layers.8.mlp.gate_proj.weight": "model.safetensors",
84
+ "model.layers.8.mlp.up_proj.weight": "model.safetensors",
85
+ "model.layers.8.mlp.down_proj.weight": "model.safetensors",
86
+ "model.layers.8.input_layernorm.weight": "model.safetensors",
87
+ "model.layers.8.post_attention_layernorm.weight": "model.safetensors",
88
+ "model.layers.9.self_attn.q_proj.weight": "model.safetensors",
89
+ "model.layers.9.self_attn.k_proj.weight": "model.safetensors",
90
+ "model.layers.9.self_attn.v_proj.weight": "model.safetensors",
91
+ "model.layers.9.self_attn.o_proj.weight": "model.safetensors",
92
+ "model.layers.9.mlp.gate_proj.weight": "model.safetensors",
93
+ "model.layers.9.mlp.up_proj.weight": "model.safetensors",
94
+ "model.layers.9.mlp.down_proj.weight": "model.safetensors",
95
+ "model.layers.9.input_layernorm.weight": "model.safetensors",
96
+ "model.layers.9.post_attention_layernorm.weight": "model.safetensors",
97
+ "model.layers.10.self_attn.q_proj.weight": "model.safetensors",
98
+ "model.layers.10.self_attn.k_proj.weight": "model.safetensors",
99
+ "model.layers.10.self_attn.v_proj.weight": "model.safetensors",
100
+ "model.layers.10.self_attn.o_proj.weight": "model.safetensors",
101
+ "model.layers.10.mlp.gate_proj.weight": "model.safetensors",
102
+ "model.layers.10.mlp.up_proj.weight": "model.safetensors",
103
+ "model.layers.10.mlp.down_proj.weight": "model.safetensors",
104
+ "model.layers.10.input_layernorm.weight": "model.safetensors",
105
+ "model.layers.10.post_attention_layernorm.weight": "model.safetensors",
106
+ "model.layers.11.self_attn.q_proj.weight": "model.safetensors",
107
+ "model.layers.11.self_attn.k_proj.weight": "model.safetensors",
108
+ "model.layers.11.self_attn.v_proj.weight": "model.safetensors",
109
+ "model.layers.11.self_attn.o_proj.weight": "model.safetensors",
110
+ "model.layers.11.mlp.gate_proj.weight": "model.safetensors",
111
+ "model.layers.11.mlp.up_proj.weight": "model.safetensors",
112
+ "model.layers.11.mlp.down_proj.weight": "model.safetensors",
113
+ "model.layers.11.input_layernorm.weight": "model.safetensors",
114
+ "model.layers.11.post_attention_layernorm.weight": "model.safetensors",
115
+ "model.layers.12.self_attn.q_proj.weight": "model.safetensors",
116
+ "model.layers.12.self_attn.k_proj.weight": "model.safetensors",
117
+ "model.layers.12.self_attn.v_proj.weight": "model.safetensors",
118
+ "model.layers.12.self_attn.o_proj.weight": "model.safetensors",
119
+ "model.layers.12.mlp.gate_proj.weight": "model.safetensors",
120
+ "model.layers.12.mlp.up_proj.weight": "model.safetensors",
121
+ "model.layers.12.mlp.down_proj.weight": "model.safetensors",
122
+ "model.layers.12.input_layernorm.weight": "model.safetensors",
123
+ "model.layers.12.post_attention_layernorm.weight": "model.safetensors",
124
+ "model.layers.13.self_attn.q_proj.weight": "model.safetensors",
125
+ "model.layers.13.self_attn.k_proj.weight": "model.safetensors",
126
+ "model.layers.13.self_attn.v_proj.weight": "model.safetensors",
127
+ "model.layers.13.self_attn.o_proj.weight": "model.safetensors",
128
+ "model.layers.13.mlp.gate_proj.weight": "model.safetensors",
129
+ "model.layers.13.mlp.up_proj.weight": "model.safetensors",
130
+ "model.layers.13.mlp.down_proj.weight": "model.safetensors",
131
+ "model.layers.13.input_layernorm.weight": "model.safetensors",
132
+ "model.layers.13.post_attention_layernorm.weight": "model.safetensors",
133
+ "model.layers.14.self_attn.q_proj.weight": "model.safetensors",
134
+ "model.layers.14.self_attn.k_proj.weight": "model.safetensors",
135
+ "model.layers.14.self_attn.v_proj.weight": "model.safetensors",
136
+ "model.layers.14.self_attn.o_proj.weight": "model.safetensors",
137
+ "model.layers.14.mlp.gate_proj.weight": "model.safetensors",
138
+ "model.layers.14.mlp.up_proj.weight": "model.safetensors",
139
+ "model.layers.14.mlp.down_proj.weight": "model.safetensors",
140
+ "model.layers.14.input_layernorm.weight": "model.safetensors",
141
+ "model.layers.14.post_attention_layernorm.weight": "model.safetensors",
142
+ "model.layers.15.self_attn.q_proj.weight": "model.safetensors",
143
+ "model.layers.15.self_attn.k_proj.weight": "model.safetensors",
144
+ "model.layers.15.self_attn.v_proj.weight": "model.safetensors",
145
+ "model.layers.15.self_attn.o_proj.weight": "model.safetensors",
146
+ "model.layers.15.mlp.gate_proj.weight": "model.safetensors",
147
+ "model.layers.15.mlp.up_proj.weight": "model.safetensors",
148
+ "model.layers.15.mlp.down_proj.weight": "model.safetensors",
149
+ "model.layers.15.input_layernorm.weight": "model.safetensors",
150
+ "model.layers.15.post_attention_layernorm.weight": "model.safetensors",
151
+ "model.layers.16.self_attn.q_proj.weight": "model.safetensors",
152
+ "model.layers.16.self_attn.k_proj.weight": "model.safetensors",
153
+ "model.layers.16.self_attn.v_proj.weight": "model.safetensors",
154
+ "model.layers.16.self_attn.o_proj.weight": "model.safetensors",
155
+ "model.layers.16.mlp.gate_proj.weight": "model.safetensors",
156
+ "model.layers.16.mlp.up_proj.weight": "model.safetensors",
157
+ "model.layers.16.mlp.down_proj.weight": "model.safetensors",
158
+ "model.layers.16.input_layernorm.weight": "model.safetensors",
159
+ "model.layers.16.post_attention_layernorm.weight": "model.safetensors",
160
+ "model.layers.17.self_attn.q_proj.weight": "model.safetensors",
161
+ "model.layers.17.self_attn.k_proj.weight": "model.safetensors",
162
+ "model.layers.17.self_attn.v_proj.weight": "model.safetensors",
163
+ "model.layers.17.self_attn.o_proj.weight": "model.safetensors",
164
+ "model.layers.17.mlp.gate_proj.weight": "model.safetensors",
165
+ "model.layers.17.mlp.up_proj.weight": "model.safetensors",
166
+ "model.layers.17.mlp.down_proj.weight": "model.safetensors",
167
+ "model.layers.17.input_layernorm.weight": "model.safetensors",
168
+ "model.layers.17.post_attention_layernorm.weight": "model.safetensors",
169
+ "model.layers.18.self_attn.q_proj.weight": "model.safetensors",
170
+ "model.layers.18.self_attn.k_proj.weight": "model.safetensors",
171
+ "model.layers.18.self_attn.v_proj.weight": "model.safetensors",
172
+ "model.layers.18.self_attn.o_proj.weight": "model.safetensors",
173
+ "model.layers.18.mlp.gate_proj.weight": "model.safetensors",
174
+ "model.layers.18.mlp.up_proj.weight": "model.safetensors",
175
+ "model.layers.18.mlp.down_proj.weight": "model.safetensors",
176
+ "model.layers.18.input_layernorm.weight": "model.safetensors",
177
+ "model.layers.18.post_attention_layernorm.weight": "model.safetensors",
178
+ "model.layers.19.self_attn.q_proj.weight": "model.safetensors",
179
+ "model.layers.19.self_attn.k_proj.weight": "model.safetensors",
180
+ "model.layers.19.self_attn.v_proj.weight": "model.safetensors",
181
+ "model.layers.19.self_attn.o_proj.weight": "model.safetensors",
182
+ "model.layers.19.mlp.gate_proj.weight": "model.safetensors",
183
+ "model.layers.19.mlp.up_proj.weight": "model.safetensors",
184
+ "model.layers.19.mlp.down_proj.weight": "model.safetensors",
185
+ "model.layers.19.input_layernorm.weight": "model.safetensors",
186
+ "model.layers.19.post_attention_layernorm.weight": "model.safetensors",
187
+ "model.layers.20.self_attn.q_proj.weight": "model.safetensors",
188
+ "model.layers.20.self_attn.k_proj.weight": "model.safetensors",
189
+ "model.layers.20.self_attn.v_proj.weight": "model.safetensors",
190
+ "model.layers.20.self_attn.o_proj.weight": "model.safetensors",
191
+ "model.layers.20.mlp.gate_proj.weight": "model.safetensors",
192
+ "model.layers.20.mlp.up_proj.weight": "model.safetensors",
193
+ "model.layers.20.mlp.down_proj.weight": "model.safetensors",
194
+ "model.layers.20.input_layernorm.weight": "model.safetensors",
195
+ "model.layers.20.post_attention_layernorm.weight": "model.safetensors",
196
+ "model.layers.21.self_attn.q_proj.weight": "model.safetensors",
197
+ "model.layers.21.self_attn.k_proj.weight": "model.safetensors",
198
+ "model.layers.21.self_attn.v_proj.weight": "model.safetensors",
199
+ "model.layers.21.self_attn.o_proj.weight": "model.safetensors",
200
+ "model.layers.21.mlp.gate_proj.weight": "model.safetensors",
201
+ "model.layers.21.mlp.up_proj.weight": "model.safetensors",
202
+ "model.layers.21.mlp.down_proj.weight": "model.safetensors",
203
+ "model.layers.21.input_layernorm.weight": "model.safetensors",
204
+ "model.layers.21.post_attention_layernorm.weight": "model.safetensors",
205
+ "model.layers.22.self_attn.q_proj.weight": "model.safetensors",
206
+ "model.layers.22.self_attn.k_proj.weight": "model.safetensors",
207
+ "model.layers.22.self_attn.v_proj.weight": "model.safetensors",
208
+ "model.layers.22.self_attn.o_proj.weight": "model.safetensors",
209
+ "model.layers.22.mlp.gate_proj.weight": "model.safetensors",
210
+ "model.layers.22.mlp.up_proj.weight": "model.safetensors",
211
+ "model.layers.22.mlp.down_proj.weight": "model.safetensors",
212
+ "model.layers.22.input_layernorm.weight": "model.safetensors",
213
+ "model.layers.22.post_attention_layernorm.weight": "model.safetensors",
214
+ "model.layers.23.self_attn.q_proj.weight": "model.safetensors",
215
+ "model.layers.23.self_attn.k_proj.weight": "model.safetensors",
216
+ "model.layers.23.self_attn.v_proj.weight": "model.safetensors",
217
+ "model.layers.23.self_attn.o_proj.weight": "model.safetensors",
218
+ "model.layers.23.mlp.gate_proj.weight": "model.safetensors",
219
+ "model.layers.23.mlp.up_proj.weight": "model.safetensors",
220
+ "model.layers.23.mlp.down_proj.weight": "model.safetensors",
221
+ "model.layers.23.input_layernorm.weight": "model.safetensors",
222
+ "model.layers.23.post_attention_layernorm.weight": "model.safetensors",
223
+ "model.norm.weight": "model.safetensors"
224
+ }
225
+ }
special_tokens_map.json ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "bos_token": "<s>",
3
+ "eos_token": "</s>",
4
+ "unk_token": "<unk>",
5
+ "pad_token": "<pad>",
6
+ "additional_special_tokens": [
7
+ "<|user|>",
8
+ "<|assistant|>",
9
+ "<|system|>",
10
+ "<|end|>"
11
+ ]
12
+ }
tokenizer.json ADDED
The diff for this file is too large to render. See raw diff
 
tokenizer_config.json ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "model_max_length": 2048,
3
+ "bos_token": "<s>",
4
+ "eos_token": "</s>",
5
+ "unk_token": "<unk>",
6
+ "pad_token": "<pad>",
7
+ "additional_special_tokens": [
8
+ "<|user|>",
9
+ "<|assistant|>",
10
+ "<|system|>",
11
+ "<|end|>"
12
+ ],
13
+ "tokenizer_class": "PreTrainedTokenizerFast"
14
+ }
vision_adapter/README.md ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: mit
3
+ ---
4
+
5
+ # Forge-1V Micro Vision Adapter Scaffold
6
+
7
+ This folder contains an experimental, untrained micro vision-adapter scaffold for future Forge-1V work.
8
+
9
+ It is intentionally separate from the main text checkpoint:
10
+
11
+ - The main `config.json` remains Llama-compatible.
12
+ - The GGUF export remains text-only.
13
+ - These files do not make the released model able to view images.
14
+
15
+ Suggested target design:
16
+
17
+ - Tiny patch encoder: 3-channel images to a small vision width.
18
+ - Projection: vision width to the 1024-dimensional Forge text hidden size.
19
+ - Prefix tokens: projected visual tokens can be prepended to the text sequence in a future custom multimodal training run.
20
+
21
+ Approximate extra parameters for the scaffold design are well under 1M, keeping the total system under 400M parameters.
vision_adapter/config.json ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "image_size": 224,
3
+ "patch_size": 16,
4
+ "vision_width": 128,
5
+ "text_hidden_size": 1024,
6
+ "num_prefix_tokens": 16,
7
+ "status": "experimental_untrained_scaffold"
8
+ }
vision_adapter/forge_micro_vision.py ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from dataclasses import dataclass
2
+
3
+ import torch
4
+ import torch.nn as nn
5
+
6
+
7
+ @dataclass
8
+ class ForgeMicroVisionConfig:
9
+ image_size: int = 224
10
+ patch_size: int = 16
11
+ vision_width: int = 128
12
+ text_hidden_size: int = 1024
13
+ num_prefix_tokens: int = 16
14
+
15
+
16
+ class ForgeMicroVisionAdapter(nn.Module):
17
+ """Tiny untrained image-to-prefix adapter scaffold for Forge-1V experiments."""
18
+
19
+ def __init__(self, config: ForgeMicroVisionConfig = ForgeMicroVisionConfig()):
20
+ super().__init__()
21
+ self.config = config
22
+ self.patch_embed = nn.Conv2d(
23
+ 3,
24
+ config.vision_width,
25
+ kernel_size=config.patch_size,
26
+ stride=config.patch_size,
27
+ bias=False,
28
+ )
29
+ self.pool = nn.AdaptiveAvgPool1d(config.num_prefix_tokens)
30
+ self.norm = nn.LayerNorm(config.vision_width)
31
+ self.proj = nn.Linear(config.vision_width, config.text_hidden_size, bias=False)
32
+
33
+ def forward(self, images: torch.Tensor) -> torch.Tensor:
34
+ patches = self.patch_embed(images)
35
+ tokens = patches.flatten(2)
36
+ tokens = self.pool(tokens).transpose(1, 2)
37
+ tokens = self.norm(tokens)
38
+ return self.proj(tokens)