Gensyn-分布式深度学习的高效计算协议
Gensyn是一种分布式AI模型训练的协议,利用模型并行进行分布式训练、IPFS进行数据集分发和存储、学习证明确保训练的真实性和有效性,加密货币进行激励。
Gensyn的背景
- 大模型训练需要大到难以供应的算力,比如GPT3的训练用了1000个V100,需要一种方法来集中算力
- 现有中心化算力出租平台价格较为昂贵,不够经济
- ML训练和使用依赖于状态,需要新的的并行化和验证方法
- 链上直接进行模型训练效率太低
在这样的背景中,设计大规模分布式深度学习的高效计算协议分成了五个挑战:
- 如何验证深度学习训练工作是否真实且正确地执行
- 建立完善的市场机制
- 估算训练所需要的实践
- 隐私的设计
- 并行化训练模型的办法
Gensyn的设计
功能
Gensyn想要利用区块链等技术实现一种去中心化的大规模分布式深度学习的高效计算协议,具有如下功能:
- 概率学习证明:证明ML训练的正确性和真实性
- 加密货币激励机制
实体
具有如下实体:提交者、解决者、验证者和举报人
- 提交者:提供要计算的模型训练任务,并按照完成的工作对解决者付费
- 解决者:执行训练,并生成训练证明
- 验证者:将非确定性训练过程与确定性线性计算联系起来,判断训练的正确性和真实性
- 举报人:检查验证者工作并提供质疑
步骤
任务提交
提交者提供任务和超参数的元数据、模型二进制文件以及可公开访问的数据集。这里的数据集存储在中心化或者去中心化的平台中,比如亚马逊或者IPFS
提交任务时,需要先估计需要的工时。利用类似于ETH中的Gas机制来付费,多的退出来,少的不管了
提交者将较大的计算工作拆分成任务集,异步推送到网络
训练
任务进入公共池,解决这选择要执行的任务,该任务从池中移除。使用提交者提供的元数据、模型、数据集执行任务。执行训练任务时,每到一定的检查点就生成学习证明并存储训练过程中的元数据
验证证据
任务完成后,解决者向链通知任务完成并公开他的学习证明,验证者从任务池中获取带待验证的任务进行验证证据,根据生成的距离是否在阈值中进行匹配
基于图形的精确性挑战
举报人可以重复验证器的工作,检查验证是否正确。如果举报人认为验证执行有误则提出仲裁,如果是真阳性就获取奖励,如果是误报则从奖库中提取。
合约仲裁
当验证者受到举报人的挑战时,他们会与链上合约一起进入一个流程,以缩减有争议的操作或输入的位置,最终由链上合约执行最终的基本操作并确定挑战是否合理。
结算
如果工作被认为已正确执行并且所有检查均已通过,则求解器和验证器都将根据执行的操作获得奖励。
以下是各方案训练一小时的开销统计,Gensyn在较为便宜的开销下实现了高扩展性
下图是模型训练100轮的时间开销统计,时间开销相比直接训练增加了50%
问题和启发
Gensyn存在的问题
- 没有具体设计模型如何并行
- 训练的真实性依然依赖于可信的举报人,没有实现真正的去信任
- 即使举报人发现了验证结果有误,错误的训练结果可能已经影响了之后的模型训练
- 直接估算工作量不一定准确,文中说是按照ETH中Gas的办法来按照消耗的算力付费。但是模型训练很看重效率,要是Gas的钱没给够直接导致本次训练任务作废,导致整轮训练等待一小部分任务重新完成很影响效率。同时为了保证所有计算任务都完成,一个小任务给很多Gas可能造成并行的训练任务数减少,降低学习的效率
- 需要高效的验证训练证明的方法
一些想法
利用区块链的算力进行分布式模型计算有两个根本问题需要解决:
- 如何实现模型分布式训练(模型并行,数据并行,流水线并行,张量并行,零冗余)
- 如何快速验证模型训练效果
局域网分布式训练的想法
由于节点局域网内网络IO可以忽略不计,并且单个节点可以完成整个模型训练。此时完全可以让节点把训练封装(模型并行),提交者发送待训练模型,并返回训练后的模型,提交者可以利用现有方法来验证模型训练效果。
但局域网内有缺点:局域网内的显存有限,难以对参数量日益增加的模型进行训练。
跨域分布式训练的想法
跨域分布式训练可以把不同矿场的算力和显存集中,进而训练更大的模型。但跨域分布式训练还有如下的问题:
- 网络IO延迟大,需要尽可能减少跨域传输的数据量(降低梯度传输);
- 对于一个节点都装不下的超大模型,需要结合各种模型并行技术;
- 张量并行和流水线并行需要将模型拆为多个碎片分开训练,由于碎片的最优输出难以确定,利用测试集打标签的做法不可行,难以从测试集上判断模型训练质量。