0%

高效校验模型推理结果

如今越来越多地人开始本地部署大模型,然而大模型的本地部署需要大量的硬件资源,而这些硬件资源的利用率往往非常低。而另一边公开的模型服务经常会由于资源不足导致无法处理海量请求。因此一个很自然的想法是设计一个模型服务的分发平台,个人用户可以将私有部署的模型接入到平台中,通过执行推理任务来赚取收益,而平台自身不处理请求,而是单纯地进行任务分发。通过这种方式既可以对外提供一个高可用性和高扩展性的模型服务,也能够有效整合私有模型的硬件资源。

正如BT网络中的Free-riding Attack,这个模型服务分发平台也会面临相同的问题:用户能够很轻易地伪造推理结果来赚取收益。有一些直观的方法去校验推理结果,但它们都会有严重的缺陷:
方法一:平台对下发的推理任务进行采样,执行样本中的任务并将自身结果与用户结果进行比较,以判断用户的可信度
缺陷:用户伪造结果的成本极低,而平台对结果进行校验的成本极高。当样本量大到一定程度时,大量计算需要平台进行,失去了推理任务分发的意义
方法二:将任务同时分发给多个用户,通过投票等共识算法决定正确结果
缺陷:无法抵御女巫攻击,可以零成本地伪造大量用户来上传错误结果并赚取收益

下文将会介绍一种高效的推理结果校验算法,它解决了上述方法的缺陷,能够作为模型服务分发平台的基石:

校验算法的输入需要原始的模型参数、模型输入、每层的输出,输出为true或false表示输出是否能够匹配模型参数。
校验算法的核心是从所有层的输出向量中随机选出c个元素进行校验。对于一个特定元素a,只需要获取上一层的输出和该层参数矩阵对应于该元素的列向量,若这两个向量的点积与该元素的值一致,则认为校验成功。