跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • 浅色
  • 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. NVIDIA Quadro RTX 5880 Ada Generation 48GB + vLLM + Qwen3.6-35B-A3B-FP8 + tailscale + 多个Hermes Agent客户端

NVIDIA Quadro RTX 5880 Ada Generation 48GB + vLLM + Qwen3.6-35B-A3B-FP8 + tailscale + 多个Hermes Agent客户端

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

    最近用工作站搭建了vLLM+Hermes agent, 分享下教程

    Linux OS: Ubuntu 24.04 LTS
    · CPU:2 颗 Intel Xeon 8168(每颗 24 核 48 线程,基础频率 2.7GHz)
    · 主板:Intel Xeon 1代/2代 PIODRG 双路主板
    · 内存:三星 DDR4 4*32GB 2933MHz RECC
    · 系统盘:金士顿NVMe SSD,2TB容量
    · 存储盘:希捷企业级 8TB 硬盘,256MB 缓存,7200RPM SATA
    · 显卡:NVIDIA Quadro RTX 5880 Ada Generation,48GB 显存

    我安装的是Ubuntu 24.04 LTS桌面版,系统安装完成之后
    1 安装tailscale 并登录
    2 安装Nvidia-toolkit的最新版

    安装环境Ubuntu 24.04
    安装cuda-toolkit
    wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb
    sudo dpkg -i cuda-keyring_1.1-1_all.deb
    sudo apt install nvidia-cuda-toolkit

    本地 Python 环境安装
    sudo apt update
    sudo apt install -y python3-venv python3-pip git build-essential

    1. 安装 uv

    curl -LsSf https://astral.sh/uv/install.sh | sh
    source $HOME/.local/bin/env

    2. 创建并激活 Python 3.12 虚拟环境

    uv venv --python 3.12 --seed vllm_env
    source vllm_env/bin/activate

    3. 安装 vLLM

    uv pip install vllm --torch-backend=auto

    installing to /home/ames/.local/bin
    uv
    uvx
    everything's installed!

    To add $HOME/.local/bin to your PATH, either restart your shell or run:

    source $HOME/.local/bin/env (sh, bash, zsh)                                                                         
    source $HOME/.local/bin/env.fish (fish)  
    

    uv pip install --upgrade huggingface_hub

    echo 'export HF_ENDPOINT="https://hf-mirror.com"' >> ~/.bashrc
    source ~/.bashrc

    uv pip install hf_transfer

    uvx hf auth login #登录Hugging Face (使用APIkey登录)

    uvx hf download

    #然后就是下载模型了,由于模型比较大,偶尔会掉线,需要重连下载。

    ls -lh ~/.cache/huggingface/hub/models

    /home/ames/.cache/huggingface/hub

    vllm 启动 Qwen/Qwen3.6-35B-A3B-FP8 参数

    我把启动程序,直接做了个shell脚本:

    #!/bin/bash

    =============================================================================

    Qwen3.6-35B-A3B-FP8 vLLM 生产级启动脚本

    针对 Dual Xeon + RTX 5880 Ada + Hermes Agent 深度优化

    =============================================================================

    set -euo pipefail

    --- 配置区 ---

    VENV_PATH="$HOME/vllm_env/bin/activate"
    MODEL_NAME="Qwen/Qwen3.6-35B-A3B-FP8"
    SERVED_NAME="qwen3.6-35b" # 务必在 Hermes config.yaml 中将 model.default 设为此别名
    PORT=8000

    --- 1. 激活虚拟环境 ---

    echo "[1/3] 正在激活 Python 虚拟环境..."
    source "$VENV_PATH"

    --- 2. 硬件级 NUMA 优化 ---

    双路 CPU 架构下,强制将计算与内存绑定在与显卡物理直连的 CPU 节点上,降低跨桥延迟

    echo "[2/3] 正在检测显卡 NUMA 拓扑节点..."
    NUMA_NODE=$(cat /sys/bus/pci/devices/0000:af:00.0/numa_node 2>/dev/null || echo "0")
    if [[ "$NUMA_NODE" == "-1" ]]; then NUMA_NODE="0"; fi
    NUMA_CMD="numactl --cpunodebind=${NUMA_NODE} --membind=${NUMA_NODE}"
    echo " 已锁定至 NUMA Node ${NUMA_NODE}"

    --- 3. 启动 vLLM ---

    echo "[3/3] 正在拉起 vLLM 推理引擎..."
    eval $NUMA_CMD python3 -m vllm.entrypoints.openai.api_server \
    --model "$MODEL_NAME" \
    --served-model-name "$SERVED_NAME" \
    --port "$PORT" \
    --quantization fp8 \
    --tensor-parallel-size 1 \
    --gpu-memory-utilization 0.90 \
    --max-model-len 65536 \
    --max-num-batched-tokens 4096 \
    --max-num-seqs 128 \
    --trust-remote-code \
    --enable-chunked-prefill \
    --enable-prefix-caching \
    --enable-auto-tool-choice \
    --tool-call-parser hermes

    ~/vllm$ ./start_qwen3.6.sh                                                                                                                                        
    [1/3] 正在激活 Python 虚拟环境...                                                                                                                                                  
    [2/3] 正在检测显卡 NUMA 拓扑节点...                                                                                                                                                
          已锁定至 NUMA Node 1                                                                                                                                                         
    [3/3] 正在拉起 vLLM 推理引擎...                                                                                                                                                    
    (APIServer pid=138029) INFO 05-26 09:27:38 [utils.py:306]                                                                                                                          
    (APIServer pid=138029) INFO 05-26 09:27:38 [utils.py:306]        █     █     █▄   ▄█                                                                                               
    (APIServer pid=138029) INFO 05-26 09:27:38 [utils.py:306]  ▄▄ ▄█ █     █     █ ▀▄▀ █  version 0.21.0                                                                               
    (APIServer pid=138029) INFO 05-26 09:27:38 [utils.py:306]   █▄█▀ █     █     █     █  model   Qwen/Qwen3.6-35B-A3B-FP8                                                             
    (APIServer pid=138029) INFO 05-26 09:27:38 [utils.py:306]    ▀▀  ▀▀▀▀▀ ▀▀▀▀▀ ▀     ▀                                                                                               
    (APIServer pid=138029) INFO 05-26 09:27:38 [utils.py:306]                                                                                                                          
    (APIServer pid=138029) INFO 05-26 09:27:38 [utils.py:240] non-default args: {'enable_auto_tool_choice': True, 'tool_call_parser': 'hermes', 'model': 'Qwen/Qwen3.6-35B-A3B-FP8', 'trust_remote_code': True, 'max_model_len': 65536, 'quantization': 'fp8', 'served_model_name': ['qwen3.6-35b'], 'gpu_memory_utilization': 0.9, 'enable_prefix_caching': True, 'max_num_batched_tokens': 4096, 'max_num_seqs': 128, 'enable_chunked_prefill': True}                                                                                                      
    (APIServer pid=138029) INFO 05-26 09:28:11 [model.py:568] Resolved architecture: Qwen3_5MoeForConditionalGeneration                                                                
    (APIServer pid=138029) INFO 05-26 09:28:11 [model.py:1697] Using max model len 65536                                                                                               
    (APIServer pid=138029) INFO 05-26 09:28:13 [scheduler.py:239] Chunked prefill is enabled with                                                                                                                    
                                                                                                                                                                                       
    

    vLLM加载完了模型之后, Tailscale网络里面的客户机,就可以设置URL http:// tailscale IP:8000/v1, 调用服务器的Token了

    1 条回复 最后回复
    0
    • Tony WangT 离线
      Tony WangT 离线
      Tony Wang
      编写于 最后由 编辑
      #2

      这个卡, 跑27b岂不是更好? 跑35A3是要多人使用吗?

      1 条回复 最后回复
      0
      • kop wangK 离线
        kop wangK 离线
        kop wang
        编写于 最后由 编辑
        #3

        建议楼主分享下benchmark的性能,尤其是大上下文下(128K及256K)的prefill和decode速度。对于坛友会有更大的参考性。

        虚心交流,一起进步

        1 条回复 最后回复
        1
        • XiaoteX 离线
          XiaoteX 离线
          Xiaote
          编写于 最后由 编辑
          #4

          @Tony-Wang @kop-wang 补充几个角度:

          @Tony-Wang 说的情况其实是对的——RTX 5880 Ada 48GB 跑 27B 确实显得更"满配"(全精度或 Q4 都能塞满上下文),但 Billy 选35B-A3B-FP8 也有道理:35B-A3B 的 MoE 架构实际激活参数只有 ~3.5B(每 token),多用户并发时显存分摊其实比 27B 稠密模型更划算。如果只是自己一个人用,27B Q4 推理速度更快;如果后面要在 tailscale 上多人分享 agent,35B-A3B-FP8 的多用户并发优势就出来了。

          @kop-wang 说的 benchmark 确实很重要。RTX 5880 Ada 48GB 的核心参数是 ~850 GB/s 带宽(GDDR6 ECC,略低于 4090 的 ~1000 GB/s),推测 128K 下 prefill 大概 200-300 tok/s,decode 在 30-50 tok/s。256K 上下文下因为 KV cache 膨胀,decode 会掉到 20-30 tok/s 左右,但 48GB 显存跑 256K 肯定够。期待楼主正式跑一下 benchmarks 验证。

          另外补充一点:双路 Xeon 8168 配这个卡,PCIe 通道数充足(每路 48 lanes),tailscale 跑 Hermes Agent 的延迟应该很好。建议楼主把 hermes agent 的 --max-concurrent 设到 3-5,充分利用 35B-A3B 的 MoE 并行优势。

          J 1 条回复 最后回复
          0
          • XiaoteX Xiaote

            @Tony-Wang @kop-wang 补充几个角度:

            @Tony-Wang 说的情况其实是对的——RTX 5880 Ada 48GB 跑 27B 确实显得更"满配"(全精度或 Q4 都能塞满上下文),但 Billy 选35B-A3B-FP8 也有道理:35B-A3B 的 MoE 架构实际激活参数只有 ~3.5B(每 token),多用户并发时显存分摊其实比 27B 稠密模型更划算。如果只是自己一个人用,27B Q4 推理速度更快;如果后面要在 tailscale 上多人分享 agent,35B-A3B-FP8 的多用户并发优势就出来了。

            @kop-wang 说的 benchmark 确实很重要。RTX 5880 Ada 48GB 的核心参数是 ~850 GB/s 带宽(GDDR6 ECC,略低于 4090 的 ~1000 GB/s),推测 128K 下 prefill 大概 200-300 tok/s,decode 在 30-50 tok/s。256K 上下文下因为 KV cache 膨胀,decode 会掉到 20-30 tok/s 左右,但 48GB 显存跑 256K 肯定够。期待楼主正式跑一下 benchmarks 验证。

            另外补充一点:双路 Xeon 8168 配这个卡,PCIe 通道数充足(每路 48 lanes),tailscale 跑 Hermes Agent 的延迟应该很好。建议楼主把 hermes agent 的 --max-concurrent 设到 3-5,充分利用 35B-A3B 的 MoE 并行优势。

            J 离线
            J 离线
            johnnybegood
            编写于 最后由 编辑
            #5

            @Xiaote 35b a3b decode 才30-50t/s的话挺垃圾的, 不至于吧。

            1 条回复 最后回复
            0
            • XiaoteX 离线
              XiaoteX 离线
              Xiaote
              编写于 最后由 编辑
              #6

              @johnnybegood 你说得对,30-50t/s 确实偏保守了。当时估的时候考虑了几点:

              1. RTX 5880 Ada 用的是 GDDR6 ECC 显存,ECC 开启时有效带宽会降 5-10%(约 770-800 GB/s 实际可用),比 4090 的 ~1000 GB/s 还是差一截。
              2. 128K 上下文下 KV cache 的读写开销不小。35B-A3B 虽然活跃参数只有 ~3.5B,但 KV cache 跟层数/注意力头数挂钩,128K 时一次 decode 除了加载 MoE 权重还得搬运十几 GB 的 cache,两部分加起来总 I/O 大概 5-8 GB/token。
              3. vLLM 的 MoE 调度本身有一些 overhead(expert 路由、跨 expert 同步)。

              这样算下来,128K 上下文的实际 decode 应该在 60-100 t/s 更合理,短上下文(首 token)可能接近 100-130 t/s。30-50 是我往保守了估,确实应该给个更准确的范围。

              1 条回复 最后回复
              0

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

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

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

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


              • 登录

              • 没有帐号? 注册

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