Instructions to use model-rampage/BareTorch-2.5B-Base with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use model-rampage/BareTorch-2.5B-Base with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="model-rampage/BareTorch-2.5B-Base", trust_remote_code=True) messages = [ {"role": "user", "content": "Who are you?"}, ] pipe(messages)# pip install -U transformers accelerate # Load model directly from transformers import AutoModelForCausalLM model = AutoModelForCausalLM.from_pretrained("model-rampage/BareTorch-2.5B-Base", trust_remote_code=True, device_map="auto") - MLX
How to use model-rampage/BareTorch-2.5B-Base 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("model-rampage/BareTorch-2.5B-Base") 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
- vLLM
How to use model-rampage/BareTorch-2.5B-Base with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "model-rampage/BareTorch-2.5B-Base" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "model-rampage/BareTorch-2.5B-Base", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/model-rampage/BareTorch-2.5B-Base
- SGLang
How to use model-rampage/BareTorch-2.5B-Base with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "model-rampage/BareTorch-2.5B-Base" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "model-rampage/BareTorch-2.5B-Base", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "model-rampage/BareTorch-2.5B-Base" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "model-rampage/BareTorch-2.5B-Base", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Pi
How to use model-rampage/BareTorch-2.5B-Base with Pi:
Start the MLX server
# Install MLX LM: uv tool install mlx-lm # Start a local OpenAI-compatible server: mlx_lm.server --model "model-rampage/BareTorch-2.5B-Base"
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": "model-rampage/BareTorch-2.5B-Base" } ] } } }Run Pi
# Start Pi in your project directory: pi
- MLX LM
How to use model-rampage/BareTorch-2.5B-Base with MLX LM:
Generate or start a chat session
# Install MLX LM uv tool install mlx-lm # Interactive chat REPL mlx_lm.chat --model "model-rampage/BareTorch-2.5B-Base"
Run an OpenAI-compatible server
# Install MLX LM uv tool install mlx-lm # Start the server mlx_lm.server --model "model-rampage/BareTorch-2.5B-Base" # Calling the OpenAI-compatible server with curl curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "model-rampage/BareTorch-2.5B-Base", "messages": [ {"role": "user", "content": "Hello"} ] }' - Docker Model Runner
How to use model-rampage/BareTorch-2.5B-Base with Docker Model Runner:
docker model run hf.co/model-rampage/BareTorch-2.5B-Base
- Hermes Agent
How to use model-rampage/BareTorch-2.5B-Base 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 "model-rampage/BareTorch-2.5B-Base"
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 model-rampage/BareTorch-2.5B-Base
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use model-rampage/BareTorch-2.5B-Base with OpenClaw:
Start the MLX server
# Install MLX LM: uv tool install mlx-lm # Start a local OpenAI-compatible server: mlx_lm.server --model "model-rampage/BareTorch-2.5B-Base"
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 "model-rampage/BareTorch-2.5B-Base" \ --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"
- 🐻🔥 BareTorch-2.5B-Base
- 🌍 Why BareTorch? (Built for Any Chip — From Cloud TPUs to Edge NPUs)
- 🚀 Key Highlights
- 📊 Zero-Shot Downstream Benchmarks (
lm-evaluation-harness) - ⚡ Hardware Speed, TTFT & Memory Profiling: Sub-Quadratic vs. Sub-Quadratic (512 to 32,768 Tokens)
- 📐 Model Architecture & Pre-Training Specifications
- 💻 Quickstart Usage
- 🗺️ Release Roadmap
- 📜 Citation
- 🌍 Why BareTorch? (Built for Any Chip — From Cloud TPUs to Edge NPUs)
🐻🔥 BareTorch-2.5B-Base
🔗 Official GitHub Repository & Engine Source Code: https://github.com/martin-kbcc/baretorch
BareTorch-2.5B-Base is a 2.53-billion-parameter hybrid language model designed from the ground up for fast, long-context inference across cloud systolic arrays (Google TPUs), consumer GPUs (NVIDIA CUDA), and edge devices (Apple Silicon MLX)—without requiring custom hardware kernels.
🌍 Why BareTorch? (Built for Any Chip — From Cloud TPUs to Edge NPUs)
Most modern subquadratic architectures (such as Mamba-2, RWKV, and Gated DeltaNet) achieve fast linear scaling on NVIDIA datacenter GPUs by relying on custom CUDA, Triton, or platform-locked kernels. When developers try to deploy those models across Google Cloud TPUs (OpenXLA), Apple Silicon, mobile NPUs, Vulkan, or WebGPU, they hit a severe performance wall wherever custom hardware kernels are missing and models fall back to sequential loops. Meanwhile, standard Transformers suffer from quadratic $O(L^2)$ slowdowns and expanding KV-cache memory as context grows.
BareTorch solves this hardware lock-in. Its core sequence engine—the **Chunk-Segmented Low-Rank Associative Delta Engine (CS-LRAD)**—is formulated 100% out of standard matrix multiplications (GEMMs) for parallel chunk prefill and an exact $O(1)$ recurrent associative state update for single-token decoding. Because every AI processor on earth (Google TPU MXU systolic arrays, Apple M-series GPUs/ANEs, mobile NPUs, AMD/Intel GPUs, and NVIDIA Tensor Cores) already accelerates matrix multiplication natively, BareTorch delivers subquadratic long-context speed and compact memory usage out-of-the-box on any chip.
🚀 Key Highlights
- Universal Subquadratic Hybrid Architecture (24 Layers): Combines 18 CS-LRAD recurrent blocks and 6 Grouped-Query Attention (GQA) blocks in a repeating 3:1 pattern (
[CS-LRAD, CS-LRAD, CS-LRAD, Transformer] x 6). Because 75% of the network uses a fixed-size low-rank recurrent state (rank = 16) instead of a growing KV cache, long prompts process rapidly with minimal memory overhead. - 13.37x Faster Long-Context Prefill & 2.33x Faster Decoding on Google Cloud TPU (v5e-1 — BF16): Because
Qwen3.5-2Brelies on Triton/CUDA kernels (flash-linear-attentionandcausal_conv1d) unavailable on systolic-array TPUs, it falls back to sequential reference loops (17.51s TTFT / 1,871.3 tok/s at 32k). BareTorch's pure-GEMMCS-LRADlowers natively onto the TPU MXU systolic array, processing 32,768 tokens in 1.31 seconds (25,018.2 tok/s — peaking at 26,168.6 tok/s) while decoding up to 2.33x faster (49.02 tok/s vs 21.07 tok/s) and compiling 2.56x faster. - Edge & Workstation Acceleration (Apple Silicon MLX & NVIDIA CUDA): Under strict 4-bit native Apple MLX benchmarking on a MacBook Pro M1, BareTorch delivers ~34% faster prefill throughput (peaking at 1,204.1 tok/s and sustaining 1,028.0 tok/s vs 769.8 tok/s at 32k context), faster decoding (99.27 tok/s at 1k, 75.54 tok/s vs 71.28 tok/s at 32k), and 30% lower peak RAM at 32,768 tokens (3.52 GB vs 5.00 GB)—plus 44% faster decoding (65.4 tok/s vs 45.6 tok/s) on local NVIDIA CUDA hardware.
- Distilled from
Qwen/Qwen3.5-9Bon 75B Tokens: Pre-trained from scratch on 75 Billion tokens (142,000 steps) using a 50/50 multi-task objective (50% Hard Cross-Entropy + 50% Top-4 Logit KL Divergence fromQwen/Qwen3.5-9B) with a Warmup-Stable-Decay (WSD) curriculum schedule. - Outperforms 300B-Token Baselines: Beats Pythia-2.8B and Mamba-1.4B (both trained on 4x more tokens) across all 7 standard zero-shot benchmarks, and outperforms Qwen3.5-2B-Base on physical commonsense (PIQA: 74.81%) and multi-step fact QA (OpenBookQA: 39.40%).
📊 Zero-Shot Downstream Benchmarks (lm-evaluation-harness)
All models were evaluated zero-shot (0-shot, sequence length 2,048, bfloat16) using the standard EleutherAI lm-evaluation-harness:
| Benchmark Task | Metric | BareTorch-2.5B-Base (75B Tokens) | Pythia-2.8B (300B Tokens) | Mamba-1.4B (300B Tokens) | Qwen3.5-2B-Base |
|---|---|---|---|---|---|
| BoolQ (Reading Comprehension) | Accuracy | 66.12% | 64.10% | 63.00% | 69.72% |
| PIQA (Physical Commonsense) | Acc (Norm) | 74.81% | 74.10% | 73.90% | 74.65% |
| HellaSwag (Commonsense Reasoning) | Acc (Norm) | 59.86% | 59.40% | 59.00% | 65.90% |
| WinoGrande (Coreference Resolution) | Accuracy | 60.54% | 58.20% | 61.40% | 65.51% |
| ARC-Easy (Science QA) | Acc (Norm) | 65.91% | 59.10% | 65.50% | 71.30% |
| ARC-Challenge (Hard Science QA) | Acc (Norm) | 38.48% | 32.90% | 32.90% | 45.48% |
| OpenBookQA (Multi-Step Fact QA) | Acc (Norm) | 39.40% | 36.80% | 37.00% | 38.20% |
| 7-Task Zero-Shot Average | Mean | 57.87% | 54.94% | 56.10% | 61.54% |
⚡ Hardware Speed, TTFT & Memory Profiling: Sub-Quadratic vs. Sub-Quadratic (512 to 32,768 Tokens)
Why Sub-Quadratic vs. Sub-Quadratic (
CS-LRADvs.Gated DeltaNet)?
Comparing a sub-quadratic hybrid against a standard $O(L^2)$ full-attention Transformer at 32k+ context is not a fair competition, as sub-quadratic models hold an inherent algorithmic and KV-cache advantage over full attention. To establish a rigorous, apples-to-apples benchmark, we evaluate BareTorch-2.5B-Base (18 CS-LRAD + 6 GQAlayers) directly against Qwen3.5-2B (18 Gated DeltaNet + 6 GQAlayers)—a state-of-the-art sub-quadratic hybrid sharing the exact same 24-layer 3:1 hybrid topology.
Note on Context Length:
BareTorch-2.5B-Basewas pre-trained at a foundational sequence length of 2,048 tokens (rope_theta = 10,000). The hardware benchmarks below measure raw architectural speed, Time-To-First-Token (TTFT), prefill throughput, and memory scaling up to 32,768 tokens. Long-context sequence adaptation (16k–32k) and Supervised Fine-Tuning (SFT) will follow in upcoming releases.
1. Google Cloud TPU Benchmark (TPU v5e-1 16GB HBM — Native TorchTPU BF16)
Evaluated head-to-head on a Google Cloud TPU v5e-1 (16GB HBM) in bfloat16 (64 generated tokens per trial, last-logit-only prefill optimization enabled for both models). Because BareTorch's CS-LRAD is built from standard matrix multiplications and an $O(1)$ recurrent associative state update rather than Triton/CUDA-specific kernels, it lowers directly onto the TPU's $128 imes 128$ MXU systolic array—delivering up to 13.37x faster prefill (1.31s vs 17.51s at 32k), 2.06x–2.33x faster compiled decoding (49.02 tok/s peak, and up to +44.4% faster in uncompiled eager mode), and 2.56x faster XLA compilation:
| Context Length | Model (Backend) | TTFT (ms) | Prefill Throughput | Decode Speed | Warmup / XLA Compile |
|---|---|---|---|---|---|
| 512 | BareTorch-2.5B (TorchTPU) | 97.0 ms | 5,276.7 tok/s | 42.40 tok/s (26.80 eager) | 54.4s |
| 512 | Qwen3.5-2B (TorchTPU) | 188.9 ms | 2,710.3 tok/s | 20.56 tok/s | 61.7s |
| 1,024 | BareTorch-2.5B (TorchTPU) | 108.2 ms | 9,462.5 tok/s | 43.48 tok/s (27.59 eager) | 63.8s |
| 1,024 | Qwen3.5-2B (TorchTPU) | 298.7 ms | 3,428.2 tok/s | 22.20 tok/s | 92.2s |
| 2,048 | BareTorch-2.5B (TorchTPU) | 129.9 ms | 15,770.6 tok/s | 49.02 tok/s (24.83 eager) | 65.0s |
| 2,048 | Qwen3.5-2B (TorchTPU) | 513.9 ms | 3,984.9 tok/s | 21.07 tok/s | 105.6s |
| 4,096 | BareTorch-2.5B (TorchTPU) | 186.8 ms | 21,923.1 tok/s | 42.71 tok/s (24.33 eager) | 84.3s |
| 4,096 | Qwen3.5-2B (TorchTPU) | 897.6 ms | 4,563.4 tok/s | 21.27 tok/s | 118.7s |
| 8,192 | BareTorch-2.5B (TorchTPU) | 332.5 ms | 24,640.6 tok/s | 42.89 tok/s (29.33 eager) | 92.4s |
| 8,192 | Qwen3.5-2B (TorchTPU) | 2,272.2 ms | 3,605.2 tok/s | 20.31 tok/s | 160.3s |
| 16,384 | BareTorch-2.5B (TorchTPU) | 626.1 ms | 26,168.6 tok/s | 41.17 tok/s (25.09 eager) | 143.6s |
| 16,384 | Qwen3.5-2B (TorchTPU) | 5,733.5 ms | 2,857.6 tok/s | 20.63 tok/s | 286.5s |
| 32,768 | BareTorch-2.5B (TorchTPU) | 1,309.8 ms | 25,018.2 tok/s | 43.38 tok/s (27.97 eager) | 148.6s |
| 32,768 | Qwen3.5-2B (TorchTPU) | 17,510.6 ms | 1,871.3 tok/s | 21.07 tok/s | 380.7s |
2. Apple Silicon Edge Benchmark (MacBook Pro M1 — Native MLX 4-Bit)
Both models were evaluated head-to-head in native Apple MLX using identical 4-bit quantization (mlx.nn.quantize, bits=4, group_size=64). Even with zero custom Metal shaders, BareTorch-2.5B achieves ~34% faster prefill across all context lengths, 99.3 tok/s short-context / 75.5 tok/s 32k-context decode speed, and cuts 32k peak unified memory by 1.48 GB (3.52 GB vs 5.00 GB):
| Context Length | Model (Backend) | TTFT (ms) | Prefill Throughput | Decode Speed | Peak RAM |
|---|---|---|---|---|---|
| 512 | BareTorch-2.5B (MLX 4-bit) | 437.9 ms | 1,169.3 tok/s | 99.06 tok/s | 1.99 GB |
| 512 | Qwen3.5-2B (MLX 4-bit) | 576.4 ms | 888.2 tok/s | 98.82 tok/s | 1.84 GB |
| 1,024 | BareTorch-2.5B (MLX 4-bit) | 855.5 ms | 1,197.0 tok/s | 99.27 tok/s | 2.28 GB |
| 1,024 | Qwen3.5-2B (MLX 4-bit) | 1,140.1 ms | 898.2 tok/s | 99.07 tok/s | 2.10 GB |
| 2,048 | BareTorch-2.5B (MLX 4-bit) | 1,700.8 ms | 1,204.1 tok/s | 95.85 tok/s | 2.41 GB |
| 2,048 | Qwen3.5-2B (MLX 4-bit) | 2,271.7 ms | 901.5 tok/s | 96.63 tok/s | 2.32 GB |
| 4,096 | BareTorch-2.5B (MLX 4-bit) | 3,438.4 ms | 1,191.2 tok/s | 93.63 tok/s | 2.69 GB |
| 4,096 | Qwen3.5-2B (MLX 4-bit) | 4,617.7 ms | 887.0 tok/s | 94.39 tok/s | 2.76 GB |
| 8,192 | BareTorch-2.5B (MLX 4-bit) | 6,963.2 ms | 1,176.5 tok/s | 90.85 tok/s | 2.69 GB |
| 8,192 | Qwen3.5-2B (MLX 4-bit) | 9,386.1 ms | 872.8 tok/s | 90.65 tok/s | 3.18 GB |
| 16,384 | BareTorch-2.5B (MLX 4-bit) | 14,549.3 ms | 1,126.1 tok/s | 85.05 tok/s | 3.33 GB |
| 16,384 | Qwen3.5-2B (MLX 4-bit) | 19,503.7 ms | 840.0 tok/s | 83.17 tok/s | 3.75 GB |
| 32,768 | BareTorch-2.5B (MLX 4-bit) | 31,876.9 ms | 1,028.0 tok/s | 75.54 tok/s | 3.52 GB |
| 32,768 | Qwen3.5-2B (MLX 4-bit) | 42,567.7 ms | 769.8 tok/s | 71.28 tok/s | 5.00 GB |
3. Local NVIDIA GPU Workstation Benchmark (CUDA — BF16)
Measured in strict apples-to-apples mode (benchmark_context.py, 64 generated tokens per trial, last-logit-only prefill optimization enabled for both models). BareTorch delivers 44% faster token generation (65.4 tok/s vs 45.6 tok/s) across all context lengths:
| Context Length | Model | TTFT (ms) | Prefill Throughput | Decode Speed | Peak VRAM |
|---|---|---|---|---|---|
| 512 | BareTorch-2.5B (Compiled) | 18.22 ms | 28,108.3 tok/s | 66.17 tok/s | 4.77 GB |
| 512 | Qwen3.5-2B-Base | 39.93 ms | 12,821.2 tok/s | 45.53 tok/s | 4.52 GB |
| 1,024 | BareTorch-2.5B (Compiled) | 27.95 ms | 36,631.8 tok/s | 65.45 tok/s | 4.81 GB |
| 1,024 | Qwen3.5-2B-Base | 38.75 ms | 26,425.4 tok/s | 45.29 tok/s | 4.56 GB |
| 2,048 | BareTorch-2.5B (Compiled) | 50.46 ms | 40,583.0 tok/s | 65.41 tok/s | 4.88 GB |
| 2,048 | Qwen3.5-2B-Base | 49.93 ms | 41,020.3 tok/s | 45.69 tok/s | 4.64 GB |
| 4,096 | BareTorch-2.5B (Compiled) | 103.03 ms | 39,756.7 tok/s | 65.39 tok/s | 5.03 GB |
| 4,096 | Qwen3.5-2B-Base | 103.54 ms | 39,558.0 tok/s | 45.70 tok/s | 4.81 GB |
| 8,192 | BareTorch-2.5B (Compiled) | 219.34 ms | 37,348.6 tok/s | 65.36 tok/s | 5.34 GB |
| 8,192 | Qwen3.5-2B-Base | 231.62 ms | 35,368.6 tok/s | 45.57 tok/s | 5.14 GB |
| 16,384 | BareTorch-2.5B (Compiled) | 461.37 ms | 35,511.6 tok/s | 66.15 tok/s | 5.94 GB |
| 16,384 | Qwen3.5-2B-Base | 487.32 ms | 33,620.6 tok/s | 46.17 tok/s | 5.80 GB |
| 32,768 | BareTorch-2.5B (Compiled) | 995.40 ms | 32,919.4 tok/s | 63.79 tok/s | 7.14 GB |
| 32,768 | Qwen3.5-2B-Base | 1,044.72 ms | 31,365.4 tok/s | 45.82 tok/s | 7.12 GB |
📐 Model Architecture & Pre-Training Specifications
| Specification | Configuration |
|---|---|
| Source Code Repository | https://github.com/martin-kbcc/baretorch |
| Total Parameters | 2.53 Billion (Untied Input/Output Embeddings) |
| Total Layers | 24 Layers (18 CS-LRAD Recurrent Layers + 6 Transformer GQA Layers) |
| Interleaved Layer Pattern | [cs_lrad, cs_lrad, cs_lrad, transformer] x 6 (3:1 Hybrid Ratio) |
Hidden Dimension (d_model) |
2,048 |
| Attention Heads | 16 Query Heads / 4 KV Heads (GQA 4:1, head_dim = 128) with Per-Head QK-Norm |
| CS-LRAD Chunk Size & Rank | chunk_size = 32, Low-Rank State Subspace rank = 16 |
| Pre-Training Sequence Length | 2,048 tokens (rope_theta = 10,000.0) |
| Tokenizer | Qwen/Qwen3.5-9B (vocab_size = 248,077) |
| Pre-Training Token Volume | 75 Billion Tokens (142,000 steps @ 524,288 tokens/step) |
| Distillation Objective | Teacher: Qwen/Qwen3.5-9B (0.5 * CrossEntropy + 0.5 * Top4_KL, T = 1.0) |
| Optimizer & WSD Schedule | AdamW (lr = 3e-4, weight_decay = 0.1, warmup = 1,000 steps, 90% Stable / 10% Cosine Decay) |
| Training Hardware | 8x NVIDIA H100 SXM5 (80GB) with PyTorch FSDP (ZeRO-2) & torch.compile |
| Training Corpus Mix | General Phase (90% / 67.5B tokens): FineWeb-Edu, The Stack Dedup, DCLM, FinePDFs WSD Annealing Phase (10% / 7.5B tokens): FineMath-4+, Cosmopedia-v2, OpenR1-Math |
💻 Quickstart Usage
1. PyTorch via Hugging Face transformers (Zero Installation Required)
You can load BareTorch-2.5B-Base directly using standard Hugging Face AutoModelForCausalLM with trust_remote_code=True—no custom packages or repositories required:
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
model_id = "model-rampage/BareTorch-2.5B-Base"
tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
model_id,
torch_dtype=torch.bfloat16,
device_map="cuda",
trust_remote_code=True,
)
model.eval()
# Optional: Compile CS-LRAD recurrent blocks for peak CUDA speed (~65.6 tok/s)
model.compile_lrad()
prompt = "The biggest advantage of running a pure-GEMM subquadratic language model on edge devices is"
inputs = tokenizer(prompt, return_tensors="pt").to("cuda")
with torch.no_grad():
outputs = model.generate(
**inputs,
max_new_tokens=64,
do_sample=False,
)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
2. Apple Silicon (Native MLX — 4-Bit Quantized or FP16)
For native Apple Silicon MLX execution, install the official BareTorch repository from GitHub (https://github.com/martin-kbcc/baretorch):
git clone https://github.com/martin-kbcc/baretorch.git
cd baretorch
pip install -e .
import mlx.core as mx
import mlx.nn as nn
from transformers import AutoTokenizer
from baretorch.integration_mlx.modeling_baretorch import (
BareTorchForCausalLMMLX,
extract_baretorch_cache_arrays,
)
model_path = "./BareTorch-2.5B-Base" # Local clone of model-rampage/BareTorch-2.5B-Base
tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)
model = BareTorchForCausalLMMLX.from_pretrained(model_path, dtype=mx.float16, fuse=True)
# Optional: Quantize in-place to 4-bit (~99 tok/s decode, 3.52 GB RAM @ 32k context)
nn.quantize(
model,
group_size=64,
bits=4,
class_predicate=lambda p, m: hasattr(m, "weight") and m.weight.ndim == 2 and m.weight.shape[-1] % 64 == 0,
)
mx.eval(model.parameters())
prompt = "Edge AI applications require models that can process large documents locally because"
input_ids = mx.array([tokenizer.encode(prompt)])
logits, past_kv = model(input_ids, use_cache=True, num_logits_to_keep=1)
next_token = mx.argmax(logits[:, -1:, :], axis=-1)
mx.eval(next_token, extract_baretorch_cache_arrays(past_kv))
🗺️ Release Roadmap
- Phase 1 — Foundational Pre-Training & Distillation:
BareTorch-2.5B-Basetrained on 75B tokens at 2,048 context length. - Phase 2 — Long-Context Extension (In Progress): Context window expansion from 2,048 to 16,384 / 32,768 tokens.
- Phase 3 — Supervised Fine-Tuning (In Progress):
BareTorch-2.5B-Instructtuned for long-context document QA, coding, and reasoning (<think>).
📜 Citation
@article{kovacevic2026baretorch,
title={BareTorch: Challenging State-of-The-Art Sequence Mixing Topologies via Kernel-Free, Pure GEMM-Compliant Architectures},
author={Kovacevic Buvinic, Martin Ignacio},
journal={BareTorch Framework Laboratory Technical Report},
year={2026},
url={https://github.com/martin-kbcc/baretorch}
}
- Downloads last month
- 408
Quantized