--- library_name: transformers base_model: Qwen/Qwen3-8B-Base tags: - multilingual - reasoning - LLM - qwen3 license: apache-2.0 datasets: - lightonai/Dolci-Think-SFT-32B-Multilingual language: - sw pipeline_tag: text-generation --- # Qwen3-8B-SW `Qwen3-8B-SW` is a **native reasoning model** fine-tuned from [`Qwen/Qwen3-8B-Base`](https://huggingface.co/Qwen/Qwen3-8B-Base) to reason in Swahili. This model produces its **entire reasoning trace in Swahili** before delivering the final answer in Swahili. It is released alongside the paper [**Rethinking the Multilingual Reasoning Gap with Layer Swap**](https://arxiv.org/abs/2605.26735). ## Model details - **Base model:** `Qwen/Qwen3-8B-Base` - **Language:** Swahili (CoT and answer) - **Training:** Full SFT, ~10B tokens, 2 epochs - **Context length:** 32,768 tokens - **Dataset:** [`lightonai/Dolci-Think-SFT-32B-Multilingual`](https://huggingface.co/datasets/lightonai/Dolci-Think-SFT-32B-Multilingual) (Swahili split). > [!NOTE] > The model was trained on data derived from `allenai/Dolci-Think-SFT-32B`, released under the ODC-BY-1.0 license. ## Related models This model is part of a Swahili specialist trio designed to study the native reasoning gap: | Model | CoT language | Description | |---|---|---| | [`lightonai/Qwen3-8B-SW`](https://huggingface.co/lightonai/Qwen3-8B-SW) | Swahili | Native reasoning specialist | | [`lightonai/Qwen3-8B-SW-Swap`](https://huggingface.co/lightonai/Qwen3-8B-SW-Swap) | Swahili | Layer Swap: middle layers (L13–L22) of `Qwen3-8B-EN` transplanted into `Qwen3-8B-SW` | | [`lightonai/Qwen3-8B-SW-Pivot-EN`](https://huggingface.co/lightonai/Qwen3-8B-SW-Pivot-EN) | English | Same Swahili Q&A pairs, but CoT in English | | [`lightonai/Qwen3-8B-EN`](https://huggingface.co/lightonai/Qwen3-8B-EN) | English | English specialist | ## Evaluation All scores are mean accuracy (%) on the **Swahili** version of each benchmark, with sample standard deviation across runs. AIME 24/25 is averaged over 30 runs; the others over 10 runs, using the recommended generation parameters. | Model | MGSM-Rev2 | Global-MMLU-Lite | GPQA-Diamond | AIME 24/25 | HumanEvalPlus | Average | |---|:---:|:---:|:---:|:---:|:---:|:---:| | `Qwen3-8B-SW` | 93.16 | 61.98 | 49.39 | 47.67 | 82.69 | 66.98 | | `Qwen3-8B-SW-Swap` | 96.12 | 64.10 | 49.29 | 50.33 | 85.62 | 69.09 | | `Qwen3-8B-SW-Pivot-EN` | 89.68 | 66.00 | 52.73 | 59.67 | 84.50 | 70.52 | | `Qwen3-8B-EN` | 35.88 | 33.88 | 36.82 | 24.78 | 58.44 | 37.96 | **Benchmarks used:** - [`lightonai/gpqa_diamond_multilingual`](https://huggingface.co/datasets/lightonai/gpqa_diamond_multilingual) - [`lightonai/aime24_multilingual`](https://huggingface.co/datasets/lightonai/aime24_multilingual) - [`lightonai/aime25_multilingual`](https://huggingface.co/datasets/lightonai/aime25_multilingual) - [`lightonai/HumanEvalPlus_multilingual`](https://huggingface.co/datasets/lightonai/HumanEvalPlus_multilingual) - [`lightonai/mgsm-rev2`](https://huggingface.co/datasets/lightonai/mgsm-rev2) - [`CohereLabs/Global-MMLU-Lite`](https://huggingface.co/datasets/CohereLabs/Global-MMLU-Lite) ## Usage ```python from transformers import AutoModelForCausalLM, AutoTokenizer model_name = "lightonai/Qwen3-8B-SW" tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForCausalLM.from_pretrained(model_name, torch_dtype="auto", device_map="auto") messages = [{"role": "user", "content": "Suluhisha: 24 × 17 = ?"}] inputs = tokenizer.apply_chat_template(messages, return_tensors="pt", add_generation_prompt=True).to(model.device) outputs = model.generate(inputs, max_new_tokens=32768, temperature=1.0, top_p=0.95, top_k=20) print(tokenizer.decode(outputs[0][inputs.shape[-1]:], skip_special_tokens=True)) ``` Recommended sampling: `temperature=1.0`, `top_p=0.95`, `top_k=20`, `min_p=0`. ## Citation If you find our work helpful, feel free to give us a cite. ```bibtex @misc{lasbordes2026rethinking, title = {Rethinking the Multilingual Reasoning Gap with Layer Swap}, author = {Lasbordes, Maxence and Chatelain, Amélie and Seddah, Djamé}, year = {2026}, eprint = {2605.26735}, archivePrefix= {arXiv}, primaryClass = {cs.CL} } ```