这一个月我拿三台 Mac mini 跑 Train at Home,想看看在家贡献算力训练模型能换回多少币。Train at Home 是 Macrocosmos 出的 Mac 客户端,背后是 Bittensor 的 9 号子网 IOTA。大家一起训练一个模型,按贡献分 SN9 的 alpha 代币(符号 ι),ι 可以按市价折成 TAO。
上手
装好 App,在 Connect 里贴一个 coldkey 地址,点 Start training,不需要自己用 btcli 注册 hotkey。三台机器我分别叫 home、office 和 mini-2。
第一个坑来得很快。最早用 btcli 建的地址收到过一笔,App 里显示 $6.66。换成 taostats 钱包扩展新建的地址后,三台跑了一整晚,Pending 还是 0。查下来跟地址无关:有台机器显示在训练,Activations 和 Throughput 却都是 0;家里那台测完速就没了日志,办公室那台已经在接任务。测速 309 Mbps 下行、209 Mbps 上行,带宽背不了这个锅,更像是家里网络路径的问题。
9 月 10 日早上 8 点多,新地址到账第一笔,4.37 ι。
怎么盯
本来想用 VNC 远程看办公室那台的界面,连上去停在 macOS 登录页,作罢。后来换了个思路,让 Grok Bot 来盯。Grok Bot 跑在一台云端的 Linux 机器上,我把这台机器也加进了 Tailscale,它就能和三台 Mac mini 在同一个内网里,直接 SSH 进去读日志、跑脚本,不用开端口,也不用远程桌面。三台 Mac mini 两台在家(home 和 mini-2),一台在办公室(office),连同 Grok Bot 都用 Tailscale SSH 管理。
监控分了几层:
- 每天早上 9 点查钱包。Train at Home 发的钱到账就是 SN9 质押状态,只盯 free TAO 会以为没到账。
- 按链上到账事件记流水,每笔记下 ι 数量、当时的 α/TAO 价格和 TAO/USD 价格。
- 用 Macrocosmos 的 entitlements 接口拆分每台机器各分到多少。
- Grok Bot 定时 SSH 到三台机器读客户端日志,看排队位置和 submit_activation 次数。
中间还问过一个蠢问题:为什么 App 里的 miner ID 在链上显示 Inactive。答案是这个 ID 由客户端本地生成,只用来跟 Macrocosmos 的调度服务认证,从来没在链上注册过,钱是从矿池的 hotkey 打过来的。
收入
9 月 10 日到 10 月 9 日,一共到账 26 笔,合计 108.44 ι,按到账时的价格约 2.78 TAO,约 775 美元。三台机器平均下来一天二十多美元,中间还有好几天一分没有。
最大一笔是 10 月 7 日的 23.0 ι,约 0.57 TAO、174.5 美元,其中 16.37 ι 来自 mini-2。它前一天在一个训练 run 里连续几个 epoch 排在 120 台机器的第 2 到第 6 名,那个 run 每份贡献给得也多。那天链上一共给 288 个地址发了钱,我排第 30。平时就没这么好看,10 月 5 日和 6 日分别排第 144 和第 156。
币价也没帮忙。α 对 TAO 从 9 月 10 日的 0.0276 跌到今天的 0.0246 左右,同期 TAO 对美元从 235 左右涨到 275 左右,折成美元才没那么难看。
10 月 8 日早上我还试着预测当天到账:按各机器每个 epoch 的贡献占比估,区间 2.5 到 7.5 ι,中值 5.0。实际到账 3.95 ι。落在区间里了,可区间宽成这样,预测主要图个心安。
这里只算了收入,电费和机器折旧都没算进去。
最近几天基本在排队
10 月 9 日之后画风变了。office 早上 9 点 25 分左右被踢出训练,当天只提交了 17 次。10 点 53 分它排到第 5 位,挂了二十来分钟,11 点 15 分被甩到第 922 位。9 日到 10 日,三台机器排到前排又被打回队尾的情况我记了 30 次,最离谱的一次是 mini-2 排到第 2 位,转头第 956 位。
进了训练也不一定能干活。mini-2 在 9 日傍晚进了 layer 2,卡在 initializing 将近 4 小时,日志里一直是 node_registry 的 500 错误,重启后进去也是空转,凌晨 3 点被踢回队列。office 晚上 10 点 12 分进了 layer 1,同层找不到 peer,五个多小时没交出一次结果。10 日早上 8 点那次发放,三台都是 0。到今天下午 5 点,它们还在排队,位置分别是第 828、第 326 和第 164。
客户端是 PyInstaller 打包的,运行文件解压在临时目录,而 macOS 会清理放了 3 天的临时文件。为了防止长时间运行的客户端被清掉文件,我还写了个 launchd 小脚本,每 6 小时 touch 一遍。
官方文档和社区讨论我也翻了,最被推荐的办法是申请 tiered run(Provider Compute Application),据说能避开拥挤的 permissionless run。剩下的都是常规操作,别让机器睡眠,别开 VPN,排到前面时别手贱重启。服务端那边报 Miner not registered 把人踢回去的情况,本地再稳也挡不住。
几点体会
- 收入以链上为准。发放进的是 SN9 质押,只看 free TAO 会漏。
- 排队位置跳得厉害,参考价值有限,submit_activation 有没有在涨更能说明问题。
- 机器多不代表收益多。三台里经常只有一台在真干活,最好的那天七成多来自 mini-2 一次排名靠前。
- 一个月到账约 775 美元(按到账时价格)。扣掉电费和三台 Mac mini 的折旧还剩多少,等我算完再说。