Instructions to use MatterWaveAI/grt-30m with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use MatterWaveAI/grt-30m with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="MatterWaveAI/grt-30m")# pip install -U transformers accelerate # Load model directly from transformers import AutoModelForCausalLM model = AutoModelForCausalLM.from_pretrained("MatterWaveAI/grt-30m", device_map="auto") - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- llama.cpp
How to use MatterWaveAI/grt-30m with llama.cpp:
Install (macOS, Linux)
curl -LsSf https://llama.app/install.sh | sh # Start a local OpenAI-compatible server with a web UI: llama serve -hf MatterWaveAI/grt-30m:F32 # Run inference directly in the terminal: llama cli -hf MatterWaveAI/grt-30m:F32
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf MatterWaveAI/grt-30m:F32 # Run inference directly in the terminal: llama cli -hf MatterWaveAI/grt-30m:F32
Build from source code
git clone https://github.com/ggml-org/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-app # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama serve -hf MatterWaveAI/grt-30m:F32 # Run inference directly in the terminal: ./build/bin/llama cli -hf MatterWaveAI/grt-30m:F32
Use Docker
docker model run hf.co/MatterWaveAI/grt-30m:F32
- Llama new
- LM Studio
- Jan
- vLLM
How to use MatterWaveAI/grt-30m with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "MatterWaveAI/grt-30m" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "MatterWaveAI/grt-30m", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker
docker model run hf.co/MatterWaveAI/grt-30m:F32
- SGLang
How to use MatterWaveAI/grt-30m 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 "MatterWaveAI/grt-30m" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "MatterWaveAI/grt-30m", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'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 "MatterWaveAI/grt-30m" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "MatterWaveAI/grt-30m", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }' - Ollama
How to use MatterWaveAI/grt-30m with Ollama:
ollama run hf.co/MatterWaveAI/grt-30m:F32
- Unsloth Desktop
- Docker Model Runner
How to use MatterWaveAI/grt-30m with Docker Model Runner:
docker model run hf.co/MatterWaveAI/grt-30m:F32
- Lemonade
How to use MatterWaveAI/grt-30m with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull MatterWaveAI/grt-30m:F32
Run and chat with the model
lemonade run user.grt-30m-F32
List all available models
lemonade list
- Atomic Chat
GRT-30M (24-Hour Qwen 3 Distillation Preview)
A Geometric Rotation Transformer (GRTForCausalLM) distilled from Qwen 3 (sharing the 151,669-token Qwen 3 BPE vocabulary) in a single 24-hour distillation run (10.79B tokens at ~123.9k tok/s across 8x NVIDIA A100-SXM4-80GB). GRT replaces every dense linear projection (nn.Linear) in attention (Q, K, V, O) and feed-forward (expand, contract) with cascades of content-modulated 2Γ2 Givens rotations on SO(D) interleaved with butterfly permutations.
This is a base research checkpoint distilled from Qwen 3, not an instruction-tuned assistant. It demonstrates that a rotation-only student backbone with just 9.74M non-embedding parameters (29.31M total stored parameters with the 151,669-token Qwen 3 vocabulary):
- Distills stably from Qwen 3 at
123,900 tok/stoval_loss = 4.4776(val_ppl = 88.02,27.2%top-1 token accuracy over a151,669-token vocabulary). - Achieves bit-for-bit 4-way greedy generation parity across PyTorch ROCm (
gfx1151),llama.cppCPU (AVX2),llama.cppVulkan (RADV), andllama.cppROCm (HIP). - Runs at
3,790 tok/sprefill (Vulkan) and87.4 tok/sdecode (CPU, 16 threads) in pureFP32on an AMD Ryzen AI Max+ 395 (Strix Halo/gfx1151), and5,760 tok/sforward inBF16with the fused GRT HIP kernels. - Beats random chance across 6 of 7 zero-shot multiple-choice benchmarks (
ARC-Easy 29.50%,HellaSwag 29.20%,OpenBookQA 28.40%,CommonsenseQA 21.70%,BoolQ 51.53%,QNLI 51.50%), matching dense models (Pythia-14M/Pythia-31M) of comparable backbone capacity.
Model Details
| Property | Value |
|---|---|
| Architecture | GRTForCausalLM (model_type: "grt", grt30m_kd) |
| Training paradigm | Knowledge distillation from Qwen 3 |
| Total stored parameters | 29,305,498 (29.31M) |
| Non-embedding backbone parameters | 9,740,197 (9.74M across 12 blocks) |
| Dense-equivalent parameters | 55,680,446 (55.68M) |
hidden_size (d_model) |
256 |
num_hidden_layers (n_blocks) |
12 |
num_attention_heads (n_heads) |
4 (head_dim = 64) |
intermediate_size (d_ff) |
1,024 |
n_qkv_rotations / n_mixer_rotations / ffn_n_rotations |
11 / 1 / 21 |
| Vocabulary | 151,669 (Qwen 3 BPE, tied polar cosine head) |
Context length (max_position_embeddings) |
2,048 |
| Weight files | model.safetensors (116 MB), grt-30m-f32.gguf (340 MB) |
Because grt-30m shares the full 151,669-token Qwen 3 vocabulary at hidden_size = 256 for direct token-aligned distillation from Qwen 3, the tied polar embedding table (phase_angles [151669, 128] + log_magnitude [151669]) accounts for 19.57M parameters (66.8% of stored weights), leaving 9.74M stored parameters for the 12-layer rotational transformer backbone.
24-Hour Qwen 3 Distillation Summary
| Metric | Value |
|---|---|
| Teacher family / Tokenizer | Qwen 3 (151,669-token Qwen 3 BPE vocabulary) |
| Student config | grt30m_kd (d_model = 256, 12 rotational blocks, 9.74M non-embedding params) |
| Training corpus mix | fineweb-edu (45%), cosmopedia-v2 (20%), wikipedia (15%), finemath (12%), stack-edu (8%) |
| Hardware | 8x NVIDIA A100-SXM4-80GB (DDP + Fused CUDA Givens Kernels) |
| Wall-clock duration | 24.0 hours (86,969s) |
| Tokens trained | 10,789,404,672 (10.79B tokens, 20,580 steps) |
| Global batch size | 524,288 tokens/step (micro_batch = 32, grad_accum = 1, seq_len = 2048, 8 GPUs) |
| Sustained throughput | 123,900 tok/s (~15,490 tok/s/GPU, zero NaNs or gradient spikes) |
| Optimizer | PairAdam (factored second moments for 2D coupling matrices + angular step clamping) |
| Learning rate | Peak 1e-3, WSD schedule (checkpoint-20000 saved at 20,000 / 57,220 steps) |
| Final validation loss / PPL (FineWeb-Edu) | val_loss = 4.4776 / val_ppl = 88.02 (top-1 token acc = 27.20%) |
4-Backend Exact Greedy Generation Parity
model.safetensors (transformers) and grt-30m-f32.gguf (llama.cpp) produce identical token-for-token greedy continuations (temperature = 0, 16 new tokens) across all four supported backends on AMD Strix Halo (gfx1151):
- PyTorch ROCm (
gfx1151, fused HIP kernels) llama.cppCPU (x86_64 AVX2)llama.cppVulkan (RADV gfx1151)llama.cppROCm (HIP gfx1151)
| Prompt | Greedy continuation (16 tokens, identical on all 4 backends) |
|---|---|
The capital of France is |
The capital of France is the first to be the first to be the first to be the first to be |
Once upon a time |
Once upon a time, you might be wondering what exactly is the way to do with the right point |
In the beginning |
In the beginning of the world, the world is the most common form of the world. The |
Benchmarks
1. Zero-Shot Multiple-Choice & Held-Out Perplexity
Evaluated zero-shot (no task fine-tuning) via teacher-forced length-normalized log-likelihood scoring on checkpoint-20000:
| Benchmark | Split (n) |
GRT-30M |
Random Baseline | Delta vs. Random |
|---|---|---|---|---|
ARC-Easy (allenai/ai2_arc) |
test (2,376) |
29.50% |
25.00% |
+4.50% |
HellaSwag (Rowan/hellaswag) |
val (1,000) |
29.20% |
25.00% |
+4.20% |
OpenBookQA (allenai/openbookqa) |
test (500) |
28.40% |
25.00% |
+3.40% |
CommonsenseQA (tau/commonsense_qa) |
val (1,221) |
21.70% |
20.00% |
+1.70% |
BoolQ (google/boolq) |
val (3,270) |
51.53% |
50.00% |
+1.53% |
QNLI (nyu-mll/glue) |
val (1,000) |
51.50% |
50.00% |
+1.50% |
ARC-Challenge (allenai/ai2_arc) |
test (1,172) |
21.08% |
25.00% |
-3.92% |
| Held-Out Language Modeling | Split / Tokens | Loss (NLL) | Perplexity (151k vocab) | Top-1 Token Acc |
|---|---|---|---|---|
| FineWeb-Edu (In-Domain Val) | val (step 20,580) |
4.4776 |
88.02 |
27.20% |
WikiText-2 (wikitext-2-raw-v1) |
test (297,984 toks, T=1024) |
5.0305 |
153.01 |
25.71% |
2. Inference & Kernel Throughput on AMD Strix Halo (Radeon 8060S / gfx1151)
llama.cpp (grt-30m-f32.gguf, FP32)
| Backend | Prefill pp128 (tok/s) |
Prefill pp512 (tok/s) |
Decode tg32 (tok/s) |
Decode tg64 (tok/s) |
|---|---|---|---|---|
Vulkan (-ngl 99) |
1,947.0 | 3,790.1 | 49.0 | 49.9 |
CPU (-t 16, AVX2) |
754.1 | 905.4 | 86.5 | 87.4 |
ROCm (-ngl 99) |
181.9 | 195.0 | 37.7 | 37.5 |
PyTorch ROCm (gfx1151, BF16, Fused HIP Kernels)
| Workload | Batch Γ Seq (B Γ T) |
Latency (ms) |
Throughput (tok/s) |
|---|---|---|---|
Prefill (B=1, T=512) |
1 x 512 |
129.36 |
3,957.9 |
Prefill (B=1, T=2048) |
1 x 2048 |
357.89 |
5,722.5 |
Forward (B=4, T=512, Fused HIP) |
4 x 512 |
355.58 |
5,759.6 |
Training Step (Fwd + Bwd, Fused HIP) |
4 x 512 |
1,771.68 |
1,156.0 |
Usage
PyTorch (transformers)
import torch
from transformers import AutoTokenizer, GRTForCausalLM
# Optional: register fused CUDA/ROCm Givens kernels if grt-kernels is installed
try:
from grt_kernels.torch_ops import ensure_grt_ops
ensure_grt_ops()
except ImportError:
pass
model_id = "MatterWaveAI/grt-30m"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = GRTForCausalLM.from_pretrained(model_id, dtype=torch.float32).eval()
prompt = "The history of the city"
input_ids = tokenizer(prompt, return_tensors="pt").input_ids
with torch.no_grad():
output = model.generate(input_ids, max_new_tokens=32, do_sample=False)
print(tokenizer.decode(output[0], skip_special_tokens=True))
llama.cpp (GGUF)
./build/bin/llama-completion \
-m grt-30m-f32.gguf \
-p "Once upon a time" \
-n 32 --temp 0 --seed 0
Verify file integrity against SHA256SUMS:
sha256sum --ignore-missing -c SHA256SUMS
Architecture Overview
GRT replaces dense weight matrices (nn.Linear) in both attention and FFN blocks with cascades of learned 2Γ2 Givens rotations arranged in a butterfly topology. At each stage k, pairs of coordinates (x0, x1) are rotated by an angle theta_k modulated by 4-component Cl(2,0) multivector features:
feat(x0, x1) = [x0^2 + x1^2, x0, x1, x0 * x1_next - x1 * x0_next]
theta_k = alpha_k + tanh(norm(feat(x0, x1)) @ C_k)
r0 = x0 * cos(theta_k) - x1 * sin(theta_k)
r1 = x0 * sin(theta_k) + x1 * cos(theta_k)
GRTEmbedding&GRTCosineHeadβ Token embeddings are stored in polar form (phase_angles+log_magnitude) and tied to a scaled cosine-similarity language modeling head (lm_head.output_scale = 40.23).GRTAttentionβ 11-stage content-modulated Givens butterfly cascades forQ, K, V, O, paired with standard scaled dot-product attention and learnable RoPE frequencies.GRTMixer&GRTFFNβ Cross-head Givens mixing stage followed by 21-stage rotational FFN expansion/contraction and phase-preservingGRTRadialGELU.GRTPearlNormβ Pair-aware RMS normalization that normalizes pair radiisqrt(x_{2i}^2 + x_{2i+1}^2)while preserving phase angles.
Intended Use & Limitations
- Research preview. Intended for studying geometric/rotational neural architectures, kernel benchmarking, and multi-backend (
PyTorch/llama.cpp/vLLM) verification. - Base causal LM only. Not instruction-tuned, no chat template, no safety filtering, and prone to repetition under greedy decoding at small parameter scale.
License
Apache 2.0
- Downloads last month
- 56