CyanoAI commited on
Commit
080941c
·
verified ·
1 Parent(s): f323b9f

Upload README.md with huggingface_hub

Browse files
Files changed (1) hide show
  1. README.md +64 -37
README.md CHANGED
@@ -1,37 +1,64 @@
1
- ---
2
- license: apache-2.0
3
- base_model: CyanoAI/Prochlo-190M-Base
4
- tags:
5
- - sft
6
- - small-language-model
7
- - english-only
8
- ---
9
-
10
- # Prochlo-190M-SFT
11
-
12
- Supervised fine-tuned version of [Prochlo-190M-Base](https://huggingface.co/CyanoAI/Prochlo-190M-Base), a 190M-parameter English dense SLM trained from scratch on a DCU cluster.
13
-
14
- ## Training
15
- - **Base**: CyanoAI/Prochlo-190M-Base (pre-trained 20B tokens, 20-layer LLaMA-style, vocab 50261)
16
- - **Data**: HuggingFaceTB/smol-smoltalk (~460k conversations, English-only, chat-formatted with `<|user|>/<|assistant|>` tokens)
17
- - **Method**: Full-parameter SFT, 2 epochs, lr=3e-4 cosine, batch 216, max_len 1024, fp16 with loss masking on assistant tokens
18
- - **Duration**: ~27h on single 16GB DCU accelerator
19
-
20
- ## Known Limitations
21
- - Behavioral eval (26-item rubric): **61.5% pass** pre-DPO. Strong on code instructions and factual QA; weaker on concise replies, Chinese (by design), and long multi-turn continuity.
22
- - English only; Chinese inputs may produce garbage by design.
23
- - This is a *base SFT* — not yet preference-aligned. DPO/RLAIF variants will follow as `Prochlo-190M` proper.
24
-
25
- ## Usage
26
- ```python
27
- from transformers import AutoModelForCausalLM, AutoTokenizer
28
- tok = AutoTokenizer.from_pretrained("CyanoAI/Prochlo-190M-SFT")
29
- m = AutoModelForCausalLM.from_pretrained("CyanoAI/Prochlo-190M-SFT", dtype="auto").cuda()
30
- msgs = "<|user|>Hello<|end|><|assistant|>"
31
- ids = tok(msgs, return_tensors="pt").input_ids.cuda()
32
- out = m.generate(ids, max_new_tokens=128, do_sample=False, eos_token_id=tok.convert_tokens_to_ids("<|end|>"))
33
- print(tok.decode(out[0, ids.shape[1]:], skip_special_tokens=True))
34
- ```
35
-
36
- ## License
37
- Apache-2.0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: apache-2.0
3
+ base_model: CyanoAI/Prochlo-190M-Base
4
+ tags:
5
+ - sft
6
+ - small-language-model
7
+ - english-only
8
+ language:
9
+ - en
10
+ ---
11
+
12
+ # Prochlo-190M-SFT
13
+
14
+ Supervised fine-tuned version of [Prochlo-190M-Base](https://huggingface.co/CyanoAI/Prochlo-190M-Base) — a 190.5M-parameter dense English SLM trained from scratch on a DCU cluster.
15
+
16
+ ## Model family
17
+
18
+ | Repo | Stage |
19
+ |---|---|
20
+ | [`CyanoAI/Prochlo-190M-Base`](https://huggingface.co/CyanoAI/Prochlo-190M-Base) | Pre-trained base |
21
+ | [`CyanoAI/Prochlo-190M-SFT`](https://huggingface.co/CyanoAI/Prochlo-190M-SFT) | Supervised fine-tune (this repo) |
22
+ | `CyanoAI/Prochlo-190M` | Preference-aligned (DPO + RLAIF) — in training |
23
+
24
+ All variants share architecture, tokenizer, and vocabulary.
25
+
26
+ ## Training
27
+
28
+ | | |
29
+ |---|---|
30
+ | Base | CyanoAI/Prochlo-190M-Base (~7.7B pre-training tokens, 12 layers, vocab 50,261) |
31
+ | Data | HuggingFaceTB/smol-smoltalk, ~460k English conversations, chat-formatted with `<\|user\|>` / `<\|assistant\|>` |
32
+ | Method | Full-parameter SFT, 2 epochs, lr 3e-4 cosine, batch 216, max_len 1024, fp16, loss masked to assistant tokens |
33
+ | Steps | 96,135 |
34
+ | Final loss | 1.9308 (train), ~1.94 (eval) |
35
+ | Duration | ~27 h on a single 16 GB DCU accelerator |
36
+
37
+ ## Evaluation
38
+
39
+ 26-item behavioral rubric (format adherence, anti-sycophancy, code, concision): **61.5% pass**.
40
+
41
+ Strong on code instructions and factual QA. Weak on concise replies, long multi-turn coherence, and arithmetic. English only — Chinese input produces garbage by design.
42
+
43
+ ## Usage
44
+
45
+ The chat format is plain text with control tokens, not a chat template:
46
+
47
+ ```python
48
+ from transformers import AutoModelForCausalLM, AutoTokenizer
49
+
50
+ tok = AutoTokenizer.from_pretrained("CyanoAI/Prochlo-190M-SFT")
51
+ model = AutoModelForCausalLM.from_pretrained("CyanoAI/Prochlo-190M-SFT", dtype="float16").cuda()
52
+
53
+ prompt = "<|user|>Explain what a closure is.<|end|><|assistant|>"
54
+ ids = tok(prompt, return_tensors="pt").input_ids.cuda()
55
+ out = model.generate(ids, max_new_tokens=256, do_sample=False,
56
+ eos_token_id=tok.convert_tokens_to_ids("<|end|>"))
57
+ print(tok.decode(out[0, ids.shape[1]:], skip_special_tokens=True))
58
+ ```
59
+
60
+ Note: weights are sharded across 32 safetensors files with a `model.safetensors.index.json`; `from_pretrained` handles this transparently.
61
+
62
+ ## License
63
+
64
+ Apache-2.0