Instructions to use IFM/Jais-3-3.7B-MLX-bf16 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- MLX
How to use IFM/Jais-3-3.7B-MLX-bf16 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("IFM/Jais-3-3.7B-MLX-bf16") 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 IFM/Jais-3-3.7B-MLX-bf16 with Pi:
Start the MLX server
# Install MLX LM: uv tool install mlx-lm # Start a local OpenAI-compatible server: mlx_lm.server --model "IFM/Jais-3-3.7B-MLX-bf16"
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": "IFM/Jais-3-3.7B-MLX-bf16" } ] } } }Run Pi
# Start Pi in your project directory: pi
- MLX LM
How to use IFM/Jais-3-3.7B-MLX-bf16 with MLX LM:
Generate or start a chat session
# Install MLX LM uv tool install mlx-lm # Interactive chat REPL mlx_lm.chat --model "IFM/Jais-3-3.7B-MLX-bf16"
Run an OpenAI-compatible server
# Install MLX LM uv tool install mlx-lm # Start the server mlx_lm.server --model "IFM/Jais-3-3.7B-MLX-bf16" # Calling the OpenAI-compatible server with curl curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "IFM/Jais-3-3.7B-MLX-bf16", "messages": [ {"role": "user", "content": "Hello"} ] }' - Hermes Agent
How to use IFM/Jais-3-3.7B-MLX-bf16 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 "IFM/Jais-3-3.7B-MLX-bf16"
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 IFM/Jais-3-3.7B-MLX-bf16
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use IFM/Jais-3-3.7B-MLX-bf16 with OpenClaw:
Start the MLX server
# Install MLX LM: uv tool install mlx-lm # Start a local OpenAI-compatible server: mlx_lm.server --model "IFM/Jais-3-3.7B-MLX-bf16"
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 "IFM/Jais-3-3.7B-MLX-bf16" \ --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"
Jais-3-3.7B (MLX, bf16)
bf16 MLX conversion of IFM/Jais-3-3.7B, converted from revision 4ba23d5. 10.1 GB on disk. For Apple silicon.
Jais-3-3.7B is a small dense Jais-3 model: a 3.7B decoder-only model with a 512K (524,288-token) context window.
Requirements
mlx-lm doesn't support the k2_horizon architecture (used by Jais-3) yet. Until support lands, this repo ships the MLX model code (k2_horizon.py), which mlx-lm loads through the model_file entry in config.json. So the released mlx-lm works as-is:
pip install -U mlx-lm
Pass --trust-remote-code (or trust_remote_code=True). The file runs on your machine, so read it first if you like; its comments describe how it differs from the PyTorch code.
How it was converted
No quantization: the original bf16 weights in MLX format.
Memory
Peak 10.3 GB for a short prompt. The KV cache grows with the context, so long contexts need more memory; --max-kv-size and KV-cache quantization (--kv-bits 8, where available) reduce it.
Conversion check
Checked against the PyTorch code (modeling_k2_horizon.py) in fp32 on the real weights of this model, on English, code, Arabic and math prompts: the logits match to a relative error of 6e-6 or better, the next-token predictions agree at every position, and greedy decoding with the KV cache gives the same tokens as PyTorch (64/64 on every prompt).
Smoke-tested after conversion with released mlx-lm 0.32.0 on English and Arabic chat prompts: answers end normally (the chat template and stop tokens work).
Benchmarks (all Jais-3-3.7B MLX variants)
Perplexity on 128 × 512 tokens (WikiText-2 test, and the first articles of the Arabic Wikipedia dump 20231101.ar; lower is better) and generation speed on an Apple M4 Max, all measured the same way:
| bf16 | 8-bit | 4-bit | |
|---|---|---|---|
| Bits/weight | 16.0 | 8.5 | 6.5 |
| Disk | 10.1 GB | 5.4 GB | 4.1 GB |
| Peak memory | 10.3 GB | 5.6 GB | 4.4 GB |
| WikiText-2 perplexity (English) | 14.984 | 14.994 (+0.1%) | 15.714 (+4.9%) |
| Arabic Wikipedia perplexity | 20.171 | 20.188 (+0.1%) | 21.319 (+5.7%) |
| Generation | 50.4 tok/s | 89.2 tok/s | 115.9 tok/s |
Perplexity is a coarse signal. Test the versions on your own workload before picking one.
Usage
mlx_lm.generate --model IFM/Jais-3-3.7B-MLX-bf16 --trust-remote-code --prompt "ما هي عاصمة الإمارات؟" --max-tokens 2048
from mlx_lm import load, generate
model, tokenizer = load("IFM/Jais-3-3.7B-MLX-bf16", trust_remote_code=True)
messages = [{"role": "user", "content": "Explain mixture-of-experts in two sentences."}]
prompt = tokenizer.apply_chat_template(messages, add_generation_prompt=True)
print(generate(model, tokenizer, prompt, max_tokens=2048))
mlx_lm.chat and mlx_lm.server take the same --trust-remote-code flag.
The model thinks before it answers, inside <ifm|think> … </ifm|think>. Leave room for that in max_tokens. The effort level is set with reasoning_effort in the chat template: "high" (default), "medium" or "low", e.g. apply_chat_template(messages, add_generation_prompt=True, reasoning_effort="low").
Notes:
- Server output: mlx-lm doesn't recognize the
<ifm|think>tags yet, somlx_lm.serverreturns the thinking text insidecontentrather than in a separatereasoningfield. The tool-call format isn't parsed yet either. - Chat template change: the original template raises an error when an earlier assistant message has no thinking field, which is what OpenAI-style clients send. The template here renders empty thinking for those messages instead. Nothing else was changed.
License
Apache-2.0, inherited from the base model. Refer to the original model card for architecture, benchmarks and intended use.
Citation
@misc{ifm2026jais3introducingarabiccentric,
title={Jais 3: Introducing Arabic-centric Agentic AI},
author={Team IFM and Haonan Li and Hadi Abdine and Nikhil Ranjan and Mohamed Anwar and Ahmad Chamma and Amr Mohamed and Ahmed Frikha and Dani Bouch and Maaz Maqsood and George Ibrahim and Mostafa Awad and Nurkhan Laiyk and Hasan Iqbal and Abhishek Maiti and Bilal Bouardi and Shivam Chauhan and Ahmer Tabassum and Owais Aijaz and Omar Arbi and Neha Sengupta and Aaryamonvikram Singh and Abdelhakim Freihat and Sarath Chandran and Rahul Pal and Mohammed Bellam and Sajid Siddiki and Sarah AlBarri and Debopriyo Banerjee and Ali El Filali and Samta Kamboj and Rifo Genadi and Ahmed Attia and Go Inoue and Shuonan Dong and Amine Khelif Khelif and Evan Dufraisse and Florian Valade and Tapas Sen and Guowei He and Sunil Sahu and Onkar Pandit and Kareem Magdy and Sheikh Khalid bin Khalifa Al Nahyan and Samujjwal Ghosh and Zainul Abedien and Ahmed Quraishi and Larry Murray and Avraham Sheinin and Natalia Vassilieva and Preslav Nakov and Guokan Shang and Xuguang Hector Ren and Zhengzhong Liu and Eric Xing},
year={2026},
eprint={2611.10224},
archivePrefix={arXiv},
primaryClass={cs.CL},
url={https://arxiv.org/abs/2611.10224},
}
- Downloads last month
- 861
Quantized
Model tree for IFM/Jais-3-3.7B-MLX-bf16
Base model
inception42/Jais-3-3.7B