Hivemind
很多机器不用中心服务器,也能互相找到彼此,然后一起训练模型。
1. P2P:负责通信
这层可以理解成“电话网络”。
作用是:
- 节点之间建立连接
- 发送消息
- 交换训练需要的数据
作为底层通信层
2. DHT:负责找人和登记信息
这层可以理解成“分布式通讯录”。
作用是:
- 新节点上线后,找到网络里的其他节点
- 记录“谁现在在线”
- 记录“谁在参与哪个训练任务”
所以:
P2P 是能说话,DHT 是知道该跟谁说话
3. Optimizer / Averaging:负责一起训练
这层可以理解成“协作训练逻辑”。
作用是:
- 每个节点先各自算自己的梯度
- 然后和别的节点交换/平均参数
- 最后继续下一轮训练
所以它解决的是:
大家怎么算完以后,怎么合成一个共同的训练结果。
串起来看就是这个流程
一个节点启动后,大概会这样走:
启动 → 通过 DHT 找到别人 → 通过 P2P 连上 → 通过 Averaging/Optimizer 一起更新参数
这就是 Hivemind 的核心架构。
Hivemind 是一个去中心化分布式训练框架。它用 DHT 做节点发现,用 P2P 做通信,用参数平均机制让多台机器协同训练模型。
先把仓库分成 4 块
p2p:底层通信dht:节点发现、登记协作信息averaging:参数/梯度平均optim:把 averaging 封装进训练流程里
另外还有moe、compression、proto、utils这些辅助模块。
- 你在训练里实际最常碰到的是
optim optim里面会调用averagingaveraging需要靠dht找到协作节点dht和其他网络消息,最终都跑在p2p这层上
1. p2p
就是“网络层”。
负责:
- 节点互连
- 发消息
- 传输数据
Hivemind 底层默认依赖 go-libp2p-daemon 做这部分。
2. dht
就是“分布式通讯录”。
负责:
- 新节点找到别人
- 记录谁在线
- 记录谁在参与某个任务
没有 master node,靠 DHT 把机器连成去中心化网络。
3. averaging
就是“大家怎么算完以后,怎么把结果合在一起”。
4. optim
就是“训练入口层”。
实际写 PyTorch 训练时,最接近这一层;它把“本地训练 + 和别人同步更新”接到一起。 quickstart/tutorial 也是让你从训练例子进入,而不是先看底层网络。
Hivemind = 用 dht 找人,用 p2p 通信,用 averaging/optim 一起训练。
- 想知道“怎么连起来” → 看
p2p - 想知道“怎么找到别人” → 看
dht - 想知道“怎么一起更新参数” → 看
averaging - 想知道“训练时实际怎么用” → 看
optim








