千兆内网高速同步大模型至多台住宅主机
核心答案:千兆内网下,用 rsync 增量同步实现大模型到手即用
在千兆局域网内同步数十 GB 的大模型文件,最省时、稳定的方案是使用 rsync。
它支持增量传输、断点续传、压缩与校验,第一次全量同步后,后续仅同步修改部分。
只要确保源机和目标机在同一网段(千兆交换机/路由器),配置好 SSH 免密或 rsync 服务,就能以接近千兆上限的速度(约 110MB/s)将模型文件分发到多台住宅主机。
同步前必做的准备工作
- 确认网络环境:所有主机连接到同一台千兆交换机或带千兆口的千兆路由器,网线至少超五类,Wi-Fi 建议用 5GHz AC 以上。用
iperf3测试两机间实际带宽,命令:iperf3 -s(服务器端),客户端执行iperf3 -c 服务器IP,双向均跑满 900Mbps+ 才算达标。 - 安装 rsync:Linux/macOS 自带;Windows 建议安装 WSL 或 Git Bash(附带 rsync)。所有机器确保 rsync 可用,执行
rsync --version检查。 - 规划存储路径:源主机存放模型文件的目录(如
/data/models/),目标主机相同或自定路径。建议使用 SSD 或高速 HDD,避免磁盘成为瓶颈。
推荐的高速同步方案:rsync + SSH 增量传输
rsync 本身基于 SSH 加密传输,安全且无需额外配置。
以下是以一台源主机(192.168.1.100)向两台目标主机(192.168.1.101、192.168.1.102)同步的完整步骤。
- 配置 SSH 免密登录(避免同步时反复输入密码)
- 源主机生成密钥对:
ssh-keygen -t ed25519 -f ~/.ssh/id_rsync -N "" - 复制公钥到目标主机:
ssh-copy-id -i ~/.ssh/id_rsync.pub user@192.168.1.101(user 替换为用户名)。 - 同理配置到其他目标机。
- 首次全量同步(大模型首次传输)
- 命令:
rsync -avzP --progress /data/models/ user@192.168.1.101:/data/models/ - 参数说明:
-a归档模式(保留权限、时间等);-v详细输出;-z开启压缩(千兆内网建议不加-z,因为压缩反而占用 CPU 且提升有限,除非模型文件是可压缩的文本);-P等价于--partial --progress,支持断点续传并显示进度。 - 经验:如果不加压缩,千兆网卡的理论极限速度约为 125MB/s,实际受硬盘读写影响。首次同步时在终端看到约 90-110MB/s 即正常。
- 后续增量同步(只传修改过的文件)
- 同一条命令即可,rsync 会自动比较文件大小和时间戳(也可用
--checksum做内容校验,但慢)。推荐使用--size-only只比较大小,加快速度。 - 增量示例:
rsync -avP --size-only /data/models/ user@192.168.1.101:/data/models/
常见坑点与解决方法
- 中途断网或手动中断,同步失败怎么办?
- rsync 默认不会删除目标已部分传输的文件(
--partial留有.xxxx临时文件)。再次运行相同命令即可续传。也可以加--append-verify参数,对已传输部分进行校验并追加。
- 多目标同步时重复慢?
- 不要对每个目标分别从头跑。建议先将源模型打包(
tar -cf models.tar models/),用mbuffer配合多播或顺序传输。简单做法:先同步到一台,再从第一台目标机通过内部网络同步到其他台(分叉同步),避免源机成为瓶颈。
- 文件权限/属主不一致(如 Windows 到 Linux)
- 使用
--no-owner --no-group --chmod=ugo=rwX忽略属主,根据需要设置权限。
- 千兆网速上不去
- 检查网卡协商速率:
ethtool eth0(Linux)看 Speed 是否为 1000Mb/s。如果只有 100Mb/s,换网线或交换机。 - 磁盘速度:用
hdparm -t /dev/sda测读取,低于 100MB/s 时同步会受限于磁盘。
如何确认同步完整正确
- 校验文件数量与大小:在目标主机执行
rsync -av --dry-run /data/models/ user@源主机:/data/models/(反过来)对比,如果没有文件被列出,则完全一致。 - 哈希校验:在源主机生成哈希清单:
find /data/models -type f -exec md5sum {} + > /tmp/checksum.txt,再 scp 到目标主机,目标机同样生成并diff。 - 加载验证:直接加载模型文件测试推理是否正常(如用
torch.load或transformers),无报错即可。
常见问题 FAQ
Q1:rsync 在 Windows 上怎么用?
A:推荐安装 WSL2(Ubuntu),在 Linux 子系统中安装 rsync(sudo apt install rsync),然后通过 WSL 的 shell 执行命令。也可使用 Git Bash,它内置部分 rsync 功能但可能不完整。
Q2:对大模型同步而言,压缩 (-z) 到底该不该开?
A:如果大模型是 PyTorch 或 GGUF 等已压缩格式(如 .pth、.bin、.gguf),重复压缩几乎无收益且降低速度,建议不加 -z。如果是文本格式(如 json、txt),可尝试 -z 看网络是否跑满。
Q3:目标主机多台,能不能同时并行同步?
A:可以,但在源主机启动多个 rsync 进程会抢占带宽和 CPU。更好的办法是串行同步或分叉同步(从已同步的目标机再向外分发)。如果需要严格并行,使用 parallel-rsync 脚本(如 pssh 配合 rsync)。
Q4:同步过程中出现 Permission denied 怎么排查?
A:检查 SSH 免密是否正确(ssh user@目标IP 能否无密码登录),目录是否有写入权限(目标端 chmod 755 /data/models),或使用 --chmod 参数设置同步后的权限。