Text Generation
MLX
Safetensors
English
lfm2
text-cleanup
dictation
course-correction
lora
conversational
5-bit
Instructions to use vasanth009/LC-lfm2.5-350m with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- MLX
How to use vasanth009/LC-lfm2.5-350m with MLX:
# Make sure mlx-lm is installed # pip install --upgrade mlx-lm # Generate text with mlx-lm from mlx_lm import load, generate model, tokenizer = load("vasanth009/LC-lfm2.5-350m") prompt = "Write a story about Einstein" messages = [{"role": "user", "content": prompt}] prompt = tokenizer.apply_chat_template( messages, add_generation_prompt=True ) text = generate(model, tokenizer, prompt=prompt, verbose=True) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- LM Studio
- Pi
How to use vasanth009/LC-lfm2.5-350m with Pi:
Start the MLX server
# Install MLX LM: uv tool install mlx-lm # Start a local OpenAI-compatible server: mlx_lm.server --model "vasanth009/LC-lfm2.5-350m"
Configure the model in Pi
# Install Pi: npm install -g @mariozechner/pi-coding-agent # Add to ~/.pi/agent/models.json: { "providers": { "mlx-lm": { "baseUrl": "http://localhost:8080/v1", "api": "openai-completions", "apiKey": "none", "models": [ { "id": "vasanth009/LC-lfm2.5-350m" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Hermes Agent new
How to use vasanth009/LC-lfm2.5-350m with Hermes Agent:
Start the MLX server
# Install MLX LM: uv tool install mlx-lm # Start a local OpenAI-compatible server: mlx_lm.server --model "vasanth009/LC-lfm2.5-350m"
Configure Hermes
# Install Hermes: curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash hermes setup # Point Hermes at the local server: hermes config set model.provider custom hermes config set model.base_url http://127.0.0.1:8080/v1 hermes config set model.default vasanth009/LC-lfm2.5-350m
Run Hermes
hermes
- OpenClaw new
How to use vasanth009/LC-lfm2.5-350m with OpenClaw:
Start the MLX server
# Install MLX LM: uv tool install mlx-lm # Start a local OpenAI-compatible server: mlx_lm.server --model "vasanth009/LC-lfm2.5-350m"
Configure OpenClaw
# Install OpenClaw: npm install -g openclaw@latest # Register the local server and set it as the default model: openclaw onboard --non-interactive --mode local \ --auth-choice custom-api-key \ --custom-base-url http://127.0.0.1:8080/v1 \ --custom-model-id "vasanth009/LC-lfm2.5-350m" \ --custom-provider-id mlx-lm \ --custom-compatibility openai \ --custom-text-input \ --accept-risk \ --skip-health
Run OpenClaw
openclaw agent --local --agent main --message "Hello from Hugging Face"
- MLX LM
How to use vasanth009/LC-lfm2.5-350m with MLX LM:
Generate or start a chat session
# Install MLX LM uv tool install mlx-lm # Interactive chat REPL mlx_lm.chat --model "vasanth009/LC-lfm2.5-350m"
Run an OpenAI-compatible server
# Install MLX LM uv tool install mlx-lm # Start the server mlx_lm.server --model "vasanth009/LC-lfm2.5-350m" # Calling the OpenAI-compatible server with curl curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "vasanth009/LC-lfm2.5-350m", "messages": [ {"role": "user", "content": "Hello"} ] }'
| license: other | |
| license_name: lfm-open | |
| base_model: juanquivilla/sotto-cleanup-lfm25-350m-mlx-5bit | |
| library_name: mlx | |
| tags: | |
| - mlx | |
| - lfm2 | |
| - text-cleanup | |
| - dictation | |
| - course-correction | |
| - lora | |
| language: | |
| - en | |
| pipeline_tag: text-generation | |
| # LC-lfm2.5-350m β dictation cleanup with course-correction | |
| A small, fast **on-device voice-dictation cleanup** model: it turns messy spoken | |
| transcripts into clean written text, and β unlike most cleanup models β it | |
| **honors spoken self-corrections** ("book the 7pm flight *no wait* the 9pm one" | |
| β "Book the 9pm flight."). | |
| Built for [MacWispr](https://github.com/vasanthsreeram/macwispr). This repo ships | |
| the **fused** model (LoRA baked in) so you can pull and run it directly; the | |
| standalone LoRA adapter is under [`lora-adapter/`](./lora-adapter). | |
| - **Base:** `juanquivilla/sotto-cleanup-lfm25-350m-mlx-5bit` (LFM2.5-350M, MLX 5-bit) | |
| - **Method:** LoRA (8 layers, 600 iters, LR 5e-6), fused into the base | |
| - **Runtime:** MLX (Apple Silicon) β also loadable in Swift via `mlx-swift-lm` (LFM2) | |
| ## What it does | |
| 1. Removes fillers and stutters ("um", "uh", "that that" β "that"). | |
| 2. **Honors self-corrections** β drops the retracted item, keeps the replacement, | |
| and keeps the rest of the sentence. | |
| 3. Writes numbers as digits ("three seventy-five" β "375"). | |
| 4. Fixes light grammar/punctuation/capitalization without summarizing. | |
| ## Prompt format | |
| Trained on a raw completion format (**not** a chat template): | |
| ``` | |
| ### Input: | |
| {raw dictation} | |
| ### Output: | |
| ``` | |
| ## Usage (mlx-lm) | |
| ```python | |
| from mlx_lm import load, generate | |
| from mlx_lm.sample_utils import make_sampler | |
| model, tok = load("vasanth009/LC-lfm2.5-350m") | |
| raw = "set the oven to three fifty no wait three seventy five for the lasagna" | |
| prompt = f"### Input:\n{raw}\n\n### Output:\n" | |
| out = generate(model, tok, prompt=prompt, max_tokens=64, sampler=make_sampler(temp=0.0)) | |
| print(out.split("###")[0].strip()) | |
| # -> Set the oven to 375 for the lasagna. | |
| ``` | |
| To apply the LoRA to the base yourself instead of using the fused weights: | |
| ```bash | |
| mlx_lm.generate --model juanquivilla/sotto-cleanup-lfm25-350m-mlx-5bit \ | |
| --adapter-path lora-adapter --prompt "### Input:\n...\n\n### Output:\n" | |
| ``` | |
| ## Honest evaluation (leak-free held-out) | |
| Graded by an LLM judge on a **94-item held-out set generated on topics disjoint | |
| from training** (0/94 overlap with the training data β verified). This is a real | |
| generalization test, not memorized phrases. | |
| | Model | Course-correction | Light cleanup | Preserve (anti over-edit) | | |
| |-------|------------------:|--------------:|--------------------------:| | |
| | Base (Sotto LFM2.5-350M) | 10/16 | 12/12 | 6/8 | | |
| | **This model (+LoRA)** | **13/16** | 12/12 | **7/8** | | |
| Course-correction is the headline improvement (10β13/16). Light cleanup was | |
| already strong (tie). Latency ~50β100 ms/utterance on Apple Silicon. | |
| ### Limitations | |
| - The base is **5-bit quantized**; rare token corruptions can occur | |
| ("simmer" β "smear"). A higher-precision base would reduce this. | |
| - 350M parameters β capable for cleanup, not a general assistant. It only cleans | |
| text; it does not answer questions in the transcript. | |
| - Occasionally over-shortens a long correction (drops a trailing clause). | |
| ## Provenance | |
| Training data (course-correction / light-cleanup / preserve pairs) was generated | |
| and QC-filtered with an LLM on fresh topics, with a hard leakage gate against the | |
| held-out eval. See the MacWispr repo's `bench/polish_finetune/` for the full, | |
| reproducible pipeline. | |