Alibaba-Gemini-Lab / OpenCheetah

185 stars 50 forks source link

cheetah框架可以在MNIST数据集上工作吗? #10

Closed xsk0206 closed 2 years ago

xsk0206 commented 2 years ago

您好,我想更换数据集进行实验,请问cheetah可以在MNIST数据集上继续预测吗?如果可以,应该如何进行? 感谢回复!

fionser commented 2 years ago
xsk0206 commented 2 years ago

感谢您的回复!

fionser commented 2 years ago
  1. demo 就在 networks/ 文件夹下面
  2. 目前 OpenCheetah 的 front-end (即把 python 代码编译为后端 的C++)是直接复用了 CrypTFlow2 的 compiler 的。 所以 “更换数据集” 只需要利用 CF2的脚本准备就行了;想用新的模型,也需要利用 CF2 的脚本编译出 .cpp 文件 实际上 networks/ 下的 文件都是用 CF2 的脚本把 .py 编译出来的。
xsk0206 commented 2 years ago

感谢您的回复! 我正尝试通过bash scripts/build.sh来生成lenet-cheetah,lenet-SCI_HE,我在/scripts/build.sh中line 23后加了lenet,但是当我运行时显示 image 请问应该怎么修改文件来生成可执行文件lenet-cheetah,lenet-SCI_HE

fionser commented 2 years ago

这里需要了解一下 CMake 的编译流程

我是在 这里 加了一个宏去编译 networks/ 文件下的 cpp 文件。并且 cpp 文件名字需要满足一定的柜子。

xsk0206 commented 2 years ago

谢谢! 我已经通过EzPC/Athos/Networks/Lenet生成了.inp文件,但是它只有2.2kb和175kb,远小于其他网络模型生成的文件。我在修改文件名后将其放入OpenCheetah/pretrained,但是我修改run-client.sh后运行时出现了下面图片中的问题。

fionser commented 2 years ago

pred* 这个是为了方便记忆 ground truth 自己添的。 如 “resnet50_input_scale12_pred249.inp” 是为了能看出来这张是 resnet50 的输入;并且用 12bit 作为 fixed-point scale;然后明文上的推理结果是 249.

出现上面的问题;就是 run-client.sh 的参数没有设置对。

xsk0206 commented 2 years ago

谢谢! run-client.sh中我只在几个地方加上了Lenet,其他的没有修改(如下图所示),请问有什么参数被我忽略了吗?

QQ截图20220707213756

fionser commented 2 years ago

我知道了。原来放放上去的 Letnet.cpp 没有设置线程个数的参数;即 nt=$NUM_THREADS

可以在 Letnet.cpp 的 main() 的前面加上 here 或者 run-client.sh 处删掉 nt

xsk0206 commented 2 years ago

您好,抱歉我没明白您的意思,要在Lenet.cpp 的main() 前面加上什么?(Lenet.cpp 中最前面有int num_threads = 4) 并且我在run-client.sh中删去nt=$NUM_THREADS后不起作用

fionser commented 2 years ago

:(。 我看错了 (orz) 是 p=$SERVER_PORT 在 Letnet 的要改成 port=$SERVER_PORT. 或者修改 https://github.com/Alibaba-Gemini-Lab/OpenCheetah/blob/main/networks/main_Lenet.cpp#L7505amap.arg("p", port, "Port Number");

xsk0206 commented 2 years ago

非常感谢,这个问题解决了,但是我又遇到了新的问题:( 程序运行到一半停止了,并且生成的.log文件中只有部分的日志,我的.inp文件是通过EzPC/Athos/Networks/Lenet生成后放入OpenCheetah/pretrained。server端出现这个错误后停止,client端一直处于运行状态未停止。 新问题

fionser commented 2 years ago

应该是产生了全0的weight;导致了「密文乘全0的值 」的错误( 就是提示的 result ciphertext is transparent)