From 99b1c195ee5c3c6b7becacce783d7c96950822e7 Mon Sep 17 00:00:00 2001 From: Joe Date: Tue, 19 Nov 2024 14:22:37 +0800 Subject: [PATCH] repo-sync-2024-11-19T11:32:29+0800 (#124) --- .ci/accuracy_test.py | 50 +- .ci/inferencer_test.py | 19 +- .ci/test_data/bin_onehot_glm/alice/alice.csv | 20 - .../bin_onehot_glm/alice/s_model.tar.gz | Bin 2034 -> 0 bytes .ci/test_data/bin_onehot_glm/bob/bob.csv | 20 - .../bin_onehot_glm/bob/s_model.tar.gz | Bin 2008 -> 0 bytes .ci/test_data/bin_onehot_glm/predict.csv | 20 - .../alice/alice.csv | 33 - .../alice/s_model.tar.gz | Bin 880 -> 0 bytes .../bob/bob.csv | 33 - .../bob/s_model.tar.gz | Bin 3889 -> 0 bytes .../predict.csv | 33 - .../ou_sgd}/alice/alice.csv | 0 .../ou_sgd/alice/s_model.tar.gz | Bin 0 -> 2688 bytes .../ou_sgd}/bob/bob.csv | 0 .../ou_sgd/bob/s_model.tar.gz | Bin 0 -> 4613 bytes .../fetures_in_one_party/ou_sgd/predict.csv | 570 ++++++++++++++++++ .../sgb}/alice/alice.csv | 0 .../sgb}/alice/s_model.tar.gz | Bin .../sgb}/bob/bob.csv | 0 .../sgb}/bob/s_model.tar.gz | Bin .../sgb}/predict.csv | 0 .../sgd}/alice/alice.csv | 0 .../sgd}/alice/s_model.tar.gz | Bin .../sgd}/bob/bob.csv | 0 .../sgd}/bob/s_model.tar.gz | Bin .../sgd}/predict.csv | 0 .../xgb}/alice/alice.csv | 0 .../xgb}/alice/s_model.tar.gz | Bin .../xgb}/bob/bob.csv | 0 .../xgb}/bob/s_model.tar.gz | Bin .../xgb}/predict.csv | 0 .../{phe_glm => glm}/alice/alice.csv | 0 .ci/test_data/glm/alice/s_model.tar.gz | Bin 0 -> 3098 bytes .ci/test_data/{phe_glm => glm}/bob/bob.csv | 0 .ci/test_data/glm/bob/s_model.tar.gz | Bin 0 -> 3127 bytes .ci/test_data/{phe_glm => glm}/predict.csv | 10 +- .ci/test_data/ou_glm/alice/alice.csv | 33 + .ci/test_data/ou_glm/alice/s_model.tar.gz | Bin 0 -> 6880 bytes .ci/test_data/ou_glm/bob/bob.csv | 33 + .ci/test_data/ou_glm/bob/s_model.tar.gz | Bin 0 -> 7400 bytes .ci/test_data/ou_glm/predict.csv | 33 + .../{phe_sgd => ou_sgd}/alice/alice.csv | 0 .ci/test_data/ou_sgd/alice/s_model.tar.gz | Bin 0 -> 3841 bytes .ci/test_data/{phe_sgd => ou_sgd}/bob/bob.csv | 0 .ci/test_data/ou_sgd/bob/s_model.tar.gz | Bin 0 -> 3562 bytes .ci/test_data/ou_sgd/predict.csv | 570 ++++++++++++++++++ .ci/test_data/phe_glm/alice/s_model.tar.gz | Bin 6752 -> 0 bytes .ci/test_data/phe_glm/bob/s_model.tar.gz | Bin 7001 -> 0 bytes .ci/test_data/phe_sgd/alice/s_model.tar.gz | Bin 3830 -> 0 bytes .ci/test_data/phe_sgd/bob/s_model.tar.gz | Bin 3552 -> 0 bytes .ci/test_data/phe_sgd/predict.csv | 33 - .../phe_sgd_no_feature/alice/s_model.tar.gz | Bin 2677 -> 0 bytes .../phe_sgd_no_feature/bob/s_model.tar.gz | Bin 4612 -> 0 bytes .ci/test_data/phe_sgd_no_feature/predict.csv | 33 - .../{bin_sgb => sgb}/alice/alice.csv | 0 .../{bin_sgb => sgb}/alice/s_model.tar.gz | Bin .ci/test_data/{bin_sgb => sgb}/bob/bob.csv | 0 .../{bin_sgb => sgb}/bob/s_model.tar.gz | Bin .ci/test_data/{bin_sgb => sgb}/predict.csv | 0 CHANGELOG.md | 2 + WORKSPACE | 4 + bazel/repositories.bzl | 6 +- .../topics/deployment/deployment.po | 66 +- .../topics/deployment/serving_on_kuscia.po | 203 ++++--- docs/source/reference/config.md | 21 +- docs/source/topics/deployment/deployment.rst | 15 +- .../topics/deployment/serving_on_kuscia.rst | 8 +- examples/alice/serving.config | 2 +- examples/bob/serving.config | 2 +- secretflow_serving/ops/BUILD.bazel | 8 +- secretflow_serving/ops/he/BUILD.bazel | 27 + .../ops/{phe_linear => he/linear}/BUILD.bazel | 18 +- .../linear}/phe_2p_decrypt_peer_y.cc | 2 +- .../linear}/phe_2p_decrypt_peer_y.h | 0 .../linear}/phe_2p_decrypt_peer_y_test.cc | 4 +- .../linear}/phe_2p_dot_product.cc | 2 +- .../linear}/phe_2p_dot_product.h | 0 .../linear}/phe_2p_dot_product_test.cc | 4 +- .../linear}/phe_2p_merge_y.cc | 2 +- .../linear}/phe_2p_merge_y.h | 0 .../linear}/phe_2p_merge_y_test.cc | 4 +- .../linear}/phe_2p_reduce.cc | 2 +- .../{phe_linear => he/linear}/phe_2p_reduce.h | 0 .../linear}/phe_2p_reduce_test.cc | 4 +- .../ops/{phe_linear => he}/test_utils.cc | 2 +- .../ops/{phe_linear => he}/test_utils.h | 0 .../server/kuscia/config_parser.cc | 59 +- .../server/kuscia/config_parser_test.cc | 40 ++ .../server/kuscia/serving_config.proto | 4 + .../example/normal/alice/serving.config | 4 +- .../example/normal/bob/serving.config | 4 +- .../one_party_no_feature/alice/serving.config | 4 +- .../one_party_no_feature/bob/serving.config | 6 +- 94 files changed, 1605 insertions(+), 467 deletions(-) delete mode 100644 .ci/test_data/bin_onehot_glm/alice/alice.csv delete mode 100644 .ci/test_data/bin_onehot_glm/alice/s_model.tar.gz delete mode 100644 .ci/test_data/bin_onehot_glm/bob/bob.csv delete mode 100644 .ci/test_data/bin_onehot_glm/bob/s_model.tar.gz delete mode 100644 .ci/test_data/bin_onehot_glm/predict.csv delete mode 100644 .ci/test_data/bin_onehot_glm_alice_no_feature/alice/alice.csv delete mode 100644 .ci/test_data/bin_onehot_glm_alice_no_feature/alice/s_model.tar.gz delete mode 100644 .ci/test_data/bin_onehot_glm_alice_no_feature/bob/bob.csv delete mode 100644 .ci/test_data/bin_onehot_glm_alice_no_feature/bob/s_model.tar.gz delete mode 100644 .ci/test_data/bin_onehot_glm_alice_no_feature/predict.csv rename .ci/test_data/{phe_sgd_no_feature => fetures_in_one_party/ou_sgd}/alice/alice.csv (100%) create mode 100644 .ci/test_data/fetures_in_one_party/ou_sgd/alice/s_model.tar.gz rename .ci/test_data/{phe_sgd_no_feature => fetures_in_one_party/ou_sgd}/bob/bob.csv (100%) create mode 100644 .ci/test_data/fetures_in_one_party/ou_sgd/bob/s_model.tar.gz create mode 100644 .ci/test_data/fetures_in_one_party/ou_sgd/predict.csv rename .ci/test_data/{bin_sgb_alice_no_feature => fetures_in_one_party/sgb}/alice/alice.csv (100%) rename .ci/test_data/{bin_sgb_alice_no_feature => fetures_in_one_party/sgb}/alice/s_model.tar.gz (100%) rename .ci/test_data/{bin_sgb_alice_no_feature => fetures_in_one_party/sgb}/bob/bob.csv (100%) rename .ci/test_data/{bin_sgb_alice_no_feature => fetures_in_one_party/sgb}/bob/s_model.tar.gz (100%) rename .ci/test_data/{bin_sgb_alice_no_feature => fetures_in_one_party/sgb}/predict.csv (100%) rename .ci/test_data/{sgd_alice_no_feature => fetures_in_one_party/sgd}/alice/alice.csv (100%) rename .ci/test_data/{sgd_alice_no_feature => fetures_in_one_party/sgd}/alice/s_model.tar.gz (100%) rename .ci/test_data/{sgd_alice_no_feature => fetures_in_one_party/sgd}/bob/bob.csv (100%) rename .ci/test_data/{sgd_alice_no_feature => fetures_in_one_party/sgd}/bob/s_model.tar.gz (100%) rename .ci/test_data/{sgd_alice_no_feature => fetures_in_one_party/sgd}/predict.csv (100%) rename .ci/test_data/{xgb_alice_no_feature => fetures_in_one_party/xgb}/alice/alice.csv (100%) rename .ci/test_data/{xgb_alice_no_feature => fetures_in_one_party/xgb}/alice/s_model.tar.gz (100%) rename .ci/test_data/{xgb_alice_no_feature => fetures_in_one_party/xgb}/bob/bob.csv (100%) rename .ci/test_data/{xgb_alice_no_feature => fetures_in_one_party/xgb}/bob/s_model.tar.gz (100%) rename .ci/test_data/{xgb_alice_no_feature => fetures_in_one_party/xgb}/predict.csv (100%) rename .ci/test_data/{phe_glm => glm}/alice/alice.csv (100%) create mode 100644 .ci/test_data/glm/alice/s_model.tar.gz rename .ci/test_data/{phe_glm => glm}/bob/bob.csv (100%) create mode 100644 .ci/test_data/glm/bob/s_model.tar.gz rename .ci/test_data/{phe_glm => glm}/predict.csv (85%) create mode 100644 .ci/test_data/ou_glm/alice/alice.csv create mode 100644 .ci/test_data/ou_glm/alice/s_model.tar.gz create mode 100644 .ci/test_data/ou_glm/bob/bob.csv create mode 100644 .ci/test_data/ou_glm/bob/s_model.tar.gz create mode 100644 .ci/test_data/ou_glm/predict.csv rename .ci/test_data/{phe_sgd => ou_sgd}/alice/alice.csv (100%) create mode 100644 .ci/test_data/ou_sgd/alice/s_model.tar.gz rename .ci/test_data/{phe_sgd => ou_sgd}/bob/bob.csv (100%) create mode 100644 .ci/test_data/ou_sgd/bob/s_model.tar.gz create mode 100644 .ci/test_data/ou_sgd/predict.csv delete mode 100644 .ci/test_data/phe_glm/alice/s_model.tar.gz delete mode 100644 .ci/test_data/phe_glm/bob/s_model.tar.gz delete mode 100644 .ci/test_data/phe_sgd/alice/s_model.tar.gz delete mode 100644 .ci/test_data/phe_sgd/bob/s_model.tar.gz delete mode 100644 .ci/test_data/phe_sgd/predict.csv delete mode 100644 .ci/test_data/phe_sgd_no_feature/alice/s_model.tar.gz delete mode 100644 .ci/test_data/phe_sgd_no_feature/bob/s_model.tar.gz delete mode 100644 .ci/test_data/phe_sgd_no_feature/predict.csv rename .ci/test_data/{bin_sgb => sgb}/alice/alice.csv (100%) rename .ci/test_data/{bin_sgb => sgb}/alice/s_model.tar.gz (100%) rename .ci/test_data/{bin_sgb => sgb}/bob/bob.csv (100%) rename .ci/test_data/{bin_sgb => sgb}/bob/s_model.tar.gz (100%) rename .ci/test_data/{bin_sgb => sgb}/predict.csv (100%) create mode 100644 secretflow_serving/ops/he/BUILD.bazel rename secretflow_serving/ops/{phe_linear => he/linear}/BUILD.bazel (90%) rename secretflow_serving/ops/{phe_linear => he/linear}/phe_2p_decrypt_peer_y.cc (98%) rename secretflow_serving/ops/{phe_linear => he/linear}/phe_2p_decrypt_peer_y.h (100%) rename secretflow_serving/ops/{phe_linear => he/linear}/phe_2p_decrypt_peer_y_test.cc (97%) rename secretflow_serving/ops/{phe_linear => he/linear}/phe_2p_dot_product.cc (99%) rename secretflow_serving/ops/{phe_linear => he/linear}/phe_2p_dot_product.h (100%) rename secretflow_serving/ops/{phe_linear => he/linear}/phe_2p_dot_product_test.cc (98%) rename secretflow_serving/ops/{phe_linear => he/linear}/phe_2p_merge_y.cc (99%) rename secretflow_serving/ops/{phe_linear => he/linear}/phe_2p_merge_y.h (100%) rename secretflow_serving/ops/{phe_linear => he/linear}/phe_2p_merge_y_test.cc (98%) rename secretflow_serving/ops/{phe_linear => he/linear}/phe_2p_reduce.cc (98%) rename secretflow_serving/ops/{phe_linear => he/linear}/phe_2p_reduce.h (100%) rename secretflow_serving/ops/{phe_linear => he/linear}/phe_2p_reduce_test.cc (98%) rename secretflow_serving/ops/{phe_linear => he}/test_utils.cc (95%) rename secretflow_serving/ops/{phe_linear => he}/test_utils.h (100%) diff --git a/.ci/accuracy_test.py b/.ci/accuracy_test.py index 8466548..19fa987 100644 --- a/.ci/accuracy_test.py +++ b/.ci/accuracy_test.py @@ -372,32 +372,20 @@ def exec(self, epsilon=0.0001): if __name__ == "__main__": AccuracyTestCase( - service_id="bin_onehot_glm", + service_id="glm", parties=['alice', 'bob'], - case_dir='.ci/test_data/bin_onehot_glm', + case_dir='.ci/test_data/glm', package_name='s_model.tar.gz', input_csv_names={'alice': 'alice.csv', 'bob': 'bob.csv'}, expect_csv_name='predict.csv', query_ids=['1', '2', '3', '4', '5', '6', '7', '8', '9', '15'], - score_col_name='pred', - ).exec() - - AccuracyTestCase( - service_id="bin_onehot_glm_alice_no_feature", - parties=['alice', 'bob'], - case_dir='.ci/test_data/bin_onehot_glm_alice_no_feature', - package_name='s_model.tar.gz', - input_csv_names={'alice': 'alice.csv', 'bob': 'bob.csv'}, - expect_csv_name='predict.csv', - query_ids=['1', '2', '3', '4', '5', '6', '7', '8', '9', '15'], - score_col_name='pred', - use_oss=True, - ).exec() + score_col_name='pred_y', + ).exec(0.1) AccuracyTestCase( - service_id="bin_sgb", + service_id="sgb", parties=['alice', 'bob'], - case_dir='.ci/test_data/bin_sgb', + case_dir='.ci/test_data/sgb', package_name='s_model.tar.gz', input_csv_names={'alice': 'alice.csv', 'bob': 'bob.csv'}, expect_csv_name='predict.csv', @@ -406,9 +394,9 @@ def exec(self, epsilon=0.0001): ).exec() AccuracyTestCase( - service_id="bin_sgb_alice_no_feature", + service_id="sgb_fetures_in_one_party", parties=['alice', 'bob'], - case_dir='.ci/test_data/bin_sgb_alice_no_feature', + case_dir='.ci/test_data/fetures_in_one_party/sgb', package_name='s_model.tar.gz', input_csv_names={'alice': 'alice.csv', 'bob': 'bob.csv'}, expect_csv_name='predict.csv', @@ -428,9 +416,9 @@ def exec(self, epsilon=0.0001): ).exec() AccuracyTestCase( - service_id="xgb_alice_no_feature", + service_id="xgb_fetures_in_one_party", parties=['alice', 'bob'], - case_dir='.ci/test_data/xgb_alice_no_feature', + case_dir='.ci/test_data/fetures_in_one_party/xgb', package_name='s_model.tar.gz', input_csv_names={'alice': 'alice.csv', 'bob': 'bob.csv'}, expect_csv_name='predict.csv', @@ -450,9 +438,9 @@ def exec(self, epsilon=0.0001): ).exec() AccuracyTestCase( - service_id="sgd_alice_no_feature", + service_id="sgd_fetures_in_one_party", parties=['alice', 'bob'], - case_dir='.ci/test_data/sgd_alice_no_feature', + case_dir='.ci/test_data/fetures_in_one_party/sgd', package_name='s_model.tar.gz', input_csv_names={'alice': 'alice.csv', 'bob': 'bob.csv'}, expect_csv_name='predict.csv', @@ -461,9 +449,9 @@ def exec(self, epsilon=0.0001): ).exec() AccuracyTestCase( - service_id="phe_sgd", + service_id="ou_sgd", parties=['alice', 'bob'], - case_dir='.ci/test_data/phe_sgd', + case_dir='.ci/test_data/ou_sgd', package_name='s_model.tar.gz', input_csv_names={'alice': 'alice.csv', 'bob': 'bob.csv'}, expect_csv_name='predict.csv', @@ -472,9 +460,9 @@ def exec(self, epsilon=0.0001): ).exec() AccuracyTestCase( - service_id="phe_sgd_no_feature", + service_id="ou_sgd_fetures_in_one_party", parties=['alice', 'bob'], - case_dir='.ci/test_data/phe_sgd_no_feature', + case_dir='.ci/test_data/fetures_in_one_party/ou_sgd', package_name='s_model.tar.gz', input_csv_names={'alice': 'alice.csv', 'bob': 'bob.csv'}, expect_csv_name='predict.csv', @@ -483,12 +471,12 @@ def exec(self, epsilon=0.0001): ).exec() AccuracyTestCase( - service_id="phe_glm", + service_id="ou_glm", parties=['alice', 'bob'], - case_dir='.ci/test_data/phe_glm', + case_dir='.ci/test_data/ou_glm', package_name='s_model.tar.gz', input_csv_names={'alice': 'alice.csv', 'bob': 'bob.csv'}, expect_csv_name='predict.csv', query_ids=['1', '2', '3', '4', '5', '6', '7', '8', '9', '15'], - score_col_name='predict_score', + score_col_name='pred_y', ).exec(0.1) diff --git a/.ci/inferencer_test.py b/.ci/inferencer_test.py index ec71d4d..53e74da 100644 --- a/.ci/inferencer_test.py +++ b/.ci/inferencer_test.py @@ -38,7 +38,13 @@ async def run_process(command): ) -async def run_inferencer_example(exmaple_dir: str, result_path: str, target_path: str): +async def run_inferencer_example( + exmaple_dir: str, + result_path: str, + target_path: str, + target_col_name: str, + epsilon=0.0001, +): print(f"====begin example: {exmaple_dir}=====") with resources.path( @@ -64,11 +70,11 @@ async def run_inferencer_example(exmaple_dir: str, result_path: str, target_path target_df = pd.read_csv(target_path) score_col = result_df['score'] - pred_col = target_df['pred'] + pred_col = target_df[target_col_name] assert len(score_col) == len(pred_col) - are_close = np.isclose(score_col, pred_col, atol=0.0001) + are_close = np.isclose(score_col, pred_col, atol=epsilon) for i, match in enumerate(are_close): assert match, f"row {i} mismatch: {score_col[i]} != {pred_col[i]}" @@ -79,7 +85,9 @@ async def run_inferencer_example(exmaple_dir: str, result_path: str, target_path run_inferencer_example( "secretflow_serving/tools/inferencer/example/normal", "tmp/alice/score.csv", - ".ci/test_data/bin_onehot_glm/predict.csv", + ".ci/test_data/glm/predict.csv", + "pred_y", + 0.01, ) ) @@ -87,6 +95,7 @@ async def run_inferencer_example(exmaple_dir: str, result_path: str, target_path run_inferencer_example( "secretflow_serving/tools/inferencer/example/one_party_no_feature", "tmp/bob/score.csv", - ".ci/test_data/bin_onehot_glm_alice_no_feature/predict.csv", + ".ci/test_data/fetures_in_one_party/sgd/predict.csv", + "pred", ) ) diff --git a/.ci/test_data/bin_onehot_glm/alice/alice.csv b/.ci/test_data/bin_onehot_glm/alice/alice.csv deleted file mode 100644 index e839d87..0000000 --- a/.ci/test_data/bin_onehot_glm/alice/alice.csv +++ /dev/null @@ -1,20 +0,0 @@ -id,f1,f2,f3,f4,f5,f6,f7,f8,b1,o1,y -1,-0.5591187559186066,-0.2814808888968485,-0.4310124259272412,0.42698761472064484,0.6996194412496004,-0.8971369921102821,-0.1297223511775294,-0.6458798434413631,0.1396383060036957,D,0.0 -2,0.17853136775181744,-0.4768767452292948,0.6595296048985997,0.16383724799230648,0.4191750631343425,-0.0553416809559204,-0.835222222053031,0.5381071271563711,0.08999384285997897,C,1.0 -3,0.6188609133556533,0.025633080047547052,0.8300179478963079,-0.45405441885735187,-0.08493499972471619,0.04889614165329914,-0.9523316995614857,-0.05353206715441927,0.2981044873444963,B,1.0 -4,-0.987002480643878,-0.005445413798033316,-0.3038095035035151,0.5789854645875725,-0.6726110640591769,-0.11796517197878131,-0.7913629960788118,0.5252666701315694,0.32159023992596675,B,1.0 -5,0.6116385036656158,-0.8027835368690399,0.9265753301309776,0.2876623562458911,-0.724878081055228,-0.4616345585134092,0.12250598496354348,-0.8694099398481183,0.16167450163600877,C,0.0 -6,0.3962787899764537,0.9626369136931534,-0.4469843026057556,-0.19952894216630912,0.3919110519057767,0.6720178809053261,0.2193264721156456,-0.09114188927646016,0.20676337842801856,B,1.0 -7,-0.31949896696401625,-0.061019155954883164,0.21272681598450438,-0.04834743340794745,-0.41783686135384324,-0.41386938227609527,-0.3882048353908272,-0.39360862010344855,0.018901318801212597,C,1.0 -8,-0.6890410003764369,0.6794623631273697,-0.6109496138280779,0.2063308648785771,-0.7103542356227883,-0.5119420092003868,0.9845747170799963,-0.5513685278692384,0.1172886051599123,D,0.0 -9,0.9144261444135624,0.8286609977949781,0.8594276816242405,-0.1911128016185284,-0.563727053934955,-0.5138533145337412,0.541481543886571,-0.5981519864733384,0.0376931235673269,C,0.0 -10,-0.32681090977474647,-0.2585901571374831,0.1498134434916294,-0.030934281477115855,0.49676503532610927,0.5352868285398893,0.5416854721911608,0.7276956182064944,0.16392625797797383,A,1.0 -11,-0.8145083132397042,-0.17213965884275084,-0.47778498865612185,-0.4422187336180494,0.4706377931123673,-0.27607008470757766,0.39780330740087533,0.6789359372382642,0.31034068728585906,D,0.0 -12,-0.806567246333072,0.12504945492870867,-0.18573074778559673,0.5359991111551932,-0.9817349707748626,-0.08835765250300809,0.05510025965060583,0.9270163534670308,0.3898825715991485,B,1.0 -13,0.6949887326949196,-0.5574518033675495,-0.7870700872148468,-0.7839266639621547,0.45191502356739766,0.49637655872697906,-0.9167349161493943,-0.46072101353916106,0.3119186144921719,B,0.0 -14,0.20745206273378214,-0.7081545737949029,-0.8552280589465922,-0.4986202792921457,0.15136419388574107,-0.7691661612231564,0.8935597105203195,-0.03929942517629792,0.36079060086816067,A,0.0 -15,0.6142565465487604,-0.47845178018046086,-0.4114963510637599,-0.00545243574944454,0.3566356120332963,-0.5179070466010649,-0.38576033872228077,-0.12374141954173834,0.4730381159140901,D,1.0 -16,0.45946357338763577,0.869516500592707,0.8940309303553251,0.25674205932621663,0.9769683757190519,0.4655966603399595,0.1749397180654313,-0.7330265340634321,0.057493900732114966,A,1.0 -17,0.07245618290940148,0.15828585207480095,0.6058844851447147,-0.7307832385640813,-0.7047890815652045,0.7604535581160456,0.800552689601107,0.5620156263473772,0.18038921596661117,D,1.0 -18,0.9462315279587412,-0.16484385288965275,0.9134186991705504,-0.8007932195395477,0.9007963088557205,-0.2762376803205897,0.08557406326172878,0.2904407156393314,0.39477993406748413,D,0.0 -19,-0.24293124558329304,-0.6951771796317134,0.7522260924861339,-0.894295158530586,-0.14577787102095408,-0.2960307812622618,0.28186485638698366,-0.2308367011118997,0.014778052261847086,C,0.0 diff --git a/.ci/test_data/bin_onehot_glm/alice/s_model.tar.gz b/.ci/test_data/bin_onehot_glm/alice/s_model.tar.gz deleted file mode 100644 index 6330550d20cc92d10842649b3827167d0bf1026e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2034 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 diff --git a/.ci/test_data/bin_onehot_glm/predict.csv b/.ci/test_data/bin_onehot_glm/predict.csv deleted file mode 100644 index b6d9de0..0000000 --- a/.ci/test_data/bin_onehot_glm/predict.csv +++ /dev/null @@ -1,20 +0,0 @@ -id,pred,y -1, 0.39350164,0.0 -2, 0.8956253,1.0 -3, 0.8731979,1.0 -4, 0.96265507,1.0 -5, 0.16241527,0.0 -6, 0.9365009,1.0 -7, 0.8754473,1.0 -8, 0.48002118,0.0 -9, 0.42156637,0.0 -10, 0.714669,1.0 -11, 0.35087457,0.0 -12, 0.92386246,1.0 -13, 0.38156974,0.0 -14, 0.22711706,0.0 -15, 0.8340757,1.0 -16, 0.6390995,1.0 -17, 0.64777297,1.0 -18, 0.10322996,0.0 -19, 0.14100587,0.0 diff --git a/.ci/test_data/bin_onehot_glm_alice_no_feature/alice/alice.csv b/.ci/test_data/bin_onehot_glm_alice_no_feature/alice/alice.csv deleted file mode 100644 index 172cb0b..0000000 --- a/.ci/test_data/bin_onehot_glm_alice_no_feature/alice/alice.csv +++ /dev/null @@ -1,33 +0,0 @@ -id,y -1,1.0 -2,0.0 -3,0.0 -4,1.0 -5,1.0 -6,1.0 -7,0.0 -8,1.0 -9,1.0 -10,0.0 -11,1.0 -12,1.0 -13,0.0 -14,1.0 -15,1.0 -16,0.0 -17,0.0 -18,1.0 -19,1.0 -20,1.0 -21,1.0 -22,0.0 -23,1.0 -24,1.0 -25,1.0 -26,1.0 -27,0.0 -28,0.0 -29,0.0 -30,1.0 -31,1.0 -32,1.0 diff --git a/.ci/test_data/bin_onehot_glm_alice_no_feature/alice/s_model.tar.gz b/.ci/test_data/bin_onehot_glm_alice_no_feature/alice/s_model.tar.gz deleted file mode 100644 index 992cdef524334d5f012b0d6829afd99f2777486b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 880 zcmV-$1CRV4iwFShA^c?m|LvDsPunmQ$9e9jKz)WS*Fq-kA(RHfpoJDf%Y-b)ane9; zik-1C@!e-9DQ&r5HU^V_QscySj^lIw=Oo=TySCLC94`GuBu1;%DqF_QR+84_**Wi* zB~_D_mZhaPpdb|HZ23R2$@$HF5Pmh9ZjpEq-iLJD{IcAPQx8YL4+rz!>w~rkGH$-qKZ{9aeQo#jBdE zp;ZIB-m0!?a1FxNy6(xmFnE}t>zm38)*0k5<3)rS{eg25rU{=SeUd*(d^llR+YJdX zB;Olz3uigb@)Ti0!XyAPVE0nsh6x~rOK3<7$}KSiX~w6U{eJHl?Du=^&R}47xA+L8 zGBvQo&_r#VCzpfsU4q4P`Oi!^j&i=GVZmfhaDK(WJq#@WfRdkK&AWO!-$ zUhGUf%Lv)Ek5nf_YCrR~9SI&Ag&kx@wM1b#R`MCFnS6PTEurQ=Wj+fgoLPZ2AemKq<%$W~Jsh}t7rg8cX^zpWVd7@fgA=;f= zLLEvc(P-G0QG65}C>9y14q?|(E#MbvMFnYs$0-FkL9BLwUV^t%y4)$RUM!SH75FX` z^NQefeOJ*VxMfH~#VJOLaem?$`)=&mu6hvkkM%QGxem-nt}KLrAc}zoyp+!5u-QB0 zV%R)tA3malhxK)*3~E21Gy?Tguuf7+7v?mC5tvj?^($F{3mgVxTHo!J?bX5rZl)e4 zbHkP1=p?&)km4NStQLmH8s;EPXP-^Fv9_kJ>yoC)_xVw|*N-vI1I%`C?aRGRf2#vV zxBR%^`8ypo8AC1?7~$D7vhRR-G2P|F9D7p_RvviV(@~h51HVWRt@b#bwrhcby|ve~ zH^HFae8?H)2Jlae%8Ib?iNb{Nthdcd;|1@#XI8!2&Sx3yhjrR|A;};`<3lE$G9C7T zxw~8Me{oB<;{GIK-BGXGDeW~*`BD6d5(oqWfj}S-2m}IwKp+qZ1OkEJo$(tdaE#^v GC;$MO+Od%U diff --git a/.ci/test_data/bin_onehot_glm_alice_no_feature/bob/bob.csv b/.ci/test_data/bin_onehot_glm_alice_no_feature/bob/bob.csv deleted file mode 100644 index 9dc190f..0000000 --- a/.ci/test_data/bin_onehot_glm_alice_no_feature/bob/bob.csv +++ /dev/null @@ -1,33 +0,0 @@ -id,f1,f2,f3,f4,f5,f6,f7,f8,b1,b2,o1,o2,unused1,unused2 -1,-0.15615636062945915,0.40914367242984695,0.7527352529453377,-0.46634962009491443,-0.8615749630632328,-0.5715263852591228,0.9379925145695025,0.19007021290005532,0.4168724773199035,0.21384345949033967,C,D,0.6044702778742779,0.4570901213054086 -2,-0.9404055611238593,-0.9083512326886756,-0.37064423840304417,0.2819235971596161,0.5212043305144631,-0.73537630254995,0.8527339660162552,0.3504251072081803,0.3517699625436855,0.004834849804169983,D,D,0.7281280567505588,-0.37264537161001754 -3,-0.5627240503927933,-0.5442034486969063,0.3108773305897601,-0.7768956528082471,0.5316688586139755,0.871028481161342,0.6973914688286109,-0.5295922099981376,0.30583888286297506,0.03762193003688352,A,B,0.621498633148778,0.21241770661228654 -4,0.010710576206724776,-0.42122407279578566,-0.20873619787867148,-0.13046949866179003,-0.7432170710004744,0.14208618665056894,-0.667377778792172,-0.7602267721057516,0.49361653181575216,0.4415531966500715,C,B,-0.46638858081105594,0.022846119338956195 -5,-0.9469280606322728,-0.840416046152745,0.829095179481087,-0.09255258734158711,-0.04943524380253739,-0.05465794737641172,-0.02871774909856306,0.780574628258875,0.3269881588553663,0.4519642857799466,C,A,0.5747490182709423,-0.22960913331054567 -6,-0.602324698626703,-0.5344182272779396,-0.0822962948252024,0.9076318550421603,0.0996071869898878,0.5692388485815068,-0.5725054016016367,-0.5075693044227503,0.003911553576078974,0.27279514460276116,B,A,-0.7838087471940858,0.15317608699319907 -7,0.2997688755590464,-0.7979971411805418,-0.4702396670038951,0.7517058807563881,-0.4698867421198818,0.6149939955332868,-0.19791941490109477,0.1890383070668824,0.4085520675577308,0.41729750994300835,D,D,0.7443335658121795,-0.4905549877228361 -8,0.08988296120643335,-0.44405279377981577,-0.5067449846120331,-0.4732218984978185,0.7448660821705149,-0.6191801712762446,-0.8827292000556421,0.23876302066420618,0.14968937609998895,0.291254783244897,C,B,0.7171865026755633,0.4175705676683412 -9,-0.5591187559186066,0.27136888852880037,0.12273626832630158,0.0011722261005966406,-0.15372411959822618,-0.8061383715423533,-0.2420537620461678,-0.16155016932825506,0.33169435748303866,0.07404689278374132,D,B,-0.5551325649086711,-0.9966174435627411 -10,0.17853136775181744,-0.2703356420598315,-0.47451678295412947,-0.6426962389397373,-0.5764035891158359,-0.13789763518724496,0.9706176875594519,0.16734457858244944,0.46946500196355195,0.06372275964106938,D,D,0.6331732111938579,0.8511503309981654 -11,0.6188609133556533,-0.2596380657662347,0.16917198044708104,0.825255678689641,0.07859217755891668,-0.15284275396015845,-0.4695938836556961,0.04556543106391775,0.06714555719668386,0.15412917496506684,D,A,-0.07939353064211585,0.0769039941855838 -12,-0.987002480643878,-0.5809859384570246,0.795645767204954,0.7410371396735338,0.45986213817995236,-0.06595066392665005,0.5681412038971387,0.8694125154728545,0.057714335209551104,0.449490744371295,B,B,-0.38961826532279886,0.438859998289691 -13,0.6116385036656158,-0.4660443559017733,-0.20119898971920547,-0.4031104171027342,-0.5976978732206082,0.4581516989197012,-0.08998326532171341,-0.5914816011529271,0.05351798885470882,0.39806115244402085,D,A,0.5906909983057236,0.48390015567895306 -14,0.3962787899764537,0.873309175424988,-0.5613584816854333,0.2778989897320103,-0.3765674173982101,0.34672909458660306,-0.15398502801967417,0.4323836015788296,0.27661182044240795,0.4303512910004514,B,D,-0.5448090251844593,0.34125700886599897 -15,-0.31949896696401625,0.2960707704931871,0.9950752129902205,0.21794042287634463,0.9902987133217893,0.9683304227319323,0.9146352817193464,-0.522628094768308,0.13617410615740816,0.4494623182632373,A,B,-0.952671130597097,-0.27155705643747163 -16,-0.6890410003764369,0.21826201133397638,0.01905258735292903,-0.6943214629007304,0.299756115278907,-0.8031642576960822,0.9908453789854277,-0.208428306417491,0.30241491351511196,0.10503826916987702,C,D,-0.6137404233445827,-0.8600523777473796 -17,0.9144261444135624,-0.657722703603806,-0.8181811756524122,0.5250216001503025,-0.12379983217099189,-0.19475743579546245,0.11153664681123643,0.34338044591994255,0.35880609356939897,0.12476486961146221,C,C,-0.34347609760458697,0.32847536982254466 -18,-0.32681090977474647,0.45825359590069836,-0.9057672491505309,0.07875806023925147,0.035151682071181245,-0.3213947892100737,0.436816550592652,-0.40000584040247555,0.10179865616372646,0.051396810835892814,A,D,0.7287058840605727,-0.3395999279148072 -19,-0.8145083132397042,-0.6731950124761432,-0.7807017392986817,0.5572529572611165,-0.7579916082634686,0.7233450727055821,-0.6904063494518717,-0.36764560745629193,0.31711897944253986,0.39005812093572134,B,D,0.9337782080967223,-0.37216870988328066 -20,-0.806567246333072,-0.24108911648470444,0.2548920834061801,0.06070734439035497,-0.5506053259368853,-0.5026873321594287,-0.4065843490108716,0.5037289848288042,0.1319919508152047,0.44206735072550446,C,D,-0.4417500145562572,0.696030559012671 -21,0.6949887326949196,0.9790467012731905,0.5841587287259282,-0.998856207744113,-0.32382887570508934,-0.619582183118377,0.9374187299383177,-0.8549137710136854,0.24426592607468828,0.2031886949160584,B,B,0.2829634772152554,0.43950852602790036 -22,0.20745206273378214,0.2799995197081857,-0.15568006640063192,-0.3516878859906538,0.17661743691446663,-0.1027729043337362,0.15836058163251243,-0.08342895476282775,0.4526682455396616,0.3103307550753564,B,D,-0.20064323127987826,-0.39935546357747165 -23,0.6142565465487604,0.11389948754929247,-0.8729445876960857,-0.9610465152283354,-0.539770534806846,-0.15623672033119163,0.08439040274854848,0.9969088817088847,0.4230518566474277,0.07727666916610232,B,D,0.9622993743965202,-0.3814306755826935 -24,0.45946357338763577,0.3692285019797492,-0.23676142698692648,0.8581972325292342,-0.559565231096881,-0.44290971066611906,0.4959511207581282,0.9921928957101889,0.04614923385636671,0.4649405078468372,A,C,0.07243146495744379,-0.1832141827615663 -25,0.07245618290940148,0.6857038403796192,0.9922427604801936,0.7574437556463685,-0.8580138279819349,-0.500387104235799,-0.8856694541850338,-0.853478557800734,0.21178788628186318,0.432302848109982,A,B,0.8784742806494314,-0.19519922588455074 -26,0.9462315279587412,0.5519998230924896,0.058228690198274036,0.6633310587223589,0.2622059145401978,0.8465311985520256,0.16835518891794243,-0.5736913754659192,0.13834011198612584,0.48810301646548143,B,C,-0.7693164962971448,-0.40868959494810597 -27,-0.24293124558329304,-0.5419038560717913,0.9421567552272363,-0.38497174919467714,-0.5421164323776912,-0.11373850989308609,0.005700765839027122,-0.4695991704991973,0.00177284454389115,0.40538585997019844,D,D,0.9408012220444559,-0.7454244018816936 -28,0.104081262546454,-0.9357995121919245,0.7215594044689961,-0.8841496670116249,0.8108400260122559,0.7226982095236612,0.7054397840965707,0.8665187559874181,0.38555961150981355,0.4407081023316622,A,B,-0.6428643676550727,-0.1591073324541834 -29,0.6588093285059897,-0.36909390388183616,-0.9770379561143607,0.7560191984080811,0.719270800507493,0.10065062489969612,-0.6851345441210335,0.7617283473728791,0.3185566886506898,0.012393180949094362,D,C,0.9250686315231109,0.880727341460366 -30,0.2370395047284921,-0.46451824804859454,0.4414436387203893,0.8938988905959881,-0.8582853002226931,-0.8988233409502375,0.9215578065489007,0.7585404849690855,0.1309776312171741,0.36828223587754105,D,D,-0.46906727495406275,0.35463589054546585 -31,0.7234138006215545,-0.5780343128273471,0.36342073805314956,-0.8286930958642424,-0.5239907312620096,0.9985649368254532,-0.8397770695188262,-0.2609458225222321,0.3706154541739654,0.16609273397321433,B,A,-0.7831949055705778,0.8056110914651653 -32,0.15470429051352408,0.8858194286701089,0.07394066081759032,-0.02801907336677245,0.33795555659256116,0.6720551701599038,-0.6283500780385536,-0.6845063352855361,0.27584021056319563,0.4654079430241628,D,C,-0.1308724828707113,0.23102983190276105 diff --git a/.ci/test_data/bin_onehot_glm_alice_no_feature/bob/s_model.tar.gz b/.ci/test_data/bin_onehot_glm_alice_no_feature/bob/s_model.tar.gz deleted file mode 100644 index 29a4de1d44bd0ace744a1772d2861f07702a3a65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3889 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 diff --git a/.ci/test_data/bin_onehot_glm_alice_no_feature/predict.csv b/.ci/test_data/bin_onehot_glm_alice_no_feature/predict.csv deleted file mode 100644 index 8a813fe..0000000 --- a/.ci/test_data/bin_onehot_glm_alice_no_feature/predict.csv +++ /dev/null @@ -1,33 +0,0 @@ -id,pred,y -1,0.47686505,1.0 -2,0.15938853,0.0 -3,0.26960367,0.0 -4,0.5657716,1.0 -5,0.17707317,1.0 -6,0.2684675,1.0 -7,0.66678095,0.0 -8,0.58304656,1.0 -9,0.28620848,1.0 -10,0.5914989,0.0 -11,0.78440547,1.0 -12,0.16850314,1.0 -13,0.77381754,0.0 -14,0.71611476,1.0 -15,0.39520478,1.0 -16,0.23407295,0.0 -17,0.8454458,0.0 -18,0.36718696,1.0 -19,0.20055518,1.0 -20,0.21610352,1.0 -21,0.81026506,1.0 -22,0.6285284,0.0 -23,0.7671895,1.0 -24,0.7400456,1.0 -25,0.63102967,1.0 -26,0.85630053,1.0 -27,0.41850498,0.0 -28,0.57785815,0.0 -29,0.7754912,0.0 -30,0.6545472,1.0 -31,0.8081137,1.0 -32,0.6049668,1.0 diff --git a/.ci/test_data/phe_sgd_no_feature/alice/alice.csv b/.ci/test_data/fetures_in_one_party/ou_sgd/alice/alice.csv similarity index 100% rename from .ci/test_data/phe_sgd_no_feature/alice/alice.csv rename to .ci/test_data/fetures_in_one_party/ou_sgd/alice/alice.csv diff --git a/.ci/test_data/fetures_in_one_party/ou_sgd/alice/s_model.tar.gz b/.ci/test_data/fetures_in_one_party/ou_sgd/alice/s_model.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..4622f5f46d3349aee16efe9b8ae1a1e81511a635 GIT binary patch literal 2688 zcmV-`3V-z^lRwtQu(SR}SK>j%Ulf!KFw8 zABwhlia`Rk9rGCvHLA&W22rOT5`+>TG-wtLQ~C-#D<7e+BJ zs;)2=Z9eCMaqKVmpqi55-CCavQ#D?qwz_=OxeY$&K6F7p7D07cx30CVESfRtqomtp zi_KU+Cd>FP9j;IDiee9xe+noK(UFWjL~%3GIzW%6DGK=HyF84SfS#eN+DGsizC!Av z-;bw+DW+?!gNVn)XQL3$?iKcu9ompE<0_;od0AFj0l^{0jy&^=HwH*fj;cm5!q9L~ z)4?*?(G4zV?IE!=OuvrQxiHW4N$#_XmXD9*Y9B^8N9t&IA5e!G=zUb`Jfy^2Nu2nw zN^5lroN17(8gPmVU{_8#F=&zOEtuh*9iK! z==7fBy0gUw@Zlk_Lkr|?&sbnp6oBKF(tJfy?Phmu3V>#OyRH$@*&^u6)JWXj1@^%+ z$XUWH?kCjO8>Y3QLlxbewhWpPyn0quWF{3Is89IIU*0p*2TgowraDaeujTPMy$QaF zw%z47^n!kd-*o&vM)gTNMcXNtB>nH0rL!BU*yr%Zl%yGlH*Wr(kw5ep^e;^$HMZsna(+hgpfhawHC;eS;u;^fWQ-!~hU);)D= zI4rAQyl=hEOe)MPy-&bTmPp<#f9oI>pCBNIR#Og=(dmH^#u>LNgz8-+8 zXs(xZYNGMo&tLW4BHhw z$}i*Ey=9eAFO(>LH2w{3Uv$22XYP9z4OZm7Z}JzS{6i|ACH8%l@3j5re0-D6pPBo- zpu1keDSbQU<@P`&AlC8cBVwxO*q7J+RbuLb@n?z3OQy##XMc~HhfLfhGb3qPIQXZ! zm}7sx0FUWmWM9VS)IvrMTp9SQBFxOt3f?Nk$` z%Xg!^Q|I~|kK%F)tZ;GH$XJZA=2$FY@4(@1S)>dhQE^s?ySdg;gzoFeNDlILR9xAe zJm1y>RkR*)Cv|;aby*Eb&ui1{ohboYaz8$WazEI%?6!6XCqe}gHPAHY_T=}2mwKdL zsiWKMcc3}AJ26c-w(4l-xHNbbjE^2RMD2l+luX{Vs*NpFcTV2qEQ~@SDk2+3W$1H4 z9K^elPZFLCu%y^7tY&a`*o!n;#StW*JO*m8P&!Agf$uoM<&+fK1!`&7>#Ya8rm{m% zfx4ziaPo);jZ*WF(JsNL?f^Aim}#iT8n}b}c!*>N9f9HA9L&Twci6*fKx&jg#-0H- z)}y7aWZM}sdY9w(y}z5(bd-$t@~7c6BjXKBEe|B2YppHE0|oAio9*^U-~~ZX85r6` zG{}arsadUR-)x`e)lT!-X70GmCo+ZCGOIqjAbKu{yjrqlY3zVR6p6(f;K4dEh{Uk9 z7-~2(CdrQl2ZP9}QIdD312PccaD8bhdVo*(bh3R8WqK0q$~uZImp`JRIPR zos<**5L5|-$C9@R4AWT;+ll!-7bU2-4+BKsGWOG@^sQNb?iOU_^!tJoMh)}__vj)@ zPU9v-xcaSPplg`p$KD(AVDCg&92D1O2v90{Brxw*g(&oLgxa}_uo8^cp*DJQCJSVW z_`|x_y8^NG(-);%7;u^FYK}!H0AVsUFKKaNC_AQRNjY@GO~yyxSOTOv?|Y2 z)l6i&4@u|NMe1DxbV)^#`&KYA%^Q4QG;xUD)? z`gE3c0g8x7I9xfWywmGqobj6w#tXfbQV5qEA77oLtTyapMINnN<7GqzVjdhBu3U=w zTqh0oC}>UP5%&>mk(JHs{2=B0L6w5sQYlT=L+ivDgOgSk_Bhz7NtsM7N!J8}POT(7 z3|Q)0U ziQ5MZ$ABQC?o%DQdnuht9dr^S-R0R8piQOq9TE(!*ij>p(r@l5#z6GUd-_OX1Jz5ETsbzO zCoIsW10t3^e$ozhk0neCule4PXRw3^M;k3siH~=E)u1iys;>rD(LlK?JPpxp?(jkh z2vcqyNm-9qU?k%O>pYa^9528r0y%=f)U{U(E&1gtQ0dlPPIusD(D`_Mtc_zvlfY1D zn;{WH@!pI9Q#FY@fq10igWaoIX=sj)w!_Iuq;$Z$^Au|*d@rb4*3G&$xQ5_6rq*!e zt&SwUX;+U+)oDT_S>Vi*+YqqhoMJjHSX;zKMbZVBC0}#L5PJ~*L_MF{vbq_l# zXmKY~S@O0W595&tIXA#tyRm0FkkK=L=)1%LUFBBdu;VefFkk8QAWjl=R4iI6sIp}| zaTv}S8>i;taO{JJ;8F=5C!fGgwCci)HAASyXSyqz&>(cAIubU~u!Gh6xvn(12xcM7 zsb(xUd{N#-i0GP=k_ZjkWTsBR!a;sS=ONSh+ffxk%Swd66Gn#mZD&cE==mq)m)q$F u42L0t!1nJKm)FnL7hZVbg%@6U;e{7oc;ST?UU=cZ4gU!qK-F{rC;$KrkVJ<7 literal 0 HcmV?d00001 diff --git a/.ci/test_data/phe_sgd_no_feature/bob/bob.csv b/.ci/test_data/fetures_in_one_party/ou_sgd/bob/bob.csv similarity index 100% rename from .ci/test_data/phe_sgd_no_feature/bob/bob.csv rename to .ci/test_data/fetures_in_one_party/ou_sgd/bob/bob.csv diff --git a/.ci/test_data/fetures_in_one_party/ou_sgd/bob/s_model.tar.gz b/.ci/test_data/fetures_in_one_party/ou_sgd/bob/s_model.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..7e988b5212b8597556c718b1786dd2e623ed384b GIT binary patch literal 4613 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 Rrfa&K{tuWB;9mex001QOM5O=# literal 0 HcmV?d00001 diff --git a/.ci/test_data/phe_glm/predict.csv b/.ci/test_data/glm/predict.csv similarity index 85% rename from .ci/test_data/phe_glm/predict.csv rename to .ci/test_data/glm/predict.csv index 7881fea..b6b2206 100644 --- a/.ci/test_data/phe_glm/predict.csv +++ b/.ci/test_data/glm/predict.csv @@ -1,4 +1,4 @@ -id,pred,y,predict_score +id,pred,y,pred_y 0,0.47686505,1.0,516.2334798971686 1,0.16220368,0.0,560.9372970797582 2,0.26960367,0.0,542.3182257710636 @@ -8,7 +8,7 @@ id,pred,y,predict_score 6,0.6727009,0.0,492.7743294058237 7,0.58304656,1.0,503.8869425254623 8,0.29150468,1.0,539.1862235038279 -9,0.5982337,0.0,502.07438558814715 +9,0.5982337,0.0,502.0743855881472 10,0.7883281,1.0,475.62210737259727 11,0.17442402,1.0,558.4174829840767 12,0.7779472,0.0,477.38605063822337 @@ -22,9 +22,9 @@ id,pred,y,predict_score 20,0.8168119,1.0,470.4278724665369 21,0.6409019,0.0,496.84692465294745 22,0.7754037,1.0,477.8091725130769 -23,0.7400456,1.0,483.37432514560277 -24,0.63102967,1.0,498.07737805471197 -25,0.8610095,1.0,460.94058571637396 +23,0.7400456,1.0,483.3743251456028 +24,0.63102967,1.0,498.077378054712 +25,0.8610095,1.0,460.940585716374 26,0.42536157,0.0,522.2407333155013 27,0.57785815,0.0,504.5016875280319 28,0.77958846,0.0,477.111178457454 diff --git a/.ci/test_data/ou_glm/alice/alice.csv b/.ci/test_data/ou_glm/alice/alice.csv new file mode 100644 index 0000000..0dfa098 --- /dev/null +++ b/.ci/test_data/ou_glm/alice/alice.csv @@ -0,0 +1,33 @@ +id,f1,f2,f3,f4,b1,o1,y,unused1 +0,-0.1561563606294591,0.4091436724298469,0.7527352529453377,-0.4663496200949144,0.4168724773199035,C,1.0,0.6044702778742779 +1,-0.9404055611238592,-0.9083512326886756,-0.3706442384030441,0.2819235971596161,0.3517699625436855,D,0.0,0.7281280567505588 +2,-0.5627240503927933,-0.5442034486969063,0.3108773305897601,-0.7768956528082471,0.305838882862975,A,0.0,0.621498633148778 +3,0.0107105762067247,-0.4212240727957856,-0.2087361978786714,-0.13046949866179,0.4936165318157521,C,1.0,-0.4663885808110559 +4,-0.9469280606322728,-0.840416046152745,0.829095179481087,-0.0925525873415871,0.3269881588553663,C,1.0,0.5747490182709423 +5,-0.602324698626703,-0.5344182272779396,-0.0822962948252024,0.9076318550421604,0.0039115535760789,B,1.0,-0.7838087471940858 +6,0.2997688755590464,-0.7979971411805418,-0.4702396670038951,0.7517058807563881,0.4085520675577308,D,0.0,0.7443335658121795 +7,0.0898829612064333,-0.4440527937798157,-0.5067449846120331,-0.4732218984978185,0.1496893760999889,C,1.0,0.7171865026755633 +8,-0.5591187559186066,0.2713688885288003,0.1227362683263015,0.0011722261005966,0.3316943574830386,D,1.0,-0.5551325649086711 +9,0.1785313677518174,-0.2703356420598315,-0.4745167829541294,-0.6426962389397373,0.4694650019635519,D,0.0,0.6331732111938579 +10,0.6188609133556533,-0.2596380657662347,0.169171980447081,0.825255678689641,0.0671455571966838,D,1.0,-0.0793935306421158 +11,-0.987002480643878,-0.5809859384570246,0.795645767204954,0.7410371396735338,0.0577143352095511,B,1.0,-0.3896182653227988 +12,0.6116385036656158,-0.4660443559017733,-0.2011989897192054,-0.4031104171027342,0.0535179888547088,D,0.0,0.5906909983057236 +13,0.3962787899764537,0.873309175424988,-0.5613584816854333,0.2778989897320103,0.2766118204424079,B,1.0,-0.5448090251844593 +14,-0.3194989669640162,0.2960707704931871,0.9950752129902204,0.2179404228763446,0.1361741061574081,A,1.0,-0.952671130597097 +15,-0.6890410003764369,0.2182620113339763,0.019052587352929,-0.6943214629007304,0.3024149135151119,C,0.0,-0.6137404233445827 +16,0.9144261444135624,-0.657722703603806,-0.8181811756524122,0.5250216001503025,0.3588060935693989,C,0.0,-0.3434760976045869 +17,-0.3268109097747464,0.4582535959006983,-0.9057672491505308,0.0787580602392514,0.1017986561637264,A,1.0,0.7287058840605727 +18,-0.8145083132397042,-0.6731950124761432,-0.7807017392986817,0.5572529572611165,0.3171189794425398,B,1.0,0.9337782080967224 +19,-0.806567246333072,-0.2410891164847044,0.2548920834061801,0.0607073443903549,0.1319919508152047,C,1.0,-0.4417500145562572 +20,0.6949887326949196,0.9790467012731904,0.5841587287259282,-0.998856207744113,0.2442659260746882,B,1.0,0.2829634772152554 +21,0.2074520627337821,0.2799995197081857,-0.1556800664006319,-0.3516878859906538,0.4526682455396616,B,0.0,-0.2006432312798782 +22,0.6142565465487604,0.1138994875492924,-0.8729445876960857,-0.9610465152283354,0.4230518566474277,B,1.0,0.9622993743965202 +23,0.4594635733876357,0.3692285019797492,-0.2367614269869264,0.8581972325292342,0.0461492338563667,A,1.0,0.0724314649574437 +24,0.0724561829094014,0.6857038403796192,0.9922427604801936,0.7574437556463685,0.2117878862818631,A,1.0,0.8784742806494314 +25,0.9462315279587412,0.5519998230924896,0.058228690198274,0.6633310587223589,0.1383401119861258,B,1.0,-0.7693164962971448 +26,-0.242931245583293,-0.5419038560717913,0.9421567552272364,-0.3849717491946771,0.0017728445438911,D,0.0,0.940801222044456 +27,0.104081262546454,-0.9357995121919244,0.7215594044689961,-0.8841496670116249,0.3855596115098135,A,0.0,-0.6428643676550727 +28,0.6588093285059897,-0.3690939038818361,-0.9770379561143608,0.7560191984080811,0.3185566886506898,D,0.0,0.9250686315231108 +29,0.2370395047284921,-0.4645182480485945,0.4414436387203893,0.8938988905959881,0.1309776312171741,D,1.0,-0.4690672749540627 +30,0.7234138006215545,-0.5780343128273471,0.3634207380531495,-0.8286930958642424,0.3706154541739654,B,1.0,-0.7831949055705778 +31,0.154704290513524,0.8858194286701089,0.0739406608175903,-0.0280190733667724,0.2758402105631956,D,1.0,-0.1308724828707113 diff --git a/.ci/test_data/ou_glm/alice/s_model.tar.gz b/.ci/test_data/ou_glm/alice/s_model.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..d9893dd15382bf6a111206d4d656212aa766851e GIT binary patch literal 6880 zcmV<68Xx5!iwFQT_$_Aw|LuKelcQR);Qf4m#f$ruHzSM;Y{Y!P8v&B=u(45r7Xl=N z5oY84_XU;h?y7F7ubG{hIuTt6j!Sp)WG2aJ372_>R<&RL!~%|Gxm;eaWBK|Df-B_p z_x1S-0^wi&3;g9TC{0zniGTK`8k52uw~ zhgJPB-8}dK=0^cI|68~W{lCpo2>u(oz~+B*Llh0>(8^nci%B^IVdcN{yxxot$}OAUK8N_zr(8YaDNJBE}gUk8v`-J|hSmm!=;i zj`PXZ1%yPEA>-@?Zv(1|DC& z*Pg8lFW4|qgqNfc$SBbCmpr`)dp(i)}aq{kBTf0Gu ziPL-ST{vqT{I$K38ic_Zsk_NoP zPcXEI>R_)U)j#?;=lV|`|t37s-4yw zalKx9sncR5ulN4rA{Z-2I;&5>KFbICv3&3^>rH;47v)c?;dc3$h|)gkh4?G}{%HN- z6AJtlulNbBCu;w8RbqAN`lGgfRCjOHSJ<8sFK22;<(E7uz>Xz=7A%b9Ta5pL$VZH1 zR0&1E8K7%ojWytjh@TSYXf!sY^tLHyen0kQs`Xc6F-p3K3|feGASM|)wBeI>&F5L; zk7K><siVlPO*d+n1~lEG7%1eC4(LeX*SGMw#6r#gqWTe@?kgr#uJI;*U_%P z$PBE;=a;}z+Q8a9w@YnH*{kNYZATu#b)>dm!&o_%JXo;N1twG71mEt5@IAI8=k11) z5Sg-(jfNwVMh_Cj4^#gM7E7Jx!k~a7pnx3b;;Qjp*#|5mIMY4#h}+X#jcr2NG%lZa znUBbkV=<6zwpU(^Vlm>a3{$D{fD7E%u(NU-{&*#^6I(=3BxYIAZvJqnlSgh7zdGE1I|1$5j9o|TX9U>o6aD=ztXnrecJ|YeA zt#SeW6Xar$4kP1!D0J(l96dER^P9}A!!P4o(D&n8g>;L(ThJC8yPgVS> zivLqoar`sUu-q{jFtCKox_SsQGwiZN)hB)>ZpHY6d}IDY=lt|`KDXGknwNThjHij5#G6dcrWl#`SW&s z1OJC_`A_LT*p9#AKQ(`^{m1;Lniu$3?~d(*|CayEo!bX@=k~$AZXb)w>I?p>ul(0v zLA{Q5kqmUeUrBNO18rA#@w0!Kk02*i@`j)MD?eXF?{Pe|vj+Z+n!WyM-&6M=^9Rpg z<`YI3-tvce5%Q;>uj6?G6G^*QP_BRYVRoOncHJ)6tJxMm_M+p-292kCZqlFEK}Njk zm+j<{ALjS@(Y^uoS>H-i{j=V^gFaWYn0(r<-;6t!=NA#TdX5(_H%=a+M9%0Dda#m> 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 avwW7%@>xF1XZb9@tNcG2fV+ACcmM!;Fu@G~ literal 0 HcmV?d00001 diff --git a/.ci/test_data/ou_glm/bob/bob.csv b/.ci/test_data/ou_glm/bob/bob.csv new file mode 100644 index 0000000..9ba5fa4 --- /dev/null +++ b/.ci/test_data/ou_glm/bob/bob.csv @@ -0,0 +1,33 @@ +id,f5,f6,f7,f8,b2,o2,unused2 +0,-0.8615749630632328,-0.5715263852591228,0.9379925145695024,0.1900702129000553,0.2138434594903396,D,0.4570901213054086 +1,0.5212043305144631,-0.73537630254995,0.8527339660162552,0.3504251072081803,0.0048348498041699,D,-0.3726453716100175 +2,0.5316688586139755,0.871028481161342,0.6973914688286109,-0.5295922099981376,0.0376219300368835,B,0.2124177066122865 +3,-0.7432170710004744,0.1420861866505689,-0.667377778792172,-0.7602267721057516,0.4415531966500715,B,0.0228461193389561 +4,-0.0494352438025373,-0.0546579473764117,-0.028717749098563,0.780574628258875,0.4519642857799466,A,-0.2296091333105456 +5,0.0996071869898878,0.5692388485815068,-0.5725054016016367,-0.5075693044227503,0.2727951446027611,A,0.153176086993199 +6,-0.4698867421198818,0.6149939955332868,-0.1979194149010947,0.1890383070668824,0.4172975099430083,D,-0.4905549877228361 +7,0.7448660821705149,-0.6191801712762446,-0.8827292000556421,0.2387630206642061,0.291254783244897,B,0.4175705676683412 +8,-0.1537241195982261,-0.8061383715423533,-0.2420537620461678,-0.161550169328255,0.0740468927837413,B,-0.9966174435627412 +9,-0.5764035891158359,-0.1378976351872449,0.970617687559452,0.1673445785824494,0.0637227596410693,D,0.8511503309981654 +10,0.0785921775589166,-0.1528427539601584,-0.4695938836556961,0.0455654310639177,0.1541291749650668,A,0.0769039941855838 +11,0.4598621381799523,-0.06595066392665,0.5681412038971387,0.8694125154728545,0.449490744371295,B,0.438859998289691 +12,-0.5976978732206082,0.4581516989197012,-0.0899832653217134,-0.5914816011529271,0.3980611524440208,A,0.483900155678953 +13,-0.3765674173982101,0.346729094586603,-0.1539850280196741,0.4323836015788296,0.4303512910004514,D,0.3412570088659989 +14,0.9902987133217892,0.9683304227319324,0.9146352817193464,-0.522628094768308,0.4494623182632373,B,-0.2715570564374716 +15,0.299756115278907,-0.8031642576960822,0.9908453789854276,-0.208428306417491,0.105038269169877,D,-0.8600523777473796 +16,-0.1237998321709918,-0.1947574357954624,0.1115366468112364,0.3433804459199425,0.1247648696114622,C,0.3284753698225446 +17,0.0351516820711812,-0.3213947892100737,0.436816550592652,-0.4000058404024755,0.0513968108358928,D,-0.3395999279148072 +18,-0.7579916082634686,0.7233450727055821,-0.6904063494518717,-0.3676456074562919,0.3900581209357213,D,-0.3721687098832806 +19,-0.5506053259368853,-0.5026873321594287,-0.4065843490108716,0.5037289848288042,0.4420673507255044,D,0.696030559012671 +20,-0.3238288757050893,-0.619582183118377,0.9374187299383177,-0.8549137710136854,0.2031886949160584,B,0.4395085260279003 +21,0.1766174369144666,-0.1027729043337362,0.1583605816325124,-0.0834289547628277,0.3103307550753564,D,-0.3993554635774716 +22,-0.539770534806846,-0.1562367203311916,0.0843904027485484,0.9969088817088848,0.0772766691661023,D,-0.3814306755826935 +23,-0.559565231096881,-0.442909710666119,0.4959511207581282,0.9921928957101888,0.4649405078468372,C,-0.1832141827615663 +24,-0.8580138279819349,-0.500387104235799,-0.8856694541850338,-0.853478557800734,0.432302848109982,B,-0.1951992258845507 +25,0.2622059145401978,0.8465311985520256,0.1683551889179424,-0.5736913754659192,0.4881030164654814,C,-0.4086895949481059 +26,-0.5421164323776912,-0.113738509893086,0.0057007658390271,-0.4695991704991973,0.4053858599701984,D,-0.7454244018816936 +27,0.8108400260122559,0.7226982095236612,0.7054397840965707,0.8665187559874181,0.4407081023316622,B,-0.1591073324541834 +28,0.719270800507493,0.1006506248996961,-0.6851345441210335,0.7617283473728791,0.0123931809490943,C,0.880727341460366 +29,-0.8582853002226931,-0.8988233409502375,0.9215578065489008,0.7585404849690855,0.368282235877541,D,0.3546358905454658 +30,-0.5239907312620096,0.9985649368254532,-0.8397770695188262,-0.2609458225222321,0.1660927339732143,A,0.8056110914651653 +31,0.3379555565925611,0.6720551701599038,-0.6283500780385536,-0.6845063352855361,0.4654079430241628,C,0.231029831902761 diff --git a/.ci/test_data/ou_glm/bob/s_model.tar.gz b/.ci/test_data/ou_glm/bob/s_model.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..d9e7b5e6b99e08c166d161173dcd19ee6e247e32 GIT binary patch literal 7400 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 aukuyC%2)X+U*)TOQ2rlu=XZ7hcmMziQu#Rm literal 0 HcmV?d00001 diff --git a/.ci/test_data/ou_glm/predict.csv b/.ci/test_data/ou_glm/predict.csv new file mode 100644 index 0000000..b6b2206 --- /dev/null +++ b/.ci/test_data/ou_glm/predict.csv @@ -0,0 +1,33 @@ +id,pred,y,pred_y +0,0.47686505,1.0,516.2334798971686 +1,0.16220368,0.0,560.9372970797582 +2,0.26960367,0.0,542.3182257710636 +3,0.5657716,1.0,505.9261270108796 +4,0.17707317,1.0,557.889809489704 +5,0.27827334,1.0,541.0604345211162 +6,0.6727009,0.0,492.7743294058237 +7,0.58304656,1.0,503.8869425254623 +8,0.29150468,1.0,539.1862235038279 +9,0.5982337,0.0,502.0743855881472 +10,0.7883281,1.0,475.62210737259727 +11,0.17442402,1.0,558.4174829840767 +12,0.7779472,0.0,477.38605063822337 +13,0.7261041,1.0,485.4304663269026 +14,0.39520478,1.0,525.8383646190198 +15,0.23407295,0.0,547.7664128967078 +16,0.8454458,0.0,464.5294473247045 +17,0.36718696,1.0,529.2667277402132 +18,0.20782131,1.0,552.171084113332 +19,0.21610352,1.0,550.7402489345043 +20,0.8168119,1.0,470.4278724665369 +21,0.6409019,0.0,496.84692465294745 +22,0.7754037,1.0,477.8091725130769 +23,0.7400456,1.0,483.3743251456028 +24,0.63102967,1.0,498.077378054712 +25,0.8610095,1.0,460.940585716374 +26,0.42536157,0.0,522.2407333155013 +27,0.57785815,0.0,504.5016875280319 +28,0.77958846,0.0,477.111178457454 +29,0.66062826,1.0,494.3419931815475 +30,0.8147475,1.0,470.8242355794075 +31,0.6115879,1.0,500.4620059054651 diff --git a/.ci/test_data/phe_sgd/alice/alice.csv b/.ci/test_data/ou_sgd/alice/alice.csv similarity index 100% rename from .ci/test_data/phe_sgd/alice/alice.csv rename to .ci/test_data/ou_sgd/alice/alice.csv diff --git a/.ci/test_data/ou_sgd/alice/s_model.tar.gz b/.ci/test_data/ou_sgd/alice/s_model.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..e03403e7edbddcc3ae78785f32e5594350a4192e GIT binary patch literal 3841 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 diff --git a/.ci/test_data/phe_glm/bob/s_model.tar.gz b/.ci/test_data/phe_glm/bob/s_model.tar.gz deleted file mode 100644 index 783dd86475841f854638ef7e008b5d0c3aaf10ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7001 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 diff --git a/.ci/test_data/phe_sgd/alice/s_model.tar.gz b/.ci/test_data/phe_sgd/alice/s_model.tar.gz deleted file mode 100644 index 1949ed80d4bb440a0c6ddd05c757e4bce00592fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3830 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 diff --git a/.ci/test_data/phe_sgd/bob/s_model.tar.gz b/.ci/test_data/phe_sgd/bob/s_model.tar.gz deleted file mode 100644 index d2340a920c4e53d4e3eaf7d19e6ea3545f7be465..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3552 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 diff --git a/.ci/test_data/phe_sgd_no_feature/bob/s_model.tar.gz b/.ci/test_data/phe_sgd_no_feature/bob/s_model.tar.gz deleted file mode 100644 index a82a51469fae72e3fe7198e685946cee2e32e575..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4612 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 diff --git a/.ci/test_data/phe_sgd_no_feature/predict.csv b/.ci/test_data/phe_sgd_no_feature/predict.csv deleted file mode 100644 index 52617ed..0000000 --- a/.ci/test_data/phe_sgd_no_feature/predict.csv +++ /dev/null @@ -1,33 +0,0 @@ -id,pred,y -0,0.36531496,0.0 -1,0.36864352,0.0 -2,0.3082614,0.0 -3,0.4034556,0.0 -4,0.33317098,0.0 -5,0.50104755,0.0 -6,0.41521746,0.0 -7,0.466192,0.0 -8,0.46786073,0.0 -9,0.40951777,0.0 -10,0.46939817,0.0 -11,0.425126,0.0 -12,0.1571783,0.0 -13,0.37976164,0.0 -14,0.4048596,0.0 -15,0.416929,0.0 -16,0.4851673,0.0 -17,0.42658806,0.0 -18,0.34971926,0.0 -19,0.50896066,1.0 -20,0.5335696,1.0 -21,0.58377063,1.0 -22,0.37492037,0.0 -23,0.3530418,0.0 -24,0.42830193,0.0 -25,0.36195156,0.0 -26,0.44949424,0.0 -27,0.34697467,0.0 -28,0.42690903,0.0 -29,0.4074396,0.0 -30,0.3484857,0.0 -31,0.5026204,0.0 diff --git a/.ci/test_data/bin_sgb/alice/alice.csv b/.ci/test_data/sgb/alice/alice.csv similarity index 100% rename from .ci/test_data/bin_sgb/alice/alice.csv rename to .ci/test_data/sgb/alice/alice.csv diff --git a/.ci/test_data/bin_sgb/alice/s_model.tar.gz b/.ci/test_data/sgb/alice/s_model.tar.gz similarity index 100% rename from .ci/test_data/bin_sgb/alice/s_model.tar.gz rename to .ci/test_data/sgb/alice/s_model.tar.gz diff --git a/.ci/test_data/bin_sgb/bob/bob.csv b/.ci/test_data/sgb/bob/bob.csv similarity index 100% rename from .ci/test_data/bin_sgb/bob/bob.csv rename to .ci/test_data/sgb/bob/bob.csv diff --git a/.ci/test_data/bin_sgb/bob/s_model.tar.gz b/.ci/test_data/sgb/bob/s_model.tar.gz similarity index 100% rename from .ci/test_data/bin_sgb/bob/s_model.tar.gz rename to .ci/test_data/sgb/bob/s_model.tar.gz diff --git a/.ci/test_data/bin_sgb/predict.csv b/.ci/test_data/sgb/predict.csv similarity index 100% rename from .ci/test_data/bin_sgb/predict.csv rename to .ci/test_data/sgb/predict.csv diff --git a/CHANGELOG.md b/CHANGELOG.md index c164211..59a9126 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,8 @@ > please add your unreleased change here. +- [Infra] Bump heu version to 0.6.0. Note that he model packages generated by secretflow < 1.11 (heu <= 5.1.0b0) are no longer supported. + ## 20241023 - 0.7.0b0 - [Feature] support phe linear model predict diff --git a/WORKSPACE b/WORKSPACE index 4efd167..5aeabba 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -47,6 +47,10 @@ rules_foreign_cc_dependencies( register_preinstalled_tools = True, ) +load("@bazel_features//:deps.bzl", "bazel_features_deps") + +bazel_features_deps() + # # boost # diff --git a/bazel/repositories.bzl b/bazel/repositories.bzl index b8b5424..71d68ab 100644 --- a/bazel/repositories.bzl +++ b/bazel/repositories.bzl @@ -53,10 +53,10 @@ def _heu(): http_archive, name = "com_alipay_sf_heu", urls = [ - "https://github.com/secretflow/heu/archive/refs/tags/v0.5.1b0.tar.gz", + "https://github.com/secretflow/heu/archive/refs/tags/0.6.0.dev20241106.tar.gz", ], - strip_prefix = "heu-0.5.1b0", - sha256 = "26e81b55b2d4f734977f8d5e1ba672c20287f2971dcb5d7f3fa46295e2882012", + strip_prefix = "heu-0.6.0.dev20241106", + sha256 = "498a73bace6c85bf8c2f2663101d71584bec62eb213acdebc04dbbe11a4460cc", ) def _bazel_rules_pkg(): diff --git a/docs/locales/zh_CN/LC_MESSAGES/topics/deployment/deployment.po b/docs/locales/zh_CN/LC_MESSAGES/topics/deployment/deployment.po index 682c06e..0dc9c9f 100644 --- a/docs/locales/zh_CN/LC_MESSAGES/topics/deployment/deployment.po +++ b/docs/locales/zh_CN/LC_MESSAGES/topics/deployment/deployment.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: SecretFlow-Serving \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-14 11:33+0800\n" +"POT-Creation-Date: 2024-11-15 19:42+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -128,11 +128,11 @@ msgid "" "following code in:" msgstr "在您的工作空间目录下创建一个名为 ``serving.config`` 的文件,并将下面的内容添加到其的内容中:" -#: ../../source/topics/deployment/deployment.rst:95 +#: ../../source/topics/deployment/deployment.rst:98 msgid "See :ref:`Serving Config ` for more config information" msgstr "请参考 :ref:`Serving Config ` 来获取更多信息。" -#: ../../source/topics/deployment/deployment.rst:99 +#: ../../source/topics/deployment/deployment.rst:102 msgid "" "The above configuration is referenced from `alice-serving-config " "`_." @@ -140,7 +140,7 @@ msgstr "" "以上配置内容参考自 `alice-serving-config " "`_。" -#: ../../source/topics/deployment/deployment.rst:100 +#: ../../source/topics/deployment/deployment.rst:103 msgid "" "For ``Bob``, you should refer to `bob-serving-config " "`_" @@ -149,7 +149,7 @@ msgstr "" "对于 ``Bob`` ,可以参考 `bob-serving-config " "`_。" -#: ../../source/topics/deployment/deployment.rst:101 +#: ../../source/topics/deployment/deployment.rst:104 msgid "" "**Note** `mockOpts` is configured here for a mock feature data source, " "which will provide simulated feature data to support the model prediction" @@ -160,16 +160,16 @@ msgstr "" "**注意** `mockOpts` 在这里是表示配置了仿真特征数据源来支持模型预测。在实际使用中,推荐通过实现 :ref:`SecretFlow-" "Serving Feature Service SPI ` 来提供特征数据。" -#: ../../source/topics/deployment/deployment.rst:102 +#: ../../source/topics/deployment/deployment.rst:105 msgid "" "**Note** You can modify the retry strategy for communication between " -"parties by modifying `retry_policy_config` field of :ref:`channel_desc " +"parties by modifying `retry_policy_config` field of :ref:`channelDesc " "`, you can refer to :ref:`here `." msgstr "" -"**注意** 你可以通过修改 :ref:`channel_desc ` 的 `retry_policy_config` " +"**注意** 你可以通过修改 :ref:`channelDesc ` 的 `retry_policy_config` " "字段来修改 `party` 间通信的重试策略,可以参考 :ref:`这里 ` 。 " -#: ../../source/topics/deployment/deployment.rst:103 +#: ../../source/topics/deployment/deployment.rst:106 msgid "" "**Note** If your :ref:`feature source ` is from " ":ref:`http `, you can modify the retry strategy of feature " @@ -180,23 +180,23 @@ msgstr "" "` 获取的, 你可以修改 :ref:`http_opts ` 的 " "`retry_policy_config` 字段来修改特征获取的重试策略,参考 :ref:`这里 ` 。" -#: ../../source/topics/deployment/deployment.rst:108 +#: ../../source/topics/deployment/deployment.rst:111 msgid "1.3 Create logging config file" msgstr "1.3 创建 logging 配置文件" -#: ../../source/topics/deployment/deployment.rst:110 +#: ../../source/topics/deployment/deployment.rst:113 msgid "" "Create a file called ``logging.config`` in your workspace and paste the " "following code in:" msgstr "在您的工作空间目录下创建一个名为 ``logging.config`` 的文件,并将下面的内容添加到其的内容中:" -#: ../../source/topics/deployment/deployment.rst:121 +#: ../../source/topics/deployment/deployment.rst:124 msgid "" "See :ref:`Logging Config ` for more logging config " "information." msgstr "请参考 :ref:`Logging Config ` 获得更多关于 logging 配置的信息。" -#: ../../source/topics/deployment/deployment.rst:125 +#: ../../source/topics/deployment/deployment.rst:128 msgid "" "The above configuration is referenced from `alice-logging-config " "`_." @@ -204,7 +204,7 @@ msgstr "" "以上配置内容参考自 `alice-logging-config " "`_。" -#: ../../source/topics/deployment/deployment.rst:127 +#: ../../source/topics/deployment/deployment.rst:130 msgid "" "For ``Bob``, you should refer to `bob-logging-config " "`_" @@ -213,11 +213,11 @@ msgstr "" "对于 ``Bob`` ,可以参考 `bob-logging-config " "`_。" -#: ../../source/topics/deployment/deployment.rst:132 +#: ../../source/topics/deployment/deployment.rst:135 msgid "1.4 Create trace config file" msgstr "1.4 创建 trace 配置文件" -#: ../../source/topics/deployment/deployment.rst:134 +#: ../../source/topics/deployment/deployment.rst:137 msgid "" "This configuration is optional, and **may cause some performance " "degradation**, please use it with caution. To record trace info, you can " @@ -227,7 +227,7 @@ msgstr "" "该配置是可选的,如果打开该配置,可能会 **造成一些性能下降** ,请谨慎使用。要记录trace信息,你可以创建 ``trace.config``" " 文件,将如下代码粘贴到新创建的文件里:" -#: ../../source/topics/deployment/deployment.rst:146 +#: ../../source/topics/deployment/deployment.rst:149 msgid "" "See :ref:`Trace Config ` and :ref:`Trace Introduction " "` for more trace config information." @@ -235,7 +235,7 @@ msgstr "" "请参考 :ref:`Trace Config ` 和 :ref:`Trace Introduction " "` 来获取更多trace配置相关的信息。" -#: ../../source/topics/deployment/deployment.rst:150 +#: ../../source/topics/deployment/deployment.rst:153 msgid "" "The above configuration is referenced from `alice-trace-config " "`_." @@ -243,7 +243,7 @@ msgstr "" "以上配置内容参考自 `alice-trace-config " "`_。" -#: ../../source/topics/deployment/deployment.rst:152 +#: ../../source/topics/deployment/deployment.rst:155 msgid "" "For ``Bob``, you should refer to `bob-trace-config " "`_" @@ -252,17 +252,17 @@ msgstr "" "对于 ``Bob`` ,可以参考 `bob-trace-config " "`_。" -#: ../../source/topics/deployment/deployment.rst:156 +#: ../../source/topics/deployment/deployment.rst:159 msgid "1.5 Create docker-compose file" msgstr "1.5 创建 docker-compose 文件" -#: ../../source/topics/deployment/deployment.rst:158 +#: ../../source/topics/deployment/deployment.rst:161 msgid "" "Create a file called ``docker-compose.yaml`` in your workspace and paste " "the following code in:" msgstr "在您的工作空间目录下创建一个名为 ``docker-compose.yaml`` 文件并将下列内容添加到其中:" -#: ../../source/topics/deployment/deployment.rst:183 +#: ../../source/topics/deployment/deployment.rst:186 msgid "" "``__ALICE_PORT__`` is the published port on the host machine which is " "used for SecretFlow-Serving service to listen on, you need to replace it " @@ -273,11 +273,11 @@ msgstr "" "服务在宿主机上的监听端口,您需要用一个可访问的端口号替换它,这里为 ``Alice`` 设置 ``9010``,为 ``Bob`` 设置 " "``9011``。" -#: ../../source/topics/deployment/deployment.rst:184 +#: ../../source/topics/deployment/deployment.rst:187 msgid "``trace_config_file`` line is optional." msgstr "``trace_config_file`` 这一行是可选的。" -#: ../../source/topics/deployment/deployment.rst:185 +#: ../../source/topics/deployment/deployment.rst:188 msgid "" "You can also use mirrors at Alibaba Cloud: ``secretflow-registry.cn-" "hangzhou.cr.aliyuncs.com/secretflow/serving-anolis8:latestsecretflow-" @@ -287,25 +287,25 @@ msgstr "" "hangzhou.cr.aliyuncs.com/secretflow/serving-anolis8:latestsecretflow-" "registry.cn-hangzhou.cr.aliyuncs.com/secretflow/serving-anolis8:[tag]``" -#: ../../source/topics/deployment/deployment.rst:189 +#: ../../source/topics/deployment/deployment.rst:192 msgid "Step 2: Start Serving Service" msgstr "步骤 2:启动 Serving 服务" -#: ../../source/topics/deployment/deployment.rst:191 +#: ../../source/topics/deployment/deployment.rst:194 msgid "" "The file your workspace should be as follows, ``trace.config`` is " "optional:" msgstr "您工作区的文件应如下所示,``trace.config`` 是可选的:" -#: ../../source/topics/deployment/deployment.rst:201 +#: ../../source/topics/deployment/deployment.rst:204 msgid "Then you can start serving service by running docker compose up." msgstr "然后您可以运行 docker compose up 来启动 serving 服务" -#: ../../source/topics/deployment/deployment.rst:208 +#: ../../source/topics/deployment/deployment.rst:211 msgid "You can use docker logs to check whether serving works well" msgstr "您可以使用 docker logs 检查 serving 是否正常工作" -#: ../../source/topics/deployment/deployment.rst:214 +#: ../../source/topics/deployment/deployment.rst:217 msgid "" "Now, ``Alice`` serving is listening on ``9010``, you can confirm if the " "service is ready by accessing the ``/health`` endpoint." @@ -313,17 +313,17 @@ msgstr "" "现在 ``Alice`` 的 serving 服务监听了 ``9010`` 端口,您可以通过访问 ``/health`` " "接口来检测服务是否已经准备完成。" -#: ../../source/topics/deployment/deployment.rst:220 +#: ../../source/topics/deployment/deployment.rst:223 msgid "" "When the endpoint returns a status code of ``200``, it means that the " "service is ready." msgstr "若接口返回状态码 ``200`` 则标志服务已经准备完成。" -#: ../../source/topics/deployment/deployment.rst:223 +#: ../../source/topics/deployment/deployment.rst:226 msgid "Step 3: Predict Test" msgstr "步骤 3:预测测试" -#: ../../source/topics/deployment/deployment.rst:225 +#: ../../source/topics/deployment/deployment.rst:228 msgid "" "Based on the capabilities of `Brpc " "`_, serving supports accessing " @@ -333,7 +333,7 @@ msgstr "" "得益于 `Brpc `_ 的能力,serving " "能够支持通过多种协议进行访问。这里我们通过发送一个 HTTP 的预测请求来测试服务。" -#: ../../source/topics/deployment/deployment.rst:227 +#: ../../source/topics/deployment/deployment.rst:230 msgid "" "You can read :ref:`SecretFlow-Serving API ` for more " "information about serving APIs." diff --git a/docs/locales/zh_CN/LC_MESSAGES/topics/deployment/serving_on_kuscia.po b/docs/locales/zh_CN/LC_MESSAGES/topics/deployment/serving_on_kuscia.po index 3caf020..5ae7c28 100644 --- a/docs/locales/zh_CN/LC_MESSAGES/topics/deployment/serving_on_kuscia.po +++ b/docs/locales/zh_CN/LC_MESSAGES/topics/deployment/serving_on_kuscia.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: SecretFlow-Serving \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-14 11:33+0800\n" +"POT-Creation-Date: 2024-10-23 20:18+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -249,164 +249,165 @@ msgstr "" "Hans/reference/apis/serving_cn#serving>`_ 进行,这里我们将对 " "``/api/v1/serving/create`` 请求中的 ``serving_input_config`` 字段内容进行说明。" -#: ../../source/topics/deployment/serving_on_kuscia.rst:172 +#: ../../source/topics/deployment/serving_on_kuscia.rst:176 msgid "**Field description**:" msgstr "**字段说明**:" -#: ../../source/topics/deployment/serving_on_kuscia.rst:175 +#: ../../source/topics/deployment/serving_on_kuscia.rst:179 msgid "Name" msgstr "名称" -#: ../../source/topics/deployment/serving_on_kuscia.rst:175 +#: ../../source/topics/deployment/serving_on_kuscia.rst:179 msgid "Type" msgstr "类型" -#: ../../source/topics/deployment/serving_on_kuscia.rst:175 +#: ../../source/topics/deployment/serving_on_kuscia.rst:179 msgid "Description" msgstr "描述" -#: ../../source/topics/deployment/serving_on_kuscia.rst:175 +#: ../../source/topics/deployment/serving_on_kuscia.rst:179 msgid "Required" msgstr "必选" -#: ../../source/topics/deployment/serving_on_kuscia.rst:177 +#: ../../source/topics/deployment/serving_on_kuscia.rst:181 msgid "partyConfigs" msgstr "" -#: ../../source/topics/deployment/serving_on_kuscia.rst:177 +#: ../../source/topics/deployment/serving_on_kuscia.rst:181 msgid "map" msgstr "" -#: ../../source/topics/deployment/serving_on_kuscia.rst:177 +#: ../../source/topics/deployment/serving_on_kuscia.rst:181 msgid "" "Dictionary of startup parameters for each participant. Key: Participant " "Unique ID; Value: PartyConfig (Json Object)." msgstr "各参与方启动参数字典。Key: 参与方id; Value: PartyConfig(Json Object)" -#: ../../source/topics/deployment/serving_on_kuscia.rst:177 -#: ../../source/topics/deployment/serving_on_kuscia.rst:179 +#: ../../source/topics/deployment/serving_on_kuscia.rst:181 #: ../../source/topics/deployment/serving_on_kuscia.rst:183 -#: ../../source/topics/deployment/serving_on_kuscia.rst:185 #: ../../source/topics/deployment/serving_on_kuscia.rst:187 #: ../../source/topics/deployment/serving_on_kuscia.rst:189 -#: ../../source/topics/deployment/serving_on_kuscia.rst:194 -#: ../../source/topics/deployment/serving_on_kuscia.rst:202 -#: ../../source/topics/deployment/serving_on_kuscia.rst:210 -#: ../../source/topics/deployment/serving_on_kuscia.rst:220 -#: ../../source/topics/deployment/serving_on_kuscia.rst:222 +#: ../../source/topics/deployment/serving_on_kuscia.rst:191 +#: ../../source/topics/deployment/serving_on_kuscia.rst:193 +#: ../../source/topics/deployment/serving_on_kuscia.rst:198 +#: ../../source/topics/deployment/serving_on_kuscia.rst:206 +#: ../../source/topics/deployment/serving_on_kuscia.rst:214 #: ../../source/topics/deployment/serving_on_kuscia.rst:224 #: ../../source/topics/deployment/serving_on_kuscia.rst:226 +#: ../../source/topics/deployment/serving_on_kuscia.rst:228 +#: ../../source/topics/deployment/serving_on_kuscia.rst:230 msgid "Yes" msgstr "是" -#: ../../source/topics/deployment/serving_on_kuscia.rst:179 +#: ../../source/topics/deployment/serving_on_kuscia.rst:183 msgid "PartyConfig.serverConfig" msgstr "" -#: ../../source/topics/deployment/serving_on_kuscia.rst:179 -#: ../../source/topics/deployment/serving_on_kuscia.rst:185 -#: ../../source/topics/deployment/serving_on_kuscia.rst:187 +#: ../../source/topics/deployment/serving_on_kuscia.rst:183 #: ../../source/topics/deployment/serving_on_kuscia.rst:189 #: ../../source/topics/deployment/serving_on_kuscia.rst:191 #: ../../source/topics/deployment/serving_on_kuscia.rst:193 -#: ../../source/topics/deployment/serving_on_kuscia.rst:200 -#: ../../source/topics/deployment/serving_on_kuscia.rst:206 +#: ../../source/topics/deployment/serving_on_kuscia.rst:195 +#: ../../source/topics/deployment/serving_on_kuscia.rst:197 +#: ../../source/topics/deployment/serving_on_kuscia.rst:204 #: ../../source/topics/deployment/serving_on_kuscia.rst:210 -#: ../../source/topics/deployment/serving_on_kuscia.rst:226 +#: ../../source/topics/deployment/serving_on_kuscia.rst:214 +#: ../../source/topics/deployment/serving_on_kuscia.rst:230 msgid "str" msgstr "" -#: ../../source/topics/deployment/serving_on_kuscia.rst:179 +#: ../../source/topics/deployment/serving_on_kuscia.rst:183 msgid ":ref:`ServerConfig `" msgstr "" -#: ../../source/topics/deployment/serving_on_kuscia.rst:181 +#: ../../source/topics/deployment/serving_on_kuscia.rst:185 msgid "PartyConfig.serverConfig.featureMapping" msgstr "" -#: ../../source/topics/deployment/serving_on_kuscia.rst:181 +#: ../../source/topics/deployment/serving_on_kuscia.rst:185 msgid "map" msgstr "" -#: ../../source/topics/deployment/serving_on_kuscia.rst:181 +#: ../../source/topics/deployment/serving_on_kuscia.rst:185 msgid "" "Feature name mapping rules. Key: source or predefined feature name; " "Value: model feature name" msgstr "特征名称映射规则。Key: 数据源或请求定义中的特征名称;Value: 模型中使用的特征名称。" -#: ../../source/topics/deployment/serving_on_kuscia.rst:181 -#: ../../source/topics/deployment/serving_on_kuscia.rst:191 -#: ../../source/topics/deployment/serving_on_kuscia.rst:200 -#: ../../source/topics/deployment/serving_on_kuscia.rst:206 -#: ../../source/topics/deployment/serving_on_kuscia.rst:212 -#: ../../source/topics/deployment/serving_on_kuscia.rst:214 +#: ../../source/topics/deployment/serving_on_kuscia.rst:185 +#: ../../source/topics/deployment/serving_on_kuscia.rst:195 +#: ../../source/topics/deployment/serving_on_kuscia.rst:204 +#: ../../source/topics/deployment/serving_on_kuscia.rst:210 #: ../../source/topics/deployment/serving_on_kuscia.rst:216 -#: ../../source/topics/deployment/serving_on_kuscia.rst:228 -#: ../../source/topics/deployment/serving_on_kuscia.rst:230 +#: ../../source/topics/deployment/serving_on_kuscia.rst:218 +#: ../../source/topics/deployment/serving_on_kuscia.rst:220 +#: ../../source/topics/deployment/serving_on_kuscia.rst:232 +#: ../../source/topics/deployment/serving_on_kuscia.rst:234 +#: ../../source/topics/deployment/serving_on_kuscia.rst:236 msgid "No" msgstr "否" -#: ../../source/topics/deployment/serving_on_kuscia.rst:183 +#: ../../source/topics/deployment/serving_on_kuscia.rst:187 msgid "PartyConfig.modelConfig" msgstr "" -#: ../../source/topics/deployment/serving_on_kuscia.rst:183 -#: ../../source/topics/deployment/serving_on_kuscia.rst:198 +#: ../../source/topics/deployment/serving_on_kuscia.rst:187 #: ../../source/topics/deployment/serving_on_kuscia.rst:202 -#: ../../source/topics/deployment/serving_on_kuscia.rst:204 +#: ../../source/topics/deployment/serving_on_kuscia.rst:206 #: ../../source/topics/deployment/serving_on_kuscia.rst:208 -#: ../../source/topics/deployment/serving_on_kuscia.rst:218 -#: ../../source/topics/deployment/serving_on_kuscia.rst:220 +#: ../../source/topics/deployment/serving_on_kuscia.rst:212 #: ../../source/topics/deployment/serving_on_kuscia.rst:222 #: ../../source/topics/deployment/serving_on_kuscia.rst:224 +#: ../../source/topics/deployment/serving_on_kuscia.rst:226 +#: ../../source/topics/deployment/serving_on_kuscia.rst:228 msgid "Object" msgstr "" -#: ../../source/topics/deployment/serving_on_kuscia.rst:183 +#: ../../source/topics/deployment/serving_on_kuscia.rst:187 msgid ":ref:`ModelConfig `" msgstr "" -#: ../../source/topics/deployment/serving_on_kuscia.rst:185 +#: ../../source/topics/deployment/serving_on_kuscia.rst:189 msgid "PartyConfig.modelConfig.modelId" msgstr "" -#: ../../source/topics/deployment/serving_on_kuscia.rst:185 +#: ../../source/topics/deployment/serving_on_kuscia.rst:189 msgid "Unique id of the model package" msgstr "模型包标识ID" -#: ../../source/topics/deployment/serving_on_kuscia.rst:187 +#: ../../source/topics/deployment/serving_on_kuscia.rst:191 msgid "PartyConfig.modelConfig.basePath" msgstr "" -#: ../../source/topics/deployment/serving_on_kuscia.rst:187 +#: ../../source/topics/deployment/serving_on_kuscia.rst:191 msgid "The local path used to cache and load model package" msgstr "本地缓存路径,用于缓存模型包数据" -#: ../../source/topics/deployment/serving_on_kuscia.rst:189 +#: ../../source/topics/deployment/serving_on_kuscia.rst:193 msgid "PartyConfig.modelConfig.sourcePath" msgstr "" -#: ../../source/topics/deployment/serving_on_kuscia.rst:189 +#: ../../source/topics/deployment/serving_on_kuscia.rst:193 msgid "" "The path to the model package in the data source, where the content " "format may vary depending on the ``sourceType``." msgstr "模型包路径,其具体内容格式取决于参数 ``sourceType``" -#: ../../source/topics/deployment/serving_on_kuscia.rst:191 +#: ../../source/topics/deployment/serving_on_kuscia.rst:195 msgid "PartyConfig.modelConfig.sourceSha256" msgstr "" -#: ../../source/topics/deployment/serving_on_kuscia.rst:191 +#: ../../source/topics/deployment/serving_on_kuscia.rst:195 msgid "" "The expected SHA256 hash of the model package. When provided, the fetched" " model package will be verified against it." msgstr "期望的模型包SHA256哈希值。提供时,会被用于校验获取的模型包是否匹配。" -#: ../../source/topics/deployment/serving_on_kuscia.rst:193 +#: ../../source/topics/deployment/serving_on_kuscia.rst:197 msgid "PartyConfig.modelConfig.sourceType" msgstr "" -#: ../../source/topics/deployment/serving_on_kuscia.rst:193 +#: ../../source/topics/deployment/serving_on_kuscia.rst:197 msgid "" "Model data source type, options include: ``ST_FILE``: In this case, the " "``sourcePath`` should be a file path accessible to Serving. ``ST_DP``: In" @@ -421,158 +422,158 @@ msgstr "" "``dpSourceMeta``。 ``ST_OSS``: 此时 ``sourcePath`` 应为 Bucket 下的文件路径。 " "``ST_HTTP``: 此时 ``sourcePath`` 应为模型包的下载链接。" -#: ../../source/topics/deployment/serving_on_kuscia.rst:198 +#: ../../source/topics/deployment/serving_on_kuscia.rst:202 msgid "PartyConfig.modelConfig.dpSourceMeta" msgstr "" -#: ../../source/topics/deployment/serving_on_kuscia.rst:198 +#: ../../source/topics/deployment/serving_on_kuscia.rst:202 msgid ":ref:`DPSourceMeta `" msgstr "" -#: ../../source/topics/deployment/serving_on_kuscia.rst:198 +#: ../../source/topics/deployment/serving_on_kuscia.rst:202 msgid "" "No(If ``sourceType`` is ``DT_DP``, ``dpSourceMeta`` needs to be " "configured)" msgstr "否(只当 ``sourceType`` 为 ``DT_DP`` 时, ``dpSourceMeta`` 需要被配置)" -#: ../../source/topics/deployment/serving_on_kuscia.rst:200 +#: ../../source/topics/deployment/serving_on_kuscia.rst:204 msgid "PartyConfig.modelConfig.dpSourceMeta.dmHost" msgstr "" -#: ../../source/topics/deployment/serving_on_kuscia.rst:200 +#: ../../source/topics/deployment/serving_on_kuscia.rst:204 msgid "The address of DataMesh in Kuscia. Default: datamesh:8071" msgstr "Kusica DataMesh地址, 默认值: datamesh:8071" -#: ../../source/topics/deployment/serving_on_kuscia.rst:202 +#: ../../source/topics/deployment/serving_on_kuscia.rst:206 msgid "PartyConfig.featureSourceConfig" msgstr "" -#: ../../source/topics/deployment/serving_on_kuscia.rst:202 +#: ../../source/topics/deployment/serving_on_kuscia.rst:206 msgid ":ref:`FeatureSourceConfig `" msgstr "" -#: ../../source/topics/deployment/serving_on_kuscia.rst:204 +#: ../../source/topics/deployment/serving_on_kuscia.rst:208 msgid "PartyConfig.featureSourceConfig.mockOpts" msgstr "" -#: ../../source/topics/deployment/serving_on_kuscia.rst:204 +#: ../../source/topics/deployment/serving_on_kuscia.rst:208 msgid ":ref:`MockOptions `" msgstr "" -#: ../../source/topics/deployment/serving_on_kuscia.rst:204 #: ../../source/topics/deployment/serving_on_kuscia.rst:208 -#: ../../source/topics/deployment/serving_on_kuscia.rst:218 +#: ../../source/topics/deployment/serving_on_kuscia.rst:212 +#: ../../source/topics/deployment/serving_on_kuscia.rst:222 msgid "" "No(One of ``csvOpts``, ``mockOpts``, or ``httpOpts`` needs to be " "configured)" msgstr "否(``csvOpts``, ``mockOpts`` 或者 ``httpOpts`` 中的之一需要被配置)" -#: ../../source/topics/deployment/serving_on_kuscia.rst:206 +#: ../../source/topics/deployment/serving_on_kuscia.rst:210 msgid "PartyConfig.featureSourceConfig.mockOpts.type" msgstr "" -#: ../../source/topics/deployment/serving_on_kuscia.rst:206 +#: ../../source/topics/deployment/serving_on_kuscia.rst:210 msgid "" "The method for generating mock feature values, options: \"MDT_RANDOM\" " "for random values, and \"MDT_FIXED\" for fixed values. Default: " "\"MDT_FIXED\"." msgstr "mock特征数据生成方法类型,可选:\"MDT_RANDOM\"用于生成随机值;\"MDT_FIXED\"返回固定值。默认设置为:\"MDT_FIXED\"。" -#: ../../source/topics/deployment/serving_on_kuscia.rst:208 +#: ../../source/topics/deployment/serving_on_kuscia.rst:212 msgid "PartyConfig.featureSourceConfig.httpOpts" msgstr "" -#: ../../source/topics/deployment/serving_on_kuscia.rst:208 +#: ../../source/topics/deployment/serving_on_kuscia.rst:212 msgid ":ref:`HttpOptions `" msgstr "" -#: ../../source/topics/deployment/serving_on_kuscia.rst:210 +#: ../../source/topics/deployment/serving_on_kuscia.rst:214 msgid "PartyConfig.featureSourceConfig.httpOpts.endpoint" msgstr "" -#: ../../source/topics/deployment/serving_on_kuscia.rst:210 +#: ../../source/topics/deployment/serving_on_kuscia.rst:214 msgid "Feature service address" msgstr "特征服务地址" -#: ../../source/topics/deployment/serving_on_kuscia.rst:212 +#: ../../source/topics/deployment/serving_on_kuscia.rst:216 msgid "PartyConfig.featureSourceConfig.httpOpts.enableLb" msgstr "" -#: ../../source/topics/deployment/serving_on_kuscia.rst:212 +#: ../../source/topics/deployment/serving_on_kuscia.rst:216 msgid "bool" msgstr "" -#: ../../source/topics/deployment/serving_on_kuscia.rst:212 +#: ../../source/topics/deployment/serving_on_kuscia.rst:216 msgid "Whether to enable round robin load balancer, Default: False" msgstr "是否开启轮询负载均衡访问,默认值:False。" -#: ../../source/topics/deployment/serving_on_kuscia.rst:214 +#: ../../source/topics/deployment/serving_on_kuscia.rst:218 msgid "PartyConfig.featureSourceConfig.httpOpts.connectTimeoutMs" msgstr "" -#: ../../source/topics/deployment/serving_on_kuscia.rst:214 -#: ../../source/topics/deployment/serving_on_kuscia.rst:216 -#: ../../source/topics/deployment/serving_on_kuscia.rst:228 -#: ../../source/topics/deployment/serving_on_kuscia.rst:230 +#: ../../source/topics/deployment/serving_on_kuscia.rst:218 +#: ../../source/topics/deployment/serving_on_kuscia.rst:220 +#: ../../source/topics/deployment/serving_on_kuscia.rst:232 +#: ../../source/topics/deployment/serving_on_kuscia.rst:234 msgid "int32" msgstr "" -#: ../../source/topics/deployment/serving_on_kuscia.rst:214 -#: ../../source/topics/deployment/serving_on_kuscia.rst:230 +#: ../../source/topics/deployment/serving_on_kuscia.rst:218 +#: ../../source/topics/deployment/serving_on_kuscia.rst:234 msgid "Max duration for a connect. -1 means wait indefinitely. Default: 500 (ms)" msgstr "连接超时时间,-1 即无限时间,默认值:500 (ms)" -#: ../../source/topics/deployment/serving_on_kuscia.rst:216 +#: ../../source/topics/deployment/serving_on_kuscia.rst:220 msgid "PartyConfig.featureSourceConfig.httpOpts.timeoutMs" msgstr "" -#: ../../source/topics/deployment/serving_on_kuscia.rst:216 +#: ../../source/topics/deployment/serving_on_kuscia.rst:220 msgid "" "Max duration of http request. -1 means wait indefinitely. Default: 1000 " "(ms)" msgstr "请求超时时间,-1 即无限时间,默认值:1000 (ms)" -#: ../../source/topics/deployment/serving_on_kuscia.rst:218 +#: ../../source/topics/deployment/serving_on_kuscia.rst:222 msgid "PartyConfig.featureSourceConfig.csvOpts" msgstr "" -#: ../../source/topics/deployment/serving_on_kuscia.rst:218 +#: ../../source/topics/deployment/serving_on_kuscia.rst:222 msgid ":ref:`CsvOptions `" msgstr "" -#: ../../source/topics/deployment/serving_on_kuscia.rst:220 +#: ../../source/topics/deployment/serving_on_kuscia.rst:224 msgid "PartyConfig.featureSourceConfig.csvOpts.filePath" msgstr "" -#: ../../source/topics/deployment/serving_on_kuscia.rst:220 +#: ../../source/topics/deployment/serving_on_kuscia.rst:224 msgid "" "Input file path, specifies where to load data. Note that this will load " "all of the data into memory at once" msgstr "文件路径,注意:整个文件会被全部加载到内存中,不建议生产系统使用。" -#: ../../source/topics/deployment/serving_on_kuscia.rst:222 +#: ../../source/topics/deployment/serving_on_kuscia.rst:226 msgid "PartyConfig.featureSourceConfig.csvOpts.idName" msgstr "" -#: ../../source/topics/deployment/serving_on_kuscia.rst:222 +#: ../../source/topics/deployment/serving_on_kuscia.rst:226 msgid "" "Id column name, associated with ``FeatureParam::query_datas``. " "``query_datas`` is a subset of id column" msgstr "ID列名称,系统此时认为预测请求中 ``FeatureParam::query_datas`` 的内容为ID数据,将以此进行数据查询。" -#: ../../source/topics/deployment/serving_on_kuscia.rst:224 +#: ../../source/topics/deployment/serving_on_kuscia.rst:228 msgid "PartyConfig.channelDesc" msgstr "" -#: ../../source/topics/deployment/serving_on_kuscia.rst:224 +#: ../../source/topics/deployment/serving_on_kuscia.rst:228 msgid ":ref:`ChannelDesc `" msgstr "" -#: ../../source/topics/deployment/serving_on_kuscia.rst:226 +#: ../../source/topics/deployment/serving_on_kuscia.rst:230 msgid "PartyConfig.channelDesc.protocol" msgstr "" -#: ../../source/topics/deployment/serving_on_kuscia.rst:226 +#: ../../source/topics/deployment/serving_on_kuscia.rst:230 msgid "" "Communication protocol, for optional value, see `here " "`_" @@ -580,14 +581,26 @@ msgstr "" "通信协议,可选值可以参考 `这里 " "`_" -#: ../../source/topics/deployment/serving_on_kuscia.rst:228 +#: ../../source/topics/deployment/serving_on_kuscia.rst:232 msgid "PartyConfig.channelDesc.rpcTimeoutMs" msgstr "" -#: ../../source/topics/deployment/serving_on_kuscia.rst:228 +#: ../../source/topics/deployment/serving_on_kuscia.rst:232 msgid "Max duration of RPC. -1 means wait indefinitely. Default: 2000 (ms)" msgstr "RPC超时时间, -1 即无穷时间。默认值:2000(ms)" -#: ../../source/topics/deployment/serving_on_kuscia.rst:230 +#: ../../source/topics/deployment/serving_on_kuscia.rst:234 msgid "PartyConfig.channelDesc.connectTimeoutMs" msgstr "" + +#: ../../source/topics/deployment/serving_on_kuscia.rst:236 +msgid "predictorParties" +msgstr "" + +#: ../../source/topics/deployment/serving_on_kuscia.rst:236 +msgid "List" +msgstr "" + +#: ../../source/topics/deployment/serving_on_kuscia.rst:236 +msgid "Indicate which parties can initiate the prediction. Default: All" +msgstr "" diff --git a/docs/source/reference/config.md b/docs/source/reference/config.md index d88f61b..0ffc0d2 100644 --- a/docs/source/reference/config.md +++ b/docs/source/reference/config.md @@ -47,6 +47,7 @@ - [FeatureSourceConfig](#featuresourceconfig) - [HttpOptions](#httpoptions) - [MockOptions](#mockoptions) + - [StreamingOptions](#streamingoptions) @@ -225,6 +226,8 @@ Options of a csv feature source. | ----- | ---- | ----------- | | file_path | [ string](#string ) | Input file path, specifies where to load data Note that this will load all of the data into memory at once | | id_name | [ string](#string ) | Id column name, associated with FeatureParam::query_datas Query datas is a subset of id column | +| streaming_mode | [ bool](#bool ) | Optional. Only for Inferencer tool use. Defatult: false | +| block_size | [ int32](#int32 ) | Optional. Valid only if `streaming_mode=true`. This determines the size(byte) of each read batch. | @@ -239,6 +242,7 @@ Config for a feature source | [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) options.mock_opts | [ MockOptions](#mockoptions ) | none | | [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) options.http_opts | [ HttpOptions](#httpoptions ) | none | | [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) options.csv_opts | [ CsvOptions](#csvoptions ) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) options.streaming_opts | [ StreamingOptions](#streamingoptions ) | none | @@ -274,6 +278,21 @@ for the desired features. | type | [ MockDataType](#mockdatatype ) | default MDT_FIXED | + + + +### StreamingOptions +Only for Inferencer tool use. + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| file_path | [ string](#string ) | Input file path, specifies where to load data | +| file_format | [ string](#string ) | Input file format. Optional value: CSV Default: CSV | +| id_name | [ string](#string ) | Id column name, associated with FeatureParam::query_datas Query datas is a subset of id column | +| block_size | [ int32](#int32 ) | Optional. This determines the size(byte) of each read batch. | + + @@ -436,7 +455,7 @@ S3 protocol. | feature_mapping | [map ServerConfig.FeatureMappingEntry](#serverconfig-featuremappingentry ) | Optional. Feature name mapping rules. Key: source or predefined feature name. Value: model feature name. | | tls_config | [ TlsConfig](#tlsconfig ) | Whether to enable tls for server | | host | [ string](#string ) | e.g. 192.168.2.51 | -| service_port | [ int32](#int32 ) | The port used for model inference. | +| service_port | [ int32](#int32 ) | The port used for model predict service. Default: disable service | | communication_port | [ int32](#int32 ) | The port used for communication between parties serving. | | brpc_builtin_service_port | [ int32](#int32 ) | Brpc builtin service listen port. Default: disable service | | metrics_exposer_port | [ int32](#int32 ) | `/metrics` service listen port. Default: disable service | diff --git a/docs/source/topics/deployment/deployment.rst b/docs/source/topics/deployment/deployment.rst index 5c42854..7ff5751 100644 --- a/docs/source/topics/deployment/deployment.rst +++ b/docs/source/topics/deployment/deployment.rst @@ -61,6 +61,9 @@ Create a file called ``serving.config`` in your workspace and paste the followin "v25": "x25", "v23": "x23" }, + "host": "0.0.0.0", + "servicePort": "9010", + "communicationPort": "9110", "metricsExposerPort": 10306, "brpcBuiltinServicePort": 10307 }, @@ -68,7 +71,7 @@ Create a file called ``serving.config`` in your workspace and paste the followin "modelId": "glm-test", "basePath": "./data", "sourcePath": "./glm-test.tar.gz", - "sourceSha256": "3b6a3b76a8d5bbf0e45b83f2d44772a0a6aa9a15bf382cee22cbdc8f59d55522", + "sourceSha256": "c6308af488bcd6c54a48a145af17aa209dec463b5cb44d83c6b58195818c10a0", "sourceType": "ST_FILE" }, "clusterConf": { @@ -76,15 +79,15 @@ Create a file called ``serving.config`` in your workspace and paste the followin "parties": [ { "id": "alice", - "address": "0.0.0.0:9010" + "address": "0.0.0.0:9110" }, { "id": "bob", - "address": "0.0.0.0:9011" + "address": "0.0.0.0:9111" } ], - "channel_desc": { - "protocol": "baidu_std" + "channelDesc": { + "protocol": "http" } }, "featureSourceConf": { @@ -99,7 +102,7 @@ See :ref:`Serving Config ` for more config information * The above configuration is referenced from `alice-serving-config `_. * For ``Bob``, you should refer to `bob-serving-config `_ . * **Note** `mockOpts` is configured here for a mock feature data source, which will provide simulated feature data to support the model prediction process. In actual use, please provide feature data in the form of a feature service by implementing the :ref:`SecretFlow-Serving Feature Service SPI `. - * **Note** You can modify the retry strategy for communication between parties by modifying `retry_policy_config` field of :ref:`channel_desc `, you can refer to :ref:`here `. + * **Note** You can modify the retry strategy for communication between parties by modifying `retry_policy_config` field of :ref:`channelDesc `, you can refer to :ref:`here `. * **Note** If your :ref:`feature source ` is from :ref:`http `, you can modify the retry strategy of feature fetching by modifying `retry_policy_config` field of :ref:`http_opts `, please refer to :ref:`here `. .. _log_conf_file: diff --git a/docs/source/topics/deployment/serving_on_kuscia.rst b/docs/source/topics/deployment/serving_on_kuscia.rst index 5336059..c8cda61 100644 --- a/docs/source/topics/deployment/serving_on_kuscia.rst +++ b/docs/source/topics/deployment/serving_on_kuscia.rst @@ -166,7 +166,11 @@ The launch and management of SecretFlow-Serving can be performed using the `Kusc "protocol": "http" } } - } + }, + "predictorParties": [ + "alice", + "bob" + ] } **Field description**: @@ -229,3 +233,5 @@ The launch and management of SecretFlow-Serving can be performed using the `Kusc +-----------------------------------------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ | PartyConfig.channelDesc.connectTimeoutMs | int32 | Max duration for a connect. -1 means wait indefinitely. Default: 500 (ms) | No | +-----------------------------------------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| predictorParties | List | Indicate which parties can initiate the prediction. Default: All | No | ++-----------------------------------------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ diff --git a/examples/alice/serving.config b/examples/alice/serving.config index 67e0d76..49562cd 100644 --- a/examples/alice/serving.config +++ b/examples/alice/serving.config @@ -33,7 +33,7 @@ "address": "0.0.0.0:9111" } ], - "channel_desc": { + "channelDesc": { "protocol": "http" } }, diff --git a/examples/bob/serving.config b/examples/bob/serving.config index 0763604..92965e9 100644 --- a/examples/bob/serving.config +++ b/examples/bob/serving.config @@ -33,7 +33,7 @@ "address": "0.0.0.0:9111" } ], - "channel_desc": { + "channelDesc": { "protocol": "http" } }, diff --git a/secretflow_serving/ops/BUILD.bazel b/secretflow_serving/ops/BUILD.bazel index 20988f8..279282a 100644 --- a/secretflow_serving/ops/BUILD.bazel +++ b/secretflow_serving/ops/BUILD.bazel @@ -25,10 +25,10 @@ serving_cc_library( ":arrow_processing", ":dot_product", ":merge_y", - "//secretflow_serving/ops/phe_linear:phe_2p_decrypt_peer_y", - "//secretflow_serving/ops/phe_linear:phe_2p_dot_product", - "//secretflow_serving/ops/phe_linear:phe_2p_merge_y", - "//secretflow_serving/ops/phe_linear:phe_2p_reduce", + "//secretflow_serving/ops/he/linear:phe_2p_decrypt_peer_y", + "//secretflow_serving/ops/he/linear:phe_2p_dot_product", + "//secretflow_serving/ops/he/linear:phe_2p_merge_y", + "//secretflow_serving/ops/he/linear:phe_2p_reduce", ], ) diff --git a/secretflow_serving/ops/he/BUILD.bazel b/secretflow_serving/ops/he/BUILD.bazel new file mode 100644 index 0000000..744b7a1 --- /dev/null +++ b/secretflow_serving/ops/he/BUILD.bazel @@ -0,0 +1,27 @@ +# Copyright 2024 Ant Group Co., Ltd. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("//bazel:serving.bzl", "serving_cc_library") + +package(default_visibility = ["//visibility:public"]) + +serving_cc_library( + name = "test_utils", + srcs = ["test_utils.cc"], + hdrs = ["test_utils.h"], + deps = [ + "//secretflow_serving/core:types", + "//secretflow_serving/util:he_mgm", + ], +) diff --git a/secretflow_serving/ops/phe_linear/BUILD.bazel b/secretflow_serving/ops/he/linear/BUILD.bazel similarity index 90% rename from secretflow_serving/ops/phe_linear/BUILD.bazel rename to secretflow_serving/ops/he/linear/BUILD.bazel index 3194c71..25329ad 100644 --- a/secretflow_serving/ops/phe_linear/BUILD.bazel +++ b/secretflow_serving/ops/he/linear/BUILD.bazel @@ -16,16 +16,6 @@ load("//bazel:serving.bzl", "serving_cc_library", "serving_cc_test") package(default_visibility = ["//visibility:public"]) -serving_cc_library( - name = "test_utils", - srcs = ["test_utils.cc"], - hdrs = ["test_utils.h"], - deps = [ - "//secretflow_serving/core:types", - "//secretflow_serving/util:he_mgm", - ], -) - serving_cc_library( name = "phe_2p_dot_product", srcs = ["phe_2p_dot_product.cc"], @@ -47,7 +37,7 @@ serving_cc_test( srcs = ["phe_2p_dot_product_test.cc"], deps = [ ":phe_2p_dot_product", - ":test_utils", + "//secretflow_serving/ops/he:test_utils", "@yacl//yacl/utils:elapsed_timer", ], ) @@ -71,7 +61,7 @@ serving_cc_test( srcs = ["phe_2p_decrypt_peer_y_test.cc"], deps = [ ":phe_2p_decrypt_peer_y", - ":test_utils", + "//secretflow_serving/ops/he:test_utils", ], ) @@ -95,7 +85,7 @@ serving_cc_test( srcs = ["phe_2p_merge_y_test.cc"], deps = [ ":phe_2p_merge_y", - ":test_utils", + "//secretflow_serving/ops/he:test_utils", "@yacl//yacl/utils:elapsed_timer", ], ) @@ -117,6 +107,6 @@ serving_cc_test( srcs = ["phe_2p_reduce_test.cc"], deps = [ ":phe_2p_reduce", - ":test_utils", + "//secretflow_serving/ops/he:test_utils", ], ) diff --git a/secretflow_serving/ops/phe_linear/phe_2p_decrypt_peer_y.cc b/secretflow_serving/ops/he/linear/phe_2p_decrypt_peer_y.cc similarity index 98% rename from secretflow_serving/ops/phe_linear/phe_2p_decrypt_peer_y.cc rename to secretflow_serving/ops/he/linear/phe_2p_decrypt_peer_y.cc index ac4883f..db8e11e 100644 --- a/secretflow_serving/ops/phe_linear/phe_2p_decrypt_peer_y.cc +++ b/secretflow_serving/ops/he/linear/phe_2p_decrypt_peer_y.cc @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "secretflow_serving/ops/phe_linear/phe_2p_decrypt_peer_y.h" +#include "secretflow_serving/ops/he/linear/phe_2p_decrypt_peer_y.h" #include "secretflow_serving/ops/node_def_util.h" #include "secretflow_serving/ops/op_factory.h" diff --git a/secretflow_serving/ops/phe_linear/phe_2p_decrypt_peer_y.h b/secretflow_serving/ops/he/linear/phe_2p_decrypt_peer_y.h similarity index 100% rename from secretflow_serving/ops/phe_linear/phe_2p_decrypt_peer_y.h rename to secretflow_serving/ops/he/linear/phe_2p_decrypt_peer_y.h diff --git a/secretflow_serving/ops/phe_linear/phe_2p_decrypt_peer_y_test.cc b/secretflow_serving/ops/he/linear/phe_2p_decrypt_peer_y_test.cc similarity index 97% rename from secretflow_serving/ops/phe_linear/phe_2p_decrypt_peer_y_test.cc rename to secretflow_serving/ops/he/linear/phe_2p_decrypt_peer_y_test.cc index 12805b7..b95f5cf 100644 --- a/secretflow_serving/ops/phe_linear/phe_2p_decrypt_peer_y_test.cc +++ b/secretflow_serving/ops/he/linear/phe_2p_decrypt_peer_y_test.cc @@ -12,14 +12,14 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "secretflow_serving/ops/phe_linear/phe_2p_decrypt_peer_y.h" +#include "secretflow_serving/ops/he/linear/phe_2p_decrypt_peer_y.h" #include "arrow/ipc/api.h" #include "gtest/gtest.h" +#include "secretflow_serving/ops/he/test_utils.h" #include "secretflow_serving/ops/op_factory.h" #include "secretflow_serving/ops/op_kernel_factory.h" -#include "secretflow_serving/ops/phe_linear/test_utils.h" #include "secretflow_serving/util/arrow_helper.h" #include "secretflow_serving/util/utils.h" diff --git a/secretflow_serving/ops/phe_linear/phe_2p_dot_product.cc b/secretflow_serving/ops/he/linear/phe_2p_dot_product.cc similarity index 99% rename from secretflow_serving/ops/phe_linear/phe_2p_dot_product.cc rename to secretflow_serving/ops/he/linear/phe_2p_dot_product.cc index 357714b..b382f82 100644 --- a/secretflow_serving/ops/phe_linear/phe_2p_dot_product.cc +++ b/secretflow_serving/ops/he/linear/phe_2p_dot_product.cc @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "secretflow_serving/ops/phe_linear/phe_2p_dot_product.h" +#include "secretflow_serving/ops/he/linear/phe_2p_dot_product.h" #include diff --git a/secretflow_serving/ops/phe_linear/phe_2p_dot_product.h b/secretflow_serving/ops/he/linear/phe_2p_dot_product.h similarity index 100% rename from secretflow_serving/ops/phe_linear/phe_2p_dot_product.h rename to secretflow_serving/ops/he/linear/phe_2p_dot_product.h diff --git a/secretflow_serving/ops/phe_linear/phe_2p_dot_product_test.cc b/secretflow_serving/ops/he/linear/phe_2p_dot_product_test.cc similarity index 98% rename from secretflow_serving/ops/phe_linear/phe_2p_dot_product_test.cc rename to secretflow_serving/ops/he/linear/phe_2p_dot_product_test.cc index 007c007..c79a802 100644 --- a/secretflow_serving/ops/phe_linear/phe_2p_dot_product_test.cc +++ b/secretflow_serving/ops/he/linear/phe_2p_dot_product_test.cc @@ -12,14 +12,14 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "secretflow_serving/ops/phe_linear/phe_2p_dot_product.h" +#include "secretflow_serving/ops/he/linear/phe_2p_dot_product.h" #include "gtest/gtest.h" #include "yacl/utils/elapsed_timer.h" +#include "secretflow_serving/ops/he/test_utils.h" #include "secretflow_serving/ops/op_factory.h" #include "secretflow_serving/ops/op_kernel_factory.h" -#include "secretflow_serving/ops/phe_linear/test_utils.h" #include "secretflow_serving/util/arrow_helper.h" #include "secretflow_serving/util/utils.h" diff --git a/secretflow_serving/ops/phe_linear/phe_2p_merge_y.cc b/secretflow_serving/ops/he/linear/phe_2p_merge_y.cc similarity index 99% rename from secretflow_serving/ops/phe_linear/phe_2p_merge_y.cc rename to secretflow_serving/ops/he/linear/phe_2p_merge_y.cc index 6de90da..07425ed 100644 --- a/secretflow_serving/ops/phe_linear/phe_2p_merge_y.cc +++ b/secretflow_serving/ops/he/linear/phe_2p_merge_y.cc @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "secretflow_serving/ops/phe_linear/phe_2p_merge_y.h" +#include "secretflow_serving/ops/he/linear/phe_2p_merge_y.h" #include "secretflow_serving/core/link_func.h" #include "secretflow_serving/ops/node_def_util.h" diff --git a/secretflow_serving/ops/phe_linear/phe_2p_merge_y.h b/secretflow_serving/ops/he/linear/phe_2p_merge_y.h similarity index 100% rename from secretflow_serving/ops/phe_linear/phe_2p_merge_y.h rename to secretflow_serving/ops/he/linear/phe_2p_merge_y.h diff --git a/secretflow_serving/ops/phe_linear/phe_2p_merge_y_test.cc b/secretflow_serving/ops/he/linear/phe_2p_merge_y_test.cc similarity index 98% rename from secretflow_serving/ops/phe_linear/phe_2p_merge_y_test.cc rename to secretflow_serving/ops/he/linear/phe_2p_merge_y_test.cc index f7ce4a6..ae43528 100644 --- a/secretflow_serving/ops/phe_linear/phe_2p_merge_y_test.cc +++ b/secretflow_serving/ops/he/linear/phe_2p_merge_y_test.cc @@ -12,15 +12,15 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "secretflow_serving/ops/phe_linear/phe_2p_merge_y.h" +#include "secretflow_serving/ops/he/linear/phe_2p_merge_y.h" #include "gtest/gtest.h" #include "yacl/utils/elapsed_timer.h" #include "secretflow_serving/core/link_func.h" +#include "secretflow_serving/ops/he/test_utils.h" #include "secretflow_serving/ops/op_factory.h" #include "secretflow_serving/ops/op_kernel_factory.h" -#include "secretflow_serving/ops/phe_linear/test_utils.h" #include "secretflow_serving/util/arrow_helper.h" #include "secretflow_serving/util/utils.h" diff --git a/secretflow_serving/ops/phe_linear/phe_2p_reduce.cc b/secretflow_serving/ops/he/linear/phe_2p_reduce.cc similarity index 98% rename from secretflow_serving/ops/phe_linear/phe_2p_reduce.cc rename to secretflow_serving/ops/he/linear/phe_2p_reduce.cc index 868345c..06645d9 100644 --- a/secretflow_serving/ops/phe_linear/phe_2p_reduce.cc +++ b/secretflow_serving/ops/he/linear/phe_2p_reduce.cc @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "secretflow_serving/ops/phe_linear/phe_2p_reduce.h" +#include "secretflow_serving/ops/he/linear/phe_2p_reduce.h" #include "secretflow_serving/ops/node_def_util.h" #include "secretflow_serving/ops/op_factory.h" diff --git a/secretflow_serving/ops/phe_linear/phe_2p_reduce.h b/secretflow_serving/ops/he/linear/phe_2p_reduce.h similarity index 100% rename from secretflow_serving/ops/phe_linear/phe_2p_reduce.h rename to secretflow_serving/ops/he/linear/phe_2p_reduce.h diff --git a/secretflow_serving/ops/phe_linear/phe_2p_reduce_test.cc b/secretflow_serving/ops/he/linear/phe_2p_reduce_test.cc similarity index 98% rename from secretflow_serving/ops/phe_linear/phe_2p_reduce_test.cc rename to secretflow_serving/ops/he/linear/phe_2p_reduce_test.cc index 68f0757..1990a7b 100644 --- a/secretflow_serving/ops/phe_linear/phe_2p_reduce_test.cc +++ b/secretflow_serving/ops/he/linear/phe_2p_reduce_test.cc @@ -12,14 +12,14 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "secretflow_serving/ops/phe_linear/phe_2p_reduce.h" +#include "secretflow_serving/ops/he/linear/phe_2p_reduce.h" #include "arrow/ipc/api.h" #include "gtest/gtest.h" +#include "secretflow_serving/ops/he/test_utils.h" #include "secretflow_serving/ops/op_factory.h" #include "secretflow_serving/ops/op_kernel_factory.h" -#include "secretflow_serving/ops/phe_linear/test_utils.h" #include "secretflow_serving/util/arrow_helper.h" #include "secretflow_serving/util/utils.h" diff --git a/secretflow_serving/ops/phe_linear/test_utils.cc b/secretflow_serving/ops/he/test_utils.cc similarity index 95% rename from secretflow_serving/ops/phe_linear/test_utils.cc rename to secretflow_serving/ops/he/test_utils.cc index 197dba2..7adbffc 100644 --- a/secretflow_serving/ops/phe_linear/test_utils.cc +++ b/secretflow_serving/ops/he/test_utils.cc @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "secretflow_serving/ops/phe_linear/test_utils.h" +#include "secretflow_serving/ops/he/test_utils.h" namespace secretflow::serving::test { diff --git a/secretflow_serving/ops/phe_linear/test_utils.h b/secretflow_serving/ops/he/test_utils.h similarity index 100% rename from secretflow_serving/ops/phe_linear/test_utils.h rename to secretflow_serving/ops/he/test_utils.h diff --git a/secretflow_serving/server/kuscia/config_parser.cc b/secretflow_serving/server/kuscia/config_parser.cc index bca3ee9..9a6e41e 100644 --- a/secretflow_serving/server/kuscia/config_parser.cc +++ b/secretflow_serving/server/kuscia/config_parser.cc @@ -105,25 +105,42 @@ KusciaConfigParser::KusciaConfigParser(const std::string& config_file) { "too few cluster party config to run serving."); } - { - // parse input config - SERVING_ENFORCE(doc[kInputConfigKey].IsString(), - errors::ErrorCode::INVALID_ARGUMENT); - std::string input_config_str = {doc[kInputConfigKey].GetString(), - doc[kInputConfigKey].GetStringLength()}; + // parse input config + SERVING_ENFORCE(doc[kInputConfigKey].IsString(), + errors::ErrorCode::INVALID_ARGUMENT); + std::string input_config_str = {doc[kInputConfigKey].GetString(), + doc[kInputConfigKey].GetStringLength()}; - KusciaServingConfig serving_config; - JsonToPb(input_config_str, &serving_config); - auto iter = serving_config.party_configs().find(self_party_id); - SERVING_ENFORCE(iter != serving_config.party_configs().end(), - errors::ErrorCode::INVALID_ARGUMENT); - const auto& party_config = iter->second; - server_config_ = party_config.server_config(); - model_config_ = party_config.model_config(); - if (party_config.has_feature_source_config()) { - feature_config_ = party_config.feature_source_config(); + KusciaServingConfig serving_config; + JsonToPb(input_config_str, &serving_config); + auto iter = serving_config.party_configs().find(self_party_id); + SERVING_ENFORCE(iter != serving_config.party_configs().end(), + errors::ErrorCode::INVALID_ARGUMENT); + const auto& party_config = iter->second; + server_config_ = party_config.server_config(); + model_config_ = party_config.model_config(); + if (party_config.has_feature_source_config()) { + feature_config_ = party_config.feature_source_config(); + } + *cluster_config_.mutable_channel_desc() = party_config.channel_desc(); + + // determine whether to listen for predictive services + bool enable_pred_svc = + serving_config.predictor_parties().empty() ? true : false; + for (const auto& p_id : serving_config.predictor_parties()) { + bool flag = false; + for (const auto& p_desc : cluster_config_.parties()) { + if (p_desc.id() == p_id) { + flag = true; + break; + } + } + SERVING_ENFORCE(flag, errors::ErrorCode::INVALID_ARGUMENT, + "invalid predictor party: {}", p_id); + + if (p_id == self_party_id) { + enable_pred_svc = true; } - *cluster_config_.mutable_channel_desc() = party_config.channel_desc(); } { @@ -138,7 +155,7 @@ KusciaConfigParser::KusciaConfigParser(const std::string& config_file) { JsonToPb(allocated_ports_str, &allocated_ports); server_config_.set_host("0.0.0.0"); for (const auto& p : allocated_ports.ports()) { - if (p.name() == "service") { + if (enable_pred_svc && p.name() == "service") { server_config_.set_service_port(p.port()); } if (p.name() == "communication") { @@ -154,8 +171,10 @@ KusciaConfigParser::KusciaConfigParser(const std::string& config_file) { SERVING_ENFORCE_NE(server_config_.communication_port(), 0, "get empty communication port."); - SERVING_ENFORCE_NE(server_config_.service_port(), 0, - "get empty service port."); + if (enable_pred_svc) { + SERVING_ENFORCE_NE(server_config_.service_port(), 0, + "get empty service port."); + } } // load oss config diff --git a/secretflow_serving/server/kuscia/config_parser_test.cc b/secretflow_serving/server/kuscia/config_parser_test.cc index f10f3aa..deceb87 100644 --- a/secretflow_serving/server/kuscia/config_parser_test.cc +++ b/secretflow_serving/server/kuscia/config_parser_test.cc @@ -166,6 +166,46 @@ TEST_F(KusciaConfigParserTest, DPWorks) { EXPECT_EQ(dp_tls_config.ca_file_path(), "ca.crt"); } +TEST_F(KusciaConfigParserTest, PredictorParties) { + // enable alice + // alice + { + butil::TempFile tmpfile; + tmpfile.save(1 + R"JSON( +{ + "serving_id": "kd-1", + "input_config": "{\"partyConfigs\":{\"alice\":{\"serverConfig\":{\"featureMapping\":{\"v24\":\"x24\",\"v22\":\"x22\",\"v21\":\"x21\",\"v25\":\"x25\",\"v23\":\"x23\"}},\"modelConfig\":{\"modelId\":\"glm-test-1\",\"basePath\":\"/tmp/alice\",\"sourceSha256\":\"3b6a3b76a8d5bbf0e45b83f2d44772a0a6aa9a15bf382cee22cbdc8f59d55522\",\"sourcePath\":\"alice-1234\",\"sourceType\":\"ST_DP\",\"dpSourceMeta\":{\"dmHost\":\"127.0.0.1:8071\",\"tls_config\":{\"certificatePath\":\"kusciaapi-server.crt\",\"privateKeyPath\":\"kusciaapi-server.key\",\"caFilePath\":\"ca.crt\"}}},\"featureSourceConfig\":{\"httpOpts\":{\"endpoint\":\"alice_ep\"}},\"channelDesc\":{\"protocol\":\"http\"}},\"bob\":{\"serverConfig\":{\"featureMapping\":{\"v6\":\"x6\",\"v7\":\"x7\",\"v8\":\"x8\",\"v9\":\"x9\",\"v10\":\"x10\"}},\"modelConfig\":{\"modelId\":\"glm-test-1\",\"basePath\":\"/tmp/bob\",\"sourceSha256\":\"330192f3a51f9498dd882478bfe08a06501e2ed4aa2543a0fb586180925eb309\",\"sourcePath\":\"alice-1234\",\"sourceType\":\"ST_DP\"},\"featureSourceConfig\":{\"httpOpts\":{\"endpoint\":\"bob_ep\"}},\"channelDesc\":{\"protocol\":\"http\"}}},\"predictorParties\":[\"alice\"]}", + "cluster_def": "{\"parties\":[{\"name\":\"alice\",\"role\":\"\",\"services\":[{\"portName\":\"service\",\"endpoints\":[\"kd-1-service.alice.svc:53508\"]},{\"portName\":\"internal\",\"endpoints\":[\"kd-1-internal.alice.svc:53510\"]},{\"portName\":\"brpc-builtin\",\"endpoints\":[\"kd-1-brpc-builtin.alice.svc:53511\"]},{\"portName\":\"communication\",\"endpoints\":[\"kd-1-communication.alice.svc\"]}]},{\"name\":\"bob\",\"role\":\"\",\"services\":[{\"portName\":\"brpc-builtin\",\"endpoints\":[\"kd-1-brpc-builtin.bob.svc:53511\"]},{\"portName\":\"service\",\"endpoints\":[\"kd-1-service.bob.svc:53508\"]},{\"portName\":\"internal\",\"endpoints\":[\"kd-1-internal.bob.svc:53510\"]},{\"portName\":\"communication\",\"endpoints\":[\"kd-1-communication.bob.svc\"]}]}],\"selfPartyIdx\":0,\"selfEndpointIdx\":0}", + "allocated_ports": "{\"ports\":[{\"name\":\"service\",\"port\":53509,\"scope\":\"Domain\",\"protocol\":\"HTTP\"},{\"name\":\"communication\",\"port\":53508,\"scope\":\"Cluster\",\"protocol\":\"HTTP\"},{\"name\":\"internal\",\"port\":53510,\"scope\":\"Domain\",\"protocol\":\"HTTP\"},{\"name\":\"brpc-builtin\",\"port\":53511,\"scope\":\"Domain\",\"protocol\":\"HTTP\"}]}" +} +)JSON"); + + KusciaConfigParser config_parser(tmpfile.fname()); + auto server_config = config_parser.server_config(); + EXPECT_EQ("0.0.0.0", server_config.host()); + EXPECT_EQ(53509, server_config.service_port()); + EXPECT_EQ(53508, server_config.communication_port()); + } + // bob + { + butil::TempFile tmpfile; + tmpfile.save(1 + R"JSON( +{ + "serving_id": "kd-1", + "input_config": "{\"partyConfigs\":{\"alice\":{\"serverConfig\":{\"featureMapping\":{\"v24\":\"x24\",\"v22\":\"x22\",\"v21\":\"x21\",\"v25\":\"x25\",\"v23\":\"x23\"}},\"modelConfig\":{\"modelId\":\"glm-test-1\",\"basePath\":\"/tmp/alice\",\"sourceSha256\":\"3b6a3b76a8d5bbf0e45b83f2d44772a0a6aa9a15bf382cee22cbdc8f59d55522\",\"sourcePath\":\"alice-1234\",\"sourceType\":\"ST_DP\",\"dpSourceMeta\":{\"dmHost\":\"127.0.0.1:8071\",\"tls_config\":{\"certificatePath\":\"kusciaapi-server.crt\",\"privateKeyPath\":\"kusciaapi-server.key\",\"caFilePath\":\"ca.crt\"}}},\"featureSourceConfig\":{\"httpOpts\":{\"endpoint\":\"alice_ep\"}},\"channelDesc\":{\"protocol\":\"http\"}},\"bob\":{\"serverConfig\":{\"featureMapping\":{\"v6\":\"x6\",\"v7\":\"x7\",\"v8\":\"x8\",\"v9\":\"x9\",\"v10\":\"x10\"}},\"modelConfig\":{\"modelId\":\"glm-test-1\",\"basePath\":\"/tmp/bob\",\"sourceSha256\":\"330192f3a51f9498dd882478bfe08a06501e2ed4aa2543a0fb586180925eb309\",\"sourcePath\":\"alice-1234\",\"sourceType\":\"ST_DP\"},\"featureSourceConfig\":{\"httpOpts\":{\"endpoint\":\"bob_ep\"}},\"channelDesc\":{\"protocol\":\"http\"}}},\"predictorParties\":[\"alice\"]}", + "cluster_def": "{\"parties\":[{\"name\":\"alice\",\"role\":\"\",\"services\":[{\"portName\":\"service\",\"endpoints\":[\"kd-1-service.alice.svc:53508\"]},{\"portName\":\"internal\",\"endpoints\":[\"kd-1-internal.alice.svc:53510\"]},{\"portName\":\"brpc-builtin\",\"endpoints\":[\"kd-1-brpc-builtin.alice.svc:53511\"]},{\"portName\":\"communication\",\"endpoints\":[\"kd-1-communication.alice.svc\"]}]},{\"name\":\"bob\",\"role\":\"\",\"services\":[{\"portName\":\"brpc-builtin\",\"endpoints\":[\"kd-1-brpc-builtin.bob.svc:53511\"]},{\"portName\":\"service\",\"endpoints\":[\"kd-1-service.bob.svc:53508\"]},{\"portName\":\"internal\",\"endpoints\":[\"kd-1-internal.bob.svc:53510\"]},{\"portName\":\"communication\",\"endpoints\":[\"kd-1-communication.bob.svc\"]}]}],\"selfPartyIdx\":1,\"selfEndpointIdx\":0}", + "allocated_ports": "{\"ports\":[{\"name\":\"service\",\"port\":53509,\"scope\":\"Domain\",\"protocol\":\"HTTP\"},{\"name\":\"communication\",\"port\":53508,\"scope\":\"Cluster\",\"protocol\":\"HTTP\"},{\"name\":\"internal\",\"port\":53510,\"scope\":\"Domain\",\"protocol\":\"HTTP\"},{\"name\":\"brpc-builtin\",\"port\":53511,\"scope\":\"Domain\",\"protocol\":\"HTTP\"}]}" +} +)JSON"); + + KusciaConfigParser config_parser(tmpfile.fname()); + auto server_config = config_parser.server_config(); + EXPECT_EQ("0.0.0.0", server_config.host()); + EXPECT_EQ(0, server_config.service_port()); + EXPECT_EQ(53508, server_config.communication_port()); + } +} + // TODO: exception case } // namespace secretflow::serving::kuscia diff --git a/secretflow_serving/server/kuscia/serving_config.proto b/secretflow_serving/server/kuscia/serving_config.proto index c3f7cf2..4d0914a 100644 --- a/secretflow_serving/server/kuscia/serving_config.proto +++ b/secretflow_serving/server/kuscia/serving_config.proto @@ -33,4 +33,8 @@ message KusciaServingConfig { // Key: Party id // Value: Party config map party_configs = 1; + + // Indicate which parties can initiate the prediction + // Default: All + repeated string predictor_parties = 2; } diff --git a/secretflow_serving/tools/inferencer/example/normal/alice/serving.config b/secretflow_serving/tools/inferencer/example/normal/alice/serving.config index ca1069d..730a3dc 100644 --- a/secretflow_serving/tools/inferencer/example/normal/alice/serving.config +++ b/secretflow_serving/tools/inferencer/example/normal/alice/serving.config @@ -7,7 +7,7 @@ "modelConf": { "modelId": "glm-test-1", "basePath": "./tmp/alice", - "sourcePath": ".ci/test_data/bin_onehot_glm/alice/s_model.tar.gz", + "sourcePath": ".ci/test_data/glm/alice/s_model.tar.gz", "sourceType": "ST_FILE" }, "clusterConf": { @@ -36,7 +36,7 @@ }, "featureSourceConf": { "streamingOpts": { - "file_path": ".ci/test_data/bin_onehot_glm/alice/alice.csv", + "file_path": ".ci/test_data/glm/alice/alice.csv", "id_name": "id", } } diff --git a/secretflow_serving/tools/inferencer/example/normal/bob/serving.config b/secretflow_serving/tools/inferencer/example/normal/bob/serving.config index 2b30ef2..0ba87c5 100644 --- a/secretflow_serving/tools/inferencer/example/normal/bob/serving.config +++ b/secretflow_serving/tools/inferencer/example/normal/bob/serving.config @@ -7,7 +7,7 @@ "modelConf": { "modelId": "glm-test-1", "basePath": "./tmp/bob", - "sourcePath": ".ci/test_data/bin_onehot_glm/bob/s_model.tar.gz", + "sourcePath": ".ci/test_data/glm/bob/s_model.tar.gz", "sourceType": "ST_FILE" }, "clusterConf": { @@ -36,7 +36,7 @@ }, "featureSourceConf": { "streamingOpts": { - "file_path": ".ci/test_data/bin_onehot_glm/bob/bob.csv", + "file_path": ".ci/test_data/glm/bob/bob.csv", "id_name": "id", } } diff --git a/secretflow_serving/tools/inferencer/example/one_party_no_feature/alice/serving.config b/secretflow_serving/tools/inferencer/example/one_party_no_feature/alice/serving.config index 03d3637..5a18ea5 100644 --- a/secretflow_serving/tools/inferencer/example/one_party_no_feature/alice/serving.config +++ b/secretflow_serving/tools/inferencer/example/one_party_no_feature/alice/serving.config @@ -5,9 +5,9 @@ "communicationPort": "8110", }, "modelConf": { - "modelId": "glm-test-1", + "modelId": "sgd-test", "basePath": "./tmp/alice", - "sourcePath": ".ci/test_data/bin_onehot_glm_alice_no_feature/alice/s_model.tar.gz", + "sourcePath": ".ci/test_data/fetures_in_one_party/sgd/alice/s_model.tar.gz", "sourceType": "ST_FILE" }, "clusterConf": { diff --git a/secretflow_serving/tools/inferencer/example/one_party_no_feature/bob/serving.config b/secretflow_serving/tools/inferencer/example/one_party_no_feature/bob/serving.config index c365fd4..6436fbc 100644 --- a/secretflow_serving/tools/inferencer/example/one_party_no_feature/bob/serving.config +++ b/secretflow_serving/tools/inferencer/example/one_party_no_feature/bob/serving.config @@ -5,9 +5,9 @@ "communicationPort": "8111", }, "modelConf": { - "modelId": "glm-test-1", + "modelId": "sgd-test", "basePath": "./tmp/bob", - "sourcePath": ".ci/test_data/bin_onehot_glm_alice_no_feature/bob/s_model.tar.gz", + "sourcePath": ".ci/test_data/fetures_in_one_party/sgd/bob/s_model.tar.gz", "sourceType": "ST_FILE" }, "clusterConf": { @@ -36,7 +36,7 @@ }, "featureSourceConf": { "streamingOpts": { - "file_path": ".ci/test_data/bin_onehot_glm_alice_no_feature/bob/bob.csv", + "file_path": ".ci/test_data/fetures_in_one_party/sgd/bob/bob.csv", "id_name": "id", } }