国内下载 Hugging Face 大模型太慢?并发 Range 分块下载实测
下 16.6 GB 的 Qwen-Image 2.1 权重,curl 和官方客户端都中途卡住。换成 16 并发、32 MiB 分块的 Range 下载,主模型分块阶段约 15.8 MiB/s,两个文件 36 分钟下完并通过官方 SHA256。
问题
做法:并发 Range 分块
- 16 个线程,每块 32 MiB,每个请求都带
Range头; - 响应必须是 HTTP
206,Content-Range的起止和总大小要完全对上,短块直接丢弃重下; - 每块最多试 4 次,退避 1/2/4 秒;
- 块存在临时目录,重跑时只复用大小、范围、块哈希都对得上的块;
- 全部到齐后拼成整文件,用官方 LFS SHA256 校验,通过后再放进模型目录。
结果
| 文件 | 分块完成 | 含拼接、校验、复制 |
|---|---|---|
| 主模型 7.26 GB | 438 s(约 15.8 MiB/s) | 693 s |
| 文本编码器 9.35 GB | 1217 s | 1504 s |
整个过程 36 分 38 秒,两个文件都通过官方 SHA256。过程中失败了 57 次,主模型 16 次,编码器 41 次,全部由重试补回来了。
编码器复用了旧 curl 留下的前 640 MiB。复用之前,我们抽了几块,比对旧文件、新 Range 块和块元数据三者的 SHA256,完全一致才用。HF 客户端留下的 .incomplete 不能这样复用,它不保证是连续的前缀。
要点
- 大文件一定要做完整哈希校验,别信退出码。
- 能续传、能复用完整块,网络抖一下就不用从头来。
- 速度只在当时的网络下有效:这次单看主模型分块阶段是 15.8 MiB/s,算上复用、重试和校验的全流程平均是 7.2 MiB/s。
相关
- 用这批权重做的测试:Qwen-Image 2.1 在 6GB 上写中文
- LingBot Windows 部署(用 aria2 多连接)
常见问题
Hugging Face 下载慢怎么办? 用可续传的多连接或并发 Range 分块下载,完成后用官方 SHA256 校验整文件。
