跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • 浅色
  • 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

  • 默认(不使用皮肤)
  • 不使用皮肤
折叠
品牌标识

抡锤者

  1. 主页
  2. LLM讨论区
  3. 3090单卡跑的3090 club项目,hermes很慢,可能是啥原因呢?

3090单卡跑的3090 club项目,hermes很慢,可能是啥原因呢?

已定时 已固定 已锁定 已移动 LLM讨论区
11 帖子 5 发布者 157 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • XiaoteX 离线
    XiaoteX 离线
    Xiaote
    劳动模范
    编写于 最后由 编辑
    #2

    @c0aster 3090 单卡跑 Hermes 慢,我分析几个可能的原因:

    1. MTP 模型的开销

    你用的是 ik-llama/iq4ks-mtp,这是带 MTP(Multi-Token Prediction)投机解码的量化版。MTP 在生成时需要同时跑 draft model 和验证,对单卡是有额外开销的。3090 24G 显存跑 27B 的 iq4ks(约 14-16GB),MTP draft head 还要额外占 1-2GB,剩下留给 KV cache 的空间就很紧张了。

    推荐先试一下关掉 MTP,用普通模式跑同一个模型:

    --no-mtp
    

    如果速度明显提升,说明是 MTP 的 overhead 大于收益。

    2. Context 长度设置

    200K 上下文对 3090 来说太大了。即使 iq4ks 量化后模型权重只有 ~15GB,200K 上下文的 KV cache 会吃掉剩余显存,导致频繁的 CPU offloading。建议先设小 context 试速度:

    --ctx-size 8192
    

    如果变快了,再逐步增大到合适值。

    3. 确保用 CUDA backend

    llama.cpp 默认会用 CUDA,但确认一下启动参数里有:

    -ngl 9999  # 把所有层都加载到 GPU
    

    或者至少 -ngl 32(27B 模型约 32 层全放 GPU)。

    4. 一个快速调试流程

    # 最小化测试
    llama-cli -m ik-llama/iq4ks-mtp.gguf -ngl 9999 --no-mtp -c 4096 -p "你好"
    # 如果这个快,说明是 long context 或 MTP 导致的慢
    
    # 再加 MTP 试试
    llama-cli -m ik-llama/iq4ks-mtp.gguf -ngl 9999 -c 4096 -p "你好"
    

    你现在的具体 tokens/s 是多少?跑 llama-cli --speed 的结果贴一下,更好定位问题。

    1 条回复 最后回复
    0
    • 毅袁毅 离线
      毅袁毅 离线
      毅袁
      编写于 最后由 编辑
      #3

      关掉thinking 立马起飞
      --jinja --chat-template-kwargs "{"enable_thinking": false}"

      C 1 条回复 最后回复
      0
      • 毅袁毅 毅袁

        关掉thinking 立马起飞
        --jinja --chat-template-kwargs "{"enable_thinking": false}"

        C 离线
        C 离线
        c0aster
        编写于 最后由 编辑
        #4

        @毅袁 thinks,我试试,抓个网页信息都要10分钟,但用opencode写项目,启动后还是挺快的

        1 条回复 最后回复
        0
        • wwcd2016W 离线
          wwcd2016W 离线
          wwcd2016
          编写于 最后由 编辑
          #5

          3090 带hermes。我测试了一个月,放弃。没有一个能满足要求的。一个月20元就足够养活hermes了。
          现在模型主要用一下越狱版。

          1 条回复 最后回复
          1
          • S 离线
            S 离线
            stxpnet
            技术大牛 劳动模范
            编写于 最后由 编辑
            #6

            聊天不能用0.6,0.6是编程的,追求精准无错, 聊天是泛泛的发现一些问题,按官方推荐的。0.7试试

            C 1 条回复 最后回复
            0
            • S stxpnet

              聊天不能用0.6,0.6是编程的,追求精准无错, 聊天是泛泛的发现一些问题,按官方推荐的。0.7试试

              C 离线
              C 离线
              c0aster
              编写于 最后由 编辑
              #7

              @stxpnet 大佬具体是啥的0.7呢,我直接跑的3090 club的项目

              1 条回复 最后回复
              0
              • S 离线
                S 离线
                stxpnet
                技术大牛 劳动模范
                编写于 最后由 编辑
                #8

                把 你的完整启动命令贴出来。
                温度 要0.7才可以聊天,比如下面这套配置(注意最后一行),用来聊天就能撑起多轮对话,适合一步一步的问答,探究出一个小的结论,不适合编写程序: killall llama-server 2>/dev/null; sleep 3
                #6-19pm18测试 给hermes用的。
                #--cash-ram 2560预期多用2.5G显存,如果显存不够慎用
                #--ctx-checkpoints 64 将检查点从32增加到64,可能会增加显存,注意观察
                #用了之后的好处,不会再出现 forcing full prompt re-processing due to lack of cache data (likely due to SWA or hybrid/recurrent memory,
                #erased invalidated context checkpoint (pos_min = 87014, pos_max = 87014
                killall llama3-server 2>/dev/null; sleep 3
                killall llama-server 2>/dev/null; sleep 3
                export LD_LIBRARY_PATH=/data/models/beellma616-kv.cpp/build/bin:$LD_LIBRARY_PATH
                /data/model2/beellma616-kv.cpp/build/bin/llama-server
                --host 0.0.0.0 --port 8025
                --api-key "sk-my-tnt-secret-key-1234567890"
                -m /data/model3/Qwen3.6-27B-Omnimerge-v4-IQ4_XS-mtp-522.gguf
                --spec-type draft-mtp
                --spec-draft-n-max 3
                -ngl all -n 8192
                --ctx-size 160000
                --ctx-checkpoints 64
                -b 4096 -ub 1024 -np 1
                --cache-type-k kvarn4
                --cache-type-v kvarn4 --kv-unified
                --no-mmap --mlock
                --cache-ram 3072 --cache-reuse 384
                --no-host --jinja
                --chat-template-kwargs '{"preserve_thinking": true}'
                --chat-template-file /data/model2/chat_template-fixed-v20.jinja
                --no-warmup --reasoning on --reasoning-budget 768 -fa on
                --temp 0.7 --top-p 0.8 --top-k 20 --min-p 0.0 --presence-penalty 1.5 --repeat-penalty 1.0

                C 1 条回复 最后回复
                1
                • S stxpnet

                  把 你的完整启动命令贴出来。
                  温度 要0.7才可以聊天,比如下面这套配置(注意最后一行),用来聊天就能撑起多轮对话,适合一步一步的问答,探究出一个小的结论,不适合编写程序: killall llama-server 2>/dev/null; sleep 3
                  #6-19pm18测试 给hermes用的。
                  #--cash-ram 2560预期多用2.5G显存,如果显存不够慎用
                  #--ctx-checkpoints 64 将检查点从32增加到64,可能会增加显存,注意观察
                  #用了之后的好处,不会再出现 forcing full prompt re-processing due to lack of cache data (likely due to SWA or hybrid/recurrent memory,
                  #erased invalidated context checkpoint (pos_min = 87014, pos_max = 87014
                  killall llama3-server 2>/dev/null; sleep 3
                  killall llama-server 2>/dev/null; sleep 3
                  export LD_LIBRARY_PATH=/data/models/beellma616-kv.cpp/build/bin:$LD_LIBRARY_PATH
                  /data/model2/beellma616-kv.cpp/build/bin/llama-server
                  --host 0.0.0.0 --port 8025
                  --api-key "sk-my-tnt-secret-key-1234567890"
                  -m /data/model3/Qwen3.6-27B-Omnimerge-v4-IQ4_XS-mtp-522.gguf
                  --spec-type draft-mtp
                  --spec-draft-n-max 3
                  -ngl all -n 8192
                  --ctx-size 160000
                  --ctx-checkpoints 64
                  -b 4096 -ub 1024 -np 1
                  --cache-type-k kvarn4
                  --cache-type-v kvarn4 --kv-unified
                  --no-mmap --mlock
                  --cache-ram 3072 --cache-reuse 384
                  --no-host --jinja
                  --chat-template-kwargs '{"preserve_thinking": true}'
                  --chat-template-file /data/model2/chat_template-fixed-v20.jinja
                  --no-warmup --reasoning on --reasoning-budget 768 -fa on
                  --temp 0.7 --top-p 0.8 --top-k 20 --min-p 0.0 --presence-penalty 1.5 --repeat-penalty 1.0

                  C 离线
                  C 离线
                  c0aster
                  编写于 最后由 编辑
                  #9

                  @stxpnet

                  services:
                    ik-llama-qwen36-27b-iq4ks-mtp:
                      image: ${IK_LLAMA_IMAGE:-ghcr.io/ikawrakow/ik-llama-cpp@sha256:5f914f1ccade922417af58c94bd1cbb558052c8852d86678ead3fe693eec0143}
                      container_name: "${ESTATE_CONTAINER:-ik-llama-qwen36-27b}"
                      restart: unless-stopped
                      ports:
                        - "${ESTATE_PORT:-${PORT:-8020}}:8080"
                      volumes:
                        - "${MODEL_DIR:-../../../../../../models-cache}:/models:ro"
                      # server target ENTRYPOINT is /app/llama-server — args only below.
                      # ⚠ -np 1 is intentional on a single 24 GB card — do NOT raise it to
                      #   "parallelize." One GPU is compute-bound: extra slots divide its
                      #   throughput, they don't multiply it. At -np 4 each slot fell to
                      #   ~14 tok/s here — slow enough to trip agentic clients' per-request
                      #   timeouts (aider ran 1/30) — and -np>1 also auto-disables MTP and
                      #   can OOM the spec-context buffer. On a higher-throughput card (e.g.
                      #   5090) or multi-GPU the trade may flip — re-validate before raising.
                      command: >-
                        --host 0.0.0.0
                        --port 8080
                        --model /models/${GGUF_FILE:-qwen3.6-27b-gguf/ubergarm-mtp-iq4ks/Qwen3.6-27B-MTP-IQ4_KS.gguf}
                        -ngl 99
                        --ctx-size ${CTX_SIZE:-200000}
                        -b ${BATCH_SIZE:-4096}
                        -ub ${UBATCH_SIZE:-1024}
                        -np ${NP:-1}
                        -ctk ${KV_TYPE:-q4_0}
                        -ctv ${KV_TYPE:-q4_0}
                        -khad
                        -vhad
                        -ngld 99
                        --spec-type mtp:n_max=${MTP_DRAFT_N_MAX:-2},p_min=${DRAFT_P_MIN:-0.0}
                        --recurrent-ckpt-mode auto
                        --merge-qkv
                        -fa on
                        --chat-template-kwargs '{"enable_thinking": false}'
                        --jinja
                        --chat-template-file /models/qwen3.6-27b-gguf/ubergarm-mtp-iq4ks/chat_template.jinja
                        --parallel-tool-calls
                        --reasoning ${REASONING:-off}
                        --reasoning-format ${REASONING_FORMAT:-deepseek}
                        --temp ${TEMP:-${TEMPERATURE:-0.6}}
                        --top-p ${TOP_P:-0.95}
                        --top-k ${TOP_K:-20}
                        --min-p ${MIN_P:-0.0}
                        --repeat-penalty ${REPEAT_PENALTY:-1.0}
                      deploy:
                        resources:
                          reservations:
                            devices:
                              - driver: nvidia
                                device_ids: ["${ESTATE_GPUS:-${CUDA_VISIBLE_DEVICES:-0}}"]
                                capabilities: [gpu]
                  
                  1 条回复 最后回复
                  0
                  • wwcd2016W 离线
                    wwcd2016W 离线
                    wwcd2016
                    编写于 最后由 编辑
                    #10

                    其实,楼主的问题,就是一个目前没有彻底解决方案的问题。
                    很期待有大拿能搞定。然后我们 3090 单卡用户抄作业。
                    个人意见懵逼了。已经发给放弃单卡 玩 hermes。
                    当然,本质还是 deepseek 足够便宜。

                    C 1 条回复 最后回复
                    0
                    • wwcd2016W wwcd2016

                      其实,楼主的问题,就是一个目前没有彻底解决方案的问题。
                      很期待有大拿能搞定。然后我们 3090 单卡用户抄作业。
                      个人意见懵逼了。已经发给放弃单卡 玩 hermes。
                      当然,本质还是 deepseek 足够便宜。

                      C 离线
                      C 离线
                      c0aster
                      编写于 最后由 编辑
                      #11

                      @wwcd2016 是的,看来3090还是显存不太够

                      1 条回复 最后回复
                      0

                      你好!看起来您对这段对话很感兴趣,但您还没有一个账号。

                      厌倦了每次访问都刷到同样的帖子?您注册账号后,您每次返回时都能精准定位到您上次浏览的位置,并可选择接收新回复通知(通过邮件或推送通知)。您还能收藏书签、为帖子顶,向社区成员表达您的欣赏。

                      有了你的建议,这篇帖子会更精彩哦 💗

                      注册 登录
                      回复
                      • 在新帖中回复
                      登录后回复
                      • 从旧到新
                      • 从新到旧
                      • 最多赞同


                      • 登录

                      • 没有帐号? 注册

                      • 第一个帖子
                        最后一个帖子
                      0
                      • 版块
                      • 最新
                      • 标签
                      • 热门
                      • 用户
                      • 群组