npuw_model_generator_demo --preset qwen3_5 --inputs-embeds from
npuw.model_generator.demo (qwen3.5-synth branch),
built against OpenVINO branch dylanneve1/EISW-211201 (linear-attention model_builder).openvino_language_model.{xml,bin} — decoder (hybrid linear + full attention)openvino_text_embeddings_model.{xml,bin} — token embeddingopenvino_tokenizer, openvino_detokenizer — tokenizer IRsQwen3.5-0.8B_int4_sym_group-1_dyn_stateful[linear, linear, linear, full] x 6Loop=18 (one per linear-attn layer, same as real export)Power(x,2) → ReduceMean → Add → Sqrt → Divide → MultiplyPower(x,2) → ReduceSum → Add → Sqrt → Dividehead_dim != hidden_size/num_headsReduceSum 54 vs 72 — real body has more reductions per iterScatterUpdate 0 vs 18 — real uses scatter-based KV-cache position updateReduceProd 0 vs 21 — real uses product-based shape mathReshape 109 vs 302, Slice 60 vs 126 — shape-management noiseParameter 112 vs 147 — real exposes more per-layer state/cache inputsSqueeze 18 vs 581echo '{"ATTENTION_BACKEND":"SDPA"}' > sdpa.json
2python openvino.genai/tools/llm_bench/benchmark.py \
3 -m synth-qwen3_5-npuw-model -d CPU -lc sdpa.json -t visual_text_gen -n 1 -ic 10SDPA avoids the sampler_num_threads plugin-property leak in current
openvino-genai CB path. Use visual_text_gen because model is VLM-format split.max_pos shrunk from 262144 to 4096.