1/ JSTprove V2 已经上线。 这是我们 zkML 堆栈的一次重大升级,具有更快的电路、更多支持的层、更广泛的模型兼容性,以及更好的开发者体验。 这是朝着实用、可验证的机器学习迈出的重要一步。
2/ 我们发布了两个主要的电路优化。 我们用查找表替换了昂贵的范围检查,并添加了 Freivalds 算法以快速进行概率矩阵验证。这两者都显著减少了约束和证明开销。
3/ 这为什么重要: 范围检查在机器学习电路中无处不在(ReLU、重缩放、最大/最小等),而且它们非常昂贵。 用查找表替换它们可以节省几乎每个模型的约束,并带来即时的性能提升。
4/ 对于大规模矩阵运算,我们现在使用 Freivalds 算法。 在适用的情况下,我们采用二次时间的概率检查,而不是立方时间的验证,这大大降低了验证大型 GEMM 和类似操作的成本。
5/ 我们还扩展了对 ONNX 层的支持。 JSTprove 现在支持 Add、Sub、Mul、Max、Min、Clip、4D MaxPool(目前为止)和 BatchNorm,解锁了更广泛的现实世界模型。
6/ JSTprove 不再假设单一的输入和输出。 我们现在支持多输入和多输出的 ONNX 图。这需要对中间端和 Rust 后端进行深度重构,但大大扩展了模型的兼容性。
7/ 我们还重建了测试框架。 您现在可以测试单独的层,运行完整的管道测试(量化 → 电路 → 见证 → 证明 → 验证),模糊形状和参数,并获得适当的、有帮助的错误信息,以便处理不支持的模型。
8/ 添加像 BatchNorm 这样的层迫使我们清理和模块化后端的大部分代码。 这使得未来添加层和优化变得更快、更安全,也更容易理解。
9/ 结果:JSTprove V2 更快,证明成本更低,更具表现力,更加稳健,并且准备好应对更复杂的现实世界模型。 这是使可验证的机器学习在生产中变得实用的一大步。
144