IFM/Jais-3-MoVA-36B-A4B-FP8
- License
- apache-2.0
- Size
- not mirrored yet
No official torrent yet — requesting it tells the flock what to host next. You cannot seed a catalog-only page.
Cataloged from IFM/Jais-3-MoVA-36B-A4B-FP8
All models by IFM →No official torrent yet — requesting it tells the flock what to host next. You cannot seed a catalog-only page.
Cataloged from IFM/Jais-3-MoVA-36B-A4B-FP8
All models by IFM →[!NOTE] This repository contains an FP8-quantized version of inception42/Jais-3-MoVA-36B-A4B.
Only the routed-expert linear layers in transformer layers 3–47 are quantized to FP8:
- Weights: static FP8 E4M3FN, one FP32 scale per 128*128 block.
- Activations: dynamic FP8, one scale per 1*128 group along the input-channel dim.
All other source-model tensors (attention, shared experts, routers, the first 3 dense layers, MoVA value experts, norms, embeddings, and lm_head) are kept in BF16.
The FP8 model performs closely in line with the original BF16 model on our evaluations, while reducing memory footprint and enabling faster inference on FP8-capable hardware.
Serving note: the routed experts' intermediate size (768) is splittable into whole 128-wide quantization blocks at TP=1 and TP=2, so these tensor-parallel sizes are recommended.
Jais-3-MoVA-36B-A4B is the sparse member of the Jais-3 family: a Mixture-of-Experts model with Mixture-of-Values attention (MoVA) that stores 36B parameters and runs 4B per token, with a 512K context window.
[!TIP] Other formats are available in the IFM/Jais-3 collection:
- GGUF for llama.cpp and Ollama: IFM/Jais-3-MoVA-36B-A4B-GGUF
- MLX for Apple silicon:
[Image blocked: Jais-3-MoVA-36B-A4B benchmark results]
[!NOTE] Starred (*) benchmarks have been audited for sample quality. Items with ambiguous questions, invalid answer options, or indefensible gold labels were excluded, since they can penalize a correct answer or reward a lucky guess. Scores on these benchmarks are reported on the cleaned sets. The audit methodology, the excluded samples and the verified benchmarks are available in the IFM/Arabic-Benchmark-Auditing collection.
[!NOTE] Benchmarks marked with ^ will be released by IFM soon.
vLLM (vllm>=0.30.0) · vLLM recipe:
Use an exact branch name from the inventory with vLLM's --revision option.
SGLang (sglang>=0.5.20) · SGLang recipe:
.tabsA { position: relative; margin: 12px 0 18px; } .tabsA input { position: absolute; opacity: 0; pointer-events: none; } .tabsA .barA { display: flex; gap: 2px; border-bottom: 1px solid rgba(128,128,128,0.35); } .tabsA .barA label { padding: 9px 18px; margin-bottom: -1px; font-size: 13.5px; font-weight: 600; letter-spacing: 0.01em; cursor: pointer; opacity: 0.6; border-bottom: 3px solid transparent; transition: opacity 0.15s, border-color 0.15s; } .tabsA .barA label:hover { opacity: 1; } #a1:checked ~ .barA label[for="a1"], #a2:checked ~ .barA label[for="a2"] { opacity: 1; border-bottom-color: #0b9573; } #a1:focus-visible ~ .barA label[for="a1"], #a2:focus-visible ~ .barA label[for="a2"] { outline: 2px solid #0b9573; outline-offset: -2px; } .tabsA .pA { display: none; } #a1:checked ~ .p1, #a2:checked ~ .p2 { display: block; } .tabsA .pA pre { margin: 0; border: 1px solid rgba(128,128,128,0.25); border-top: none; border-radius: 0 0 8px 8px; }[!TIP] Recommended settings:
reasoning_effort="high", the sampling hyperparameters in the table below, and at least 32,768 output tokens. Reasoning depth is selected per request throughchat_template_kwargs. Thinking is returned inreasoning_contentand the answer incontent.
Our model supports multiple tool-call formats, which can be changed with chat_template_kwargs. The supported values are json, xml, and xml_typed. The default is xml. Keep --tool-call-parser k2_horizon enabled to parse the selected format.
Validated with Transformers 5.15.0, PyTorch 2.13.0, Safetensors 0.8.0.
The table below lists the release artifacts for Jais-3-MoVA-36B-A4B.
Model repository: inception42/Jais-3-MoVA-36B-A4B
Branch names below refer to this repository.
high. All reported results use high reasoning effort. Pass {"chat_template_kwargs": {"reasoning_effort": "high"}} on every request. No reasoning ({"reasoning_effort": "low"}) is not recommended except for research on reasoning efforts.temperature=0.2, top_p=0.95, top_k=20 by default. In thinking mode, set temperature=1.0 for English and temperature=0.7 for Arabic. Keep min_p=0.0, presence_penalty=0.0 and repetition_penalty=1.0.k2_horizon reasoning parser for chat, and add the k2_horizon tool-call parser for agent use. Leave both off for plain completion-style generation.Intended use: The model is designed for Arabic and English assistant and agentic applications, including reasoning and tool-use tasks, as well as for research and experimentation.
Out of scope: The model should not be used in ways that violate applicable laws or regulations. The following uses are also considered out of scope:
Limitations: The model can produce inaccurate or made-up content and may reflect biases present in its training data. Evaluate it for your use case and add safeguards before deploying it.
vllm serve inception42/Jais-3-MoVA-36B-A4B \ --trust-remote-code \ --dtype bfloat16 \ --tensor-parallel-size 2 \ --enable-expert-parallel \ --reasoning-parser k2_horizon \ --enable-auto-tool-choice \ --tool-call-parser k2_horizonsglang serve \ --model-path inception42/Jais-3-MoVA-36B-A4B \ --tp 2 \ --ep 2 \ --dtype bfloat16 \ --attention-backend fa3 \ --json-model-override-args '{"xllm_source_router_gemm_partitions":2}' \ --reasoning-parser k2_horizon \ --host 0.0.0.0 \ --port 30000 \ --tool-call-parser k2_horizonfrom openai import OpenAIclient = OpenAI(base_url="http://localhost:30000/v1", api_key="EMPTY")response = client.chat.completions.create( model="inception42/Jais-3-MoVA-36B-A4B", messages=[{"role": "user", "content": "لدينا عددان مجموعهما 50 وحاصل ضربهما 600. ما هما العددان؟ اشرح خطوات الحل."}], temperature=0.7, top_p=0.95, max_tokens=32768, extra_body={"top_k": 20, "chat_template_kwargs": {"reasoning_effort": "high"}},)message = response.choices[0].messageprint("Reasoning:", getattr(message, "reasoning_content", None))print("Answer:", message.content)import jsonfrom datetime import datetimefrom zoneinfo import ZoneInfofrom openai import OpenAIclient = OpenAI(base_url="http://localhost:30000/v1", api_key="EMPTY")TIMEZONES = {"أبوظبي": "Asia/Dubai", "الرياض": "Asia/Riyadh", "القاهرة": "Africa/Cairo", "لندن": "Europe/London"}
def get_current_time(city: str) -> dict: if city not in TIMEZONES: return {"error": f"مدينة غير معروفة: {city}"} return {"city": city, "time": datetime.now(ZoneInfo(TIMEZONES[city])).strftime("%H:%M")}
tools = [{ "type": "function", "function": { "name": "get_current_time", "description": "يعيد الوقت الحالي في مدينة معينة", "parameters": { "type": "object", "properties": {"city": {"type": "string", "description": "اسم المدينة بالعربية"}}, "required": ["city"], }, },}]available_tools = {"get_current_time": get_current_time}messages = [{"role": "user", "content": "كم الساعة الآن في القاهرة؟"}]for _ in range(5): # call the model, run any requested tools, repeat until it answers message = client.chat.completions.create( model="inception42/Jais-3-MoVA-36B-A4B", messages=messages, tools=tools, temperature=0.7, top_p=0.95, max_tokens=32768, extra_body={ "top_k": 20, "chat_template_kwargs": {"reasoning_effort": "high", "tool_call_format": "xml"}, }, ).choices[0].message messages.append(message) if not message.tool_calls: break for call in message.tool_calls: tool = available_tools.get(call.function.name) arguments = json.loads(call.function.arguments) result = tool(**arguments) messages.append({"role": "tool", "tool_call_id": call.id, "content": json.dumps(result, ensure_ascii=False)})
print(message.content)from transformers import AutoModelForCausalLM, AutoTokenizermodel_id = "inception42/Jais-3-MoVA-36B-A4B"tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True)model = AutoModelForCausalLM.from_pretrained( model_id, device_map="auto", dtype="bfloat16", low_cpu_mem_usage=True, trust_remote_code=True)inputs = tokenizer("لدينا عددان مجموعهما 50 وحاصل ضربهما 600. ما هما العددان؟ اشرح خطوات الحل.", return_tensors="pt").to(model.device)inputs.pop("token_type_ids", None)outputs = model.generate(**inputs, max_new_tokens=32768, temperature=0.7, top_p=0.95, top_k=20, do_sample=True)print(tokenizer.decode(outputs[0], skip_special_tokens=True))@misc{jais3_2026, title = {Jais 3: Introducing Arabic-centric Agentic AI}, author = {{IFM Team, Inception42 Team, and Cerebras Team}}, year = {2026}, url = {https://ifm.ai/blog/jais3/},}