Instructions to use ukisai/Swift-1.5-Ornith-9B with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use ukisai/Swift-1.5-Ornith-9B with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("image-text-to-text", model="ukisai/Swift-1.5-Ornith-9B") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] pipe(text=messages)# pip install -U transformers accelerate # Load model directly from transformers import AutoProcessor, AutoModelForMultimodalLM processor = AutoProcessor.from_pretrained("ukisai/Swift-1.5-Ornith-9B") model = AutoModelForMultimodalLM.from_pretrained("ukisai/Swift-1.5-Ornith-9B", device_map="auto") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] inputs = processor.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=256) print(processor.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use ukisai/Swift-1.5-Ornith-9B with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "ukisai/Swift-1.5-Ornith-9B" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "ukisai/Swift-1.5-Ornith-9B", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker
docker model run hf.co/ukisai/Swift-1.5-Ornith-9B
- SGLang
How to use ukisai/Swift-1.5-Ornith-9B 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 "ukisai/Swift-1.5-Ornith-9B" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "ukisai/Swift-1.5-Ornith-9B", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'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 "ukisai/Swift-1.5-Ornith-9B" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "ukisai/Swift-1.5-Ornith-9B", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }' - Docker Model Runner
How to use ukisai/Swift-1.5-Ornith-9B with Docker Model Runner:
docker model run hf.co/ukisai/Swift-1.5-Ornith-9B
Swift 1.5 Ornith 9B
Swift 1.5 Ornith 9B is UkisAI's reasoning-efficient derivative of Ornith-1.5-9B. On GPQA-Diamond it uses 25.2% fewer thinking tokens (33.1% fewer on the median) and scores 1.52 pp higher than the base. Across our benchmarks it uses 6–25% fewer thinking tokens on the mean and 12–34% fewer on the median, while staying within 2.3 pp of the base on AIME, IFBench and LiveCodeBench.
This is an experimental Swift release. See Research status and limitations.
Training approach
We built Swift by identifying reasoning-marker tokens that, in our analysis, trigger overthinking in the model's reasoning rollouts. We then fine-tuned the model by penalizing usage of those tokens while it reasons.
Swift produces shorter reasoning traces while keeping accuracy close to the base model. In our testing, Swift 1.5 also hits the output cap less often than the base on every benchmark below.
The vision encoder, the multi-token prediction (MTP) layer, the token embeddings and the output head are unchanged from Ornith-1.5-9B.
Evaluation
All scores compare Ornith-1.5-9B with Swift 1.5 Ornith 9B, both in BF16 with thinking on. Both models used the same harness, sampling, seeds and output cap on every row. Token columns report thinking tokens per attempt; the visible answer is not counted.
| Benchmark | Score | Mean tokens | Median tokens | |||
|---|---|---|---|---|---|---|
| Base | Swift 1.5 | Base | Swift 1.5 | Reduction | Reduction | |
| General reasoning | ||||||
| GPQA-Diamond | 83.00% | 84.51% | 15,760 | 11,782 | ↓ 25.2% | ↓ 33.1% |
| IFBench | 42.60% | 40.47% | 13,409 | 10,790 | ↓ 19.5% | ↓ 24.7% |
| Mathematics | ||||||
| AIME 2026 | 92.67% | 90.67% | 37,872 | 35,460 | ↓ 6.4% | ↓ 29.2% |
| AIME 2024 | 94.00% | 93.33% | 20,776 | 17,266 | ↓ 16.9% | ↓ 12.2% |
| Coding | ||||||
| LiveCodeBench v6 | 59.20% | 56.91% | 41,057 | 34,343 | ↓ 16.4% | ↓ 33.5% |
Swift 1.5 is ahead of base on GPQA-Diamond (+1.52 pp). It trails base on AIME 2024 (−0.67 pp), AIME 2026 (−2.00 pp), IFBench (−2.13 pp) and LiveCodeBench v6 (−2.29 pp).
How to reproduce
Serving: BF16 · tensor parallelism 1 · context 262,144 · thinking on.
Sampling: temperature 1.0 · top_p 0.95 · top_k 20 · min_p 0 · presence_penalty 0.
Scoring: every attempt counts. Request errors, answers cut off at the output cap and empty answers count as wrong.
GPQA-Diamond: 198 questions × 3 seeds. The answer letter comes from the final answer, not from the thinking.
IFBench: 300 prompts × 5 seeds, official prompt-level loose score.
AIME 2026: 30 problems × 5 seeds, reasoning effort xhigh, scorer from UkisAI Benchmark_configs.
AIME 2024: 30 problems from MathArena × 5 seeds.
LiveCodeBench v6: the 175 problems that release v6 added, official pass@1 averaged over 5 seeds, 10-second limit per test.
| Benchmark | Output cap | Cap hits, base | Cap hits, Swift 1.5 |
|---|---|---|---|
| GPQA-Diamond (594 attempts) | 81,920 | 48 | 24 |
| IFBench (1,500 attempts) | 81,920 | 86 | 69 |
| AIME 2026 (150 attempts) | 250,000 | 2 | 0 |
| AIME 2024 (150 attempts) | 250,000 | 1 | 0 |
| LiveCodeBench v6 (875 attempts) | 100,000 | 225 | 149 |
Research status and limitations
This is an experimental research release. Swift 1.5 Ornith 9B thinks less than the base on every benchmark above, but it also scores 0.7 to 2.3 pp lower than the base on AIME, IFBench and LiveCodeBench. Only GPQA-Diamond, the benchmark we used to select this release, is higher.
We have not evaluated it on agentic, tool-use or vision benchmarks, and benchmark scores may not translate into reliable general-purpose behavior. These observations concern the specific model, runtimes and tests we used. This release shares a research result and its current limitations, rather than presenting a production-ready model.
How to use
The BF16 checkpoint is about 19 GB and runs on a single GPU. For the full 262,144-token context, use an 80 GB GPU. It needs the same runtimes as Ornith-1.5-9B: Transformers ≥ 5.8.1, vLLM ≥ 0.19.1 or SGLang ≥ 0.5.9.
The model thinks before it answers. With the qwen3 reasoning parser below, the server returns the thinking in
reasoning_content and the answer in content. We evaluated with temperature=1.0, top_p=0.95, top_k=20, min_p=0.0.
GGUF files for llama.cpp are in ukisai/Swift-1.5-Ornith-9B-GGUF.
vLLM
vllm serve ukisai/Swift-1.5-Ornith-9B \
--dtype bfloat16 \
--max-model-len 262144 \
--enable-prefix-caching \
--reasoning-parser qwen3 \
--enable-auto-tool-choice \
--tool-call-parser qwen3_xml \
--port 8000
SGLang
python -m sglang.launch_server \
--model-path ukisai/Swift-1.5-Ornith-9B \
--dtype bfloat16 \
--context-length 262144 \
--reasoning-parser qwen3 \
--tool-call-parser qwen3_coder \
--port 8000
Both commands start an OpenAI-compatible server on port 8000. Lower the context length if your GPU has less memory. For contexts beyond 262,144 tokens (YaRN), see the Ornith-1.5-9B model card.
Transformers
import torch
from transformers import AutoModelForImageTextToText, AutoProcessor
model_id = "ukisai/Swift-1.5-Ornith-9B"
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForImageTextToText.from_pretrained(
model_id,
torch_dtype=torch.bfloat16,
device_map="auto",
)
Optional MTP decoding
The checkpoint includes the base model's one-layer MTP head. To enable self-speculative decoding, append the corresponding flags to the server command above:
# vLLM
--speculative-config '{"method":"mtp","num_speculative_tokens":3}'
# SGLang
--speculative-algorithm NEXTN --speculative-num-steps 3 \
--speculative-eagle-topk 1 --speculative-num-draft-tokens 4
License and access
Swift 1.5 Ornith 9B is a derivative of Ornith-1.5-9B (Ornith Team, MIT License). UkisAI's contribution, including the adapted weights, is licensed under the Apache License 2.0. See NOTICE for the change notice and attribution details.
The base model's MIT License still applies to the base model. This is an independent UkisAI release, not an official Ornith release or endorsement.
Citation
@misc{swift-1.5-ornith-9b,
title = {Swift 1.5 Ornith 9B},
author = {UkisAI},
year = {2026},
url = {https://huggingface.co/ukisai/Swift-1.5-Ornith-9B}
}
Acknowledgements
We acknowledge Amazon Web Services for providing compute credits and infrastructure support for Swift's development, training, and evaluation.
- Downloads last month
- 34
