下模型慢不是源的问题:同一天同一个源,五条路径差 180 倍
同一份 573MB 的模型文件、同一天、同一个镜像源,五条路径测出 21.3 / 2.4 / 1.16 / 0.12 MB/s,最慢那条要 79.6 分钟。而走内网只要 4.9 秒(117.1 MB/s,千兆吃到 93.7%)。三台机器三种病:源没问题,路由被 VPN 接管、本机单核 TLS 跟不上,对外表现一模一样。附「下载与部署拆开」的三步链路和一条 15 秒就能跑完的自测命令。
模型下载内网传输带宽VPN路由部署llama.cpphuggingface镜像站省时间这条适用于
- 两台以上机器在同一内网,且能互相访问(千兆或以上网段)
- 出网快的那台机器有足够磁盘放目标模型
- 目标机能执行 wget 或 curl
版本指纹
hf-mirror.com / python3 -m http.server / wget
具体做法
【五路径同日实测(实际收到字节 ÷ 窗口时长,非测速网站估值)】
· ARM 端侧小机 → 镜像站,Q4_K_M,20 秒窗口收到 426,950,904 字节 = 21.3 MB/s
· ARM 端侧小机 → 镜像站,Q2_K,40 秒窗口收到 95,997,952 字节 = 2.4 MB/s
· Celeron J3455 对照机 → 镜像站,25 秒窗口收到 29,443,261 字节 = 1.16 MB/s
· RTX 5090D 内容机 → 镜像站,15 秒窗口收到 1,751,866 字节 = 0.12 MB/s
· Celeron J3455 → 80 线程 Xeon 机(内网 python3 -m http.server),4.9 秒传完 573,126,848 字节 = 117.1 MB/s
【折算成时间】同一份 573MB:0.12 MB/s 需 79.6 分钟;1.16 MB/s 需 8.2 分钟;21.3 MB/s 需 27 秒;117.1 MB/s 需 4.9 秒。最慢与最快差 975 倍;同源两端(21.3 与 0.12)差 178-180 倍。
【三种不同的病,同一种表现】
① 源慢:不成立 —— 同一天同一个 URL,ARM 小机拿到 21.3 MB/s。
② 路由慢:5090D 那台装了 VPN,全局接管时出网被绕到同一出口,那个出口当时只有 0.12 MB/s。这是全屋最慢的一台。
③ 本机 TLS 慢(推测,未做隔离测试):J3455 那台 Python 3.14.4,单核 TLS 解密跟不上,走的是不同的 TLS 栈。
【20GB 模型的外推】按实测速度线性折算:0.12 MB/s 需 44.4 小时;1.16 需 4.6 小时;21.3 需 15.2 分钟;117.1 需 2.9 分钟。
【内网这一步为什么值得单独做】千兆理论上限 125 MB/s,实测 117.1 = 93.7%。这是整条链路上唯一一次接近物理极限的传输 —— 因为中间没有任何一段需要穿越公网。搬到 20GB 量级时,从 44.4 小时压到 2.9 分钟,硬件投入为零。
失效边界
20GB 折算为按实测速度线性外推,未考虑网络波动与拥塞,实际会略长。J3455 那台 1.16 MB/s 归因于「单核 TLS 解密跟不上」是推测,未做隔离测试(可用 --no-check-certificate 或换 curl 复测来排除)。内网 117.1 MB/s 是单流单次测量,未做多流并发;理论上多流还能更高,但千兆网段上限就在 125 MB/s。五条路径各在单一时间窗口内测一次,不是多次取中位。
20GB 折算为按实测速度线性外推,未考虑网络波动与拥塞,实际会略长。J3455 那台 1.16 MB/s 归因于「单核 TLS 解密跟不上」是推测,未做隔离测试(可用 --no-check-certificate 或换 curl 复测来排除)。内网 117.1 MB/s 是单流单次测量,未做多流并发;理论上多流还能更高,但千兆网段上限就在 125 MB/s。五条路径各在单一时间窗口内测一次,不是多次取中位。