Image-Text-to-Text
Transformers
Safetensors
English
qwen3_5
piko
piko-9b
multimodal
vision-language
hybrid-attention
linear-attention
ocr
document-understanding
conversational
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
| # Release Checklist — Piko-9b 1.0.0 | |
| Run 2026-07-29. Every line is either **PASS** with evidence, **FAIL** with the reason, or | |
| **NOT RUN** with why. Nothing is marked done on the strength of an assumption. | |
| ## Model integrity | |
| | Check | Status | Evidence | | |
| |---|---|---| | |
| | `config.json` parses | **PASS** | `scripts/audit_repository.py` | | |
| | Tokenizer loads | **PASS** | `AutoTokenizer` — `TokenizersBackend` | | |
| | Processor loads | **PASS** | `Qwen3VLProcessor`, **requires `torchvision`** | | |
| | Model loads without `trust_remote_code` | **PASS** | `AutoModelForMultimodalLM`, no `auto_map`, no `.py` in repo | | |
| | Parameter count verified | **PASS** | 9,653,104,368 from safetensors headers | | |
| | Shard integrity | **PASS** | 11 shards, 775 tensors, all BF16, 0 unexplained keys | | |
| | Weights unchanged from previous release | **PASS** | Byte-identical; this release changes documentation only | | |
| ## Provenance | |
| | Check | Status | Evidence | | |
| |---|---|---| | |
| | Base model identified | **PASS** | `deepreinforce-ai/Ornith-1.0-9B` + `Qwen/Qwen3.5-9B` | | |
| | Lineage verified at tensor level | **PASS** | 427/427 language + 348/348 vision tensors matched bitwise | | |
| | Adapter presence tested | **PASS** | Both probed adapters **not merged**; `\|cand−lang\| = 0` exactly | | |
| | Ornith's own base model | **NOT VERIFIED** | Card declares none; structural identity to Qwen3.5-9B is an inference | | |
| | Published checkpoint byte-compared to Hub | **NOT RUN** | Verified by file name and byte size only; 21 GB re-download not performed | | |
| ## Documentation honesty | |
| | Check | Status | Evidence | | |
| |---|---|---| | |
| | No fabricated numbers | **PASS** | `scripts/validate_model_card.py` cross-checks every table percentage | | |
| | Unrun benchmarks labelled | **PASS** | 9 standard benchmarks marked **Not run** | | |
| | Base-model scores not presented as Piko's | **PASS** | Misattributed scores removed; explicit warning added | | |
| | Unsupported capabilities not advertised | **PASS** | Video/audio marked unsupported; identity caveat stated | | |
| | Failures recorded, not omitted | **PASS** | 5 suite failures adjudicated in the card; 32K OOM recorded | | |
| | Model card metadata validates | **PASS** | 0 errors, 0 warnings | | |
| | Relative links resolve | **PASS** | Checked by `validate_model_card.py` | | |
| ## Hygiene | |
| | Check | Status | Evidence | | |
| |---|---|---| | |
| | No secrets | **PASS** | Token/key/private-key scan over all text files: 0 hits | | |
| | No absolute local paths in shipped files | **PASS** | Result files normalised to repo ids; remaining mentions are deliberate documentation | | |
| | `config.json` path leak fixed | **PASS (proposed)** | Correction specified in audit §8; **not yet applied to the Hub** | | |
| | Regression test for path leak | **PASS** | `test_config_contains_no_absolute_paths` | | |
| | `.gitignore` excludes weights | **PASS** | | | |
| ## Code quality | |
| | Check | Status | Evidence | | |
| |---|---|---| | |
| | Syntax check, all Python | **PASS** | `compileall` clean | | |
| | Lint | **PASS** | `ruff check` — all checks passed | | |
| | Format | **PASS** | `ruff format --check` — 27 files formatted | | |
| | Fast tests | **PASS** | **10 passed**, 14 deselected, no weights or GPU needed | | |
| | Slow tests | **NOT RUN** | 14 collected; require `PIKO_MODEL_PATH`. Behaviour they assert was verified directly by `scripts/validate_inference.py` | | |
| ## Functional validation | |
| | Check | Status | Evidence | | |
| |---|---|---| | |
| | Text generation | **PASS** | `reports/inference_validation.json` — 12/12 | | |
| | Image / OCR | **PASS** | Read "NORTHGATE HARDWARE" and 22.75 correctly | | |
| | Document JSON extraction | **PASS** | 10/10 on custom suite | | |
| | Chart reading | **PASS** | Read all four bar values correctly | | |
| | Multi-turn | **PASS** | | | |
| | Batch inference | **PASS** | | | |
| | Greedy determinism | **PASS** | Identical across repeats | | |
| | Long context | **PASS** | Needle found at 14,429 tokens; suite passes at 2K/8K/32K | | |
| | Streaming | **PASS (code)** | Implemented in `examples/inference_cli.py`; not separately measured | | |
| | bfloat16 unquantized | **NOT RUN** | Needs ~22 GB; test GPU has 15.92 GB | | |
| | float16 | **NOT RUN** | Supported by flag; not exercised | | |
| | 8-bit | **NOT RUN** | | | |
| | CPU loading | **NOT RUN** | ~38.6 GB float32 and no fast path; not viable | | |
| | `device_map="auto"` | **FAIL — by design** | Produces `!!!!!` degenerate output; documented as unsupported | | |
| | Video input | **NOT RUN** | No fixture built | | |
| ## Evaluation | |
| | Check | Status | Evidence | | |
| |---|---|---| | |
| | Smoke evaluation | **PASS** | **8/8 required** | | |
| | Custom suite, Piko-9b | **PASS** | **65/70** | | |
| | Custom suite, base model | **PASS** | **63/70**, identical settings | | |
| | Like-for-like comparison | **PASS** | Settings matched; tool would have refused otherwise | | |
| | Statistical honesty | **PASS** | Wilson intervals; every category reads *No significant difference* | | |
| | Standard public benchmarks | **NOT RUN** | 1–3 h per model each, ×2 for baseline; scripts provided | | |
| ## Performance | |
| | Check | Status | Evidence | | |
| |---|---|---| | |
| | Cold load | **PASS** | 101–119 s NVMe | | |
| | Peak VRAM | **PASS** | 7.37 GB resident, 13.4 GB at 8K×4 | | |
| | Host RAM | **PASS** | 1.28 GB RSS | | |
| | Throughput, 3 contexts × 3 batches | **PASS** | 9/9 configurations | | |
| | Image preprocessing | **PASS** | 13 ms median | | |
| | 32,768-token single forward | **FAIL — recorded** | OOM on 15.92 GB; 32K retrieval via `generate()` works | | |
| ## Quantization | |
| | Check | Status | Evidence | | |
| |---|---|---| | |
| | 4-bit NF4 | **PASS** | All results measured this way; vision path intact | | |
| | 8-bit | **NOT RUN** | | | |
| | GGUF / AWQ / GPTQ | **NOT PRODUCED** | Scripts provided, unexecuted, documented as unvalidated | | |
| | Quantized artefact published | **NO** | Nothing to validate, nothing claimed | | |
| ## Blocking items before publishing | |
| 1. **Apply the `config.json` correction on the Hub** — remove the two absolute paths from | |
| `piko_composition` and set `transformers_version` to `5.5.0`. This is the only change that | |
| touches the model repository itself, and it is live right now. | |
| 2. **Decide what the repository is for.** The evidence says Piko-9b performs the same as | |
| `Qwen/Qwen3.5-9B` within measurement error. That is publishable, but only with the honesty this | |
| release adopts. Do not restore the old benchmark table. | |
| ## Not blocking, worth doing | |
| * Run one standard benchmark pair (GSM8K 200 items is the cheapest useful one). | |
| * Test the six unmerged Piko adapters against the composition — they may improve it, and nobody | |
| has checked. | |
| * Build a video fixture and either support or explicitly disable the video path. | |
| * Test image inputs outside rendered documents. | |