Piko-9b / reports /release_checklist.md
Dexy2's picture
Rewrite model card around verified evidence; correct misattributed benchmarks and config path leak
0810902 verified
|
Raw
History Blame Contribute Delete
6.56 kB
# 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.