WenqingZhang commited on
Commit
190a8ae
·
verified ·
1 Parent(s): be201e7

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +32 -15
app.py CHANGED
@@ -27,6 +27,8 @@ time.sleep(5)
27
  ENCRYPTED_DATA_BROWSER_LIMIT = 500
28
  N_USER_KEY_STORED = 20
29
  model_names=['financial_rating','legal_rating']
 
 
30
  FHE_MODEL_PATH = "deployment/financial_rating"
31
  FHE_LEGAL_PATH = "deployment/legal_rating"
32
  #FHE_LEGAL_PATH="deployment/legal_rating"
@@ -55,7 +57,7 @@ def clean_tmp_directory():
55
  for user_id in user_ids:
56
  if file.name.endswith(f"{user_id}.npy"):
57
  file.unlink()
58
- model_nams=[]
59
 
60
  def keygen(selected_tasks):
61
  # Clean tmp directory if needed
@@ -63,36 +65,47 @@ def keygen(selected_tasks):
63
 
64
  print("Initializing FHEModelClient...")
65
 
 
66
 
67
  if not selected_tasks:
68
- return "choose task first" # 修改提示信息为英文
69
 
70
  if "legal_rating" in selected_tasks:
71
  model_names.append('legal_rating')
72
- if "financial_rating" in selected_tasks:
73
- model_names.append('financial_rating')
74
 
 
75
 
76
 
77
- # Let's create a user_id
 
 
 
 
 
78
  user_id = numpy.random.randint(0, 2**32)
79
- fhe_api = FHEModelClient(FHE_MODEL_PATH, f".fhe_keys/{user_id}")
80
  fhe_api.load()
81
-
82
-
83
- # Generate a fresh key
84
  fhe_api.generate_private_and_evaluation_keys(force=True)
85
  evaluation_key = fhe_api.get_serialized_evaluation_keys()
86
-
87
- # Save evaluation_key in a file, since too large to pass through regular Gradio
88
- # buttons, https://github.com/gradio-app/gradio/issues/1877
89
  numpy.save(f"tmp/tmp_evaluation_key_{user_id}.npy", evaluation_key)
90
 
91
- return [list(evaluation_key)[:ENCRYPTED_DATA_BROWSER_LIMIT], user_id]
 
 
 
92
  def encode_quantize_encrypt(text, user_id):
93
  if not user_id:
94
  raise gr.Error("You need to generate FHE keys first.")
95
-
 
 
96
  fhe_api = FHEModelClient(FHE_MODEL_PATH, f".fhe_keys/{user_id}")
97
  fhe_api.load()
98
  encodings = transformer_vectorizer.transform([text])
@@ -158,6 +171,9 @@ def decrypt_prediction(user_id):
158
  # Read encrypted_prediction from the file
159
  encrypted_prediction = numpy.load(encoded_data_path).tobytes()
160
 
 
 
 
161
  fhe_api = FHEModelClient(FHE_MODEL_PATH, f".fhe_keys/{user_id}")
162
  fhe_api.load()
163
 
@@ -166,6 +182,7 @@ def decrypt_prediction(user_id):
166
 
167
  predictions = fhe_api.deserialize_decrypt_dequantize(encrypted_prediction)
168
  print(predictions)
 
169
  return {
170
  "low_relative": predictions[0][0],
171
  "medium_relative": predictions[0][1],
@@ -204,7 +221,7 @@ with demo:
204
  - The evaluation key is a public key that the server needs to process encrypted data.
205
  """
206
  )
207
- gr.Markdown("# Step 0: Select Tasks")
208
  task_checkbox = gr.CheckboxGroup(
209
  choices=["legal_rating", "financial_rating"],
210
  label="select_tasks"
 
27
  ENCRYPTED_DATA_BROWSER_LIMIT = 500
28
  N_USER_KEY_STORED = 20
29
  model_names=['financial_rating','legal_rating']
30
+
31
+
32
  FHE_MODEL_PATH = "deployment/financial_rating"
33
  FHE_LEGAL_PATH = "deployment/legal_rating"
34
  #FHE_LEGAL_PATH="deployment/legal_rating"
 
57
  for user_id in user_ids:
58
  if file.name.endswith(f"{user_id}.npy"):
59
  file.unlink()
60
+ model_names=[]
61
 
62
  def keygen(selected_tasks):
63
  # Clean tmp directory if needed
 
65
 
66
  print("Initializing FHEModelClient...")
67
 
68
+
69
 
70
  if not selected_tasks:
71
+ return "choose a task first" # 修改提示信息为英文
72
 
73
  if "legal_rating" in selected_tasks:
74
  model_names.append('legal_rating')
75
+ # Let's create a user_id
 
76
 
77
+ fhe_api= FHEModelClient(FHE_LEGAL_PATH, f".fhe_keys/{user_id}")
78
 
79
 
80
+ if "financial_rating" in selected_tasks:
81
+ model_names.append('financial_rating')
82
+
83
+ fhe_api = FHEModelClient(FHE_MODEL_PATH, f".fhe_keys/{user_id}")
84
+
85
+ # Let's create a user_id
86
  user_id = numpy.random.randint(0, 2**32)
87
+
88
  fhe_api.load()
89
+
90
+
91
+ # Generate a fresh key
92
  fhe_api.generate_private_and_evaluation_keys(force=True)
93
  evaluation_key = fhe_api.get_serialized_evaluation_keys()
94
+
95
+ # Save evaluation_key in a file, since too large to pass through regular Gradio
96
+ # buttons, https://github.com/gradio-app/gradio/issues/1877
97
  numpy.save(f"tmp/tmp_evaluation_key_{user_id}.npy", evaluation_key)
98
 
99
+
100
+
101
+
102
+
103
  def encode_quantize_encrypt(text, user_id):
104
  if not user_id:
105
  raise gr.Error("You need to generate FHE keys first.")
106
+ if "legal_rating" in model_names:
107
+ fhe_api = FHEModelClient(FHE_LEGAL_PATH, f".fhe_keys/{user_id}")
108
+ encodings =vectorizer.fit_transform(data['clause'])
109
  fhe_api = FHEModelClient(FHE_MODEL_PATH, f".fhe_keys/{user_id}")
110
  fhe_api.load()
111
  encodings = transformer_vectorizer.transform([text])
 
171
  # Read encrypted_prediction from the file
172
  encrypted_prediction = numpy.load(encoded_data_path).tobytes()
173
 
174
+ if "legal_rating" in model_names:
175
+ fhe_api = FHEModelClient(FHE_LEGAL_PATH, f".fhe_keys/{user_id}")
176
+
177
  fhe_api = FHEModelClient(FHE_MODEL_PATH, f".fhe_keys/{user_id}")
178
  fhe_api.load()
179
 
 
182
 
183
  predictions = fhe_api.deserialize_decrypt_dequantize(encrypted_prediction)
184
  print(predictions)
185
+
186
  return {
187
  "low_relative": predictions[0][0],
188
  "medium_relative": predictions[0][1],
 
221
  - The evaluation key is a public key that the server needs to process encrypted data.
222
  """
223
  )
224
+ gr.Markdown("# Step 0: Select Task")
225
  task_checkbox = gr.CheckboxGroup(
226
  choices=["legal_rating", "financial_rating"],
227
  label="select_tasks"