questions-lfm2-4bit / README.md
GameGC's picture
Update README.md
8e9ce1e verified
|
Raw
History Blame Contribute Delete
2.94 kB
---
library_name: mlx
license: apache-2.0
base_model: LiquidAI/LFM2.5-230M
tags:
- mlx
- lora
- dialogue
- conversational
language: en
pipeline_tag: text-generation
---
# questions-lfm2-4bit
LFM2.5-230M fine-tuned with **MLX LoRA** to extract the most recent question from a multi-turn dialogue. Input is a transcript tagged with `[S]` and `[M]` line prefixes. The model **prioritizes** questions appearing under the `[S]` tag; if no question is present there, it falls back to the latest `[M]` block.
End-to-end latency on M-series Mac: **100–150 ms** per call (greedy decoding, max 80 tokens, 4-bit quantized).
## Pipeline
1. LoRA fine-tune in MLX (rank 32, 200 iters, 6.19M trainable params / 2.7%)
2. Fuse adapter into base model β†’ fp16
3. Quantize to 4-bit (group size 64)
## Input format
Transcript with `[S]` and `[M]` line prefixes:
```
[S] what would you like to discuss today
[M] i was thinking about the architecture of the new service
[S] ok
[M] could you walk me through the current approach
```
## Output
A single extracted question (no question mark, no quotes). Priority order:
1. Latest question found under `[S]`
2. Otherwise, latest question found under `[M]`
3. Otherwise, the most recent `[M]` content
## Usage (Python)
```python
from mlx_lm import load, generate
model, tokenizer = load("GameGC/questions-lfm2-4bit")
messages = [
{"role": "system", "content": "Extract the most recent question from the dialogue."},
{"role": "user", "content": "[S] what would you like to discuss\n[M] i was thinking about the architecture\n[S] ok\n[M] could you walk me through the current approach"},
]
prompt = tokenizer.apply_chat_template(messages, add_generation_prompt=True)
out = generate(model, tokenizer, prompt=prompt, max_tokens=80)
print(out)
```
## Usage (Swift)
```swift
import MLXLMCommon
let config = ModelConfiguration(id: "GameGC/questions-lfm2-4bit")
```
## Performance
| Metric | Value |
|---|---|
| Latency (M-series Mac, 4-bit) | 100–150 ms per call |
| Model size on disk | ~134 MB |
| Max context | 1024 tokens |
| Quantization | 4-bit, group size 64 |
## Limitations
- Declarative statements under `[M]` containing question-sounding words ("how", rhetorical "right") may trigger false-positive extraction. Will be addressed in v2.
- 4-bit quantization introduces a minor quality regression vs the fp16 fused version.
- Maximum context length: 1024 tokens. Longer transcripts are truncated.
## Training
| Hyperparameter | Value |
|---|---|
| Base | LiquidAI/LFM2.5-230M |
| Method | MLX LoRA |
| Rank | 32 |
| Alpha | 64 |
| LoRA keys | `self_attn.{q,k,v,out}_proj`, `feed_forward.{w1,w2,w3}` |
| Trainable params | 6.19M (2.696%) |
| Iters | 200 |
| Learning rate | 2e-4 (cosine decay, warmup 10) |
| Max seq length | 1024 |
| Batch size | 4 Γ— 4 grad accum |
| Val loss | 3.264 β†’ 0.360 |
| Train loss | 3.144 β†’ 0.368 |
| Duration | 110s on M-series Mac |