strata docker vs host 的性能损失分析

结论(一句话)

  • docker 零损失:同引擎 0.1.52、同单卡、同 25 万级 needle,docker 侧 pp +0.6%、tg +5.7%、总墙钟 -1.6%,全在测量噪声带内(±6%),无方向性损失。
  • 真正的主变量是卡温与卡数(见 §主变量排序),host/docker 不是。

唯一有效的一组对照(出处见 §数据来源)

指标host(0.1.52,单卡)dock(0.1.52,单卡)差值
prompt_n254478252078-0.9%(长度差,见 §缺口)
pp(prefill t/s)650.0653.8+0.6%
tg(decode t/s)28.329.9+5.7%
wall(总耗时 s)394.0387.8-1.6%
key(防缓存换位)M7P3-9XW5-VB82M7P3(换位)同 doc 不同位

为什么只有这一组算数

  • 100K 的单卡 host/dock 两行(1019.1/1004.9)在 ini 里已标作废:当时 max_tokens=64 把思考模型的作答预算吃了,HIT 2/5 是截断误杀非检索失败,不可引用。
  • 10-28 宿主三档报告(50K 47.6/100K 40.6/256K 41.0 短文 tg)跑的是引擎 0.1.50,与 docker 侧 0.1.52 差版本,只能看量级不能逐项对(0.1.50→0.1.52 host 自身 pp 638.1→650.0、tg 33.0→28.3,引擎差本身就带来 -14% tg 变化)。
  • SHORT 56 token 行(host 冷 35.0/18.4 vs 单卡 docker 冷 41.6/21.6)是秒级冷启测试,warmup 方差主导,只能看方向(docker 不慢),不能当定量证据。
  • 双卡 dock 1368.3 vs 单卡的 +109% 是第二卡的分担,不是 docker 加速,不进对照。

主变量排序(实测)

  • 卡温第一:同参数 256K,44°C 冷卡 pp 1530.8 vs 81~84°C heat soak 背靠背压到 ~700,差一倍以上;control 62°C 1404.2 vs tune 44°C 1530.8(+9% 纯来自温度,参数相同)。
  • 卡数第二:256K 双卡 1368.3 vs 单卡 653.8(+109%,有效组内);100K 双卡 1687.0(父笔记口径 +68%,其单卡对照已作废,比例仅供参考)。
  • host/docker 第三:±6% 噪声带,无方向性差异,排序上可忽略。

路径等价性(为什么 docker 无损失)

  • GPU 走 devices 直通+驱动库挂载,无 nvidia runtime 中转层,PCIe/NVLink 路径与宿主一致。
  • 内存:容器 cgroup cap 36G,引擎常驻 25~26G 未吃满,无 swap/无 OOM 压;瓶颈在显存(双卡 15.6/15.7G 顶格),与宿主一致。
  • 推理是 GPU-bound,namespace+rootless user 映射只影响启动与文件权限,不进热路径。

数据来源(均未重测)

  • host 侧:llama-test 报告 Qwen3.8-125B-Strata-50K-100K-256K_20261028T0113_llamatest.md(10-28,宿主直跑 :8081,引擎 0.1.50,单卡)。
  • dock 侧:本机镜像 /s500data/docker/llama/device/v100/v100-qwen3.8-125b-strata-256K.ini 头注 needle 基线对照表(10-28,strata.yml 双卡 yml,引擎 0.1.52,:8080)。
  • 100K 作废行出处:/s500data/docker/llama/device/v100/v100-qwen3.8-125b-strata-100K.ini 头注(作废标记原文如此)。
  • 算力台账:父笔记《4060和V100本地算力strata重建》V100 大表+Strata-125BA6B Gyro 节。

缺口(要严谨还差这些,本次不补测)

  • 有效对照只有 256K 一组;50K/100K 的同引擎单卡 host/dock 背靠背缺。
  • 有效组 prompt_n 差 0.9%(254478 vs 252078),卡温未记录,严格说差一次温控变量。
  • 结论口径:docker 损失 <6%(噪声上限),不是字面 0%。要压到 ±1% 需同温背靠背三次取均值。