07 · 8B 阶段模型转换与 q4 性能一句话把阶段一在 2B 上打通的骨架放大到 8B 稠密模型检验可扩展性——结论是骨架不失效但「模型产物版本管理」第一次成了硬约束VQF 布局标志不匹配直接拒绝加载。前置建议先读 第 01 篇 · 阶段总览、第 06 篇 · VRAM 驻留窗口的两个坑。环境x86-64 NVIDIA RTX 5090sm_120· 阶段二 8B 稠密Qwen3-VL-8B q4。一、问题与结论问题处理判定骨架放大到 36 层 / dim4096 会失效吗不匹配的是产物版本不是架构已识别现有 8B VQF 加载报错布局标志0x1vs 引擎期望0x3无法加载需重转换预算参考值要动吗从 2B 的 ~1.4 GB 抬到 8B 的~7 GB双侧都要配足已知8B 的 CUDA 实测倍数是多少本仓库缺失待补不写未实测数字缺口二、为什么要走这一步2B1.85 GB足够打通骨架但不足以暴露「规模」带来的问题2B 的权重装得下显存驻留窗口的省显存收益测不出来2B 的激活/权重流小带宽压力不显形8B 是 dense 视觉36 层、dim4096、kv heads8是 30B-A3B MoE 之前的必经中间规模。所以这一步的定位是用更大的稠密模型验证骨架的可扩展性同时把 q4 稠密路径跑通。模型口径项值模型Qwen3-VL-8B-Instructdense 视觉塔VQF 产物Modl/Qwen3-VL-8B-q4local/model.vqfq4层数36hidden4096attention heads / kv heads32 / 8GQAhead_dim128intermediate12288vocab151936rope_theta5000000MRoPEmrope_section[24,20,20]三、核心机制3.1 加载受阻VQF 布局标志不匹配现有 8B VQF 的布局标志是0x1而引擎修订构建期望0x3——直接无法加载。这是「模型产物与引擎版本不同步」的典型问题VQF 是自研格式头部带布局 flagsflags 是转换时固化的内核布局变体加载时必须与当前引擎配置一致。格式头里把每个 bit 定义得很清楚/* 文件include/model/vqf_format.h节选 *//* 布局 flags转换时固化的内核布局变体加载时须与当前引擎一致 */#defineVQF_FLAG_Q8_8X8(1u0)/* q8_* 为 8x8 tiled 布局 (VLLM_Q8_8X81) */#defineVQF_FLAG_Q4_4X4(1u1)/* q4_* 为 4x4 布局 (repack_q4_0_4x4) */#defineVQF_FLAG_X8(1u2)/* x8_* 8x8l decode 副本存在 */#defineVQF_FLAG_Q8BUF_Q4(1u3)/* q8_* 实际存 pre-unpacked Q4 int8 (q4i) */#defineVQF_FLAG_G256(1u4)/* q8_* 为 G256 分组量化 */0x1是只声明了VQF_FLAG_Q8_8X80x3是Q8_8X8 | Q4_4X4两位都声明。加载器会把文件 flags 与当前引擎的vqf_cur_flags()逐位比对不一致直接拒绝/* 文件src/model/vqf.cvqf_load 的布局一致性检查节选 */staticuint32_tvqf_cur_flags(constSTModelWeights*w){uint32_tf0;if(g_st_q8_repack){constchar*egetenv(VLLM_Q8_8X8);if(!(ee[0]0))f|VQF_FLAG_Q8_8X8;}if(g_st_q4_repack)f|VQF_FLAG_Q4_4X4;/* 默认开 */...returnf;}...uint32_twanth-flags(VQF_FLAG_Q8_8X8|VQF_FLAG_Q4_4X4|...);uint32_tcurmcur(VQF_FLAG_Q8_8X8|VQF_FLAG_Q4_4X4|...);if(want!curm){fprintf(stderr,[VQF] layout mismatch: file0x%x engine0x%x (check VLLM_Q8_8X8 / wmode match the conversion)\n,want,curm);st_mmap_close(m);return-1;}处理方式与教训不能靠放宽校验绕过——布局标志的意义正是拦住「结构不兼容的产物被强行加载」正确做法是重新转换用当前vqf_convert或明确版本对应关系——转换器现在会把两个位一起置上/* 文件vqf_convert/src/conv_main.c写 flags节选 */if(g_st_q8_repack){constchar*egetenv(VLLM_Q8_8X8);if(!(ee[0]0))flags|VQF_FLAG_Q8_8X8;}/* 引擎 vqf_write 以 g_st_q4_repack 全局为准与是否有 q4 矩阵无关 */if(g_st_q4_repack)flags|VQF_FLAG_Q4_4X4;这也是「模型产物必须与引擎版本一起管」的直接证据详见vqf_convert/的产物约定。3.2 预算抬升宿主与设备双侧都要配足阶段一的预热预算参考值是 2B 的VLLM_GW_BUDGET_MB4096 VLLM_GW_SLOTS256 VLLM_CUDA_WCACHE_MB8192 # 2B Q88B 的权重是 2B 的数倍宿主侧 int8 权重大小约7 GB设备侧同理宿主VLLM_GW_BUDGET_MB≥ 模型 int8 权重大小2B≈1.4 GB / 8B≈7 GB显存VLLM_CUDA_WCACHE_MB同理预算不足会回落成「边跑边重建」并打印[CUDA] WARNING: only N/M weights stay resident。预加载逻辑本身对 8B 是同一套q4 走prec1分支差别只在权重字节数/* 文件src/model/vllm_safetensors.cst_cuda_preload_all节选 */if(use_q4){nst_cuda_preload_one(w-q4_q_weightQ4_BYTES((size_t)l*d*kv_dim_q),l,VLLM_CUDA_PROJ_Q,kv_dim_q,d,1);...nst_cuda_preload_one(w-q4_down_weightQ4_BYTES((size_t)l*d*ff),l,VLLM_CUDA_PROJ_DOWN,d,ff,1);}这条在 2B 上「配够就行」到 8B 变成「必须显式配、且默认值可能不够」——阶段一埋的预算机制在这里第一次真正承压。四、实测数据【本节数据缺口待补】本仓库没有8B 的 CUDA 实测记录。以下项目缺失prefill / decode / 端到端的倍数对应阶段一的 5.25× / 2.15× / 2.58×greedy TOKIDS 的位级一致长度与翻转点VLLM_CUDA_VERIFY1全量对拍结果VLLM_CUDA_PROF1的分段占比对应阶段一的 GEMM 18%PPLCORPUS_NLL_MEAN与 CPU 的相对差本节不写任何未经实测的数字。补齐这些数据需要用当前vqf_convert重新转换 8B解决 3.1 的布局标志问题配足双侧预算宿主 ≥7 GB、显存按需跑--cuda-selftest、--stream-test --stream-n 16CPU vs CUDA与VLLM_STREAM_NLL1。补齐后本节按阶段一的表格口径回填。已识别的口径非性能数字项值标注布局标志文件 vs 引擎0x1vs0x3实测加载被拒宿主 int8 权重规模8B≈7 GB推算由权重规模得出2B 参考预算4096 / 256 / 8192实测五、边界与已知限制8B 的 CUDA 性能数据缺失本节不写任何未经实测的数字上面的模型口径与预算值是规模事实不是性能结论。布局标志不匹配是产物与引擎不同步不是架构问题「骨架不失效」的结论只到「结构在 36 层/dim4096 上不因规模而崩」不等于「8B 会线性加速」。补齐 8B 数据需要先重转换产物再双侧配足预算否则会拿退化配置下结论。CPU 对照迁移前基线CPU 参考kestrel-llm/src/model/vqf.c函数vqf_load/vqf_cur_flags布局标志校验kestrel-llm/vqf_convert/产物与引擎的版本对应关系。迁移要点骨架在 36 层/dim4096 上不失效真正硬约束是产物版本VQF 布局标志0x1vs 引擎期望0x3→ 拒绝加载预算从 ~1.4GB 抬到 ~7GB双侧配足。真机验证未独立复现文中显式标注数据缺口8B 的 CUDA 性能数据本仓库缺失现有 8B VQF 布局标志0x1与引擎期望0x3不匹配、无法加载需先用当前转换器重转产物。六、小结可复用结论骨架在规模上不失效不匹配的是产物版本不是架构——「独立模块 strip-cache 分组 GEMM 驻留窗口」这套结构在 36 层 / dim4096 上仍然成立。模型产物版本管理成为必须项VQF 布局标志0x1vs0x3直接拒绝加载不能放宽校验绕过只能重转换并让产物与引擎一起演进。预算随规模抬升宿主侧从 ~1.4 GB 抬到 ~7 GB双侧宿主/显存都必须显式配足。缺数据就标缺数据8B 的 prefill/decode/verify/PPL 一概未实测宁可留缺口也不写编造数字。相关篇目第 06 篇 · VRAM 驻留窗口的两个坑、第 01 篇 · 阶段总览、第 08 篇 · MoE 专家权重显存驻留源码与配套资源本仓库 https://gitee.com/pei-xiaoguang/kestrel-llm-cuda.gitCPU 推理源码 https://gitee.com/pei-xiaoguang/kestrel-llm