Instructions to use Dexy2/Piko-9b with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use Dexy2/Piko-9b with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("image-text-to-text", model="Dexy2/Piko-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)# Load model directly from transformers import AutoProcessor, AutoModelForMultimodalLM processor = AutoProcessor.from_pretrained("Dexy2/Piko-9b") model = AutoModelForMultimodalLM.from_pretrained("Dexy2/Piko-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=40) print(processor.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use Dexy2/Piko-9b with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "Dexy2/Piko-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": "Dexy2/Piko-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/Dexy2/Piko-9b
- SGLang
How to use Dexy2/Piko-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 "Dexy2/Piko-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": "Dexy2/Piko-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 "Dexy2/Piko-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": "Dexy2/Piko-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 Dexy2/Piko-9b with Docker Model Runner:
docker model run hf.co/Dexy2/Piko-9b
Evaluation
Everything here exists to answer one question honestly: how does Piko-9b compare to the model it was built from, measured the same way, on the same hardware, on the same day?
Why the base-model comparison matters here
Piko-9b's published weights are a splice: the language backbone comes from a fine-tune of
deepreinforce-ai/Ornith-1.0-9B, the vision tower is copied verbatim from Qwen/Qwen3.5-9B
(lineage). That makes two comparisons meaningful, and they
answer different questions:
| Comparison | Question it answers |
|---|---|
Piko-9b vs Qwen/Qwen3.5-9B |
Did the composition help or hurt relative to the model whose vision tower it borrowed? |
Piko-9b vs deepreinforce-ai/Ornith-1.0-9B |
What did the WraithFast fine-tuning chain change? |
The configured default is Qwen/Qwen3.5-9B, because that is the model whose vision tower Piko-9b
ships and therefore the fairest reference for any multimodal claim.
Rules this harness enforces
- Identical everything. Both models run with the same prompts, chat template application,
precision, quantization, batch size, decoding parameters, seed, and dataset slice. The config
files differ only in
model_id. - No placement shortcuts. Every model is loaded fully resident on one GPU. CPU offload corrupts Piko-9b's linear-attention state and produces a constant token — a broken run that looks like a catastrophic benchmark score. See troubleshooting.
- Failures are recorded, never dropped. Every result file has a
failureslist. A benchmark that could not run appears as"Not run"with a reason, never as a blank or a plausible-looking number. - Provenance in every file. Model id, revision, timestamp, hardware, OS, Python, torch, transformers, precision, quantization, batch size, generation parameters, dataset version, seed, example count, failure count, and any deviation from the standard benchmark protocol.
Layout
evaluation/
├── README.md this file
├── requirements.txt evaluation-only dependencies
├── run_all.py full sweep across both models
├── run_smoke_eval.py ~5 minute sanity check
├── compare_results.py builds the side-by-side table
├── configs/
│ ├── piko_9b.yaml
│ └── base_model.yaml
├── prompts/ shared prompt templates and fixtures
├── results/ JSON output, one file per model per suite
└── custom_suite/ 65-case deterministic regression suite
Running
Sanity check first — it catches a broken environment in minutes rather than hours:
python evaluation/run_smoke_eval.py --config evaluation/configs/piko_9b.yaml
The custom regression suite (no dataset downloads, fully deterministic):
python evaluation/custom_suite/build_assets.py
python evaluation/custom_suite/run_custom_eval.py \
--model Dexy2/Piko-9b --quantization 4bit \
--output evaluation/results/custom_suite_piko9b.json
Both models, then compare:
python evaluation/run_all.py --config evaluation/configs/piko_9b.yaml
python evaluation/run_all.py --config evaluation/configs/base_model.yaml
python evaluation/compare_results.py \
--candidate evaluation/results/custom_suite_piko9b.json \
--baseline evaluation/results/custom_suite_qwen35.json \
--output evaluation/results/comparison.md
Cost before you start
Measured on an RTX 5070 Ti (17.1 GB), 4-bit NF4, weights on NVMe.
| Suite | Examples | Approx. runtime per model | VRAM |
|---|---|---|---|
run_smoke_eval.py |
8 | 3–6 min | 8 GB |
custom_suite |
65 | 35–60 min | 8 GB |
| GSM8K (200-item slice) | 200 | 1.5–2.5 h | 8 GB |
| MMLU-Pro (200-item slice) | 200 | 1–2 h | 8 GB |
| IFEval (200-item slice) | 200 | 1–2 h | 8 GB |
| OCRBench / DocVQA / ChartQA slices | 200 each | 1.5–3 h each | 9 GB |
Add ~10 minutes of cold-load time per model per invocation, and double everything because each number needs a baseline run to mean anything.
Loading from an external USB disk adds 10–20 minutes per load. Copy the weights to internal NVMe first.
Which benchmarks were actually run
See the results table in the model card. Anything not executed is labelled
Not run there and in evaluation/results/, with the reason. The scripts for unexecuted
benchmarks are present and runnable — they were not executed here for time and hardware reasons,
not because they are unfinished.
A note on the previously published numbers
The nine benchmark scores in the original Piko-9b model card were measured on
wraithfast-phase14-100k-full-ft + adapters/wraithfast-phase15-150k-qlora, a text-only
checkpoint that predates the vision composition and contains none of the Piko training stages.
They are not results for the published model and are not reproduced here. Details:
reports/repository_audit.md §5.