Hivemind学习
Hivemind学习

Hivemind

很多机器不用中心服务器,也能互相找到彼此,然后一起训练模型。

1. P2P:负责通信

这层可以理解成“电话网络”。

作用是:

  • 节点之间建立连接
  • 发送消息
  • 交换训练需要的数据

作为底层通信层


2. DHT:负责找人和登记信息

这层可以理解成“分布式通讯录”。

作用是:

  • 新节点上线后,找到网络里的其他节点
  • 记录“谁现在在线”
  • 记录“谁在参与哪个训练任务”

所以:

P2P 是能说话,DHT 是知道该跟谁说话


3. Optimizer / Averaging:负责一起训练

这层可以理解成“协作训练逻辑”。

作用是:

  • 每个节点先各自算自己的梯度
  • 然后和别的节点交换/平均参数
  • 最后继续下一轮训练

所以它解决的是:

大家怎么算完以后,怎么合成一个共同的训练结果。


串起来看就是这个流程

一个节点启动后,大概会这样走:

启动 → 通过 DHT 找到别人 → 通过 P2P 连上 → 通过 Averaging/Optimizer 一起更新参数

这就是 Hivemind 的核心架构。


Hivemind 是一个去中心化分布式训练框架。它用 DHT 做节点发现,用 P2P 做通信,用参数平均机制让多台机器协同训练模型。


先把仓库分成 4 块

  • p2p:底层通信
  • dht:节点发现、登记协作信息
  • averaging:参数/梯度平均
  • optim:把 averaging 封装进训练流程里
    另外还有 moecompressionprotoutils 这些辅助模块。

  • 你在训练里实际最常碰到的是 optim
  • optim 里面会调用 averaging
  • averaging 需要靠 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
如果对您有帮助的话,能否支持一下博主?
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇