GameGC commited on
Commit
e429763
·
verified ·
1 Parent(s): 4921132

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +83 -1
README.md CHANGED
@@ -1,3 +1,85 @@
1
  ---
2
- license: mit
 
 
 
 
 
 
 
 
 
3
  ---
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  ---
2
+ library_name: mlx
3
+ license: apache-2.0
4
+ base_model: LiquidAI/LFM2.5-230M
5
+ tags:
6
+ - mlx
7
+ - lora
8
+ - interview
9
+ - question-extraction
10
+ language: en
11
+ pipeline_tag: text-generation
12
  ---
13
+
14
+ # questions-lfm2-4bit
15
+
16
+ LFM2.5-230M fine-tuned with **MLX LoRA** to extract interview questions from transcripts tagged with `[S]` (speaker) and `[M]` (mentor) markers.
17
+
18
+ ## Pipeline
19
+
20
+ 1. LoRA fine-tune in MLX (rank 32, 200 iters, 6.19M trainable params / 2.7%)
21
+ 2. Fuse adapter into base model → fp16
22
+ 3. Quantize to 4-bit (group size 64)
23
+
24
+ ## Input format
25
+
26
+ Transcript with `[S]` and `[M]` line prefixes:
27
+
28
+ ```
29
+ [S] what attracted you to apply to oxen
30
+ [M] so i was interested in your role so as i have like javascript typescript react experience
31
+ [S] ok
32
+ [M] yeah so could you tell me more about the project you are working on
33
+ ```
34
+
35
+ ## Output
36
+
37
+ A single extracted question (no question mark, no quotes). If the last `[M]` block has no question, falls back to the `[M]` content.
38
+
39
+ ## Usage (Python)
40
+
41
+ ```python
42
+ from mlx_lm import load, generate
43
+
44
+ model, tokenizer = load("GameGC/questions-lfm2-4bit")
45
+
46
+ messages = [
47
+ {"role": "system", "content": "Extract the most recent question from the transcript."},
48
+ {"role": "user", "content": "[S] what attracted you to apply\n[M] i was interested in your role\n[S] ok\n[M] could you tell me more about the project"},
49
+ ]
50
+ prompt = tokenizer.apply_chat_template(messages, add_generation_prompt=True)
51
+ out = generate(model, tokenizer, prompt=prompt, max_tokens=80)
52
+ print(out)
53
+ ```
54
+
55
+ ## Usage (Swift)
56
+
57
+ ```swift
58
+ import MLXLMCommon
59
+
60
+ let config = ModelConfiguration(id: "GameGC/questions-lfm2-4bit")
61
+ ```
62
+
63
+ ## Limitations
64
+
65
+ - **Trap cases**: declarative `[M]` statements containing question-sounding words ("how", rhetorical "right") may cause the model to hallucinate a question instead of returning the `[S]` content. Will be fixed in v2 with negative training examples.
66
+ - Quantized to 4-bit: minor quality regression vs fp16 fused version.
67
+ - Trained on 315 examples — narrow domain (interview transcripts).
68
+
69
+ ## Training
70
+
71
+ | Hyperparameter | Value |
72
+ |---|---|
73
+ | Base | LiquidAI/LFM2.5-230M |
74
+ | Method | MLX LoRA |
75
+ | Rank | 32 |
76
+ | Alpha | 64 |
77
+ | LoRA keys | `self_attn.{q,k,v,out}_proj`, `feed_forward.{w1,w2,w3}` |
78
+ | Trainable params | 6.19M (2.696%) |
79
+ | Iters | 200 |
80
+ | Learning rate | 2e-4 (cosine decay, warmup 10) |
81
+ | Max seq length | 1024 |
82
+ | Batch size | 4 × 4 grad accum |
83
+ | Val loss | 3.264 → 0.360 |
84
+ | Train loss | 3.144 → 0.368 |
85
+ | Duration | 110s on M-series Mac