Core AI model zoo

MiniCPM-V-4.7-1B: canvas M-RoPE on the Qwen3.5 hybrid, on Core AI

2026-10-13. openbmb/MiniCPM-V-4.7-1B (revision 984a89a, Apache-2.0) is MiniCPM-V-4.6’s vision code in front of a Qwen3.5 hybrid decoder with a new position scheme, canvas M-RoPE, and an untied head. The port is one re-authored tower, one new decoder module on the decider-2b-vision contract, and the engine’s existing static-input and extra-state hooks. Card: models/minicpm-v-4.7-1b/README.md. Transcripts are in models/minicpm-v-4.7-1b/; records outside the repo are marked “lane” and live under $ZOO_WORK_ROOT/_minicpmv47/.

What was reused and what is new

part source change
text decoder overlay models/macos/qwen3_5.py: Qwen3_5StatefulForCausalLM, _mrope_freq_masks, forward_stateful_core(cos_sin=…), the loop-free Gated DeltaNet step none in the overlay; the config is written by hand (the overlay’s transformers 4.57.6 has no minicpmv4_7), the untied head is loaded from lm_head.weight
VL decoder module decider-2b-vision’s contract (conversion/decider_vision/qwen3_5_vl_pipelined.py: ids in, image rows as a static input, M-RoPE derived in the graph) new conversion/minicpmv47/minicpmv47_vl_pipelined.py: the canvas rule instead of the Qwen rule, the 8×8 grid baked as a constant [64, 2] int32 table, no image_rc input
vision tower transformers 5.19.0 modeling_minicpmv4_7.py (4.6’s classes renamed); the 4.6 port’s own tower module is not in the repository new conversion/minicpmv47/minicpmv47_vision.py: a reference path in Hugging Face’s order and a baked path (bake_constants(32), one batched window attention) for export
host none to reuse host.py: Pillow BICUBIC 448 → (x/255 − 0.5)/0.5; host_static_inputs for ids, start and amount
exporters, AOT, gates the decider and 4.6 export pattern; conversion/coreai_gate.py’s knife-edge rule new scripts in conversion/minicpmv47/
device harness PipelinedBench’s GLM-OCR form (binds image_embeds + rope_shift_start / rope_shift_amount by name) its reference directory became a spec field (vlRefDir; it was the fixed name glm_ocr_ref) + a 4.7 spec

The 4.7 vision classes are 4.6’s after renaming: modeling_minicpmv4_7.py lines 55–604 equal modeling_minicpmv4_6.py lines 50–599 with 4_7 → 4_6 (lane FEASIBILITY.md §r1, cmp).

The canvas rule and why the gate is on the planes

The head is untied but 4.9e-4 from the embedding

fp16: the tower’s norm inputs overflow fp16 when squared, and the GPU’s fp16 tower passes

int8lin is stored as fp16 on the Mac AOT and on the phone

The engine on the iPhone 18 Pro

Prefill in chunks and a second turn (Mac, not uploaded)

CoreAIKit (VLChat)

The bytes that ship

Traps

Numbers of record