-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfl_uml.txt
115 lines (104 loc) · 2.14 KB
/
fl_uml.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
@startuml
package src.task {
class Net {
forward()
_get_weights()
_set_weights()
_train_local()
_test()
__init__()
conv1
pool
conv2
fc1
fc2
fc3
}
}
package src.zkp {
class AggregationSetup {
setup()
_export_model()
_setup_run_args()
__init__()
circuit
model_path
compiled_model_path
pk_path
vk_path
settings_path
}
class AggregationProver {
generate_witness()
prove()
__init__()
compiled_model_path
pk_path
}
class AggregationVerifier {
verify()
__init__()
settings_path
vk_path
}
class AggregateModel {
__init__()
forward()
}
class FaultyAggregateModel {
__init__()
forward()
}
AggregationSetup o-- AggregateModel
AggregationSetup o-- FaultyAggregateModel
AggregationProver ..left> AggregationSetup : <<uses>>
AggregationVerifier ..right> AggregationSetup : <<uses>>
}
package src.blockchain_api {
class BlockchainAPI {
invoke()
query()
__init__()
base_url
}
}
package src.client_app {
class FlowerClient {
fit()
evaluate()
_verify_inputs()
_submit_client_data()
__init__()
net
trainloader
valloader
local_epochs
lr
device
client_state
api
}
FlowerClient *-up- Net
FlowerClient o-up- BlockchainAPI
FlowerClient *-- AggregationVerifier
}
package src.strategy {
class BlockchainStrategy {
aggregate_fit()
_verify_local_models()
_submit_aggregated_model()
_save_client_data()
_save_aggregated_weights()
__init__()
fraction_fit
fraction_evaluate
min_available_clients
evaluate_metrics_aggregation_fn
initial_parameters
on_fit_config_fn
num_rounds
}
BlockchainStrategy o-up- BlockchainAPI
BlockchainStrategy *-- AggregationProver
}
@enduml