如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
为速度而生的本地LLM推理服务器。自定义内核、推测式预填充与解码。我们引擎中的每项优化均针对特定模型系列和硬件目标。
每项优化均包含独立的设置说明和基准测试备注。
所有加速比均相对于官方llama.cpp(-fa 1,匹配KV量化)测量。组合加速比 = 几何平均值√(TTFT × 解码)(当两个阶段均进行基准测试时);否则为单阶段加速比。草稿模型发布于https://huggingface.co/Lucebox%E3%80%82
| 模型 | 加速比 |
|---|---|
| Qwen 3.5-0.8B (Megakernel) | ~2× |
| Qwen 3.5-27B + DDTree | 3.43× |
| Qwen 3.6-27B + PFlash | ~5.6× |
| Qwen 3.6-27B + DDTree | 4.84× |
| Laguna-XS.2 33B + PFlash | 5.4× @128K |
| Qwen 3.5-27B HIP | ~2.6× |
| Gemma-4-26B-A4B | 1.31× |
| 草稿模型 | 阶段 |
|---|---|
| https://huggingface.co/Lucebox/Qwen3.6-27B-DFlash-GGUF | 解码 |
| https://huggingface.co/Lucebox/gemma-4-26B-A4B-it-DFlash-GGUF | 解码 |
| https://huggingface.co/Lucebox/gemma-4-31B-it-DFlash-GGUF | 解码 |
| https://huggingface.co/Qwen/Qwen3-0.6B | 预填充 |
参考目标:RTX 3090(Ampere sm_86)——所有标题数据。其他NVIDIA架构由CMake / setup.py自动检测;AMD HIP后端单独提供(Strix Halo部分)。
| 架构 | GPU | 最低CUDA / ROCm版本 | 状态 | 基准测试 | |
|---|---|---|---|---|---|
Ampere sm_86 | RTX 3090, A-series | CUDA 12.0 | ✅ 参考 | megakernel · dflash | |
Blackwell sm_120 | RTX 5090 | CUDA 12.8 | ✅ 205 tok/s, 4.84× | ↗ | |
Blackwell sm_121 | DGX Spark / GB10 | CUDA 12.9 | ✅ megakernel NVFP4 | ↗ | |
Turing sm_75 | RTX 2080 Ti | CUDA 12.0 | ✅ 53 tok/s DFlash | ↗ | |
Ada sm_89 | RTX 40xx | CUDA 12.0 | 🟡 社区WSL2基准测试 | ↗ | |
| — | Blackwell sm_110 | Jetson AGX Thor | CUDA 13.0 | 🟡 可构建,未测试 | — |
Volta sm_70 / Pascal sm_61 | V100, P40 | CUDA 12.0 | 🟡 降级路径,未测试 | — | |
RDNA3.5 gfx1151 | Ryzen AI MAX+ 395 / Strix Halo | ROCm 6+ | ✅ 37 tok/s HIP | ↗ | |
RDNA3 gfx1100 | Radeon RX 7900 XTX | ROCm 6+ | ✅ 50 tok/s HIP | ↗ |
server/(DFlash)使用CMake 3.18+和--recurse-submodules构建,用于Luce-Org/llama.cpp@luce-dflash——无需PyTorch。optimizations/megakernel/是唯一需要PyTorch 2.0+的组件(CUDAExtension链接到torch C++库)。功耗调优:sudo nvidia-smi -pl 220(3090的最佳点,其他显卡需重新测试)。
核心
| 标志 | 默认值 | 作用 |
|---|---|---|
--draft | — | DFlash 草稿 GGUF,推测解码必需 |
--port N | 8000 | HTTP 端口 |
--host H | 127.0.0.1 | 绑定地址 |
--max-ctx N | auto-fit | KV 缓存大小;过大会减慢预填充(FA 步长覆盖未使用 KV) |
--max-tokens N | model-card | 生成上限 |
--model-name S | 文件名 | OpenAI model 字段 |
--chat-template-file | 自动检测 | 覆盖 Jinja 模板 |
解码(DFlash + DDTree)
| 标志 | 默认值 | 作用 |
|---|---|---|
--ddtree | 关闭(链式) | 启用树验证 |
--ddtree-budget N | 22 | 树大小。3090 上为 22(默认),5090 上为 40,GB10 上需重新测试 |
--fa-window N | 2048 | 滑动 FA 窗口;0 = 全注意力 |
--draft-residency {auto,persistent,request-scoped} | auto | 草稿权重何时从 VRAM 中驱逐。request-scoped 在每个请求的草稿工作后停放/释放它们(在 GPU 显存紧张时为目标模型释放显存);persistent 在请求间保持驻留;auto 保留当前行为,同时遵循低显存/--lazy-draft 提示。可通过 /props.runtime.draft_residency 查询。 |
--lazy-draft | 关闭 | --draft-residency=request-scoped 的旧别名(延迟加载草稿直到首个请求,使用后释放) |
预填充压缩(PFlash)
| 标志 / 环境变量 | 默认值 | 作用 |
|---|---|---|
--prefill-compression {off,auto,always} | off | 何时对提示进行评分+压缩 |
--prefill-threshold N | 32000 | 在 auto 模式下,超过此提示令牌数的单轮提示会被压缩。也是多轮请求中旧消息在 FlowKV 对其进行压缩前必须超过的每条消息最小值。若希望 FlowKV 对较短历史生效,可降低此值(如 1024)。 |
--prefill-keep-ratio F | 0.05 | 保留的源令牌比例(128K 时为 0.02,32K 时为 0.10) |
--prefill-curve T:R [T:R ...] | 关闭(固定保留比例) | 分段保留比例曲线,基于 (令牌数, 比例) 断点线性插值,例如 10000:0.5 40000:0.2 100000:0.1(10K 时 2 倍压缩,40K 时 5 倍压缩,100K+ 时 10 倍压缩)。覆盖 --prefill-keep-ratio;会话内 bandit 覆盖仍优先。 |
--prefill-drafter | 启用时必需 | 草稿器权重(Qwen3-0.6B BF16 GGUF) |
--prefill-skip-park | 关闭 | 在请求间保持草稿器驻留(占用更多 VRAM,速度更快) |
PFLASH_FREEZE_HOT_WINDOW=N | 2 | FlowKV:最近多少条消息保持原样。早于此窗口的所有消息(但在系统提示之后)会被压缩一次并缓存。值越大,保留未压缩的近期上下文越多。 |
DFLASH_FP_USE_BSA=1 | 0 | 通过 BSA 调度稀疏 FA(sm_80+);实现 10.4 倍性能必需 |
DFLASH_FP_ALPHA=0.85 | 0.12 | 块选择阈值;值越高=越严格=选择的 K 块越少 |
DFLASH_FP_PROFILE=1 | 0 | 每阶段计时日志 |
启用压缩时,请求路径会自动选择以下三种模式之一,不会叠加:首轮发送原始内容(系统提示作为稳定的缓存锚点保留),多轮续轮使用FlowKV(仅旧历史被压缩,近期轮次保持原样,因此 --prefix-cache-slots 的磁盘前缀缓存持续命中),无历史轮次的单个超大提示使用全提示 PFlash。--prefill-compression off 时,请求路径与无压缩的构建版本完全相同。
KV 缓存
| 标志 / 环境变量 | 默认值 | 作用 |
|---|---|---|
--cache-type-k / --cache-type-v | 环境驱动 | 每侧量化覆盖:f16,bf16,q4_0,q4_1,q5_0,q5_1,q8_0,tq3_0 |
DFLASH27B_KV_TQ3=1 | (默认) | 预设 TQ3_0 K+V(3.5 bpv,24 GB 显存可容纳 256K) |
DFLASH27B_KV_Q4=1 | 关闭 | Q4_0 K+V(4.5 bpv,旧版,上限约 128K) |
--prefix-cache-slots N | — | 实时前缀缓存槽数量 |
--kv-cache-dir | — | 将前缀缓存持久化到磁盘 |
--kv-cache-budget N | — | 磁盘缓存大小上限 |
有限 KV 驻留(KVFlash)
通过固定的 GPU 槽位池分页存储注意力 KV 缓存;冷 64 令牌块存储在主机内存中,位精确且可召回。解码速度不再依赖上下文长度,任何上下文下驻留 KV 均保持池大小。默认关闭;支持所有模型系列。草稿器评分驻留是所有系列的默认设置:服务器在模型旁边找到 Qwen3-0.6B 草稿器(或通过 --prefill-drafter 指定),并延迟加载作为相关性评分器来决定哪些块保持驻留——非 Qwen 目标模型(laguna、gemma4)通过为草稿器重新分词上下文文本来弥合分词器差异。无草稿器时或通过 --kvflash-policy lru 显式选择时,LRU 作为备用方案。各模型具体数值参见 Luce KVFlash →。
| 标志 / 环境变量 | 默认值 | 作用 |
|---|---|---|
--kvflash | 关闭 | 驻留池大小。auto 根据 GPU 自动调整:权重和预留显存后剩余显存的一半,按模型的 KV 密度计算,上限为解码速度接***稳最优值的位置(默认 ***,可通过 DFLASH_KVFLASH_MAX_POOL 覆盖)以及 --max-ctx。显式值会四舍五入到 256,限制在 --max-ctx 范围内,下限为受保护的最小值,确保驱逐时总有可回收的块。 |
--kvflash-policy {drafter,lru} | drafter | 驻留策略。lru 不使用草稿器探测/加载(仅基于最近度分页,无额外 VRAM 占用)。 |
--kvflash-tau N | 64 | 重选间隔下限(仅草稿器策略);实际间隔随历史增长以限制重评分开销。 |
DFLASH_KVFLASH=N | 关闭 | --kvflash 的环境变量等效形式。 |
DFLASH_KVFLASH_TAU=N | 64 | --kvflash-tau 的环境变量等效形式。 |
思考预算
| 标志 | 默认值 | 作用 |
|---|---|---|
--think-max-tokens N | model-card | … 内的最大令牌数 |
--default-max-tokens N | model-card | 默认响应上限 |
--hard-limit-reply-budget N | 4096 | 硬上限;接近限制时注入 闭合符 |
--reasoning-effort-{low,medium,high,x-high,max} N | model-card | OpenAI 风格的努力级别 |
多 GPU / IPC
MoE专家卸载(Spark)
对于专家无法放入VRAM的MoE目标(laguna、qwen35/qwen36)。--spark会自调整热/冷专家拆分、有界GPU缓存以及来自实时流量的放置配置文件;通过默认的单图融合路径,解码性能接近全GPU上限。参见 Luce Spark →。
| 标志/环境变量 | 默认值 | 作用 |
|---|---|---|
--spark | off | 一键自动调优:启用有界专家缓存,根据VRAM目标调整大小,自动加载并持续保存放置配置文件(.gguf.spark.csv)。 |
--spark-vram | 整张卡 | Spark可使用的总VRAM;在此限制下调整热层+缓存+KV的大小。 |
DFLASH_SPARK=1 | off | --spark的环境变量等效形式。 |
DFLASH_SPARK_VRAM_MB=N | — | --spark-vram的环境变量等效形式(单位为MB)。 |
DFLASH_ _EXPERT_CACHE=1 | off | 有界GPU专家缓存( = LAGUNA 或 QWEN35MOE);预热后冷缓存未命中趋近于0。 |
DFLASH_ _CACHE_SLOTS=N | auto | 每层的缓存槽数。 |
DFLASH_LAGUNA_NO_SINGLE_GRAPH=1 | off | 回退到每层解码,而非默认的单图融合混合模式。 |
DFlash基准测试 → · DFlash博客 → · PFlash基准测试 → · PFlash博客 → · 每台机器快速入门(DGX Spark、Jetson Thor、HIP)→
独立的Python基准测试;24层融合为一个持久化CUDA调度。与llama.cpp BF16相比,解码速度413 tok/s,预填充21,347 tok/s,220W下1.87 tok/J。
uv sync --extra megakernel
uv run --directory megakernel python final_bench.py
| 方法 | 预填充 pp520 | 解码 tg128 | tok/J |
|---|---|---|---|
Megakernel @220W | 21,347 | 413 | 1.87 |
llama.cpp BF16 @350W | 11,247 | 267 | 0.76 |
| PyTorch HF | 7,578 | 108 | n/a |
设置 → · 基准测试 → · 博客 →
[!NOTE] Blackwell(RTX 5090、DGX Spark / GB10): 安装程序会自动检测;NVFP4解码路径在GB10上可达约194 tok/s。参见 optimizations/megakernel/README.md#blackwell-sm_120--sm_121a。
针对各项优化和测试工具设置的视频教程。
| Luce KVFlash ▶ *** |
本地AI应该是默认选择,而非特权。私有数据、无按token计费、无供应商锁定。能够运行高性能模型的硬件已遍布桌面,但能充分发挥其吞吐量的软件却不存在。
目前没有专为本地AI推理构建的软件。大多数机器只是将标准GPU连接到桌面CPU并运行标准运行时,从未针对底层芯片优化内核。在相同的27B模型上,DGX Spark或Mac Studio的实际吞吐量被浪费了四到六倍。通用框架在过去十年中占据主导地位,因为为每款芯片手动优化的成本高于回报:一个框架,在所有设备上表现平平,在任何设备上都不卓越。推测解码、推测预填充、融合megakernel和校准MoE专家卸载可将闲置芯片性能提升3-10倍,但这些技术仅锁定在数据中心GPU的BF16权重上。消费级显卡只能继承剩余的性能。
有关基准测试和设备的详细信息,请访问 lucebo*。**
▮▮▮▮▮▮▮▮▮▮ HIP/CUDA kernel optimizations
▮▮▮▮▮▮▮▮▮▯ Speculative inference optimizations
▮▮▮▮▮▮▮▯▯▯ Support to new GPU/APU consumer cards
▮▮▮▮▮▮▮▯▯▯ Inference engine debugging
▮▮▮▮▮▮▯▯▯▯ Add new performance benchmarks
▮▮▮▮▮▯▯▯▯▯ Improvements for harnesses integration
@software{lucebox_2026,
title = {Fast LLM speculative inference server for specific consumer hardware.},
author = {Lucebox},
url = {https://github.com/Luce-Org/lucebox-hub},
year = {2026}
}
Apache 2.0 · Lucebo***
来自真实用户的反馈,见证轩辕镜像的优质服务