1 of 68

2 of 68

Centralized Learning

💻

Client

🏫

Server

🏦

Server

🏥

Server

3 of 68

Centralized Learning

💻

Client

🏫

Server

🏦

Server

🏥

Server

📘

📕

📗

4 of 68

Centralized Learning

💻

Client

🏫

Server

🏦

Server

🏥

Server

📚

📘

📕

📗

5 of 68

Data Privacy Issues

💻

Client

🏫

Server

🏦

Server

🏥

Server

📚

📘

🚫

📕

🚫

📗

🚫

6 of 68

“Move data to computation”

💻

Client

🏫

Server

🏦

Server

🏥

Server

📚

📘

📕

📗

7 of 68

“Move computation to data”

💻

Client

🏫

Server

🏦

Server

🏥

Server

📘

📕

📗

8 of 68

Federated Learning

💻

Client

🏫

Server

🏦

Server

🏥

Server

📘

🚫

📕

🚫

📗

🚫

📊📈

9 of 68

Client & Servers

💻

Client

🏫

Server

🏦

Server

🏥

Server

10 of 68

Client & Servers - Data

💻

Client

🏫

Server

🏦

Server

🏥

Server

📦⚙️

📦⚙️

📦⚙️

11 of 68

Client & Servers - Address

💻

Client

🏫

Server

🏦

Server

🏥

Server

📦⚙️

📦⚙️

📦⚙️

🪧

🔵

🪧

🟠

🪧

🟢

12 of 68

Client & Servers - Connection

💻

Client

🏫

Server

🏦

Server

🏥

Server

📦⚙️

📦⚙️

📦⚙️

📊📈

🪧

🔵

🪧

🟠

🪧

🟢

13 of 68

Server & Clients - Reverse

💻

Server

🏫

Client

🏦

Client

🏥

Client

📦⚙️

📦⚙️

📦⚙️

📊📈

🪧

🔴

14 of 68

Server & Clients - Reverse

🏢

Server

📱

Client

📱

Client

📱

Client

📦⚙️

📦⚙️

📦⚙️

📊📈

🪧

🔴

15 of 68

Workflow

💻

Server

🏫

Client

🏦

Client

🏥

Client

📗

📦

📙

📦

📘

📦

16 of 68

Step 1: Model Initialization

💻

Server

🏫

Client

🏦

Client

🏥

Client

📗

📦

📙

📦

📘

📦

🔴

⚙️

17 of 68

Step 2: Send Global Model

💻

Server

🏫

Client

🏦

Client

🏥

Client

📗

📦

📙

📦

📘

📦

🔴

⚙️

🔴

⚙️

🔴

⚙️

🔴

⚙️

18 of 68

Step 3: Local Client Training

💻

Server

🏫

Client

🏦

Client

🏥

Client

📗

📦

📙

📦

📘

📦

🔴

⚙️

🔴

⚙️

🔴

⚙️

19 of 68

Step 3: Local Models

💻

Server

🏫

Client

🏦

Client

🏥

Client

📗

📦

📙

📦

📘

📦

🔵

⚙️

🟠

⚙️

🟢

⚙️

20 of 68

Step 4: Send Local Models

💻

Server

🏫

Client

🏦

Client

🏥

Client

📗

📦

📙

📦

📘

📦

🔵

⚙️

🟠

⚙️

🟢

⚙️

21 of 68

Step 5: Model Aggregation

💻

Server

🏫

Client

🏦

Client

🏥

Client

📗

📦

📙

📦

📘

📦

🔵

⚙️

🟠

⚙️

🟢

⚙️

🟣

⚙️

22 of 68

Step 5: New Global Model

💻

Server

🏫

Client

🏦

Client

🏥

Client

📗

📦

📙

📦

📘

📦

🔴

⚙️

23 of 68

Iterate until Convergence

💻

Server

🏫

Client

🏦

Client

🏥

Client

📗

📦

📙

📦

📘

📦

🔴

⚙️

🔴

⚙️

🔴

⚙️

🔴

⚙️

♻️

24 of 68

Test case

🌸

⚙️

🌍

Client

📑

🧬

🔵

💻

Server

🌏

Client

🌏

Client

📊📈

📑

🧬

🟠

📑

🧬

🟢

📍

📍

📍

25 of 68

Network locations

🌸

⚙️

🌍

Lisbon

📑

🧬

🔵

💻

Lisbon

🌏

Guangzhou

🌏

Macau

📊📈

📑

🧬

🟠

📑

🧬

🟢

📍

📍

📍

26 of 68

Detailed Workflow

💻

Flower.Server

🖥️

Flower.Client

📘

📦

🪧

27 of 68

Detailed Workflow: Strategy

🖥️

Flower.Client

📘

📦

💻

Flower.Server

🪧

strategy.Fed*(...)

28 of 68

Detailed Workflow: Strategies

🖥️

Flower.Client

📘

📦

💻

Flower.Server

🪧

strategy.Fed*(...)

strategy.FedAdam(...)

strategy.FedMedian(...)

strategy.FedAdagrad(...)

strategy.FedAvg(...)

29 of 68

Detailed Workflow: Strategy Options

🖥️

Flower.Client

📘

📦

💻

Flower.Server

🪧

strategy.FedAvg(options)

30 of 68

Detailed Workflow: Strategy Client Options

🖥️

Flower.Client

📘

📦

💻

Flower.Server

🪧

fraction_evaluate

min_fit_clients

min_evaluate_clients

min_available_clients

fraction_fit

strategy.FedAvg(options)

31 of 68

Detailed Workflow: Strategy Function Options

🖥️

Flower.Client

📘

📦

💻

Flower.Server

🪧

on_fit_config_fn

on_evaluate_config_fn

fit_metrics_aggregation_fn

evaluate_metrics_aggregation_fn

evaluate_fn

strategy.FedAvg(options)

32 of 68

Detailed Workflow: Start Server

🖥️

Flower.Client

📘

📦

💻

Flower.Server

🪧

🟠

strategy.FedAvg(options)

server.start_server(server_address,strategy)

33 of 68

Detailed Workflow: Start Client

🖥️

Flower.Client

📘

📦

💻

Flower.Server

🪧

🟠

client.start_client(server_address)

34 of 68

Get Initial Model Parameters

🖥️

Flower.Client

📘

📦

💻

Flower.Server

🪧

🟠

⚙️

⚙️

35 of 68

Get Initial Model Parameters

🖥️

Flower.Client

📘

📦

💻

Flower.Server

🪧

🟠

initialize_parameters(model)

⚙️

⚙️

36 of 68

Get Initial Model Parameters

🖥️

Flower.Client

📘

📦

💻

Flower.Server

🪧

🟠

initialize_parameters(model)

🔴

⚙️

⚙️

37 of 68

Federated Training

🖥️

Flower.Client

📘

📦

💻

Flower.Server

🪧

🟠

🔴

⚙️

get_parameters(model)

⚙️

38 of 68

Federated Training

🖥️

Flower.Client

📘

📦

💻

Flower.Server

🪧

🟠

🔴

⚙️

configure_fit(params)

get_parameters(model)

⚙️

39 of 68

Federated Training

🖥️

Flower.Client

📘

📦

💻

Flower.Server

🪧

🟠

🔴

⚙️

configure_fit(params)

get_parameters(model)

⚙️

40 of 68

Federated Training

🖥️

Flower.Client

📘

📦

💻

Flower.Server

🪧

🟠

🔴

⚙️

fit(params,config)

⚙️

41 of 68

Federated Training

🖥️

Flower.Client

📘

📦

💻

Flower.Server

🪧

🟠

🔴

⚙️

fit(params,config)

🔴

⚙️

set_parameters(model,params)

42 of 68

Federated Training

🖥️

Flower.Client

📘

📦

💻

Flower.Server

🪧

🟠

🔴

⚙️

fit(params,config)

🔵

⚙️

set_parameters(model,params)

train(model,config)

43 of 68

Federated Training

🖥️

Flower.Client

📘

📦

💻

Flower.Server

🪧

🟠

🔴

⚙️

fit(params,config)

🔵

⚙️

get_parameters(model)

44 of 68

Federated Training

🖥️

Flower.Client

📘

📦

💻

Flower.Server

🪧

🟠

🔴

⚙️

fit(params,config)

🔵

⚙️

get_parameters(model)

45 of 68

Federated Training

🖥️

Flower.Client

📘

📦

💻

Flower.Server

🪧

🟠

aggregate_fit(params,n_examples,metrics)

🔵

⚙️

🔴

⚙️

46 of 68

Federated Training

🖥️

Flower.Client

📘

📦

💻

Flower.Server

🪧

🟠

🔵

⚙️

🟡

⚙️

aggregate_fit(params,n_examples,metrics)

47 of 68

Centralized Evaluation

🖥️

Flower.Client

📘

📦

💻

Flower.Server

🪧

🟠

evaluate(params,config)

🔵

⚙️

🟡

⚙️

48 of 68

Centralized Evaluation

🖥️

Flower.Client

📘

📦

💻

Flower.Server

🪧

🟠

evaluate(params,config)

🔵

⚙️

🟡

⚙️

📙

📦

📋

🔶

49 of 68

Federated Evaluation

🖥️

Flower.Client

📘

📦

💻

Flower.Server

🪧

🟠

🟡

⚙️

configure_evaluate(params)

🔵

⚙️

50 of 68

Federated Evaluation

🖥️

Flower.Client

📘

📦

💻

Flower.Server

🪧

🟠

🟡

⚙️

evaluate(params,config)

🔵

⚙️

test(model)

📋

🔷

51 of 68

Federated Evaluation

🖥️

Flower.Client

📘

📦

💻

Flower.Server

🪧

🟠

aggregate_evaluate(loss,n_examples,metrics)

🔵

⚙️

🟡

⚙️

📋

🔶

📋

🔷

52 of 68

Workflow

aggregate_fit()

evaluate()

configure_evaluate()

aggregate_evaluate()

set_parameters()

train()

get_parameters()

evaluate()

test()

Fed*()

start_server()

Server

initialize_parameters()

Clients

get_parameters()

configure_fit()

start_client()

fit()

# rounds

53 of 68

Polygenic Risk Scores

54 of 68

Covariates

55 of 68

Classification

56 of 68

Logistic function

57 of 68

Logistic function: midpoint

58 of 68

Logistic function: steepness

59 of 68

Logistic function: steepness

60 of 68

Logistic function: parameters

61 of 68

Country #1 Data

62 of 68

Country #2 Data

63 of 68

Country #3 Data

64 of 68

Data distribution

65 of 68

Final Model

66 of 68

Final Model

67 of 68

Confusion matrix

68 of 68

Thank you for listening