跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • 浅色
  • 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 广场
  1. 主页
  2. 版块
  3. LLM讨论区
  4. Strata :Swift 1.5 IQ3_XXS (3×RTX 4090 48G,本来4张坏了一张,京东买才用了2天。。。)

Strata :Swift 1.5 IQ3_XXS (3×RTX 4090 48G,本来4张坏了一张,京东买才用了2天。。。)

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

    部署日期:2026-10-03

    状态:已上线运行(systemd 服务 strata.service,active + enabled)
    image.jpeg


    一、需求核对与偏差

    项目 原始需求 核实结论
    模型名 Swift-Qwen3.8-Flash-Next-GSQ-RCO-IQ4 拼凑名,现实中不存在。真实可选的是 4 个互斥家族。已按确认实现为 Swift 1.5 + IQ3_XXS
    引擎版本 Strata v0.1.31 v0.1.31 存在但过时;setup.py 的 MIN_ENGINE=(0,1,38) 强制要求 v0.1.38
    硬件 3×4090 48G 准确。nvidia-smi 实测每张 49140 MiB(48GB 版 4090)
    KV cache INT8 --kv int8(int8 码 + 每 64 值 fp16 scale,显存减半)
    上下文 256K --max-context 262144,为模型训练原生长度,无需 rope 扩展

    命名拆解:“GSQ-RCO” 是 ISTA-DASLab 的量化方法(2 至 3.5 bit);“IQ4” 属于 Unsloth 4-bit 家族(UD-Q4_K_XL)。两者属不同家族,无法组合成单一模型(来源:huggingface.co/ukisai/Swift-1.5-Qwen3.8-Flash-Next-GSQ-RCO-GGUF)。

    二、环境实测

    项 实测值
    GPU 3× NVIDIA GeForce RTX 4090,49140 MiB/张,compute capability 8.9
    驱动 580.178.04
    CPU Intel Xeon Gold 6148 @ 2.40GHz ×2,80 线程,无 AVX-512(走 AVX-2 专家内核)
    RAM 252 GB
    磁盘 / 938G,用 253G(模型+包+MTP 共约 79G)
    OS Ubuntu 22.04.5 LTS
    CUDA 13.0.88(部署时经 cuda-keyring apt 源安装)
    PCIe 探针 12.3 GB/s host→device,引擎据此设 pcie_frac 0.34

    三、多卡模型分片方案

    Strata 采用层切分(流水线并行,layer split),非张量并行。一个 token 每个验证窗口跨卡一次(数百 KB 经 pinned RAM),无需 NVLink 或 P2P。

    配置采用显式三段切分(比 auto 更可预测):

    layers  0-15  →  CUDA0
    layers 16-31  →  CUDA1
    layers 32-47  →  CUDA2   (末卡另跑输出头与 MTP 草稿层)
    

    引擎启动日志实测确认:layer split: layers 0-15 (CUDA0), 16-31 (CUDA1), 32-47 (CUDA2), one hand-off per window。

    各卡持有:dense 权重副本、自身会话的 KV、验证窗口与 prompt 缓冲、以及仅限自身层的专家缓存。主机 RAM 持有共享的专家 arena(39.97 GiB),CPU 池计算任何卡未持有的专家。本次实测 100% experts resident,即全部专家已驻留显存,解码几乎不触 CPU 池。

    注意:--peer-device 不可与 --layer-split 同用(源码 generate.cpp:1718 直接报错),二者是互斥的两种多卡模式,本方案不使用它。

    四、引擎核心参数

    配置文件:/root/Strata/strata-swift-iq3_xxs.json

    参数 值 说明
    --pack /root/Strata-data/packs/swift-iq3_xxs 引擎格式包(1.5G,1079 张量,302 原生直供)
    --native .../Swift-...-IQ3_XXS-00001-of-00002.gguf 原生 GGUF 首分片
    --ple-gguf 同上 N-gram 查表(PLE)
    --expert-profile ../data/expert-profile.bin 专家热力画像
    --expert-cache auto VRAM 专家槽位(实测 8192 专家 / 11.43 GiB)
    --prefill auto 预填充分块(实测 8192 tokens)
    --spec / --spec-min-p 4 / 0.5 MTP 推测解码窗口
    --mtp /root/Strata-data/mtp/rt MTP 草稿层(106299 tokens,178.4 MiB)
    --max-context 262144 256K 上下文
    --kv int8 INT8 KV cache
    --kv-resident 32768 KV 流式:每 QSA 层 32768 cell 留显存,其余走 pinned RAM(KV 共 3.6 GB,腾出显存给专家槽)
    --vram-reserve-mib 8192 每卡预留 8GB 显存(关键修复,见第七节)
    gpu [0, 1, 2] 参与分片的卡
    layer_split 16,32 三卡分层起点
    host / port 0.0.0.0 / 8080 对外监听

    五、模型准备(国内网络加速)

    Strata 在 Linux 上没有预编译引擎(v0.1.38 release 仅 Windows 资产),必须源码编译;同时 GitHub 大数据传输被限速、HuggingFace 直连不通。实际采用如下加速路径:

    环节 常规做法的问题 实际做法
    获取源码 git clone 仅 ~45KB/s gh-proxy 拉 tarball,7.8 MB/s
    llama.cpp 源码 setup 从 GitHub 下载,不通 预先用 gh-proxy 下载并解压到 third_party/llama.cpp/
    CUDA 工具链 需 8-10GB cuda-keyring + apt 装 cuda-toolkit-13-0
    Python 依赖 慢 系统 pip 已配阿里云源
    模型(70.75GiB) setup 单线程 urllib 约 2.6MB/s aria2c -x16 -s16 实测 43-66 MiB/s,预下到 Strata-data/models/swift-IQ3_XXS/ 并写 .done 标记
    MTP 草稿层(4.97GB) tools/mtp_fetch.py 单线程仅 1.6MB/s 复用其 mtp-inventory.json,16 线程并行 range 抓取,7.5MB/s

    关键点:setup 判断分片是否已下载,要求文件存在且有 <name>.done 标记(setup.py:3395)。模型目录为 Strata-data/models/<family tag><SIZE>,swift 家族 tag 为 swift-。

    产物清单:

    71G   /root/Strata-data/models      (2 个 GGUF 分片,70.75 GiB)
    6.5G  /root/Strata-data/mtp         (MTP 张量 + 打包后的 gguf/rt)
    1.5G  /root/Strata-data/packs       (引擎格式包)
    39M   /root/Strata/engine/strata    (编译产物)
    

    六、服务启动命令

    systemd(当前生产方式)

    单元:/etc/systemd/system/strata.service

    [Unit]
    Description=Strata inference server (Swift 1.5 IQ3_XXS, 3x RTX 4090 layer split)
    After=network-online.target
    Wants=network-online.target
    
    [Service]
    Type=simple
    WorkingDirectory=/root/Strata
    Environment=HF_ENDPOINT=https://hf-mirror.com
    ExecStart=/root/Strata/.venv/bin/python /root/Strata/serve/server.py \
      --engine strata \
      --config /root/Strata/strata-swift-iq3_xxs.json \
      --port 8080
    Restart=on-failure
    RestartSec=15
    LimitMEMLOCK=infinity
    TimeoutStartSec=0
    
    [Install]
    WantedBy=multi-user.target
    

    操作:

    systemctl start strata        # 启动(首次加载约 1 分钟)
    systemctl status strata       # 状态
    journalctl -u strata -f       # 跟踪日志
    systemctl restart strata      # 重启
    systemctl stop strata         # 停止
    

    LimitMEMLOCK=infinity 必需:引擎要 pin 约 40GB 主机内存作专家 arena。

    手动启动(等价)

    cd /root/Strata && ./run-swift-iq3_xxs.sh
    

    重新生成配置(如需改参数)

    cd /root/Strata
    export HF_ENDPOINT=https://hf-mirror.com
    ./setup.sh --setup --family swift --model IQ3_XXS \
      --context 262144 --kv int8 --vision no \
      --gpus 0,1,2 --layer-split 16,32 \
      --vram-reserve-mib 8192 \
      --host 0.0.0.0 --api-key <KEY> --port 8080 --yes --no-start
    

    七、部署中遇到的两个关键问题

    1. OOM:native dense upload blk.26.attn_qkv.weight: out of memory

    现象:GPU0/GPU1 各占 45GB,GPU2 空;dense 权重上传失败。

    根因:GPU0/GPU1 被现有 SGLang 服务占用(详见第八节),仅剩约 3GB 空闲。自动分片 auto 把层分到了几乎占满的卡上。

    引擎侧诱因:--kv-resident 把 KV 移出显存后,--expert-cache auto 把释放的显存全部填成专家槽,未给 dense 权重留空间。

    修复:

    1. 释放 GPU0/1(停 SGLang);
    2. 显式 layer_split=16,32,避免 auto 的不可预期放置;
    3. 加 --vram-reserve-mib 8192,为 dense 权重与缓冲留出固定空间。

    2. 显式分片优于 auto

    auto 会尝试所有放置并挑缓存命中最高者,但受 PCIe 探针(12.3GB/s → pcie_frac 0.34)影响会过度倾向把专家塞进显存。三卡等分(16,32)行为确定,便于容量规划。

    八、与现有 SGLang 服务的资源冲突(重要)

    服务器原有 sglang-dflash2.service(systemd),提供 Qwen/Qwen3.8-27B + DFlash2 推测解码,TP=2,端口 30000,占用 GPU0/GPU1 各约 45GB。

    按确认执行了:停止并禁用该服务,三卡全部让给 Strata。

    systemctl stop sglang-dflash2.service
    systemctl disable sglang-dflash2.service
    

    影响:Qwen3.8-27B 服务(30000 端口)中断,WorkBuddy 中指向 http://192.168.1.79:30000/v1 的自定义模型不可用。

    需要恢复 SGLang 时

    注意:它与 Strata 争抢 GPU0/GPU1,二者不能同时运行(除非改用单卡或重排)。

    # 先停 Strata 释放显存
    systemctl stop strata
    systemctl enable --now sglang-dflash2.service
    

    完整原始启动命令已保存在服务器 /root/sglang_restart_cmd.txt,同时单元文件 /etc/systemd/system/sglang-dflash2.service 未改动,可直接复用。

    九、API 使用

    项 值
    OpenAI 兼容 http://192.168.1.79:8080/v1(/v1/chat/completions、/v1/models)
    Anthropic 兼容 http://192.168.1.79:8080/v1/messages
    模型名 swift-1.5-iq3_xxs
    API Key sk-strata-dbd01a2eca2adc9823153870c853973b
    Web 聊天 http://192.168.1.79:8080/
    curl http://192.168.1.79:8080/v1/chat/completions \
      -H "Content-Type: application/json" \
      -H "Authorization: Bearer sk-strata-dbd01a2eca2adc9823153870c853973b" \
      -d '{"model":"swift-1.5-iq3_xxs","messages":[{"role":"user","content":"你好"}]}'
    

    reasoning_content 返回思考过程,timings 返回 predicted_per_second 等实测指标。

    十、实测性能

    场景 结果
    短对话解码 179.8 tokens/s(1+1 用例,draft 25/30)
    一般对话解码 130.2 tokens/s(draft 54/41)
    27,108 tokens 预填充 4,657 tokens/s,耗时 5.82s
    27K 深度解码 152.6 tokens/s
    长上下文检索 从 27K tokens 中部准确取出埋入密文,通过
    显存占用 GPU0 20.3G / GPU1 22.1G / GPU2 25.7G,加载完毕仍余 28.3G 空闲
    鉴权 无密钥 HTTP 401
    接口 OpenAI 200 / Anthropic 200

    十一、运维速查

    systemctl status strata                     # 服务状态
    journalctl -u strata -n 50                  # 最近日志
    tail -f /root/Strata/strata-swift-iq3_xxs.log   # 引擎日志(含分片与缓存命中)
    nvidia-smi                                  # 显存占用
    nvidia-smi --query-compute-apps=pid,process_name,used_memory --format=csv
    

    调优候选(当前未启用):

    • 显存充裕时可下调 --vram-reserve-mib(8192 → 4096 或 2048),给专家缓存更多空间;
    • 若显存吃紧,可把 --kv 降为 k8v4(INT8 K + 4bit V,816 B/cell,比 int8 的 1056 更省);
    • 短上下文场景可将 --kv-resident 0,令全部 KV 驻显存。

    十二、来源

    • 引擎仓库与发布:https://github.com/Niko1221/Strata(v0.1.38,MIT,基于 llama.cpp/ggml)
    • 引擎文档:仓库内 docs/INSTALL.md、docs/MODELS.md、docs/MULTI_GPU.md
    • 模型:https://huggingface.co/ukisai/Swift-1.5-Qwen3.8-Flash-Next-GSQ-RCO-GGUF
    • 量化基础模型:https://huggingface.co/ISTA-DASLab/Qwen3.8-Flash-Next-GSQ-RCO-GGUF
    1 条回复 最后回复
    0

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

    厌倦了每次访问都刷到同样的帖子?您注册账号后,您下次访问时都将自动回到上次浏览的位置,并可选择接收新回复的通知(通过电子邮件或推送通知)。您还可以收藏帖子、为帖子点赞,以此向其他社区成员表达您的感谢。

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

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


    • 登录

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