qmd 本地 GPU 或 CPU 后端怎么选:QMD_LLAMA_GPU、--no-gpu 与 QMD_FORCE_CPU
发布时间:2026/9/12 7:01:14 锦皓数字建站

qmd 本地 GPU 或 CPU 后端怎么选QMD_LLAMA_GPU、--no-gpu 与 QMD_FORCE_CPU【免费下载链接】qmdmini cli search engine for your docs, knowledge bases, meeting notes, whatever. Tracking current sota approaches while being all local项目地址: https://gitcode.com/GitHub_Trending/qmd1/qmdqmd 是一个完全本地运行的 CLI 文档搜索引擎它的向量化embedding与重排序rerank由 llama.cpp 完成。默认情况下 qmd 会自动探测可用的 GPU 后端Metal / Vulkan / CUDA探测失败才回退 CPU。但在实际使用中有几类典型情况机器上没有可用的 GPU 驱动自动探测选错了后端或者你希望 JSON 输出不被 llama.cpp 的原生日志干扰——这时需要手动干预。qmd 提供三个对应的开关QMD_LLAMA_GPU、QMD_FORCE_CPU以及等价的命令行参数--no-gpu。本文说明这三个开关各自解决什么问题、怎么设置以及如何用qmd doctor和qmd status验证生效结果。三个开关各管什么qmd 的环境变量说明见 README.md 的 Environment Variables 一节中与 GPU/CPU 选择直接相关的有三项开关默认值作用QMD_LLAMA_GPUauto强制指定 llama.cpp GPU 后端metal、vulkan、cuda设为false则禁用 GPUQMD_FORCE_CPUunset设为1/true在任何 CUDA/Vulkan/Metal 探测之前强制 CPU 模式。等价 CLI 参数--no-gpu--no-gpu关闭命令行参数Force CPU mode for llama.cpp operations (same as QMD_FORCE_CPU1)三者职责不同对应不同的使用场景QMD_LLAMA_GPUmetal|vulkan|cuda机器上有 GPU但你想跳过自动探测、直接锁定某个后端。适用于 auto 选择结果不符合预期、或多 GPU 环境下需要明确指定后端的情况。QMD_FORCE_CPU1或--no-gpu完全绕过 CUDA/Vulkan/Metal 探测直接进入 CPU 模式。适用于没有 GPU 的机器CI 容器、服务器、无独立显卡的环境以及需要保持 JSON 输出可解析的场景——按 CHANGELOG.md 记录--no-gpu同时会把 llama.cpp 的原生 stdout 噪声路由到 stderr避免污染 search/query 命令的 JSON 输出。QMD_LLAMA_GPUfalse只禁用 GPU 但不需要--no-gpu的完整语义时可选注意它仍然会走解析逻辑见下文无效值会回退 auto。优先级关系QMD_FORCE_CPU优先于QMD_LLAMA_GPU。从实现src/llm.ts 的resolveLlamaGpuMode可以看到QMD_FORCE_CPU先被检查命中即返回 CPU 模式QMD_LLAMA_GPU不再参与。怎么选按机器情况定后端先跑一次默认流程看它选了什么。不做任何设置时QMD_LLAMA_GPU为autoqmd 自动探测。用诊断命令确认探测结果# Diagnose the install (runtime, sqlite-vec, embedding fingerprints, GPU probe) qmd doctorqmd doctor的输出包含 GPU probe 结果见 README.md 的 Index Maintenance 一节。同时qmd status会显示 GPU mode/configuration但它默认跳过原生设备探测以保证安全如果 CPU-fallback 警告指向真实后端探测按提示执行QMD_STATUS_DEVICE_PROBE1 qmd statusWindows CUDA 的已知坑。如果你遇到 CUDA 并行上下文崩溃ggml-cuda.cu:98README 给出的处理方式是QMD_EMBED_PARALLELISM在 Windows CUDA 下默认为1因为并行 CUDA 上下文可能崩溃改用 VulkanQMD_LLAMA_GPUvulkan或仅在驱动稳定时调高并行度export QMD_LLAMA_GPUvulkan # 或在驱动稳定后 export QMD_EMBED_PARALLELISM2 # 取值范围 1-8无 GPU 或不想探测时强制 CPUexport QMD_FORCE_CPU1 # 或者只在单条命令上生效 qmd query 你的查询 --no-gpu--no-gpu的实现就是在启动时把process.env.QMD_FORCE_CPU置为1见 src/cli/qmd.ts 中if (values[no-gpu])分支两者效果完全一致区别只是环境变量全局生效、参数只对当前命令生效。如何验证设置已生效1. 看警告信息。后端选择和回退都会在 stderr 留下明确的QMD Warning:这些是判断配置是否按预期工作的一手依据均来自 src/llm.ts 实际输出# 无效值回退 auto QMD Warning: invalid QMD_LLAMA_GPUopengl, using auto GPU selection. # 指定后端初始化失败回退 CPU QMD Warning: GPU init failed for QMD_LLAMA_GPUcuda (错误详情), falling back to CPU. # 同一进程内之前已失败的后端会跳过重复初始化 QMD Warning: skipping previously failed GPU init for QMD_LLAMA_GPUcuda, using CPU.如果你设置了QMD_LLAMA_GPU却看到invalid ... using auto GPU selection说明值写错了——该变量只接受metal、vulkan、cuda、false以及off/none/disable/0等关闭取值。2. 用qmd doctor复核。在 CI 或容器中仓库自身的测试流程见 test/smoke-install.sh 与 CHANGELOG.md 相关条目就是在自动模式与QMD_FORCE_CPU1模式下分别跑 doctor 来确认安装状态你可以照做qmd doctor QMD_FORCE_CPU1 qmd doctor3. 实际跑一次模型操作。后端选择影响的是qmd embed这类 llama.cpp 操作。改完后端设置后跑一次 embedding配合上面的警告输出判断没有GPU init failed警告、流程正常完成说明所选后端在当前机器上可用反之警告会直接指出是哪个后端初始化失败并回退到了 CPU。边界与已知行为回退是静默降级到 CPU不是报错。GPU 初始化失败时 qmd 会继续用 CPU 完成操作只发警告。也就是说设了 GPU 后端不等于一定在用 GPU验证时应以警告输出和 doctor 结果为准。QMD_FORCE_CPU的取值语义非空且不等于false/off/none/disable/disabled/0的值都会触发强制 CPU--no-gpu等价于QMD_FORCE_CPU1。切换 GPU/CPU 后端不改变向量结果本身只影响推理执行位置文档中要求重新qmd embed的场景是更换 embedding 模型QMD_EMBED_MODEL与后端选择无关两者不要混淆。配置完成后如果qmd doctor的 GPU probe 与你的预期一致、且 embedding 流程没有QMD Warning输出后端选择就完成了。【免费下载链接】qmdmini cli search engine for your docs, knowledge bases, meeting notes, whatever. Tracking current sota approaches while being all local项目地址: https://gitcode.com/GitHub_Trending/qmd1/qmd创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。