外观
RAG本机硬件部署与模型选型对比
约 4204 字大约 14 分钟
资料核对日期:2026-07-25。本文比较 AMD Ryzen AI Max+ 395 128GB 与 NVIDIA 32GB、48GB、96GB GPU 的本地 RAG 部署方案。硬件只向上提供 Generator、Embedding 和 Reranker HTTP 服务,不修改 RAG 软件架构 中的业务模块、API、CLI、MCP 或 Skill。
1. 结论摘要
1.1 本项目的推荐
| 目标 | 推荐硬件 | 推荐 Generator | 结论 |
|---|---|---|---|
| 个人站点、单用户、隐私和大模型实验 | Ryzen AI Max+ 395 128GB | Qwen3.6-35B-A3B GGUF Q4_K_M | 容量宽松,MoE 公开实测已达交互速度;需接受 ROCm/Vulkan 调试成本 |
| 高响应的 Agent、低到中并发 | RTX 5090 32GB | Qwen3.6-35B-A3B 4-bit,稳定性起点为官方 Qwen3.5-35B-A3B-GPTQ-Int4 | 同类 MoE 的公开解码速度显著高于 395,但 32GB 不适合 27B/35B FP8 权重加长 KV Cache |
| 使用 Qwen 官方 FP8、单卡生产推理 | RTX 6000 Ada 48GB 或 L40S 48GB | Qwen3.6-27B-FP8 | 显存能容纳约 30.87GB 官方权重文件并保留运行时/KV 空间,但检索模型建议放 CPU 或第二张卡 |
| 高质量检索模型与 Generator 全常驻、更高并发 | RTX PRO 6000 Blackwell 96GB | Qwen3.6-35B-A3B-FP8 或 Qwen3.6-27B-FP8 | 能容纳官方 FP8 Generator 与两个 2B BF16 检索模型,是最干净的单卡生产方案,成本与 600W 供电是主要代价 |
对当前只有约 1MiB Markdown、预期低并发的项目,Ryzen AI Max+ 395 128GB 已经足够上线。若主要目标变成多 Agent 连续工具循环、多人同时问答或缩短首 token 时间,优先转向 NVIDIA。
1.2 不能得出的结论
- 128GB 统一内存不等于 128GB 独立显存的吞吐;
- 32GB RTX 5090 的计算能力强,不代表 27B FP8 权重、运行时和 16K KV Cache 能稳定共存;
- 某个社区优化分支的 tokens/s 不能等于 vLLM、Ollama 或本项目端到端速度;
- 模型能装入不等于适合 RAG;70B Dense 在 395 上可运行,但公开 Q4 测试只有约 5 tok/s,不是本项目首选。
2. 软硬件解耦契约
两种硬件方案必须提供相同的内网地址:
http://model-gateway:8100/v1/chat/completions # Generator
http://model-gateway:8200/v1/embeddings # Embedding
http://model-gateway:8300/v1/rerank # Reranker
http://model-gateway:<port>/health/ready # Readiness上层只通过环境变量选择 endpoint 和服务名。硬件切换时:
- Generator 变更不重建索引;
- Embedding 模型、向量维度或归一化策略变更必须重建索引;
- Reranker 变更必须重跑检索评测,但无需重建 Dense/BM25 向量;
- API、CLI、MCP、Skill 和 VuePress 不允许包含
cuda、rocm、gguf等硬件分支逻辑。
3. 硬件事实对比
| 平台 | 内存/显存 | 官方可核对信息 | 功耗边界 | 软件生态 |
|---|---|---|---|---|
| Ryzen AI Max+ 395 | 整机最高 128GB,256-bit LPDDR5x-8000 统一内存 | Radeon 8060S、40 个图形核心、gfx1151;ROCm 7.2.1 Linux 矩阵列为支持 | 公开 llama.cpp 测试的整机观测约 133-140W,不是官方 TDP 对比 | ROCm/HIP、Vulkan/RADV、llama.cpp;兼容性和最优 backend 随模型变化 |
| GeForce RTX 5090 | 32GB GDDR7 | Blackwell、32GB、512-bit | 575W TGP,官方建议 1000W 系统电源 | CUDA 最成熟,vLLM/SGLang/llama.cpp 均可用;显存是硬上限 |
| RTX 6000 Ada | 48GB GDDR6 ECC | Ada、第四代 Tensor Core、FP8 | 300W | 适合 24/7 工作站与官方 FP8 模型,显存宽于 5090 |
| L40S | 48GB GDDR6 ECC、864GB/s | Ada 数据中心卡 | 350W,被动散热 | 适合机架和持续服务,不适合缺少服务器风道的普通机箱 |
| RTX PRO 6000 Blackwell | 96GB GDDR7 ECC、1792GB/s | Blackwell、96GB、工作站卡 | 600W | 大显存与 CUDA 生态兼得,价格、供电和散热要求最高 |
Ryzen AI Max+ 395 的 50 TOPS NPU 不进入首版性能估算。本项目使用的 llama.cpp、vLLM、PyTorch 和检索模型主要走 Radeon iGPU 或 CPU。只有在目标模型通过 NPU 运行时的精度回归和 HTTP 并发测试后,才将 NPU 纳入方案。
4. 模型文件与容量下限
以官方 Hugging Face 仓库 2026-07-25 的 LFS 文件大小为准:
| 模型 | 官方权重文件 | 含义 |
|---|---|---|
Qwen3.6-27B-FP8 | 约 30.87GB | 权重本身已接近 32GB,不能据此声称能在 5090 上稳定服务 |
Qwen3.6-35B-A3B-FP8 | 约 37.46GB | 适合 48GB 短上下文试验或 96GB 生产部署 |
Qwen3.5-35B-A3B-GPTQ-Int4 | 约 24.42GB | 32GB NVIDIA 上更可行的 Qwen 官方 4-bit 起点 |
Qwen3-VL-Embedding-2B | 约 4.26GB | 还需计入激活、tokenizer 和框架开销 |
Qwen3-VL-Reranker-2B | 约 4.26GB | 与 Generator 并发时会竞争显存和计算 |
Qwen3-Embedding-0.6B | 约 1.19GB | 适合 CPU 常驻 |
Qwen3-Reranker-0.6B | 约 1.19GB | 适合 CPU 常驻 |
文件大小只是容量下限。实际占用还包含视觉编码器、CUDA/ROCm context、图编译缓存、KV Cache、临时工作区和并发 slot。所以本文不用“显存减权重文件”的简单算式给出上下文承诺。
5. Ryzen AI Max+ 395 128GB 部署
5.1 默认模型栈
| 环节 | 默认 | 运行位置 | 备选 |
|---|---|---|---|
| Generator | Qwen3.6-35B-A3B GGUF Q4_K_M | Radeon 8060S,llama.cpp Vulkan/RADV | llama.cpp HIP/ROCm;需并发时评测 vLLM ROCm |
| Embedding | Qwen3-Embedding-0.6B BF16/INT8 | CPU 常驻 | 全量建索引时停止 Generator,独占 iGPU 运行 2B |
| Reranker | Qwen3-Reranker-0.6B BF16/INT8,Top 20 | CPU 常驻 | 2B 与 Generator 串行调度 |
| Qdrant/API | Qdrant + FastAPI | CPU/系统内存 | 无需 GPU |
395 的首选不是 Qwen3.6-27B Dense。公开实测显示,同机的 Qwen3.6-35B-A3B Q4_K_M 直接 llama-bench 约 62.56 tok/s,而 Qwen3.6-27B 匹配 4-bit 基线约 10.5-10.95 tok/s。35B-A3B 虽然总参数更多,但每 token 只激活约 3B,更符合该 APU“容量大、带宽与计算弱于独显”的特征。
5.2 系统与运行时
稳定基线:
OS: Ubuntu 24.04.4 LTS
GPU architecture: gfx1151
ROCm: 7.2.1 官方支持组合
Generator baseline: llama.cpp Vulkan/RADV
Generator candidate: llama.cpp ROCm/HIP or AMD vLLM image
Context: 16K
Parallel slots: 1不默认追踪 TheRock/nightly。截止调研日期,公开 issue 仍能看到 gfx1151 的新版运行时崩溃、内存识别和 Qwen MoE 异常;使用官方支持组合并固定镜像 digest,比追求最新 nightly 更适合本项目。
llama.cpp 服务示意,具体参数以当时固定的 llama.cpp 版本为准:
llama-server \
--model /models/Qwen3.6-35B-A3B-Q4_K_M.gguf \
--alias local-generator \
--host 0.0.0.0 \
--port 8100 \
--ctx-size 16384 \
--parallel 1 \
--n-gpu-layers 999 \
--flash-attn on \
--no-mmap5.3 内存与调度
- 以 128GB 物理内存机型为前提,64GB 机型不沿用本方案;
- 预留至少 24GB 给 OS、Qdrant、模型运行时、索引和页缓存;
- 默认不让 Generator 与 2B Reranker 同时占用 iGPU;
- 全量建库是离线作业,可暂停 Generator 后使用 2B Embedding;
- BIOS UMA、GTT 与可分配内存以具体整机和官方内核/驱动组合实测,不盲目复制论坛的 kernel parameters。
6. NVIDIA GPU 部署
6.1 RTX 5090 32GB:性能优先档
默认栈:
| 环节 | 默认 | 理由 |
|---|---|---|
| Generator | Qwen3.5-35B-A3B-GPTQ-Int4 + vLLM/SGLang | 官方 Qwen 4-bit 文件约 24.42GB,比 27B FP8 更适合 32GB |
| Generator 性能候选 | Qwen3.6-35B-A3B Q4 GGUF 或 NVFP4 | 公开 5090 实测快,但需固定社区量化哈希并重跑引用评测 |
| Embedding/Reranker | 0.6B CPU 常驻 | 给 Generator 留足 KV Cache 和运行时空间 |
| 高质量检索可选 | 第二张 16GB 以上 GPU 承载两个 2B 服务 | 与 5090 独立进程,不做生成模型张量并行 |
5090 不默认使用 Qwen3.6-27B-FP8:官方 safetensors 已约 30.87GB,几乎没有留出 CUDA context、KV Cache 和工作区。直接尝试可能在某些短上下文配置中加载,但不是可生产化的容量结论。
vLLM 起点示意:
vllm serve Qwen/Qwen3.5-35B-A3B-GPTQ-Int4 \
--served-model-name local-generator \
--host 0.0.0.0 \
--port 8100 \
--max-model-len 16384 \
--max-num-seqs 1 \
--language-model-only \
--quantization moe_wna16 \
--gpu-memory-utilization 0.90Blackwell + NVFP4 当前仍需版本级验证。公开 vLLM issue 显示过 5090 上的 Qwen3.6 NVFP4 冷启动长、内核选择或稳定版加载回归。因此必须记录 driver、CUDA、PyTorch、vLLM 和模型 commit,不只写“RTX 5090”。
6.2 48GB Ada:官方 FP8 档
RTX 6000 Ada 或 L40S 默认使用 Qwen3.6-27B-FP8:
vllm serve Qwen/Qwen3.6-27B-FP8 \
--served-model-name local-generator \
--host 0.0.0.0 \
--port 8100 \
--max-model-len 16384 \
--max-num-seqs 1 \
--language-model-only \
--reasoning-parser qwen3 \
--gpu-memory-utilization 0.88Qwen3.6-35B-A3B-FP8 的官方权重约 37.46GB,在 48GB 上只作为 OOM/性能候选,必须用真实 8K-16K RAG 输入压测后再判断。首版选 27B FP8 能留出更明确的运行时和 KV 余量。
48GB 单卡不强求 2B Embedding 与 2B Reranker 全部 GPU 常驻。可以使用 0.6B CPU 档,或增加一张独立检索卡。L40S 必须放在满足被动散热的服务器风道中。
6.3 RTX PRO 6000 Blackwell 96GB:单卡完整档
推荐共存:
- Generator:
Qwen3.6-35B-A3B-FP8或Qwen3.6-27B-FP8; - Embedding:
Qwen3-VL-Embedding-2BBF16; - Reranker:
Qwen3-VL-Reranker-2BBF16; - Generator 起始上下文 32K,先以
max_num_seqs=1验证,再增加并发。
三组官方权重文件合计约 45.97GB(35B-A3B FP8 + 两个 2B),96GB 仍有显著的运行时与 KV 空间。这不是最终显存占用承诺,但相比 32GB/48GB 方案,它不需要为了装入而降级检索模型或强制串行。
7. 部署拓扑
部署文件建议放在:
deploy/
├─ compose.core.yml # API / Qdrant / PostgreSQL
└─ models/
├─ compose.ryzen-ai-max.yml # 395 profile
├─ compose.nvidia-32g.yml # 5090 profile
├─ compose.nvidia-48g.yml # Ada/L40S profile
├─ compose.nvidia-96g.yml # PRO 6000 profile
└─ model-gateway.yml # 统一端口和健康检查任一时刻只启动一个 model profile。compose.core.yml 不包含 GPU 设备、driver 或模型名,确保软件与硬件部署解耦。
8. 公开速度数据
8.1 可引用的结果
| 硬件 | 模型/量化 | 运行时与口径 | 公开结果 | 可以支持的结论 |
|---|---|---|---|---|
| Ryzen AI Max+ 395 | Qwen3.6-35B-A3B Q4_K_M | llama.cpp Vulkan,tg128 | 62.56 tok/s | 35B-A3B MoE 在 395 上具备交互性 |
| Ryzen AI Max+ 395 | Qwen3.6-35B-A3B Q4_K_M | Ollama API 暖请求 | 60.57 tok/s 平均 | 普通服务路径可接近直接测试,但版本影响大 |
| Ryzen AI Max+ 395 | Qwen3.6-35B-A3B GPTQ Int4 | vLLM ROCm,持续服务 | 约 38 tok/s | vLLM 可用,不代表它对单请求一定快于 llama.cpp |
| Ryzen AI Max+ 395 | Qwen3.6-27B 匹配 4-bit | llama.cpp Q4 基线 | 10.5-10.95 tok/s | Dense 27B 不是 395 的性能首选 |
| RTX 5090 | Qwen3.6-35B-A3B Q4_K_M | llama.cpp,bs=1,128-32K context | 276-281 tok/s | 同类 GGUF 在 5090 的解码明显更快 |
| RTX 5090 | 同一 Q4_K_M | SparkInfer,bs=1,128-32K context | 428-481 tok/s | 专用 Blackwell 内核还有显著优化空间,但不是 vLLM 或 llama.cpp 通用结果 |
| RTX 5090 | Qwen3-30B-A3B AWQ | vLLM,FP8 KV,128-16K context | 278 -> 80 tok/s | 长上下文会明显降低解码速度,不能只引用短 context 峰值 |
上表中 395 和 5090 的 Qwen3.6-35B-A3B 量化类型接近,但没有使用同一整机镜像、llama.cpp commit、上下文和电源配置,因此:
- 可以下结论:5090 更适合追求解码速度和 Agent 循环;
- 不能下结论:本项目上线后 5090 一定是 395 的某个固定倍数;
- 未找到 RTX 6000 Ada、L40S 或 RTX PRO 6000 Blackwell 在相同 Qwen3.6、量化、context 和运行时下的可复核对比,速度标记为 待压测。
8.2 为什么不直接抄最快数字
公开结果已经表明同一台 395 上,Qwen3.6-35B-A3B 可因为 Vulkan/HIP、llama.cpp/vLLM/Ollama、量化和 MTP 从约 38 tok/s 变到 60+ tok/s,实验性特化分支还可更高。RTX 5090 同样存在 vLLM、llama.cpp、SparkInfer 和 NVFP4 内核差异。
因此本项目的购买与上线结论使用“官方支持 + 可重复社区数据 + 目标机压测”三层证据。前两层用来缩小候选,最后一层决定生产参数。
9. 统一压测方案
目标机必须使用相同问题集和以下口径:
9.1 微基准
| 项目 | 参数 |
|---|---|
| 模型 | Qwen3.6-35B-A3B,尽量使用相同 Q4_K_M 文件 |
| Prompt processing | pp512、pp4096、pp16384 |
| Text generation | tg128,已填充 context 为 512、4K、16K |
| 重复 | 1 次预热 + 5 次正式,报告 P50/P95 而不是最快值 |
| 缓存 | 提示词缓存关闭;冷加载和热请求分开报告 |
| 记录 | 模型 SHA、量化、运行时 commit、driver、OS、功耗、峰值内存 |
9.2 HTTP 服务基准
- 2K 输入 + 512 输出,并发 1;
- 8K 输入 + 1K 输出,并发 1;
- 4K 输入 + 512 输出,并发 2/4;
- 记录 TTFT、TPOT、请求总耗时、聚合 tokens/s、错误率与峰值内存;
- 连续运行 30 分钟,检查 OOM、重启、降频和输出损坏。
9.3 RAG 端到端
- 固定 Hybrid Top 60 + 60、RRF Top 30、Rerank Top 20、最终 6-10 个 Parent;
- 运行 150 条评测集,同时记录检索正确率、引用正确率与拒答 F1;
- 不能为了提速改变问题、证据数或关闭引用校验;
- 最终比较使用“达到质量门槛后的延迟和吞吐”,不比较未达质量门槛的快速模型。
10. 选型决策表
| 场景 | 395 128GB | RTX 5090 32GB | 48GB NVIDIA | 96GB NVIDIA |
|---|---|---|---|---|
| 当前小型站点 RAG | 推荐 | 推荐,但性能富余 | 推荐 | 过度配置 |
| 单用户使用 35B MoE | 推荐 | 性能首选 | 推荐 | 推荐 |
| 试验 70B/80B/120B 量化 MoE | 容量首选 | 大多无法单卡完整装入 | 70B Q4 需谨慎算 KV | 推荐 |
| 官方 27B FP8 | 不推荐 | 容量过紧 | 推荐 | 推荐 |
| 2B Embedding + 2B Reranker + Generator 全 GPU 常驻 | 不推荐并发 | 不推荐 | 需精算或第二卡 | 推荐 |
| 多 Agent 工具循环 | 只适合低并发 | 推荐 | 推荐 | 最佳 |
| 最少框架兼容性风险 | 需更多调试 | CUDA 生态优势 | CUDA 生态优势 | CUDA 生态优势 |
| 低整机推理功耗 | 更有利 | 575W GPU TGP | 300-350W GPU | 600W GPU |
采购前的实际决策顺序:
- 将“最大能装什么”和“日常服务要多快”分开;
- 若主力是本项目单用户 RAG,先选 395 128GB 并压测 35B-A3B;
- 若发现 Agent 多步调用的等待时间是主要问题,选 5090,不要为 FP8 硬塞 32GB;
- 若要求官方 FP8 checkpoint、长上下文和稳定并发,从 48GB 起步;
- 若要求单卡同时承载 Generator 和高质量 2B 检索套件,直接评估 96GB,不在 32GB 上反复挤占内存。
11. 上线检查清单
12. 资料与数据来源
官方资料
- AMD Ryzen AI Max+ 395 产品规格:128GB、256-bit LPDDR5x-8000、Radeon 8060S、40 图形核心。
- AMD Ryzen APU Linux 支持矩阵:ROCm 7.2.1、Ubuntu 24.04.4 和
gfx1151支持状态。 - AMD Ryzen vLLM Docker:
gfx1150/gfx1151镜像与 vLLM 路径。 - AMD Ryzen llama.cpp:Ryzen APU llama.cpp 官方指南。
- NVIDIA GeForce RTX 5090:32GB GDDR7、512-bit、575W TGP。
- NVIDIA RTX 6000 Ada:48GB GDDR6 ECC、FP8 Tensor Core、300W。
- NVIDIA L40S:48GB GDDR6 ECC、864GB/s。
- NVIDIA RTX PRO 6000 Blackwell:96GB GDDR7 ECC、1792GB/s、600W。
- Qwen3.6-27B-FP8 与 Qwen3.6-35B-A3B-FP8:官方权重、许可证和推理框架要求。
- Qwen3.5-35B-A3B-GPTQ-Int4:Qwen 官方 4-bit MoE 候选。
公开实测与兼容性记录
- Level1Techs: Strix Halo LLM Benchmark Results:统一 llama.cpp 表格、backend 差异与内存带宽观察。
- Jeff Geerling: Framework Desktop benchmark:395 的 Vulkan llama-bench、功耗和 70B Q4 结果。
- Strix Halo Guide 原始结果索引:Qwen3.6-35B-A3B 的 llama.cpp、Ollama、并发和长上下文记录。
- vLLM Radeon 8060S MoE 调优记录:395 上 Qwen3.6-35B-A3B GPTQ Int4 的持续服务数据。
- SparkInfer RTX 5090 结果:同一 Qwen3.6-35B-A3B Q4_K_M 在 5090 上的 llama.cpp 与优化内核对比。
- vLLM RTX 5090 竞品测试:Qwen3-30B-A3B 在不同 context 的 vLLM/SGLang/GGUF 数据和失败记录。
- Qwen3.6-27B on Strix Halo:匹配 4-bit 的 395 Dense 基线与实验性内核数据。
数据等级
官方产品页和模型仓库支持规格与容量判断;社区原始日志支持性能量级和兼容性风险判断。社区 PR/issue 不等于上游已发布能力,未在目标机重复的数字不进入上线 SLA。
更新日志
2026/7/25 17:16
查看所有更新日志
618a5-docs: expand RAG architecture and hardware guidance于
版权所有
版权归属:huanghx02