minor changes

This commit is contained in:
alu committed 2024-11-20 20:53:49 +00:00
1 parent e51a540330
commit 519da9d85f
2 files changed
+47 -17

No files matched your search

+46 -16
View File
@@ -2,12 +2,13 @@
"cells": [
{
"cell_type": "code",
"execution_count": 11,
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"encoding_width = 2**13 # restricted by ckks size\n",
"database_size = 100"
"database_size = 100\n",
"import time"
]
},
{
@@ -19,7 +20,7 @@
},
{
"cell_type": "code",
"execution_count": 12,
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
@@ -29,7 +30,7 @@
},
{
"cell_type": "code",
"execution_count": 13,
"execution_count": 9,
"metadata": {},
"outputs": [
{
@@ -64,7 +65,7 @@
},
{
"cell_type": "code",
"execution_count": 14,
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
@@ -78,14 +79,15 @@
},
{
"cell_type": "code",
"execution_count": 15,
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[Client] sending HE_client=<ckks Pyfhel obj at 0x7d957f4dfb70, [pk:Y, sk:Y, rtk:Y, rlk:Y, contx(n=16384, t=0, sec=128, qi=[60, 30, 30, 30, 60], scale=1073741824.0, )]> and cx=<Pyfhel Ciphertext at 0x7d9585e874a0, scheme=ckks, size=2/2, scale_bits=30, mod_level=0>\n"
"[Client] Sending HE_client=<ckks Pyfhel obj at 0x74bfcf9f92b0, [pk:Y, sk:Y, rtk:Y, rlk:Y, contx(n=16384, t=0, sec=128, qi=[60, 30, 30, 30, 60], scale=1073741824.0, )]> and cx=<Pyfhel Ciphertext at 0x74bfe7e34090, scheme=ckks, size=2/2, scale_bits=30, mod_level=0>\n",
"[Client] Sent 106.78689 MB\n"
]
}
],
@@ -99,7 +101,8 @@
"#s_cx = [cx[j].to_bytes() for j in range(len(cx))]\n",
"s_cx = cx.to_bytes()\n",
"\n",
"print(f\"[Client] sending HE_client={HE_client} and cx={cx}\")"
"print(f\"[Client] Sending HE_client={HE_client} and cx={cx}\")\n",
"print(f\"[Client] Sent {(len(s_context) + len(s_public_key) + len(s_relin_key) + len(s_rotate_key) + len(s_cx)) / (10**6)} MB\")"
]
},
{
@@ -111,9 +114,21 @@
},
{
"cell_type": "code",
"execution_count": 16,
"execution_count": 12,
"metadata": {},
"outputs": [],
"outputs": [
{
"ename": "NameError",
"evalue": "name 'nb' is not defined",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[0;32mIn[12], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[38;5;129m@nb\u001b[39m\u001b[38;5;241m.\u001b[39mjit\n\u001b[1;32m 2\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mhyperbolic_distance_parts\u001b[39m(u, v): \u001b[38;5;66;03m# returns only the numerator and denominator of the hyperbolic distance formula\u001b[39;00m\n\u001b[1;32m 3\u001b[0m diff \u001b[38;5;241m=\u001b[39m u \u001b[38;5;241m-\u001b[39m v\n\u001b[1;32m 4\u001b[0m \u001b[38;5;66;03m#du = -(1 - u @ u) # for some reason we need to negate this\u001b[39;00m\n\u001b[1;32m 5\u001b[0m \u001b[38;5;66;03m#dv = -(1 - v @ v) # for some reason we need to negate this\u001b[39;00m\n\u001b[1;32m 6\u001b[0m \u001b[38;5;66;03m#return diff @ diff, du * dv # returns the numerator and denominator\u001b[39;00m\n",
"\u001b[0;31mNameError\u001b[0m: name 'nb' is not defined"
]
}
],
"source": [
"def hyperbolic_distance_parts(u, v): # returns only the numerator and denominator of the hyperbolic distance formula\n",
" diff = u - v\n",
@@ -125,7 +140,7 @@
},
{
"cell_type": "code",
"execution_count": 17,
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
@@ -141,15 +156,27 @@
},
{
"cell_type": "code",
"execution_count": 18,
"execution_count": 16,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[Server] received HE_server=<ckks Pyfhel obj at 0x7d957f4dd3f0, [pk:Y, sk:-, rtk:Y, rlk:Y, contx(n=16384, t=0, sec=128, qi=[60, 30, 30, 30, 60], scale=1073741824.0, )]> and cx=<Pyfhel Ciphertext at 0x7d957f4d7bd0, scheme=ckks, size=2/2, scale_bits=30, mod_level=0>\n",
"[Server] Distances computed! Responding: res=[<Pyfhel Ciphertext at 0x7d9584b26810, scheme=ckks, size=2/4, scale_bits=60, mod_level=2>, <Pyfhel Ciphertext at 0x7d957f4dfef0, scheme=ckks, size=2/4, scale_bits=60, mod_level=2>, <Pyfhel Ciphertext at 0x7d957f4ea040, scheme=ckks, size=2/4, scale_bits=60, mod_level=2>, <Pyfhel Ciphertext at 0x7d9584b26cc0, scheme=ckks, size=2/4, scale_bits=60, mod_level=2>, <Pyfhel Ciphertext at 0x7d9585f052c0, scheme=ckks, size=2/4, scale_bits=60, mod_level=2>, <Pyfhel Ciphertext at 0x7d957f4ea1d0, scheme=ckks, size=2/4, scale_bits=60, mod_level=2>, <Pyfhel Ciphertext at 0x7d957f4ea130, scheme=ckks, size=2/4, scale_bits=60, mod_level=2>, <Pyfhel Ciphertext at 0x7d957f4ea220, scheme=ckks, size=2/4, scale_bits=60, mod_level=2>, <Pyfhel Ciphertext at 0x7d957f4ea270, scheme=ckks, size=2/4, scale_bits=60, mod_level=2>, <Pyfhel Ciphertext at 0x7d957f4ea2c0, scheme=ckks, size=2/4, scale_bits=60, mod_level=2>, <Pyfhel Ciphertext at 0x7d957f4ea310, scheme=ckks, size=2/4, scale_bits=60, mod_level=2>, <Pyfhel Ciphertext at 0x7d957f4ea360, scheme=ckks, size=2/4, scale_bits=60, mod_level=2>, <Pyfhel Ciphertext at 0x7d957f4ea3b0, scheme=ckks, size=2/4, scale_bits=60, mod_level=2>, <Pyfhel Ciphertext at 0x7d957f4ea400, scheme=ckks, size=2/4, scale_bits=60, mod_level=2>, <Pyfhel Ciphertext at 0x7d957f4ea450, scheme=ckks, size=2/4, scale_bits=60, mod_level=2>, <Pyfhel Ciphertext at 0x7d957f4ea4a0, scheme=ckks, size=2/4, scale_bits=60, mod_level=2>, <Pyfhel Ciphertext at 0x7d957f4ea4f0, scheme=ckks, size=2/4, scale_bits=60, mod_level=2>, <Pyfhel Ciphertext at 0x7d957f4ea540, scheme=ckks, size=2/4, scale_bits=60, mod_level=2>, <Pyfhel Ciphertext at 0x7d957f4ea590, scheme=ckks, size=2/4, scale_bits=60, mod_level=2>, <Pyfhel Ciphertext at 0x7d957f4ea5e0, scheme=ckks, size=2/4, scale_bits=60, mod_level=2>, <Pyfhel Ciphertext at 0x7d957f4ea630, scheme=ckks, size=2/4, scale_bits=60, mod_level=2>, <Pyfhel Ciphertext at 0x7d957f4ea680, scheme=ckks, size=2/4, scale_bits=60, mod_level=2>, <Pyfhel Ciphertext at 0x7d957f4ea6d0, scheme=ckks, size=2/4, scale_bits=60, mod_level=2>, <Pyfhel Ciphertext at 0x7d957f4ea720, scheme=ckks, size=2/4, scale_bits=60, mod_level=2>, <Pyfhel Ciphertext at 0x7d957f4ea770, scheme=ckks, size=2/4, scale_bits=60, mod_level=2>, <Pyfhel Ciphertext at 0x7d957f4ea7c0, scheme=ckks, size=2/4, scale_bits=60, mod_level=2>, <Pyfhel Ciphertext at 0x7d957f4ea810, scheme=ckks, size=2/4, scale_bits=60, mod_level=2>, <Pyfhel Ciphertext at 0x7d957f4ea860, scheme=ckks, size=2/4, scale_bits=60, mod_level=2>, <Pyfhel Ciphertext at 0x7d957f4ea8b0, scheme=ckks, size=2/4, scale_bits=60, mod_level=2>, <Pyfhel Ciphertext at 0x7d957f4ea900, scheme=ckks, size=2/4, scale_bits=60, mod_level=2>, <Pyfhel Ciphertext at 0x7d957f4ea950, scheme=ckks, size=2/4, scale_bits=60, mod_level=2>, <Pyfhel Ciphertext at 0x7d957f4ea9a0, scheme=ckks, size=2/4, scale_bits=60, mod_level=2>, <Pyfhel Ciphertext at 0x7d957f4ea9f0, scheme=ckks, size=2/4, scale_bits=60, mod_level=2>, <Pyfhel Ciphertext at 0x7d957f4eaa40, scheme=ckks, size=2/4, scale_bits=60, mod_level=2>, <Pyfhel Ciphertext at 0x7d957f4eaa90, scheme=ckks, size=2/4, scale_bits=60, mod_level=2>, <Pyfhel Ciphertext at 0x7d957f4eaae0, scheme=ckks, size=2/4, scale_bits=60, mod_level=2>, <Pyfhel Ciphertext at 0x7d957f4eab30, scheme=ckks, size=2/4, scale_bits=60, mod_level=2>, <Pyfhel Ciphertext at 0x7d957f4eab80, scheme=ckks, size=2/4, scale_bits=60, mod_level=2>, <Pyfhel Ciphertext at 0x7d957f4eabd0, scheme=ckks, size=2/4, scale_bits=60, mod_level=2>, <Pyfhel Ciphertext at 0x7d957f4eac20, scheme=ckks, size=2/4, scale_bits=60, mod_level=2>, <Pyfhel Ciphertext at 0x7d957f4eac70, scheme=ckks, size=2/4, scale_bits=60, mod_level=2>, <Pyfhel Ciphertext at 0x7d957f4eacc0, scheme=ckks, size=2/4, scale_bits=60, mod_level=2>, <Pyfhel Ciphertext at 0x7d957f4ead10, scheme=ckks, size=2/4, scale_bits=60, mod_level=2>, <Pyfhel Ciphertext at 0x7d957f4ead60, scheme=ckks, size=2/4, scale_bits=60, mod_level=2>, <Pyfhel Ciphertext at 0x7d957f4eadb0, scheme=ckks, size=2/4, scale_bits=60, mod_level=2>, <Pyfhel Ciphertext at 0x7d957f4eae00, scheme=ckks, size=2/4, scale_bits=60, mod_level=2>, <Pyfhel Ciphertext at 0x7d957f4eae50, scheme=ckks, size=2/4, scale_bits=60, mod_level=2>, <Pyfhel Ciphertext at 0x7d957f4eaea0, scheme=ckks, size=2/4, scale_bits=60, mod_level=2>, <Pyfhel Ciphertext at 0x7d957f4eaef0, scheme=ckks, size=2/4, scale_bits=60, mod_level=2>, <Pyfhel Ciphertext at 0x7d957f4eaf40, scheme=ckks, size=2/4, scale_bits=60, mod_level=2>, <Pyfhel Ciphertext at 0x7d957f4eaf90, scheme=ckks, size=2/4, scale_bits=60, mod_level=2>, <Pyfhel Ciphertext at 0x7d957f4ec040, scheme=ckks, size=2/4, scale_bits=60, mod_level=2>, <Pyfhel Ciphertext at 0x7d957f4ec090, scheme=ckks, size=2/4, scale_bits=60, mod_level=2>, <Pyfhel Ciphertext at 0x7d957f4ec0e0, scheme=ckks, size=2/4, scale_bits=60, mod_level=2>, <Pyfhel Ciphertext at 0x7d957f4ec130, scheme=ckks, size=2/4, scale_bits=60, mod_level=Line truncated
"[Server] received HE_server=<ckks Pyfhel obj at 0x73188071c170, [pk:Y, sk:-, rtk:Y, rlk:Y, contx(n=16384, t=0, sec=128, qi=[60, 30, 30, 30, 60], scale=1073741824.0, )]> and cx=<Pyfhel Ciphertext at 0x73185d540f40, scheme=ckks, size=2/2, scale_bits=30, mod_level=0>\n"
]
},
{
"ename": "TypingError",
"evalue": "Failed in nopython mode pipeline (step: nopython frontend)\nnon-precise type pyobject\nDuring: typing of argument at /tmp/ipykernel_5991/1812651176.py (1)\n\nFile \"../../tmp/ipykernel_5991/1812651176.py\", line 1:\n<source missing, REPL/exec in use?> \n\nThis error may have been caused by the following argument(s):\n- argument 0: Cannot determine Numba type of <class 'Pyfhel.PyCtxt.PyCtxt'>\n- argument 1: Cannot determine Numba type of <class 'Pyfhel.PyCtxt.PyCtxt'>\n",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mTypingError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[0;32mIn[16], line 18\u001b[0m\n\u001b[1;32m 16\u001b[0m cd \u001b[38;5;241m=\u001b[39m HE_server\u001b[38;5;241m.\u001b[39mencrypt(D[i])\n\u001b[1;32m 17\u001b[0m \u001b[38;5;66;03m# Compute distance bewteen recieved query and D[i]\u001b[39;00m\n\u001b[0;32m---> 18\u001b[0m res\u001b[38;5;241m.\u001b[39mappend(\u001b[43mhyperbolic_distance_parts\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcx\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcd\u001b[49m\u001b[43m)\u001b[49m)\n\u001b[1;32m 19\u001b[0m end \u001b[38;5;241m=\u001b[39m time\u001b[38;5;241m.\u001b[39mtime()\n\u001b[1;32m 20\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m[Server] Compute took \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mend\u001b[38;5;250m \u001b[39m\u001b[38;5;241m-\u001b[39m\u001b[38;5;250m \u001b[39mstart\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124ms with bandwidth \u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mlen\u001b[39m(D)\u001b[38;5;250m \u001b[39m\u001b[38;5;241m/\u001b[39m\u001b[38;5;250m \u001b[39m(end\u001b[38;5;241m-\u001b[39mstart)\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m documents/s\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n",
"File \u001b[0;32m~/.venvs/cs239/lib/python3.9/site-packages/numba/core/dispatcher.py:423\u001b[0m, in \u001b[0;36m_DispatcherBase._compile_for_args\u001b[0;34m(self, *args, **kws)\u001b[0m\n\u001b[1;32m 419\u001b[0m msg \u001b[38;5;241m=\u001b[39m (\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mstr\u001b[39m(e)\u001b[38;5;241m.\u001b[39mrstrip()\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m \u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124mThis error may have been caused \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 420\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mby the following argument(s):\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;132;01m{\u001b[39;00margs_str\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 421\u001b[0m e\u001b[38;5;241m.\u001b[39mpatch_message(msg)\n\u001b[0;32m--> 423\u001b[0m \u001b[43merror_rewrite\u001b[49m\u001b[43m(\u001b[49m\u001b[43me\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mtyping\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 424\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m errors\u001b[38;5;241m.\u001b[39mUnsupportedError \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m 425\u001b[0m \u001b[38;5;66;03m# Something unsupported is present in the user code, add help info\u001b[39;00m\n\u001b[1;32m 426\u001b[0m error_rewrite(e, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124munsupported_error\u001b[39m\u001b[38;5;124m'\u001b[39m)\n",
"File \u001b[0;32m~/.venvs/cs239/lib/python3.9/site-packages/numba/core/dispatcher.py:364\u001b[0m, in \u001b[0;36m_DispatcherBase._compile_for_args.<locals>.error_rewrite\u001b[0;34m(e, issue_type)\u001b[0m\n\u001b[1;32m 362\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m e\n\u001b[1;32m 363\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m--> 364\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m e\u001b[38;5;241m.\u001b[39mwith_traceback(\u001b[38;5;28;01mNone\u001b[39;00m)\n",
"\u001b[0;31mTypingError\u001b[0m: Failed in nopython mode pipeline (step: nopython frontend)\nnon-precise type pyobject\nDuring: typing of argument at /tmp/ipykernel_5991/1812651176.py (1)\n\nFile \"../../tmp/ipykernel_5991/1812651176.py\", line 1:\n<source missing, REPL/exec in use?> \n\nThis error may have been caused by the following argument(s):\n- argument 0: Cannot determine Numba type of <class 'Pyfhel.PyCtxt.PyCtxt'>\n- argument 1: Cannot determine Numba type of <class 'Pyfhel.PyCtxt.PyCtxt'>\n"
]
}
],
@@ -165,17 +192,20 @@
"\n",
"# Encode each document weights in plaintext\n",
"res = []\n",
"\n",
"start = time.time()\n",
"for i in range(len(D)):\n",
" #d = np.array(D[i])\n",
" #cd = np.array([HE_server.encrypt(d[j]) for j in range(len(d))])\n",
" cd = HE_server.encrypt(D[i])\n",
" # Compute distance bewteen recieved query and D[i]\n",
" res.append(hyperbolic_distance_parts(cx, cd))\n",
"end = time.time()\n",
"print(f\"[Server] Compute took {end - start}s with bandwidth {len(D) / (end-start)} documents/s\")\n",
"\n",
"s_res = [res[j].to_bytes() for j in range(len(res))]\n",
"\n",
"print(f\"[Server] Distances computed! Responding: res={res}\")"
"print(f\"[Server] Distances computed! Responding: res={res}\")\n",
"print(f\"[Server] Sent {(np.sum([len(s_res[i]) for i in range(len(s_res))])) / (10**6)} MB\")"
]
},
{
+1 -1
View File
@@ -3,4 +3,4 @@ mkdir ~/.venvs
rm -rf ~/.venvs/cs239
python3.9 -m venv ~/.venvs/cs239
source ~/.venvs/cs239/bin/activate
pip install pyfhel
pip install numpy pyfhel