知识卡片
Rabit容错设计
内容
普通AllReduce没有容错能力,一个节点故障就会拖垮整个训练。Rabit的解法很巧妙:它利用AllReduce”每一轮结束后所有节点都持有相同最终结果”这个特性,让故障节点重启后直接向仍在运行的节点要一份最新结果,而不是重新计算——恢复代价从”重算一整轮”降到”一次数据传输”。为了知道该恢复到哪一步,各节点各自维护步数计数器,取所有节点中最小的计数作为恢复基准点;检查点数据只保存在内存里而不写磁盘,进一步压缩了恢复延迟。这个设计的启发在于:容错机制不必总靠”从磁盘读回上次持久化状态”这种重量级方案,如果系统里本来就存在”多副本天然一致”的操作(如AllReduce),完全可以直接复用这份一致性来做轻量恢复。
参考来源
《深入理解XGBoost:高效机器学习算法与进阶》第6章《分布式XGBoost》