GGUFGuy commited on
Commit
68bf70c
·
0 Parent(s):

Duplicate from Novi-AI/Novi-Micro-Instruct

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
+ banner.jpg filter=lfs diff=lfs merge=lfs -text
README.md ADDED
@@ -0,0 +1,242 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ language:
3
+ - en
4
+ library_name: transformers
5
+ pipeline_tag: text-generation
6
+ license: apache-2.0
7
+ tags:
8
+ - novi
9
+ - novi-micro
10
+ - instruction-tuning
11
+ - full-finetuning
12
+ - smol-smoltalk
13
+ - causal-lm
14
+ - bananaall
15
+ - project-kairo
16
+ - small-language-model
17
+ ---
18
+
19
+ # Novi-Micro-Instruct
20
+
21
+ ![Novi-Micro Banner](banner.jpg)
22
+
23
+ **Novi-Micro-Instruct** is a tiny instruction-tuned causal language model developed by **Novi-AI** as part of **Project Kairo**. It builds on the Novi-Micro model line, which explores language modeling with a model of approximately **5.04 million parameters**.
24
+
25
+ The model is an experimental small language model intended for instruction-following experiments, education, and lightweight local inference. Its small size also places significant limits on its ability to follow complex instructions, reason reliably, or provide accurate factual answers.
26
+
27
+ ⚡ **Approximately 5.04M parameters · 2,048-token context · 502.45M tokens processed in the reported training run**
28
+
29
+ ## Model Details
30
+
31
+ ### Architecture
32
+
33
+ Novi-Micro-Instruct uses the Novi-Micro decoder-only Transformer architecture. The architecture described for Novi-Micro includes RMSNorm, Rotary Position Embeddings (RoPE), grouped-query attention, query/key normalization, SwiGLU feed-forward layers, and tied input/output embeddings.
34
+
35
+ | Property | Value |
36
+ | --- | --- |
37
+ | Model type | Causal language model / instruction-tuned model |
38
+ | Architecture | BananaMind 2-style decoder architecture |
39
+ | Parameters | Approximately **5.04M** |
40
+ | Vocabulary size | **16,384** |
41
+ | Context length | **2,048 tokens** |
42
+ | Attention | Grouped-Query Attention (GQA) |
43
+ | Position encoding | RoPE |
44
+ | Normalization | RMSNorm |
45
+ | Feed-forward network | SwiGLU |
46
+ | Query/key normalization | Enabled |
47
+ | Input/output embeddings | Tied |
48
+ | Transformers loading | Custom architecture; `trust_remote_code=True` may be required |
49
+
50
+ Architecture and tokenizer values above follow the Novi-Micro-Base model configuration and should be checked against the files in this repository before relying on them for downstream tooling.
51
+
52
+ ## Training
53
+
54
+ Novi-Micro-Instruct was produced by **full fine-tuning** the existing `Novi-AI/Novi-Micro-Base` checkpoint with BananaAll. It was not trained from scratch. The training script configured **28,772 optimizer steps** and completed all of them. The logger reported **502,453,658 processed input tokens** during the run.
55
+
56
+ The token counter counts non-padding input positions, including prompt/context tokens that are masked out of the loss. It is not a count of assistant-target tokens alone, unique dataset tokens, or the total size of the dataset. These figures describe the reported run and do not by themselves establish instruction-following quality.
57
+
58
+ ### Reported Training Results
59
+
60
+ | Setting / metric | Value |
61
+ | --- | ---: |
62
+ | Training environment | BananaAll |
63
+ | Fine-tuning mode | **Full fine-tuning** |
64
+ | Base checkpoint | `Novi-AI/Novi-Micro-Base` |
65
+ | Completed optimizer steps | **28,772 / 28,772** |
66
+ | Dataset rows traversed | **484,570 unique rows** |
67
+ | Additional rows from next pass | **11** (repeated from the beginning) |
68
+ | Total dataset row encounters | **484,581** (484,570 + 11 repeats) |
69
+ | Trainer-reported epoch | **1.0** (the stream continued 11 rows into a second pass) |
70
+ | Processed input tokens, according to logger | **502,453,658** |
71
+ | Aggregate training loss | **1.82655** |
72
+ | Logged loss at step 28,770 | **1.56224** |
73
+ | Per-device batch size | **2** |
74
+ | Gradient accumulation | **8** |
75
+ | Sequence length | **2,048 tokens** |
76
+ | Configured learning rate | **2 × 10⁻⁴** |
77
+ | Scheduler | **Cosine** |
78
+ | Warmup ratio | **3%** (about 863 warmup steps) |
79
+ | Weight decay | **0.01** |
80
+ | Maximum gradient norm | **1.0** |
81
+ | Precision setting | **Auto** (BF16 when supported; otherwise FP32) |
82
+ | Torch compilation | **Enabled**, with fallback if compilation fails |
83
+ | Random seed | **1337** |
84
+ | Logging interval | **10 steps** |
85
+ | Checkpoint interval | **100 steps** |
86
+ | Training runtime | **6,523.67 seconds** (about 1 hour, 48 minutes, 44 seconds) |
87
+ | Reported steps per second | **4.41** |
88
+ | Reported samples per second | **70.566** |
89
+ | Reported total FLOPs | **2.0147 × 10¹⁶** |
90
+
91
+ The final logged training loss and the aggregate training loss are different metrics: `1.56224` is the loss reported at step 28,770, while `1.82655` is the run's overall `train_loss` value.
92
+
93
+ The cosine learning-rate schedule reached **0** at the final step. The optimizer is not explicitly selected in the supplied configuration, so this card does not assert a particular optimizer implementation. The configured precision is `auto`; the worker selects BF16 when the GPU supports it and otherwise uses FP32 unless precision is changed.
94
+
95
+ ## Training Data
96
+
97
+ The training configuration names **[`HuggingFaceTB/smol-smoltalk`](https://huggingface.co/datasets/HuggingFaceTB/smol-smoltalk)**, using the `train` split and the `messages` field. It is the only enabled dataset in the provided configuration, with a mix weight of `1`. The worker streams dataset rows during fine-tuning.
98
+
99
+ **Dataset coverage:** the `train` split contained **484,570 rows**. The run traversed those rows and then continued for **11 rows from the beginning of the dataset** on the next pass: **484,570 unique rows + 11 repeated row encounters = 484,581 row encounters**. The first 11 rows were repeated because the BananaAll streaming worker recreates the dataset iterator when it reaches the end, allowing training to continue until the configured optimizer-step limit. The 484,581 figure counts row encounters, not unique rows.
100
+
101
+ For each conversation, the training worker uses the messages before the final assistant message as context and trains the model to predict the final assistant message. The prompt/context labels are masked from the language-model loss; the assistant target and its EOS token contribute to the loss. If the tokenizer provides a chat template, the worker uses it to format the conversation; otherwise it falls back to role-tagged text. Sequences are truncated to the configured maximum of **2,048 tokens**.
102
+
103
+ The configuration does not set a dataset-specific token limit for this fine-tuning run; training stops at the configured maximum of **28,772 optimizer steps**. The reported **502,453,658 processed input tokens** includes prompt/context positions as well as assistant-target positions, and it is not a count of unique dataset tokens. Before redistributing the model, review the dataset card and license and document any additional preprocessing or filtering performed outside the supplied script.
104
+
105
+ ## Tokenizer
106
+
107
+ The fine-tuning script loads the tokenizer from **`Novi-AI/Novi-Micro-Base`**; it does not train a new tokenizer. The base model documentation describes a byte-level BPE tokenizer with a vocabulary of **16,384 tokens** and lists `[PAD]`, `[BOS]`, `[EOS]`, and `[UNK]` as special tokens. Check the tokenizer files shipped with the fine-tuned checkpoint for the exact tokenizer configuration and any chat template.
108
+
109
+ ## Architecture Notes
110
+
111
+ ### Attention
112
+
113
+ The model uses **grouped-query attention (GQA)**, in which multiple query heads share key and value heads. **Rotary Position Embeddings (RoPE)** are applied to the query and key representations. The described BananaMind 2-style architecture also normalizes query and key head dimensions.
114
+
115
+ ### Feed-Forward Network
116
+
117
+ Each Transformer block uses a **SwiGLU** feed-forward network:
118
+
119
+ ```text
120
+ SwiGLU(x) = SiLU(gate(x)) × up(x)
121
+ ```
122
+
123
+ The result is projected back to the model's hidden dimension.
124
+
125
+ ### Normalization and Embeddings
126
+
127
+ The architecture uses **RMSNorm** before the attention and feed-forward sublayers. Input token embeddings and language-model output embeddings are tied, reducing the number of independent parameters.
128
+
129
+ ## Usage
130
+
131
+ The checkpoint uses a custom model architecture. Depending on the repository's model code and your Transformers version, loading it may require `trust_remote_code=True`. Only enable remote model code when you have reviewed and trust the code in the repository.
132
+
133
+ ```python
134
+ import torch
135
+ from transformers import AutoModelForCausalLM, AutoTokenizer
136
+
137
+ model_id = "Novi-AI/Novi-Micro-Instruct"
138
+
139
+ tokenizer = AutoTokenizer.from_pretrained(
140
+ model_id,
141
+ trust_remote_code=True,
142
+ )
143
+
144
+ model = AutoModelForCausalLM.from_pretrained(
145
+ model_id,
146
+ trust_remote_code=True,
147
+ )
148
+ model.eval()
149
+
150
+ # Use the prompt format expected by this checkpoint's training data.
151
+ prompt = "User: Explain why the sky appears blue.\nAssistant:"
152
+ inputs = tokenizer(prompt, return_tensors="pt")
153
+
154
+ with torch.no_grad():
155
+ outputs = model.generate(
156
+ **inputs,
157
+ max_new_tokens=100,
158
+ do_sample=True,
159
+ temperature=0.8,
160
+ top_p=0.9,
161
+ pad_token_id=tokenizer.pad_token_id or tokenizer.eos_token_id,
162
+ eos_token_id=tokenizer.eos_token_id,
163
+ )
164
+
165
+ print(tokenizer.decode(outputs[0], skip_special_tokens=True))
166
+ ```
167
+
168
+ The prompt above is a basic plain-text example, not a claim that `User:` / `Assistant:` is the model's canonical chat format. If the tokenizer or repository defines a chat template, prefer that template for inference.
169
+
170
+ ## Intended Use
171
+
172
+ Novi-Micro-Instruct is primarily intended for:
173
+
174
+ - Research and experimentation with very small language models
175
+ - Educational demonstrations of instruction-tuned causal language models
176
+ - Testing training pipelines and small-model architectures
177
+ - Fine-tuning and inference experiments on constrained hardware
178
+ - Exploring instruction following at the million-parameter scale
179
+
180
+ This checkpoint is experimental and should not be treated as a production-ready assistant.
181
+
182
+ ## Limitations
183
+
184
+ At approximately **5 million parameters**, Novi-Micro-Instruct is much smaller than general-purpose language models. It may:
185
+
186
+ - Misunderstand or fail to follow instructions
187
+ - Generate incoherent, repetitive, or incomplete responses
188
+ - Produce inaccurate or fabricated information
189
+ - Struggle with multi-step reasoning and complex tasks
190
+ - Have limited factual knowledge and weak generalization
191
+ - Behave inconsistently across prompts or prompt formats
192
+ - Produce grammatically unusual text or fail to maintain long conversations
193
+
194
+ A 2,048-token context window does not remove the limitations caused by the model's small parameter count. Training loss is not a substitute for held-out evaluation or human review. Evaluate the model on representative tasks before using its outputs for consequential decisions.
195
+
196
+ ## Evaluation
197
+
198
+ No benchmark scores or held-out evaluation results are included in the supplied training log. Do not interpret the training loss as a benchmark score. Independent evaluation is recommended for instruction following, factual accuracy, repetition, robustness, and safety.
199
+
200
+ ## Project History
201
+
202
+ Novi-Micro-Instruct is part of **Project Kairo**, the development codename for the Novi model project. The Novi series follows the earlier **AppleMind** experiments and represents Novi-AI's model-development line.
203
+
204
+ **AppleMind → Novi-Nano → Novi-Micro → Novi-Micro-Instruct** 🚀
205
+
206
+ Novi-Micro explores language modeling at the million-parameter scale; Novi-Micro-Instruct is the instruction-oriented checkpoint in that line.
207
+
208
+ ## Development Status
209
+
210
+ I'm taking a break from model development for a while after completing Novi-Micro-Instruct. There is currently no announced timeline for a successor model or further model releases. This is a pause, not a declaration that model development is permanently over.
211
+
212
+ ## Training Infrastructure
213
+
214
+ The reported run used **BananaAll**. The final log records a completed training run and a saved checkpoint. The original notebook reported the final model archive as:
215
+
216
+ ```text
217
+ project-kairo-micro-instruct-model.zip
218
+ ```
219
+
220
+ The training script packages the final model and tokenizer files, while excluding intermediate `checkpoint-*` directories from the ZIP. For full fine-tuning, it also copies the custom Python model code from the loaded base checkpoint when that code is available through Transformers remote modules.
221
+
222
+ ## Acknowledgements
223
+
224
+ Novi-Micro-Instruct was built using the open-source machine-learning ecosystem and community model-development tools. Thanks to:
225
+
226
+ - Hugging Face 🤗
227
+ - The open-source Transformers ecosystem
228
+ - The developers and contributors whose tools support small-model research
229
+
230
+ ## License
231
+
232
+ This repository is marked as **Apache-2.0**. Review the licenses of all training data and any included custom code separately; a model's repository license does not automatically establish the license of its training data.
233
+
234
+ ---
235
+
236
+ ## 🧠 Novi AI
237
+
238
+ **Small models. Big experiments.**
239
+
240
+ Novi-Micro-Instruct is an experimental instruction-tuned model designed to explore what can be learned and tested at the few-million-parameter scale.
241
+
242
+ *Novi AI 2026 — Project Kairo*
banner.jpg ADDED

Git LFS Details

  • SHA256: 9e49bb36f3402ad35df0d5bb33434bc243f5f2870d474477c8c0a22b57d75172
  • Pointer size: 131 Bytes
  • Size of remote file: 662 kB
config.json ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architecture_style": "bananamind2",
3
+ "architectures": [
4
+ "BananaAllForCausalLM"
5
+ ],
6
+ "auto_map": {
7
+ "AutoConfig": "configuration_bananaall.BananaAllConfig",
8
+ "AutoModelForCausalLM": "modeling_bananaall.BananaAllForCausalLM"
9
+ },
10
+ "bos_token_id": 1,
11
+ "dtype": "float32",
12
+ "eos_token_id": 2,
13
+ "head_dim": 40,
14
+ "hidden_size": 160,
15
+ "intermediate_size": 864,
16
+ "lft": false,
17
+ "max_position_embeddings": 4096,
18
+ "model_type": "bananaall",
19
+ "num_attention_heads": 4,
20
+ "num_hidden_layers": 9,
21
+ "num_key_value_heads": 2,
22
+ "pad_token_id": 0,
23
+ "rms_norm_eps": 1e-06,
24
+ "rope_theta": 100000.0,
25
+ "ternary": false,
26
+ "tie_word_embeddings": true,
27
+ "transformers_version": "5.14.1",
28
+ "use_cache": false,
29
+ "vocab_size": 3840
30
+ }
generation_config.json ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_from_model_config": true,
3
+ "bos_token_id": 1,
4
+ "eos_token_id": [
5
+ 2
6
+ ],
7
+ "output_attentions": false,
8
+ "output_hidden_states": false,
9
+ "pad_token_id": 0,
10
+ "transformers_version": "5.14.1",
11
+ "use_cache": false
12
+ }
model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:bfff837aa539f56679bc15530ab159fb945abcbc81aeb30052bb6b096cafffe1
3
+ size 22634608
tokenizer.json ADDED
The diff for this file is too large to render. See raw diff
 
tokenizer_config.json ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "backend": "tokenizers",
3
+ "bos_token": "[BOS]",
4
+ "eos_token": "[EOS]",
5
+ "is_local": false,
6
+ "local_files_only": false,
7
+ "model_max_length": 2048,
8
+ "pad_token": "[PAD]",
9
+ "tokenizer_class": "TokenizersBackend",
10
+ "unk_token": "[UNK]"
11
+ }
training_args.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:dc3cf2873dbaffaec05d62db799e86d2924fcc9ad67bf29761880a85759cc194
3
+ size 5201