Text Generation
MLX
Safetensors
qwen3
lora
code
reasoning
tennda
distillation
conversational
4-bit precision
Instructions to use MLA299/Tennda-Reason with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- MLX
How to use MLA299/Tennda-Reason 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("MLA299/Tennda-Reason") 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 MLA299/Tennda-Reason with Pi:
Start the MLX server
# Install MLX LM: uv tool install mlx-lm # Start a local OpenAI-compatible server: mlx_lm.server --model "MLA299/Tennda-Reason"
Configure the model in Pi
# Install Pi: npm install -g @earendil-works/pi-coding-agent # Add to ~/.pi/agent/models.json: { "providers": { "mlx-lm": { "baseUrl": "http://localhost:8080/v1", "api": "openai-completions", "apiKey": "none", "models": [ { "id": "MLA299/Tennda-Reason" } ] } } }Run Pi
# Start Pi in your project directory: pi
- MLX LM
How to use MLA299/Tennda-Reason with MLX LM:
Generate or start a chat session
# Install MLX LM uv tool install mlx-lm # Interactive chat REPL mlx_lm.chat --model "MLA299/Tennda-Reason"
Run an OpenAI-compatible server
# Install MLX LM uv tool install mlx-lm # Start the server mlx_lm.server --model "MLA299/Tennda-Reason" # Calling the OpenAI-compatible server with curl curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "MLA299/Tennda-Reason", "messages": [ {"role": "user", "content": "Hello"} ] }' - Hermes Agent
How to use MLA299/Tennda-Reason 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 "MLA299/Tennda-Reason"
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 MLA299/Tennda-Reason
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use MLA299/Tennda-Reason with OpenClaw:
Start the MLX server
# Install MLX LM: uv tool install mlx-lm # Start a local OpenAI-compatible server: mlx_lm.server --model "MLA299/Tennda-Reason"
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 "MLA299/Tennda-Reason" \ --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"
| library_name: mlx | |
| pipeline_tag: text-generation | |
| license: apache-2.0 | |
| tags: | |
| - mlx | |
| - lora | |
| - code | |
| - reasoning | |
| - text-generation | |
| - tennda | |
| - distillation | |
| # Tennda-Reason | |
| > **A high-efficiency code & reasoning assistant fine-tuned by the Tennda Team** | |
| > Structured `<think>` reasoning followed by complete, production-ready answers β refined thinking, reliable delivery, built for code generation, math, and logical reasoning on Apple Silicon. | |
| --- | |
| ## Model Overview | |
| | Item | Details | | |
| |---|---| | |
| | **Model Name** | Tennda-Reason | | |
| | **Developer** | Tennda Team | | |
| | **Parameters** | 8.2B (4-bit quantized, ~4.3GB) | | |
| | **Architecture** | Standard Transformer decoder, native `<think>` reasoning support | | |
| | **Weight Format** | 4-bit, MLX native | | |
| | **Framework** | MLX 0.32.1 + mlx-lm 0.31.3 (Apple Silicon Metal acceleration) | | |
| | **Training** | QLoRA (rank=16, scale=32, last 16 layers, 19.4M trainable params / 0.237%) | | |
| | **Training Data** | Multi-teacher distillation SFT corpus (2,000 curated samples): math 27% Β· code 27% Β· reasoning 20% Β· instruction 14% | | |
| | **Context Length** | 1024 (trained), extensible via base capabilities | | |
| | **Release Date** | 2026-08-24 | | |
| --- | |
| ## Highlights | |
| - **Refined thinking**: `<think>` reasoning chains compressed to 300β550 token key-point style β no rambling, no wasted tokens | |
| - **Complete delivery**: trained on "short thinking + complete answer" patterns; 0/5 test failures from runaway reasoning (baseline: 2/5) | |
| - **Multi-domain**: balanced across math, code, logical reasoning, and instruction following | |
| - **Apple Silicon native**: MLX 4-bit, ~6GB peak inference memory, runs on a single M-series machine | |
| --- | |
| ## Training Details | |
| ### Convergence (Loss) | |
| | Metric | Start | Best | Final | | |
| |---|---|---|---| | |
| | Train loss | 1.70 | β | **0.421** | | |
| | Val loss | 1.702 | **0.590** (iter 700) | 0.794 | | |
|  | |
| - 2,000 iterations β 2 epochs (batch=2, seq=1024, ~67 tokens/s, ~8h on a single M4) | |
| - GPU peak memory **8.5GB**, stable throughout, zero OOM | |
| - **Released checkpoint: iter 700** (best validation loss), selected via blind A/B output comparison against the final checkpoint | |
| ### Checkpoint Selection | |
| | | iter 700 (released) | iter 2000 | | |
| |---|---|---| | |
| | Val loss | **0.590** | 0.794 | | |
| | Factual accuracy (networking task) | β correct | β detail error | | |
| | Format compliance | β verified | β | | |
| --- | |
| ## Evaluation (5 prompts, temp=0.3, vs pre-training baseline) | |
| | Task | Tennda-Reason | Baseline | | |
| |---|---|---| | |
| | Python quicksort | β complete runnable code + complexity analysis | β reasoning runaway, no answer produced | | |
| | JS closures | β full structured tutorial | β οΈ thin output | | |
| | SQL top salary per dept | β window-function solutions | β reasoning runaway, no answer produced | | |
| | TCP 3-way handshake | β vivid analogy, correct steps | β concise & correct | | |
| | Python HTTP server | β οΈ multi-approach, minor rough edges | β concise & correct | | |
| **Summary**: format compliance 5/5; runaway-reasoning failures reduced from 2/5 (baseline) to 0/5; overall usability substantially improved. | |
| --- | |
| ## Usage (MLX) | |
| ```python | |
| from mlx_lm import load, generate | |
| model, tokenizer = load("MLA299/Tennda-Reason") | |
| messages = [{"role": "user", "content": "Write a quicksort in Python"}] | |
| prompt = tokenizer.apply_chat_template( | |
| messages, tokenize=False, add_generation_prompt=True | |
| ) | |
| response = generate(model, tokenizer, prompt=prompt, max_tokens=2048, verbose=False) | |
| print(response) | |
| ``` | |
| Command line: | |
| ```bash | |
| mlx_lm.generate --model MLA299/Tennda-Reason \ | |
| --prompt "Write a SQL query: highest salary per department" \ | |
| --max-tokens 2048 | |
| ``` | |
| > Recommended sampling: temp=0.3β0.7, max_tokens β₯ 2048 (thinking chain + full answer) | |
| --- | |
| ## Limitations | |
| - Training data is English-dominant; Chinese works but is not specifically optimized | |
| - Post-SFT the model is more confident; factual-detail hallucinations are slightly higher than baseline β verify critical details in production | |
| - Trained at 1024 context; longer inputs rely on native capabilities | |
| - Contains synthetic distillation content; upstream data terms apply | |
| --- | |
| ## License | |
| Apache-2.0. See the license terms for redistribution conditions. | |
| --- | |
| ## Citation | |
| ```bibtex | |
| @misc{tennda-reason-2026, | |
| title = {Tennda-Reason: A Distillation-Fine-tuned Model for Code and Reasoning on Apple Silicon}, | |
| author = {Tennda Team}, | |
| year = {2026}, | |
| month = {August}, | |
| publisher = {Hugging Face}, | |
| url = {https://huggingface.co/MLA299/Tennda-Reason} | |
| } | |
| ``` | |
| --- | |
| *Tennda-Reason Β· Β© 2026 Tennda Team* | |