能否建立一个的 AI 训练众包平台

329 天前
 brainzhang

已经有很多人讨论过这个点子了,就像挖矿一样;能否建立一个的 AI 训练众包平台;家里有显卡的小伙伴可以把闲置的设备租出去赚取收益;而没有强力计算设备的用户无需花费大量资金购买设备, 只需登录平台,提交任务即可进行 AI 训练;

之前的技术瓶颈在于几乎不可能将大规模的 AI 训练拆分成一个个分布式的小任务,因为数据量庞大,并行交换要求高速的带宽等等;但是目前像 Stable Diffusion 这样的图像处理任务,一旦部署了稳定和标准化的模型,是可以将任务拆分为极小的数据单位的;这样技术上就能将一个个任务分配给某一台个人 PC 去处理;

我拍脑袋想了一下,建立这样一个平台的难点在于反作弊和计算量评估;这两点应该都有合适的解决方案;

我搜了一下,目前这个点子的相关项目不是很多,都在起步阶段,我觉得挺有前景的;

大家讨论一下,这个项目在 技术 /商业 /可行性 上有哪里漏洞?

我在 github 上建立一个一下项目,有兴趣的小伙伴可以去讨论下:

https://github.com/aitobox

5435 次点击
所在节点    奇思妙想
80 条回复
xingHI
329 天前
人工智能训练本质上也是数学计算的过程,所以分布式肯定是没问题的。但是有一些比较麻烦的问题
1. 你不可能把整个模型都放在客户端,你需要对你的神经网络进行拆分,或者把特定的技术分开,这个拆分目前是否已经有成熟的方案?
2. 神经网络的本质是完整的链接反应和反馈修正,万一某一台没有完成任务,你是不是需要重新分配,那么后面的连接内容是不是就不能继续,就要等待这个完成,这个如何进行优化?
3. 从商业角度来看,你这一套东西之成本,是否比现在成熟的公有云 GPU 算力平台便宜?
brainzhang
329 天前
拍脑袋简单想一下设计思路;
简单的分为 Client 和 Server 两个部分:

Server 端功能:
=========

- 用户注册和认证:提供用户注册和认证功能,确保只有经过验证的用户才能使用平台服务。

- 任务管理:实现任务创建、分配和执行跟踪功能。将用户提交的任务进行分配给可用的 Client 端,并跟踪任务的执行状态和进度。

- 收益统计和分配:记录用户的工作量和收益情况,并根据平台规则进行收益分配。确保公平和透明的收益分配机制。

- 防作弊机制:实施防作弊机制,采用非对称机密算法确保 Client 端的安全性和工作量的保护。


Client 端功能:
=========

- 安装和配置:用户加入平台后,需要下载和安装 Client 端程序,并进行必要的配置,包括与 Server 端的通信设置和密钥管理。另外要部署好完成任务所需要的环境,比如 StandAlone 的 Stable Diffusion 环境

- 任务接收和执行:Client 端接收由 Server 端分配的任务,执行任务所需的计算操作,并生成结果。

- 结果上传:完成任务后,Client 端使用公钥加密任务结果,然后上传至 Server 端进行验证和处理。



防作弊机制:
=========
- 非对称加密算法:为每个 Client 端生成一对公私钥,Client 端只持有公钥。Server 端使用私钥对任务进行签名,Client 端使用公钥验证任务有效性,以确保任务的安全传输。

- 结果加密:Client 端使用公钥加密任务结果,上传至 Server 端。Server 端使用私钥解密任务结果,确保结果的保密性和完整性。


任务工作量验证和奖励机制:
=========

- 任务积分:根据任务的计算量大小,为任务分配一定的积分,以反映任务的工作量。

- 并行执行和结果比对:Server 端可以将一个任务分配给多个 Client 端并行执行,然后将结果进行比对,以确保结果的准确性和一致性。

- 信用评分:根据 Client 端的历史记录和表现,进行信用评分,评分高的 Client 端可以获得更高的任务奖励,激励诚实工作和打击造假。


总体设计目标:保证平台的安全性、可靠性和公平性,促进用户的参与和奖励诚实工作。
brainzhang
329 天前
@xingHI
1. 现在想要实现分布式的神经网络训练肯定是技术难度极大的;但是本地跑一个图像生成的任务,肯定是能拆分独立运行的;先做简单的

2. 先不优化,大力出奇迹;接入客户端多了,可以一个任务同时分担到多个矿工机器上去,最后人工或 server 端挑选跑的结果比较好的

3. 这个跟公有云应该是错位竞争;它肯定不如公有云靠谱,毕竟接入的机器可能从 1060 到 A100 都有;但是肯定是能重复利用闲置设备的;这个我觉得算是众包和集中运营各有优势;这种众包形式可以给囊中羞涩的学生或者小工作室提供一个可选项;大公司就去租公有云;
brainzhang
329 天前
可以更具体一步,当前把 stable diffusion 做成这种众包形式,我觉得技术上应该没有瓶颈吧;
brainzhang
329 天前
至于模型太大,客户端太臃肿,这个真不用考虑;

当时不是有一堆零知识证明的币,要挖矿就要先下载一个十几 GB 的数据包,大家不也是玩的不亦乐乎嘛
crokily
329 天前
@brainzhang
那怎么拆分呢,确定能拆的出来吗
brainzhang
329 天前
@crokily 就拿 stable diffusion 举例子吧;最简单的,就是把 stable diffusion webui 的 Request 请求包装,传给客户端就可以了;每次生成一张图片,请求数据并不大啊;

这个细节在于一个靠谱的、下载好常用模型的 standalone stable diffusion Client ;加入众包平台,等着平台派单就可以了;
zooo
329 天前
之前有过类似的想法,我记得之前有个帖子讨论过这种情况,好像有人给出过一个项目在做类似的事情

整体想法就是 将 AI 计算 与 挖矿的工作量证明结合起来

难点是防止客户端恶意造假,比如并没有计算而给出错误的计算结果;还有就是估计计算量。

第一点我觉得通过加密的方式也不太好结果,通过多个客户端冗余计算倒是可以解决一些,缺点就是计算浪费了一部分。
hhjswf
329 天前
早就有了吧
brainzhang
329 天前
@zooo 我看过那个帖子;我觉得非要跟工作量证明挂钩大可不必;这个目的并不是建立一个去中心化的绝对公正的平台;而是一个比较可行的众包平台;比如我作为运营商给计算用户分配任务,不需要绝对公平,只要让他觉得相对比较公平的任务积分就可以了; 初期甚至可以这样,人工来判断这个任务值多少积分,然后下发给合适的接单者;

这个过程初期都可以用人工,后期完成的任务多了,设备也多了,可以从服务端进行统计,为每一个任务建立合适的积分奖励;
brainzhang
329 天前
@hhjswf 我就找到了一个类似的,也是刚刚在做:
https://github.com/aitobox/AI-Horde

请问您有什么成熟的类似平台推荐一下?我去试用试用,感激不尽;
zooo
329 天前
@brainzhang 那你这个项目就是偏向将 AI 任务拆分,分布式计算,通过用户自己使用自己的机器接任务。
zooo
329 天前
我想太多了,想复杂了

看到有加密就想到了挖矿哈哈哈哈
OysterQAQ
329 天前
搜一下边缘计算的论文吧 还涉及到一堆恶意回传梯度的问题
hhjswf
329 天前
@brainzhang 恒源云算力变现计划
NSAtools
329 天前
了解一下东数西算战略
brainzhang
329 天前
@hhjswf 这个我看了;感觉它做的比较高大上,是想要做一站式的分布式 GPU 平台;

我想的这个比较简单,初期可以看成是 Stable Difussion 的众包平台;没有那么通用和底层;
Pteromyini
329 天前
你想做的实际上跟边缘计算有异曲同工之处,问题是现阶段技术没法做到,而深度学习网络拆分更是大问题,并行计算一直是研究的热门方向,很遗憾,目前并没有太完美的解决方案
glfpes
329 天前
单卡的训练,做成众包模式肯定没有问题

只是需求端一般是公司或者是科研机构,比起成本更追求服务稳定性,所以这个众包平台的目标客户只能是个人玩家。目前个人玩模型的还是少数,预期也不太可能人均训练模型。所以可能需求不大。
sujin190
329 天前
数据安全也是一个很大问题,训练用的数据可都是各大公司的资产,云厂商可以通过签署合同承担责任,个人用户你没法约束他而且也不稳定,而且把现在普通显卡和专业超算算力差距会越来越大,大概率得不偿失

再说吧复杂模型必须只能是大厂商巨额投入才能玩得动的,否则如何建立护城河,越是难以进入的领域就代表着越高的回报,资金对于他们来说完全不是问题,所以这个的发展方向只会是更大更贵更复杂

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/948555

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX