同态加密:使用PALISADE库进行矩阵矢量乘法

opt_ex

对于所有他的专家:

我想用非常大的矩阵(600000 x 55)实现矩阵向量乘法。目前,我可以用少量输入执行加法,乘法,InnerProduct等操作。当我尝试在较大的输入上应用这些操作时,出现类似的错误,Invalid next size (normal)或者我耗尽了主内存,直到操作系统终止了该进程(退出代码9)。

您有任何建议/示例如何归档实现矩阵矢量乘法或类似方法的有效方法吗?(使用BFV和CKKS)。

PS:我正在使用PALISADE库,但是如果您有SEAL或Helib之类的更好建议,我也会很乐意使用它们。

尤里·波利亚科夫(Yuriy Polyakov)

CKKS(在PALISADE中也可用)将是一个更好的选择,因为它支持近似(类似于浮点)算法,并且不需要高精度(大明文模量)。BFV完全执行所有操作(mod明文模数)。您将必须使用非常大的明文模数,以确保您的结果不会环绕明文模数。随着深度的增加(例如,两个链式乘法),情况会变得更加糟糕。

对于矩阵向量乘法,你可以用描述的技术https://eprint.iacr.org/2019/223https://eprint.iacr.org/2018/254和补充信息https://开头eprint.iacr.org/2020/563主要思想是选择正确的编码并利用SIMD打包。您将使用2的幂次方向量大小,并且可以将矩阵打包为每个密文64xY(多行)或每个密文每行的一部分,具体取决于哪一个效率更高。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章