跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • 浅色
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • 深色
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(LCZ-Blue)
  • 不使用皮肤
  • LCZ-Green
  • LCZ-Blue
  • LCZ-Black
折叠
品牌标识

抡锤者

首页 版块 标签 硬件 AI 广场
hoyin258H

hoyin258

@hoyin258
取消关注 关注
关于
帖子
5
主题
1
分享
0
群组
0
粉丝
0
关注
0

帖子

最新 最佳 有争议的

  • 京东自营上架二手3090,标价8699,近期有自建本地AI算力的玩家可以给东哥走个面,单卡或者双卡TP都很有CP值,比7900XTX新卡更好!
    hoyin258H hoyin258

    版主真好, 但影響了大了,

    老實說我都想多RAM

    AI硬件

  • Gigabyte Radeon Pro W7800 AI TOP 48GB + Qwen3.8-27B 本地部署實測報告
    hoyin258H hoyin258

    我係你全部弱化版..
    DSH 係MAC PRO 2017
    行7900XTX 香港8千

    都係睇佢講,所以吸引左行LOCAL QWEN 27B

    估唔到香港都有人一齊受影響

    不過講真, 我覺得本地都是VRAM 愈多愈好
    7900xtx 夠快, 短問答是不錯
    但長時間CODING agnet , 精度跌就好難用, 其本上行幾輪上下文就會影響到

    我而家試梗用unsloth 係7900XTX 下,盡量用更少RAM
    不過真係多RAM 就好多野做到...可惜~ BTW,邊到仲有得買?

    @小兒子,幫我轉做簡體中文

    AI硬件

  • 15 年老平台 + 单张 RX 7900 XTX 跑 Qwen3.8-27B:本地 Coding Agent 实测
    hoyin258H hoyin258

    好的,你整理後舒服多了

    AI硬件 7900xtx qwen-27b 本地模型

  • 15 年老平台 + 单张 RX 7900 XTX 跑 Qwen3.8-27B:本地 Coding Agent 实测
    hoyin258H hoyin258

    ab3aaef4-4185-4266-ae2b-c1a96ac3111b(1).png

    AI硬件 7900xtx qwen-27b 本地模型

  • 15 年老平台 + 单张 RX 7900 XTX 跑 Qwen3.8-27B:本地 Coding Agent 实测
    hoyin258H hoyin258

    先说结论

    我原本只是想验证一件事:

    一台十多年前的旧电脑,如果只升级显卡,能不能变成一台真正可用的本地 Coding Agent Server?

    实际测试下来,答案是:可以。

    我的平台是非常老的 Intel Sandy Bridge 平台,只有 16GB DDR3,没有 ReBAR,CPU 也只是 i5-2400。

    唯一真正有算力的硬件,是一张:

    AMD Radeon RX 7900 XTX 24GB

    目前我最终使用的组合是:

    项目 配置
    模型 Qwen3.8-27B
    量化 Q4_K_M GGUF
    Backend llama.cpp
    GPU Backend Vulkan / Mesa RADV
    MTP MTP5
    Context 98K
    KV Cache K=q8_0 / V=q4_1
    Parallel 1
    Prompt Cache 开启
    Reasoning 关闭
    Client VS Code Agent
    API OpenAI-compatible API

    在真实 Coding Agent 工作流里,实测大致可以做到:

    项目 实测
    Decode 约 40~46 tokens/s
    长 Prompt Processing 约 490~540 tokens/s
    Context 50K+ 可以正常工作
    25 Steps Agent Task 约 6 分钟
    46 Steps Agent Task 约 7 分 18 秒

    而且这里说的不是单纯让模型“写一段代码”。

    我实际跑的是完整 Agent Loop:

    读取项目 → 修改代码 → 执行命令 → 启动网页 → Browser / Playwright 测试 → 找问题 → 修改 → Retest → 完成任务

    所以这次实验给我的最大结论其实不是“7900 XTX 能跑多少 token”。

    而是:

    对于可以主要放进显存的量化模型,旧 CPU、DDR3、老主板并不一定会让整台机器失去作为 Local AI Server 的价值。

    如果手上本来已经有一台旧电脑,只想搭一台本地 Coding Agent Server,未必一定要先把整个平台全部换掉。


    一、实验背景

    这台机器并不是专门为了 AI 新装的。

    原来的硬件大概是:

    硬件 配置
    CPU Intel Core i5-2400
    CPU 规格 4 Core / 4 Thread
    架构 Sandy Bridge
    平台 B75
    RAM 16GB DDR3
    SSD SATA SSD
    系统 Ubuntu Server
    GPU RX 7900 XTX 24GB

    因此这个实验的核心思路很简单:

    尽量不要让旧 CPU 参与模型计算,把主要推理工作留在 GPU VRAM。

    换句话说,我并不是想证明 i5-2400 很适合跑 AI。

    真正想测试的是:

    当模型主要在 GPU 上运行时,Host 平台到底可以旧到什么程度?


    二、我的主要用途:Coding Agent,而不是聊天

    这台 Server 主要不是拿来聊天。

    我的目标是让它成为一台:

    Local Coding Agent Server

    Client 主要使用 VS Code Agent,通过 OpenAI-compatible Chat Completions API 连接本地模型。

    Agent 会实际执行:

    Agent Workflow
    Read repository
    Edit files
    Terminal command
    Browser automation
    Playwright
    Debug
    Retest
    Subagent review

    因此我比较关心的并不是单轮 Benchmark,而是:

    长 Context、多轮 Tool Calling、Prompt Cache、Agent Loop 和真实任务完成时间。

    这也是为什么下面很多数据,和普通“问一句问题然后看 token/s”的 Benchmark 会有一点不同。


    三、最终比较满意的配置

    目前我实际长期使用的大致配置如下。

    项目 配置
    模型 Qwen3.8-27B Q4_K_M
    GGUF 大小 大约 17~18GB
    Backend llama.cpp
    GPU Backend Vulkan / Mesa RADV
    Context 98,304 tokens
    Parallel 1
    KV Cache K q8_0
    KV Cache V q4_1
    MTP MTP5
    Prompt Cache 开启
    Reasoning OFF

    这里有一个很重要的前提:

    必须使用保留 MTP / NextN layers 的 GGUF。

    不是所有同名 Q4_K_M GGUF 都可以直接开启 MTP。

    因为 Host 平台太旧,我最后没有继续花时间折腾 ROCm Host compatibility。

    对这台机器而言,Vulkan 方案已经足够稳定。

    实际 Agent Session 已经跑到:

    55,899 tokens

    而没有发生 truncation。

    这也让我改变了一个原本的看法:

    以前觉得 64K Context 已经很大。

    实际跑 Coding Agent 后,会发现:

    64K 并没有想象中那么宽裕。

    因为除了聊天内容之外,还有:

    Context 内容
    System Prompt
    Tool Schema
    Agent History
    File Context
    Tool Results

    这些东西增长得很快。


    四、KV Cache:目前使用 K8 / V4.1

    我最开始为了尽量省显存,使用过:

    阶段 K V
    最初 q4_0 q4_0
    目前 q8_0 q4_1

    也就是我现在使用的:

    K8 / V4.1

    原因很简单。

    24GB VRAM 不只是存模型,还要同时容纳:

    Model + KV Cache + MTP + llama.cpp Buffers + Long Context

    因此我没有把 K/V 两边都开得很高。

    目前对我的 Workload 来说:

    K8 / V4.1 是比较实际的平衡点。


    五、MTP5 的实际收益

    我一开始使用的是 MTP2,后来改成 MTP5。

    实际结果:

    MTP Decode Acceptance Mean Accepted Length
    MTP2 约 39~40 t/s 约 71% 约 2.4
    MTP5 约 44~46 t/s 约 64~69% 约 4.2~4.5

    MTP5 其中两次 Agent Request:

    Prompt Prompt Processing Decode Acceptance Mean Accepted Length
    20,149 tokens 489.70 t/s 44.26 t/s 64.30% 4.21
    45,222 tokens 538.98 t/s 44.49 t/s 69.41% 4.47

    实际生成过程中经常看到:

    43~46 t/s

    所以在我的机器上,大致可以理解成:

    MTP2:约 39~40 t/s

    MTP5:约 44~46 t/s


    六、MTP 不能只看 Acceptance %

    这个也是我实际跑过以后才觉得比较有意思的地方。

    MTP2 MTP5
    Acceptance 约 71% 约 64~69%
    Mean Accepted Length 约 2.4 约 4.2~4.5
    Decode 约 39~40 t/s 约 44~46 t/s

    只看 Acceptance:

    71% 比 64% 高

    很容易觉得 MTP2 比较好。

    但实际 Decode Speed 反而是 MTP5 更快。

    所以我现在看 MTP,不会只盯着 Acceptance Rate。

    至少要一起看:

    Acceptance % + Mean Accepted Length + Decode tokens/s + 最终任务时间

    最终还是以真实 Workload 为准。


    七、两次真实 Agent Task

    两次比较完整的测试:

    测试 Steps 时间
    Test 1 25 Steps 约 6 分钟
    Test 2 46 Steps 7 分 18 秒

    25 Steps / 6 分钟

    Agent 自己完成:

    写 HTML、写 CSS、写 JavaScript、启动本地 Server、打开 Browser、Playwright Test、Search Test、Filter Test、Add Issue、Validation、Close / Reopen、Delete、LocalStorage、Reset、Mobile 375px Test、Desktop Layout Check、找 UI 问题、修改 CSS、Retest、检查 Console Error。

    整个过程没有人工接手。

    46 Steps / 7 分 18 秒

    这一次包括:

    Main Agent、Responsive Review Subagent、Browser Automation、Mobile Test、Desktop Test、Console Test、CSS Fix、Retest。

    Subagent 还额外发现了几个 UI 问题,例如:

    • Mobile Toolbar 有异常空白
    • Touch Target 太小
    • Narrow Screen Badge Wrapping 不理想

    Main Agent 再根据 Review 修改 CSS,然后重新测试。

    最终验证:

    项目 结果
    375px 无 Horizontal Scroll
    Buttons ≥ 44px
    Mobile Stat Cards 2 Columns
    Desktop 4 Columns
    Console 0 Errors

    如果单纯拿 Steps 去除时间:

    测试 平均时间
    25 Steps / 360 秒 ≈ 14.4 秒 / Step
    46 Steps / 438 秒 ≈ 9.5 秒 / Step

    当然 Agent Step 本身并不是完全相同的工作量,所以这个数字不能当正式 Benchmark。

    不过它至少说明一件事:

    真实 Agent 工作流的总时间,不是单纯由 Output Token Speed 决定。


    八、一次 56K Context 的实际 Session

    其中一个比较长的 Agent Session,结束时数据是:

    指标 数据
    Final Context 55,899 tokens
    Truncated 0
    Decode 40.84 t/s
    Generated 720 tokens
    MTP Acceptance 64.327%
    Accepted 550
    Draft Generated 855
    Mean Accepted Length 4.22

    生成过程中我看到过:

    44.59 t/s、44.61 t/s、43.52 t/s、42.83 t/s

    所以在我的使用方式里:

    40~46 t/s 是一个比较接近真实 Coding Workload 的范围。


    九、长 Context 下,真正慢的可能不是 Decode

    这是这次实验里我觉得很值得分享的一点。

    其中一次 Request:

    阶段 Tokens 性能 耗时
    Prefill 45,222 tokens 538.98 tokens/s 约 84 秒
    Decode 455 tokens 44.49 tokens/s 约 10 秒

    也就是说这一轮 Request 大概是:

    84 秒 Prefill vs 10 秒 Decode

    所以 Coding Agent 到了 40K~50K Context 以后:

    真正的等待时间很可能主要来自 Prompt Processing,而不是 Output Token Speed。

    这也是为什么我后来没有只追求把 Decode 从 40 t/s 调到 45 t/s。

    因为如果每一轮都要重新 Prefill 50K Token,

    那多出来的几 t/s,其实不是最大的性能差异。


    十、Prompt Cache 对 Coding Agent 非常重要

    多轮 Coding Agent 的请求,经常会和上一轮共享大量 Prefix。

    例如:

    System Prompt + Tool Schema + Conversation History + Project Context

    我实际在 Log 里面看过:

    LCP Similarity = 0.999

    在一个已经很长的 Conversation 里,下一轮如果 Prefix Cache 命中,

    实际可能只需要重新 Evaluate:

    二十多个新 Tokens

    这种情况下,Agent 的体感和重新 Prefill 几十 K Token 完全是两回事。

    所以对我来说:

    Prompt Cache 是 Coding Agent 配置里非常重要的一部分。


    十一、16GB RAM 反而是这台机器最需要注意的地方

    项目 数据
    GPU VRAM 24GB
    Host RAM 16GB DDR3
    Host Memory Peak 13GB+
    Host Prompt Cache 1GB

    实际运行时,也曾经出现少量 Swap。

    老机器一旦开始 Swap,整个 Ubuntu 的响应会明显变差。

    因此我没有照搬一些 64GB / 128GB RAM Server 的配置。

    对这台机器来说:

    稳定性比多一点 Host Cache 更重要。


    十二、我给模型进程加了 RAM 保护

    因为只有 16GB RAM,我还给模型进程加了 Memory Limit。

    大致逻辑类似:

    MemoryHigh=12G
    MemoryMax=14G
    MemorySwapMax=0
    OOMPolicy=stop
    OOMScoreAdjust=500
    Restart=on-failure
    RestartSec=60
    

    这些设置不是为了提升性能。

    目的只有一个:

    宁愿模型服务失败,也不要因为 Swap 把整台 Server 一起拖死。

    对旧机器尤其有用。


    十三、没有 ReBAR 也可以跑

    这台 B75 平台没有 Resizable BAR。

    在 Vulkan 环境下我另外使用了:

    GGML_VK_DISABLE_HOST_VISIBLE_VIDMEM=1
    

    至少在我这台没有 ReBAR 的老平台上,目前运行稳定。

    因此:

    没有 ReBAR 并不代表 llama.cpp + Vulkan + 7900 XTX 就一定不能用。

    它当然不是理想平台,但对于“把旧电脑重新利用起来”这种场景,仍然有实际价值。


    十四、Parallel=1 不等于 Agent 不能使用 Subagent

    我之前也测试过:

    Parallel=2

    后来因为主要只有一个 Coding Agent 长时间工作,所以最终改成:

    Parallel=1

    有意思的是:

    VS Code Agent 仍然可以启动:

    Main Agent + Subagent

    原因是:

    Agent / Subagent 和 llama.cpp Parallel Slot 并不是同一个概念。

    Parallel=1 代表:

    同一时间只有一个 LLM inference slot。

    但 Harness 仍然可以管理多个 Agent Context。

    它们的模型请求可以排队使用同一个 Slot。

    而且像下面这些操作:

    Playwright、Browser、Terminal、Read File

    本身也不等于 GPU 正在 Decode。

    所以实际使用中:

    VS Code:
    Main Agent + Subagent
    
    llama.cpp:
    Parallel = 1
    

    是可以正常工作的。


    十五、Reasoning OFF 也能完成完整 Agent Workflow

    目前我的配置是:

    项目 配置
    Reasoning OFF
    Thinking false

    前面提到的:

    • 25 Steps / 6 分钟
    • 46 Steps / 7 分 18 秒

    都是在这个状态下完成。

    至少对于我的 Coding Workflow:

    Read → Edit → Test → Browser → Debug → Retest

    关闭 Explicit Reasoning 并不代表 Agent 就无法完成复杂任务。

    因为 Agent 本身已经形成了一个外部循环:

    Tool → Result → Next Action

    另外一个实际好处是:

    不会先生成很长一段 Thinking,然后才真正开始 Call Tool。


    十六、一个真正让我卡了很久的坑:Qwen Tool Loop + Jinja

    这个问题反而比 GPU 更麻烦。

    最开始的时候:

    • 普通 Chat 正常
    • 第一轮 Tool Call 正常
    • Edit 正常

    但 Agent 连续跑了一段时间之后,会突然出现:

    HTTP 500

    Server Log 会看到类似:

    Jinja Exception:
    No user query found in messages.
    

    Coding Harness Retry 几次以后,整个 Workflow 就会失败。

    一开始我怀疑过很多东西:

    Context、MTP、GPU、Vulkan、VRAM

    最后发现和这些都没有直接关系。

    真正的问题是:

    Qwen Chat Template + 多轮 Agent Tool History


    十七、换 Chat Template 后,Agent Loop 才真正稳定

    后来我换用了针对 Qwen Agent / Tool Loop 修正过的 Chat Template,

    通过:

    --jinja
    --chat-template-file <chat-template>
    

    加载。

    之后同类型 Agent Workflow 可以连续跑几十个 Steps。

    之前经常出现的:

    No user query found in messages
    

    基本消失。

    所以如果有人遇到这种情况:

    Qwen 普通聊天完全正常,但 llama.cpp 接 Coding Agent,跑多轮 Tool Calling 后突然 Jinja 500

    我会建议优先检查:

    Chat Template

    而不是先怀疑显卡或者 Context。


    十八、另一个坑:同名 GGUF 不代表内容一样

    我第一次下载 Qwen3.8-27B Q4_K_M GGUF 时:

    • Chat 正常
    • Coding 正常
    • Tool Calling 正常

    但一开:

    --spec-type draft-mtp
    

    就报:

    model doesn't contain MTP layers
    

    原因是那个 GGUF 并没有保留 MTP / NextN layers。

    后来换了一个明确支持 MTP 的 conversion 才正常。

    所以:

    Qwen 原始模型支持 MTP,不代表所有 Community GGUF 都支持 MTP。

    即使文件名都叫:

    Qwen3.8-27B-Q4_K_M

    不同:

    Repository、Converter、Conversion 时间、Export 方式

    里面实际保留的 Tensor 都可能不同。

    所以不要只看文件名。


    十九、目前的性能汇总

    类别 项目 配置 / 实测
    硬件 CPU Intel Core i5-2400
    硬件 Platform B75 / Sandy Bridge
    硬件 RAM 16GB DDR3
    硬件 GPU AMD Radeon RX 7900 XTX 24GB
    模型 Model Qwen3.8-27B
    模型 Quant Q4_K_M
    模型 GGUF MTP-capable GGUF
    Backend Runtime llama.cpp
    Backend GPU Vulkan / RADV
    配置 Parallel 1
    配置 Context 98,304
    配置 KV K q8_0
    配置 KV V q4_1
    配置 Batch 512
    配置 uBatch 512
    配置 Flash Attention ON
    配置 MTP 5
    配置 Reasoning OFF
    配置 Prompt Cache ON
    性能 Decode 约 40~46 tokens/s
    性能 Long Prompt Processing 约 490~540 tokens/s
    MTP5 Acceptance 约 64~69%
    MTP5 Mean Accepted Length 约 4.2~4.5
    Session Final Context 55,899 tokens
    Session Truncated 0
    Workflow 25 Steps 约 6 分钟
    Workflow 46 Steps 7 分 18 秒

    二十、这次实验最重要的几个发现

    如果把整个实验浓缩成几条,我觉得最值得分享的是:

    1. 模型只要主要留在显存里,Host 平台可以比想象中旧很多。

      我的 i5-2400 和 DDR3 并没有阻止 7900 XTX 把 27B Q4 模型跑到 40~46 t/s。

    2. Coding Agent 的瓶颈不能只看 Decode Speed。

      Context 到 40K~50K 以后,Prefill 时间可能远远超过 Decode 时间。

    3. Prompt Cache 对 Agent 的价值非常高。

      特别是 Tool Schema、System Prompt 和 Conversation History 很长的时候。

    4. MTP 是否有效,要看真实任务。

      Acceptance Rate 高,不代表最终一定更快。

    5. GGUF 是否保留 MTP Layers 很重要。

      同一个模型、同一个量化名称,不同 conversion 可能完全不同。

    6. Chat Template 对 Tool Calling 稳定性非常重要。

      普通 Chat 能跑,并不代表多轮 Agent Tool Loop 一定能跑。

    7. 16GB RAM 可以用,但已经非常接近下限。

      这种配置里,RAM 稳定性反而比 CPU 性能更值得关注。


    二十一、最后的结论

    这次实验原本只是想看看:

    一台十几年前的旧 PC,加一张现代 GPU,到底还能不能重新利用。

    实际结果比我预期好。

    目前这台机器已经不是只能跑一句 Prompt 的 Demo。

    它可以实际完成:

    Build → Run → Browser → Playwright → Test → Find Problem → Edit → Retest → Finish

    这样的完整 Coding Agent Workflow。

    所以如果手上本来已经有旧 PC,而需求主要是:

    单用户 / 少量用户的 Local LLM 或 Coding Agent Server

    我觉得不一定要一开始就把:

    CPU、主板、RAM、SSD、GPU

    全部换成新平台。

    只要模型大小和显存配置合适,

    先把预算集中到 GPU,旧 Host 继续使用,在某些场景下其实是完全可行的。

    至少 Qwen3.8-27B Q4 + RX 7900 XTX 24GB + llama.cpp Vulkan 这个组合,在我这里已经从“能跑”,走到了“真的可以拿来工作”。


    附录:当前 llama.cpp 参数参考

    参数 设置
    Backend Vulkan
    GPU Layers all
    Host Offload 尽量避免
    Load Mode mmap
    Parallel 1
    Context / Slot 98,304
    KV Cache K q8_0
    KV Cache V q4_1
    Prompt Cache ON
    Host Prompt Cache 1024 MB
    Batch 512
    uBatch 512
    Flash Attention ON
    Continuous Batching ON
    MTP ON
    MTP n-max 5
    MTP Draft K q4_0
    MTP Draft V q4_0
    Reasoning OFF
    CPU Threads 4

    对应参数大致如下:

    --gpu-layers all
    --no-host
    --fit off
    --load-mode mmap
    --parallel 1
    --kv-unified
    --kv-unified-per-slot 98304
    --cache-type-k q8_0
    --cache-type-v q4_1
    --cache-ram 1024
    --cache-prompt
    --cache-reuse 256
    --batch-size 512
    --ubatch-size 512
    --flash-attn on
    --cont-batching
    --spec-type draft-mtp
    --spec-draft-n-max 5
    --spec-draft-type-k q4_0
    --spec-draft-type-v q4_0
    --reasoning off
    --jinja
    --chat-template-file <qwen-agent-chat-template>
    --threads 4
    --threads-batch 4
    

    这些参数并不是所谓的“最佳答案”。

    它们只是我在:

    i5-2400 + 16GB DDR3 + RX 7900 XTX 24GB

    这台机器上,经过实际 Coding Agent Workload 后,目前觉得性能、显存占用和稳定性比较平衡的一组配置。

    不同 RAM、Context、模型 conversion 和使用方式,最佳值都会不同。

    AI硬件 7900xtx qwen-27b 本地模型
  • 登录

  • 登录或注册以进行搜索。
  • 第一个帖子
    最后一个帖子
0
  • 版块
  • 最新
  • 标签
  • 热门
  • 用户
  • 群组