CoinMetrics AI 技术架构
Last updated
Last updated
为了构建更加完善的支持 AI 模型的公链,CoinMetrics AI需要优化 AI 模型推断以及公链两个方面,一方面需要满足 AI 模型在链上执行的正确性以及功能的完备性,另一方面需要在共识、性能方面对现有CoinMetrics AI公链进行优化。CoinMetrics AI核心架构如图所示,主要包含以下方面的技术突破:
1. 形式化验证: 通过 Z3 证明器完成AI算子的形式化以及正确性验证,保证CoinMetrics AI系统中所有节点对AI模型的推断结果保持一致以及正确。
2. AI算子库:进一步完善CoinMetrics AI支持的AI模型底层算子库,使得CoinMetrics AI能实现更多AI模型的推断工作。
3. 性能提升:通过零知识证明技术,逐步实现转账交易、智能合约以及AI 推断的打包,提升CoinMetrics AI主链性能。
由于区块链上智能合约虚拟机中的指令执行和计算结果属于共识机制,这要求虚拟机中指令操作是确定性和可复现的,CoinMetrics AI将 AI 模型推断操作作为一条基本指令(INFER | IFNERARRAY)集成到虚拟机执行引擎(CVM)中,由此引申出 AI 推断操作在区块链上应具备的两大重要特性:确定性和可复现。
CoinMetrics AI团队对上述两大重要特性给予足够的重视,并提出或计划提出一系列的可解释模型或方法,以保障定点化 AI 框架(CVM Runtime)中推断操作的完备性:
• 利用数学上严格的描述符号定义 AI 框架中算子的输入,输出和操作逻辑,保障算子计算执行具备理论可验证性;
• 采用第三方库 Z3-Prover 来验证 CVM Runtime 项目库中算子代码实现的正确性;模型定点化的必要性主要在于区块链上计算要求的确定性同现有主流框架中浮点模型在并行架构中计算不确定性之间的矛盾,为此调研了相关量化研究论文并参考现有成果实现了适配定点化框架的MRT转换工具。
此外,CoinMetrics AI对CVM Runtime中已支持的算子代码进行逻辑抽象,形成数学上的严格操作定义,以保障理论上的可解释性,一致性和完备性。通过对算子的输入,输出和其他配置属性进行规范和前置说明,以数学表达式的方式对代码隐含的逻辑进行抽象并给出等式符号定义。在可能存在的不同推理代码版本出现计算结果不一致时,这种数学描述的形式符号能够为其提供理论完备的参考并给出唯一确定的计算结果。
CoinMetrics AI将调用 Z3-Prover 库对CVM Runtime中所有算子进行代码的形式化验证,通过定义每个算子的输入和配置属性的数据规模和范围,验证输出或中间计算结果是计算无误且精度无溢出的。
CVM Runtime项目库中定义了一系列算子集及其实现,并给出了严格的数学描述定义,规定算子在给定输入的情况下,按算子计算逻辑,输出确定性的结果。已支持的算子集合参考现有主流深度学习框架架构,结合常用AI模型涉及到的网络结构,囊括了诸如卷积,全联接,启动函数等必要算子集。目前,CoinMetrics AI 研发的 CVM Runtime 模型执行框架能够支持图像分类,物体识别等计算机视觉CV研究以及部分自然语言处理NLP的任务。
CoinMetrics AI版本在此基础上,拟进一步扩充算子集,通过实现更多算子提供更加完善的链上AI模型。一方面,CoinMetrics AI持续关注学术界与工业界提出的新模型中新增的算子。另一方面,CoinMetrics AI将算子集扩充到自然语言处理(语音,语义,文本)领域,增加 LSTM、GRU、RNN 、TRANSFORMER 、BERT等算子,极大增强CoinMetrics AI在自然语言方面的推断能力。
除官方定义的算子外,CoinMetrics AI还将推出自定义算子功能,用户可以根据CoinMetrics AI提供的协议以及工具完成自定义算子,并将算子上传到CoinMetrics AI算子库中进行扩展,这使得用户自定义的范围从模型级别扩展到算子级别。社区贡献的算子可以有效创建更加完善的算子库,满足社区的需求。为保证用户自定义算子的正确性以及安全性,所有算子均需在完善数学符号描述和代码形式化验证之后才能合并至CVM Runtime代码库中。
区块链领域中,为了保障区块链系统的去中心化程度以及安全性,性能瓶颈一直困扰着相关研究者。为了提升区块链性能,目前主要有更换共识协议、DAG、zkRollup、分片、侧链等方案。由于分布式系统 CAP 定理的限制,直接对区块链进行扩容将是一种权衡,在系统一致性、可用性和持久性之间进行折中选择。CoinMetrics AI通过对扩容问题进行了深入研究,希望在不牺牲核心安全假设的前提下提升网络的性能,最终选定了 zkRollup扩容方案。
如下图所示,CoinMetrics AI的扩容方案主要分为三个阶段:转账交易的零知识证明,智能合约的零知识证明,AI 模型的零知识证明。第一阶段采用zkRollup方案,实现对转账交易的零知识证明以及打包加速。第二阶段通过增强零知识证明电路的通用性,实现 zkCVM,可以对CVM中运行的非 AI推断智能合约进行零知识证明并将交易打包上链。第三阶段通过采用适宜AI 推断的零知识证明技术,对包含 AI 模型推断的交易实现 ZK扩容。
为了更好地服务AI模型开发者以及AI应用开发者,CoinMetrics AI 除了核心框架之外,还提供更加丰富的技术组件,构成一个完善的AI框架和应用生态,帮助用户更好享受AI区块链带来的便利。整体架构如下图所示。