SuperAPI AI 工具集

ov-gguf

智能体与模型

查看项目

更新于 10-16 09:49

技能介绍

本技能面向 OpenVINO GGUF 前端(src/frontends/gguf)与使用它的 llama.cpp ggml-openvino 后端的开发与排障。路径相对 src/frontends/gguf/,只阅读任务所需的路由文档。先区分输入路径:原生 .gguf 文件或传入的 GgufDecoder(llama.cpp cgraph),二者共用转换器,但构建器与验证不同;仅注册或完成转换不代表精度正确。

按任务查阅文档:模型是否受支持看 supported_models.md 或 mmproj.md,需引用具体检查点结论与限制而非目录条目;加载模型、使其 stateful/GenAI/PA-ready、tokenizer、IR 导出看 runtime.md;新增或移植架构看 architectures.md(作为插件发布时另看 extensions.md);新增或替换 mmproj 分支先看 extensions.md 再看 mmproj.md 的图契约;缺少 ggml 操作或 op_case 看 how_to_add_op.md;数值错误看 debugging_accuracy.md;GenAI/mmproj token、媒体或 PA 不一致用多模态集成二分法;不支持的权重类型看 quantization.md,修复应落在 src/quant/ 而非 builder;构建、运行测试、重新生成 fixtures 看 testing.md;跨 OpenVINO、GenAI 与 llama.cpp 运行或续跑 GGUF 验证看 validation.md,使用现有 GHA 工作流与聚焦本地测试并保留版本、覆盖与失败信息。

易忽略点:未认领的 general.architecture 需目录行或 ArchitectureExtension;新 mmproj 类型需 ProjectorExtension;已有算子的结构不同用法需 op_case;仅真正的新 GGML 算子才需 translator。架构/projector 扩展须在 load() 前注册,转换器与 pass 须在 convert() 前注册,且在同一前端实例上;GGUFMakeStateful 与 AdaptToGenAI 仅限 C++。新 translator 或 builder 源码要加入 tests/CMakeLists.txt 的显式 FRONTEND_SRCS 列表,否则测试二进制链接失败;完成前无过滤运行 ov_gguf_frontend_tests,算子覆盖门在 teardown 执行,需检查退出状态。GGUFArchConversion 在无生成头文件时跳过,除非设置 OV_GGUF_REQUIRE_ARCH_FIXTURES=1;用 gen_arch_fixtures.py --fetch 生成。检查实际选中数与跳过项。

参考对比:布局敏感预期来自提交在 tests/ 下的真实 ggml CPU oracle,含多个 head/token 与不相等的 Q/KV 维度,NumPy 或单头测试可能共享同一 bug;不要因仅 x86 运行而收紧 expect_near 容差。比较用相同输入与 token 历史的完整 logits 或 features,配 INFERENCE_PRECISION_HINT=f32、DYNAMIC_QUANTIZATION_GROUP_SIZE=0 及参考实现的 KV 精度;进程启动前设置 OV_GGUF_Q4_K_ZP_F16=1。量化 CPU 与表示 F32 的比较需分别报告并保留失败结果。GGML_OPENVINO_* 变量只配置 llama.cpp 后端。检查张量类型清单而非检查点名称。共享的 translator、VIEW/op_case 或共享块改动需重跑 GGUFArchitectureAccuracy、GGUFArchConversion 与 mmproj 套件。长任务重定向输出到文件,保留启动 PID 并只停止该进程;大型 Q2 MoE 检查点在 CPU 编译时展开,启动前检查内存。无效重建需先核对图属性、插件/执行器参数与链接加载的 CPU 变体。验证批次应将共享路径回归检查扩展到 tokenizer、mask 与 PA 变更,覆盖代表性 SDPA/PA/media/chat 用例。