Model page

OpenVINO/Qwen3-4B-int4-ov warn

downloads 756likes 1license apache-2.0arch qwen3updated 2026-02-24

claims base: Qwen/Qwen3-4B · chat template: present · view on Hugging Face ↗

Scan coverage

Ingot runs three batteries against a model. What each one checks →

BatteryLooks atStatus
Static batteryMetadata & packagingcomplete 2026-08-21
Weights batteryWeights forensics — no GPU, no downloadcomplete 2026-08-21no token vocabulary — pickle audit only · pickle audit clean
Behavioral batteryLive-inference differentialsnot run

Findings

Scanned 2026-08-21 · published from a community scan.

medium Pickle-serialized weights, no safetensors

Weights ship only as pickle-based files (openvino_detokenizer.bin, openvino_model.bin, openvino_tokenizer.bin). Loading pickle executes arbitrary code from the file — prefer a safetensors release or load in a sandbox.

How to fix

Convert the weights to safetensors before loading them anywhere that matters.

  1. Do not load the pickle files in-process — pickle deserialization executes arbitrary code from the file.
  2. Convert locally in a sandbox: `pip install safetensors` and use `safetensors.torch.save_file` on a state dict loaded with `torch.load(..., weights_only=True)` (refuses most code-execution payloads), or use Hugging Face's `convert.py` space/script.
  3. Pin the exact revision hash you converted from, and load only your converted safetensors artifact from then on.

medium Chat template dropped vs parent

Qwen/Qwen3-4B ships a chat template; this repo does not. Serving stacks will silently fall back to a generic template, changing behavior. (In our 296-model census, 78% of pure quantization re-releases changed or dropped the template.)

How to fixingot patch

Restore the parent's chat template in `tokenizer_config.json` — a pure metadata fix.

  1. Run `ingot patch <owner/model>` — the patch manifest carries the parent's template and applies it to a local copy's `tokenizer_config.json`.
  2. Or fix by hand: copy the `chat_template` value from the parent repo's `tokenizer_config.json` into this model's, and pin your serving stack to that file.
  3. If the drift was intentional (the author retrained on a new template), confirm that in the model card before "fixing" it — restoring the parent template on retrained weights changes behavior too.

info Pickle static analysis clean

Opcode-level parse of openvino_detokenizer.bin, openvino_model.bin, openvino_tokenizer.bin (no code executed) found only standard serialization globals (0 distinct, all torch/collections/numpy). Pickle remains an executable format — this verifies the current bytes, not future uploads; prefer a safetensors release.

low Pickle checkpoint only partially analyzable

Static analysis could not fully parse: openvino_detokenizer.bin: legacy parse stopped after 0 pickle(s): unsupported pickle opcode 0x0 at 0, openvino_model.bin: legacy parse stopped after 0 pickle(s): unsupported pickle opcode 0x0 at 0, openvino_tokenizer.bin: legacy parse stopped after 0 pickle(s): unsupported pickle opcode 0x0 at 0. Unparsed content is unverified.

Remediation guidance addresses the documented findings only. It is evidence-driven repair, not a safety certification of the model.

Fingerprint

The durable profile of this model: measured weights-and-metadata facts, rebuilt on every scan and battery run. Updated 2026-08-21.

architectureqwen3 · 36 layers · 2560-dim
vocabulary151,936 tokens
licenseapache-2.0
serializationno safetensors pickle
chat templatenone
claimed lineageQwen/Qwen3-4B
lineage verifiedunverified — weights battery pending
Full measured fingerprint
architecturesQwen3ForCausalLM
repo files18 — pickle: openvino_detokenizer.bin, openvino_model.bin, openvino_tokenizer.bin
revisionb467368d16b7
HF snapshot753 downloads · 1 likes · updated 2026-02-24 · captured 2026-08-21
weights batterytoken-embedding scan n/a — no token-embedding tensor found in the pickle checkpoint(s) — pickle checkpoint(s) statically analyzed anyway
pickle auditopenvino_detokenizer.bin, openvino_model.bin, openvino_tokenizer.bin0 standard global(s) · legacy (pre-1.6) format, head-scan only

Battery runs

The run trace behind the findings above: every deep-battery job for this model, with what each run measured or why it failed. Findings are only as good as the runs that produced them.

batterystatusqueueddurationattempts
weightscomplete2026-08-21 05:133s1
weights run 2026-08-21 measurements
probes runpickle-static-analysis

Fix it

Some findings are metadata-level and patchable — apply the fixes to your local copy (your weights never leave your machine):

npx @ingotai/scan patch OpenVINO/Qwen3-4B-int4-ov

Remediation guidance addresses the documented findings only. It is evidence-driven repair, not a safety certification of the model.

Verdict badge

Ship the verdict in your README — it always shows the latest published analysis:

Ingot verdict: warn

[![Ingot scan](https://ingot.tools/api/v1/models/OpenVINO/Qwen3-4B-int4-ov/badge.svg)](https://ingot.tools/models/OpenVINO/Qwen3-4B-int4-ov)
Gate it in CI