Skip to content

Releases: hjc2/asfl

Fed Adaptive + Label Variance

Choose a tag to compare

@hjc2 hjc2 released this 28 Oct 00:48
6da23db

What's Changed

  • IID vs Dirichlet Selection
  • Label Variance weighted averaging
  • Fed Adaptive by @hjc2 in #12

FedLoss FedAcc FedFuzz - Lab Runs

Choose a tag to compare

@hjc2 hjc2 released this 16 Oct 14:33

FedLoss - weighted averaging based on loss
FedAcc - weighted averaging based on local accuracy
FedFuzz - Fuzzy aggregation

Scripts to generate graphs

Lab Machine capable requirements list

Improved server.app for scaling more strats

File / Data archive of test runs

Updated README

Uneven Partition

Choose a tag to compare

@hjc2 hjc2 released this 13 Sep 19:43

Now the partitioning uses a Dirichlet Partitioner

Thus, the samples are no longer evenly distributed among clients

Moving towards adaptive aggregation

Information gathered

  • samples per client

  • time since last update

  • frequency of update

  • fuzzy logic to actually make these work

  • label variance?

  • freshness?

Scripts

Choose a tag to compare

@hjc2 hjc2 released this 13 Sep 19:05
8e71ce7

Scripts to grab output and make it a nice CSV for chart generation.

grabs all extra aggregated metrics and formats to CSV with round #

image

frequency

Choose a tag to compare

@hjc2 hjc2 released this 13 Sep 15:08

using the data tracking what clients were in what rounds

implement aggregation based on the frequency the clients are included.

last_appearance

Choose a tag to compare

@hjc2 hjc2 released this 13 Sep 14:39
dd0f6c9

server strategy now tracks which clients were included in what rounds

this is used to track how long it has been since the client has been included in a round

this is then used for adaptive aggregation

to do:
fuzzy logic
metric based on how many times included

Stable Custom

Choose a tag to compare

@hjc2 hjc2 released this 12 Sep 19:14

Custom still performs FedAvg

Added documentation and removed the main bugs that would cause it possibly to crash immediately.

0.3.0

Choose a tag to compare

@hjc2 hjc2 released this 12 Sep 16:59

place for adaptive aggregation is set up.

now I inherit from a base class for logging and vehicle selection purposes for both.

logging_afl.py is the base class for doing simulation of clients entering / exiting and calculating accuracy.

federal_avg.py is kinda the same, but i felt it was clearer to make a new one rather than use logging in case i change something.

federal_agg.py is where the adaptive aggregation will go

wrote some documentation, need to write a bit more.

Poisson Distribution + Accuracy Output

Choose a tag to compare

@hjc2 hjc2 released this 11 Sep 19:45

now i need to simulate my adaptive aggregation

INFO :      [SUMMARY]
INFO :      Run finished 2 round(s) in 41.46s
INFO :          History (loss, distributed):
INFO :                  round 1: 73.67386685477362
INFO :                  round 2: 73.6153356552124
INFO :          History (metrics, distributed, evaluate):
INFO :          {'accuracy': [(1, 0.099), (2, 0.1142)], 'count': [(1, 9), (2, 5)]}

FedAvg works

Choose a tag to compare

@hjc2 hjc2 released this 10 Sep 17:42

FedAvg Works

FedCustom set up - currently mirrors FedAvg

ran both on

4 server rounds
1 local epoch
2 nodes

running fedAvg Evaluation results - Loss: 283.7736226320267, Accuracy: 0.3456

running fedCustom Evaluation results - Loss: 280.06987047195435, Accuracy: 0.344