--- library_name: mlx pipeline_tag: text-generation license: apache-2.0 base_model: TokenRhythm/NeoHorse-1-9B base_model_relation: quantized tags: - mlx - safetensors - apple-silicon - 4-bit - conversational - transformers - qwen3_5_text - text-generation - agentic - tool-use - coding - reasoning - instruction-following - arxiv:2609.08183 - license:apache-2.0 - endpoints_compatible --- # NeoHorse-1-9B-mlx-4bit > 4-bit MLX conversion of [TokenRhythm/NeoHorse-1-9B](https://huggingface.co/TokenRhythm/NeoHorse-1-9B) optimized for Apple Silicon native GPU inference. **Converted by**: [SirSahOl](https://huggingface.co/SirSahOl) **Source Model**: [TokenRhythm/NeoHorse-1-9B](https://huggingface.co/TokenRhythm/NeoHorse-1-9B) **Framework**: [MLX](https://github.com/ml-explore/mlx) by Apple **Quantization**: 4-bit (Average 4.50 bits per weight) **Format**: safetensors **License**: apache-2.0 --- ## Model Details * **Architecture**: Qwen3_5ForCausalLM * **Parameters**: 9.0B * **Context Length**: 262,144 tokens * **Format**: MLX (Apple Silicon native GPU format) * **Quantization**: 4-bit (Average 4.50 bits per weight) * **Active VRAM Footprint**: ~5.4 GB (Minimum recommended: 16 GB Unified Memory) --- ## Quick Start ### Installation ```bash pip install mlx-lm ``` ### CLI Usage ```bash # Chat interactively mlx_lm.chat --model SirSahOl/NeoHorse-1-9B-chat-mlx-4bit # Generate text mlx_lm.generate --model SirSahOl/NeoHorse-1-9B-chat-mlx-4bit --prompt "Write a short poem about artificial intelligence." ``` ### Python API (with Chat Template) ```python from mlx_lm import load, generate model, tokenizer = load("SirSahOl/NeoHorse-1-9B-chat-mlx-4bit") messages = [ {"role": "user", "content": "Explain quantum superposition in simple terms."} ] prompt = tokenizer.apply_chat_template( messages, tokenize=False, add_generation_prompt=True ) response = generate(model, tokenizer, prompt=prompt, verbose=True) print(response) ``` --- ## Performance Benchmarks ### Apple Silicon Hardware Sizing Matrix Estimated decoding throughput, time-to-first-token (TTFT), and active unified memory footprint across Apple Silicon tiers: | Apple Silicon Tier | Unified Memory | Active VRAM | Estimated Speed | Est. TTFT | Recommended Use Case | | :--- | :--- | :--- | :--- | :--- | :--- | | **M1 / M2 / M3 / M4 (Base)** | 16 GB Unified Memory | ~5.4 GB | **~28 tokens/sec** | ~141 ms | Everyday interactive assistant & fast local completions | | **M1 / M2 / M3 / M4 Pro** | 18 GB – 36 GB | ~5.4 GB | **~42 tokens/sec** | ~96 ms | Balanced daily driver for coding, tool invocation, and multi-turn chat | | **M1 / M2 / M3 / M4 Max** | 36 GB – 128 GB | ~5.4 GB | **~60 tokens/sec** | ~59 ms | High-throughput generation, low latency, agent orchestration | | **M1 / M2 / M3 Ultra** | 64 GB – 192 GB | ~5.4 GB | **~84 tokens/sec** | ~39 ms | Peak concurrency, batch document extraction, production serving | > *Estimates based on Apple Silicon unified memory bandwidth and active parameter footprint. Real-world speeds may vary with context length.* --- ## Multi-Quantization Comparison Evaluate your hardware budget and choose the optimal precision: | Variant | Disk Size | VRAM Footprint | Target Apple Silicon Hardware | Key Advantage | | :--- | :--- | :--- | :--- | :--- | | **4-bit MLX** (This Repository) | ~5.3 GB | ~5.3 GB | M1 / M2 / M3 / M4 (8GB+) | Maximum generation speed and lowest RAM overhead. | | **[8-bit MLX](https://huggingface.co/SirSahOl/NeoHorse-1-9B-chat-mlx-8bit)** | ~9.9 GB | ~9.9 GB | M1 / M2 / M3 / M4 Pro/Max (16GB+) | Balanced accuracy and generation speed; near-lossless reasoning. | | **[16-bit MLX](https://huggingface.co/SirSahOl/NeoHorse-1-9B-chat-mlx-16bit)** | ~18.8 GB | ~18.8 GB | M2 / M3 / M4 Max/Ultra (32GB+) | Full unquantized precision; reference evaluation quality. | --- ## Who Should Use This? | Your Hardware | Recommended Quantization | |---------------|--------------------------| | M1/M2/M3/M4 (8GB – 16GB) | **4-bit** — Best balance of speed, low memory, and multitasking capability | | M1/M2/M3/M4 Pro/Max (18GB – 36GB) | **8-bit** — Higher quality reasoning with comfortable memory headroom | | M1/M2/M3/M4 Max/Ultra (36GB – 192GB) | **16-bit** — Unquantized full precision, zero quality degradation | **General guidance:** - Use **4-bit** if you want to run this model alongside IDEs, browsers, and background development tools. - Use **8-bit** if you have 16GB+ unified memory and require superior reasoning and code accuracy. - Use **16-bit** for research, benchmarking, evaluation, or high-end workstation deployments. --- ## Other Quantization Variants | Variant | Link | |---------|------| | 4-bit | [SirSahOl/NeoHorse-1-9B-chat-mlx-4bit](https://huggingface.co/SirSahOl/NeoHorse-1-9B-chat-mlx-4bit) | | 8-bit | [SirSahOl/NeoHorse-1-9B-chat-mlx-8bit](https://huggingface.co/SirSahOl/NeoHorse-1-9B-chat-mlx-8bit) | | 16-bit | [SirSahOl/NeoHorse-1-9B-chat-mlx-16bit](https://huggingface.co/SirSahOl/NeoHorse-1-9B-chat-mlx-16bit) | --- ## LM Studio & Local Inference Setup Guide To prevent runaway loops and ensure correct conversational turn-taking, configure custom stop strings in your local inference runtime. ### Custom Stop Strings Configuration Ensure the following sequence tokens are configured as strict stop boundaries: 1. `<|im_start|>` 2. `<|im_end|>` 3. `<|endoftext|>` ### Option A: Automatic Preset (Recommended for LM Studio) Create a custom prompt preset JSON file named `ChatML.json` in your LM Studio config directory: - **macOS / Linux**: `~/.lmstudio/config-presets/ChatML.json` - **Windows**: `%USERPROFILE%\.lmstudio\config-presets\ChatML.json` ```json { "name": "ChatML", "inference_params": { "pre_prompt": "You are a helpful, respectful, and honest assistant.", "input_prefix": "<|im_start|>user\n", "input_suffix": "<|im_end|>\n", "pre_prompt_prefix": "<|im_start|>system\n", "pre_prompt_suffix": "<|im_end|>\n", "antiprompt": [ "<|im_start|>", "<|im_end|>", "<|endoftext|>" ], "stopStrings": [ "<|im_start|>", "<|im_end|>", "<|endoftext|>" ], "temperature": 0.7, "max_tokens": 2048 } } ``` Restart LM Studio, load **SirSahOl/NeoHorse-1-9B-chat-mlx-4bit**, and select **"ChatML"** from the Prompt Template dropdown. ### Option B: Manual LM Studio Configuration 1. Load **SirSahOl/NeoHorse-1-9B-chat-mlx-4bit** in LM Studio. 2. In the right-hand **Advanced Configuration / Inference Parameters** panel: - **Stop Strings (antiprompt / stopStrings)**: Add `<|im_start|>`, `<|im_end|>`, `<|endoftext|>` - **System Prefix**: `<|im_start|>system\n` - **System Suffix**: `<|im_end|>\n` - **User Prefix**: `<|im_start|>user\n` - **Assistant Suffix**: `<|im_end|>\n<|im_start|>assistant\n` ### Option C: Ollama Modelfile Setup Create a `Modelfile` to run this model in Ollama: ```dockerfile FROM SirSahOl/NeoHorse-1-9B-chat-mlx-4bit PARAMETER stop "<|im_start|>" PARAMETER stop "<|im_end|>" PARAMETER stop "<|endoftext|>" PARAMETER temperature 0.7 TEMPLATE """{{ if .System }}<|im_start|>system {{ .System }}<|im_end|> {{ end }}{{ if .Prompt }}<|im_start|>user {{ .Prompt }}<|im_end|> {{ end }}<|im_start|>assistant """ ``` Create and run with Ollama: ```bash ollama create neohorse-1-9b-chat-mlx-4bit -f Modelfile ollama run neohorse-1-9b-chat-mlx-4bit ``` --- ## Conversion Details | Property | Value | |----------|-------| | **Source Model** | [TokenRhythm/NeoHorse-1-9B](https://huggingface.co/TokenRhythm/NeoHorse-1-9B) | | **Quantization** | 4-bit | | **mlx-lm Version** | 0.31.3 | | **Conversion Time** | 101.37s | | **Output Size** | 4.7 GB | | **Date** | 2026-09-14T23:31:53.987005+00:00 | ### Reproduction To reproduce this conversion: ```bash pip install mlx-lm==0.31.3 python3 -m mlx_lm.convert --hf-path /root/.cache/huggingface/hub/models--TokenRhythm--NeoHorse-1-9B/snapshots/ba5b6e40d88a6ddf4591e176738254a3bc715765 --mlx-path output/NeoHorse-1-9B-mlx-4bit -q --q-bits 4 ``` --- ## Limitations & Known Issues - 4-bit group-wise quantization introduces minor precision loss compared to unquantized weights; for deep mathematical derivations or precision-critical reasoning, test the 8-bit or 16-bit variants. - High context sequences (>32K tokens) require sufficient unified memory headroom; ensure unified memory is not overcommitted. - This is a weight-only MLX conversion designed specifically for Apple Silicon GPUs (M1/M2/M3/M4 series). --- ## License This model conversion inherits the license of the source model: **apache-2.0**. See the [original model card](https://huggingface.co/TokenRhythm/NeoHorse-1-9B) for full license details. --- ## Changelog | Version | Date | Changes | |---------|------|---------| | v1.0 | 2026-09-14 | Initial conversion | --- *Converted with [MLX Foundry](https://github.com/SirSahOl/mlx-foundry) — a professional pipeline for converting models to Apple MLX format.*