资讯动态

AnyJev 五大后端深度对比:transformers、vLLM、SGLang、llama.cpp 怎么选?含一致性(parity)校验指南

发布时间:2026/10/14 15:41:46 来源:尧图企业网站定制
【免费下载链接】AnyJevTurn any LLM into a Jev-style decision model: typed decisions, real probabilities, no training. (continue updating, welcome any issue and PR request)项目地址https://gitcode.com/gh_mirrors/an/AnyJev点击查看免费下载AnyJev 是一个把任意开源 LLM 变成 Jev 风格决策模型的工具给它一个状态和类型化问题choice / noul / score它从模型下一个 token 的分布中读出答案和真实概率无需训练、无需解析生成文本。AnyJev 把跑模型这件事抽象成后端backend目前提供五大后端transformers、vLLM、SGLang、llama.cpp四个真实推理后端外加一个用于离线测试的fake后端。选哪个直接决定你的部署形态、吞吐量和硬件门槛。本文逐个对比并附上官方的一致性parity校验脚本与实测数据 。先看懂后端抽象为什么换后端不改上层代码AnyJev 的后端协议只有一个小接口输入渲染好的 prompt 和要查询的 token id 列表返回每个 token 的下一个 token 对数概率。定义见 base.py。去偏、旋转预算、置信度校准全部在协议之上所以换一个后端决策逻辑一行不用改。还有一个可选快路径score_shared同一个状态的 K 个选项轮转共享绝大部分前缀能复用前缀 KV cache 的后端transformers可以把前缀只算一次。协议说明见 base.py。上图正是理解为什么要做 parity 校验的关键连选项顺序都能影响原始 logit换后端带来的数值差异就更要量化验证了。五大后端逐个拆解1️⃣ transformersHFBackend开发基线与 parity 参照系安装pip install anyjev[hf]即 torch transformers进程内运行默认 batch 16、bfloat16左填充 显式 position id保证批内位置不漂移独有快路径score_shared共享前缀打分、hidden_states/hidden_states_to读取中间层隐状态logit-lens 式读出源码anyjev/backends/hf.py定位它是官方 parity 脚本里永远站在对照席的那个后端。开发、调试、需要中间层能力时用 transformers追求服务化吞吐时再换到服务器端。2️⃣ vLLMVLLMBackendGPU 生产环境的高吞吐首选面向标准vllm serveOpenAI 兼容 API客户端只需装pip install anyjev[client]仅 tokenizer关键启动参数两个都别漏vllm serve Qwen/Qwen3-8B --enable-prefix-caching --logprobs-mode processed_logprobs--logprobs-mode processed_logprobs让 logprobs 在allowed_token_ids限制之后归一化返回的 K 个条目正好是你要的标签缺省模式下 vLLM 报的是限制前的 top-K标签不在 top-K 里时后端会抛LabelTokenError而不是瞎猜见 vllm.py--enable-prefix-caching让同一状态的 K 个轮转近乎免费Tacit 模型另有两种姿势enginevllm进程内跑 vLLManyjev[vllm]或engineserver接现成的vllm serve多客户端共享上限可用python -m anyjev.serve起 HTTP 网关定位吞吐优先的生产部署README 中 Tacit 全部基准与 Decision Index 成绩都由vllm serve提供。3️⃣ SGLangSGLangBackend原生打分接口的轻量对接python -m sglang.launch_server --model-path Qwen/Qwen3-8B --port 30000走 SGLang 原生/generatemax_new_tokens0return_logprobTruetoken_ids_logprob标签 id从meta_info里按 token id 回读见 sglang.py返回全词表 log-probability不做重归一化需要标签缺失会直接报错已验证环境SGLang 0.5.10Qwen2.5-7B-Instruct bf16不支持中间层隐状态定位如果你基础设施里已经有 SGLang 集群它是零额外服务的接入点。4️⃣ llama.cppLlamaCppBackendGGUF 与无 GPU 场景安装pip install anyjev[llamacpp]llama-cpp-python ≥ 0.3.16逐条 prompt 处理清空 KV → 解码 → 只取最后一位的 logits 做全词表 log-softmax见 llamacpp.py默认直接用 GGUF 自带的词表和 chat template无需 transformers也可以传 HF tokenizer此时每个 prompt 会逐 token 对账、每个标签 id 会逐文本对账不一致抛TokenMismatchError而不是静默读错 logitn_gpu_layers可调 GPU 卸载上下文默认 4096Windows 注意默认 PyPI 轮子是 CPU-only 且稳定预编译 CUDA 轮子在没有 AVX-512 的消费级 CPU 上见过WinError -1073741795崩溃此时换默认轮子或用-DGGML_NATIVEOFF构建说明见 llamacpp.py定位CPU / 边缘 / 本地量化 GGUF。代价是逐条串行吞吐明显低于服务器端后端。5️⃣ fakeFakeBackend离线测试专用FakeBackend 用合成 logits可预埋隐状态让全部测试在无 GPU、无真实模型的环境下跑通——校准方法的单测、后端的契约测试都靠它。CI 里的pytest -q只依赖 numpy。它不是生产选项但测试用假后端被算进五大后端正是 AnyJev 工程风格的体现每个后端先有合成数据测试再上真实引擎烟测pytest.mark.engine。一句话选型表你的场景推荐后端安装/启动开发、调试、parity 对照、读中间层transformerspip install anyjev[hf]GPU 生产服务、高吞吐vLLMvllm serve ... --enable-prefix-caching --logprobs-mode processed_logprobs已有 SGLang 集群SGLangpython -m sglang.launch_server ...无 GPU、边缘设备、GGUF 量化llama.cpppip install anyjev[llamacpp]单元测试、CI、无真实模型fake核心包自带一致性parity校验指南换后端后怎么证明答案没变核心思路后端唯一职责是返回标签 token 的 log p(token | prompt)决策层只消费这一小段向量。所以 parity 校验 同一批 prompt、同一组标签 id、同一个 tokenizer比较各后端的 log-probability 差异看两个指标max |Δ logprob|最大数值偏差定位问题用argmax 一致率top-1 是否一致决定决策层是否受影响项目为每个后端都备好了现成脚本直接跑即可脚本对照方比较口径scripts/vllm_parity.pyvLLM vs transformersvLLM 经allowed_token_ids限制后归一化两侧取限制集 log-softmax 再比scripts/sglang_parity.pySGLang vs transformersSGLang 返回全词表 logprob直接比scripts/llamacpp_parity.pyllama.cpp (GGUF) vs transformers全词表 logprob、限制集 log-softmax、argmax 三项scripts/shared_prefix_parity.pytransformers 共享前缀快路径 vs 完整 prompt验证score_shared快路径无损运行示例llama.cpp 侧含 GGUF 转换说明python convert_hf_to_gguf.py HF快照目录 --outtype f32 --outfile qwen2.5-0.5b-instruct-f32.gguf python scripts/llamacpp_parity.py --gguf qwen2.5-0.5b-instruct-f32.gguf \ --model Qwen/Qwen2.5-0.5B-Instruct --device cpu --dtype float32 --json parity.json官方实测数据Qwen2.5-0.5B-Instruct15 条 choice/noul/score prompttransformers fp32 on CPU见 bench/llamacpp_parity_f32.json 与 bench/llamacpp_parity_f16.jsonGGUF 文件argmax 一致max |Δ logprob|mean |Δ logprob|同一 HF 快照转换的 F3215/150.01590.0089官方 Qwen2.5-0.5B-Instruct-GGUF F1614/151.16920.7053结论很重要F32 下两后端几乎逐位一致F16 的偏差来自 llama.cpp 用 F16 权重量化计算而不是 AnyJev 后端本身——同一份 F16 文件下后端与 llama-cpp-python 原生Llama.eval的最大偏差仅 0.0002。做 parity 时请用同一快照转换的高精度 GGUF 作基线否则测出来的是量化的账。parity 实操要点清单固定 prompt 与标签 id两侧共用同一个 tokenizerllama.cpp 侧开 tokenizer 对账靠TokenMismatchError兜底明确两侧精度bf16 / fp16 / fp32 的差异会直接体现在 max |Δ| 上vLLM 必须加--logprobs-mode processed_logprobs否则拿到的是限制前的 top-K决策层只关心 argmaxmax |Δ| 较大但 argmax 全对时业务不受影响反之哪怕偏差很小也要查用--json把环境与数值落盘方便回归对比官方结果即如此存档总结AnyJev 的后端层做到一个协议五种实现transformers 是开发与校验的基线vLLM 是生产吞吐主力SGLang 对接已有集群llama.cpp 覆盖无 GPU 与 GGUF 场景fake 让一切逻辑可以离线测试。选型只看硬件与吞吐需求选定之后用上面三个 parity 脚本跑一遍 argmax 一致率再放心上线。赞分享【免费下载链接】AnyJevTurn any LLM into a Jev-style decision model: typed decisions, real probabilities, no training. (continue updating, welcome any issue and PR request)项目地址https://gitcode.com/gh_mirrors/an/AnyJev点击查看免费下载相关推荐Nemotron-3基准测试报告在8大安全基准上的表现与评估Nemotron 3基准测试报告在8大安全基准上的表现与评估 概述NVIDIA Nemotron 3内容安全模型的全面性能分析 Nemotron 3wvp-GB28181-pro Docker 部署3 步跑通 GB28181 视频监控平台wvp GB28181 pro Docker 部署3 步跑通 GB28181 视频监控平台 部署完成后你可以通过 Web 管理页面接入海康、大华、宇视等品牌后端音视频前端Xinference 推理后端Backends完全指南llama.cpp、Transformers、vLLM、SGLang、MLX 与投机解码实战Xinference 推理后端Backends完全指南llama.cpp、Transformers、vLLM、SGLang、MLX 与投机解码实战 Xin模型推理服务人工智能大模型本地部署多模态语音创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑