Saina Helm 3 MLX
MLX build of run-saina/saina-helm-3-0.8b (model id
saina-helm-3-0.8b) for Apple silicon. Helm 3, natively multimodal: it reads text, images and audio together
in one pass and answers typed questions with a probability for every option. No text is generated.
FP16 weights, loaded with stock mlx-vlm, plus Helm's FP32 answer head.
score.py runs the model the way Helm reads its prompt, builds the prompt with the
saina package and applies the head. mlx_vlm.generate can load these weights but
can't produce Helm's answers; use score.py.
Benchmarks
Saina Helm 3 scores 45.89 on the
Decision Index 0.3 (out of 100, chance-corrected),
measured on run-saina/saina-helm-3-0.8b with the saina runtime.
| Model | Decision Index (text) | Decision Index Vision |
|---|---|---|
| Saina Helm 3 | 45.89 | 47.36 |
| Saina Helm 2 Omni | 37.44 | 46.90 |
Usage
pip install "mlx-vlm>=0.7.8" "saina[tokenize,media]>=0.9.1"
hf download run-saina/saina-helm-3-0.8b-MLX --local-dir helm3-mlx
import sys; sys.path.insert(0, 'helm3-mlx')
from score import Helm
helm = Helm('helm3-mlx')
helm.ask('I was charged twice for my subscription this month.',
[{'question': 'Which team should handle this?', 'choices': ['Billing', 'Technical', 'Other']},
{'question': 'Is this urgent?', 'choices': ['No', 'Yes']}])
helm.ask('A chess puzzle from an online game.',
[{'question': 'Black to move. Which move is best?', 'choices': ['Rf7', 'h6', 'Rxf1', 'a5']}],
images=['board.png']) # PNG, JPEG or WebP, up to 8 images
helm.ask('Inbound call to the bank: a short recording of English speech.',
[{'question': 'Is this speech synthesized or voice-converted by a computer (a spoof)?',
'choices': ['No', 'Yes']}],
audios=['call.wav']) # WAV, FLAC, MP3, Ogg or WebM, up to 10 s each, up to 4 clips
# -> one probability list per question, in the order of `choices`
Each question takes choices and an optional mode: single_label (default; the probabilities sum to 1) or
multi_label (one independent probability per choice). All questions are answered in one pass.
Files
| File | Contents |
|---|---|
model.safetensors |
Model weights, FP16 (MLX) |
experts.safetensors, head-config.json |
Helm's answer head, FP32 |
score.py |
Scorer (prompt and answer head) |
config.json, tokenizer*.json, chat_template.jinja, preprocessor_config.json, processor_config.json |
Model, tokenizer and image processor configuration |
License
Apache 2.0. Built on Qwen/Qwen3.5-0.8B.