전략 사용하기¶
Flower allows full customization of the learning process through the Strategy
abstraction. A number of built-in strategies are provided in the core framework.
서버 측에서 Flower가 학습 과정을 조율하는 방식을 사용자 지정하는 방법에는 세 가지가 있습니다:
Use an existing strategy, for example,
FedAvg
콜백 함수로 기존 전략 사용자 지정
새로운 전략 구현
기존 전략 사용¶
Flower에는 여러 가지 인기 있는 연합 학습 전략이 기본으로 제공됩니다. 기본 제공 전략은 다음과 같이 인스턴스화할 수 있습니다:
import flwr as fl
strategy = fl.server.strategy.FedAvg()
fl.server.start_server(config=fl.server.ServerConfig(num_rounds=3), strategy=strategy)
This creates a strategy with all parameters left at their default values and passes it
to the start_server
function. It is usually recommended to adjust a few parameters
during instantiation:
import flwr as fl
strategy = fl.server.strategy.FedAvg(
fraction_fit=0.1, # Sample 10% of available clients for the next round
min_fit_clients=10, # Minimum number of clients to be sampled for the next round
min_available_clients=80, # Minimum number of clients that need to be connected to the server before a training round can start
)
fl.server.start_server(config=fl.server.ServerConfig(num_rounds=3), strategy=strategy)
콜백 함수로 기존 전략 사용자 지정¶
기존 전략은 동작을 사용자 지정하는 여러 가지 방법을 제공합니다. 콜백 함수를 사용하면 전략이 실행 중에 사용자가 제공한 코드를 호출할 수 있습니다.
클라이언트 적합성 및 클라이언트 평가 구성¶
The server can pass new configuration values to the client each round by providing a
function to on_fit_config_fn
. The provided function will be called by the strategy
and must return a dictionary of configuration key values pairs that will be sent to the
client. It must return a dictionary of arbitrary configuration values client.fit
and
client.evaluate
functions during each round of federated learning.
import flwr as fl
def get_on_fit_config_fn() -> Callable[[int], Dict[str, str]]:
"""Return a function which returns training configurations."""
def fit_config(server_round: int) -> Dict[str, str]:
"""Return a configuration with static batch size and (local) epochs."""
config = {
"learning_rate": str(0.001),
"batch_size": str(32),
}
return config
return fit_config
strategy = fl.server.strategy.FedAvg(
fraction_fit=0.1,
min_fit_clients=10,
min_available_clients=80,
on_fit_config_fn=get_on_fit_config_fn(),
)
fl.server.start_server(config=fl.server.ServerConfig(num_rounds=3), strategy=strategy)
The on_fit_config_fn
can be used to pass arbitrary configuration values from server
to client, and potentially change these values each round, for example, to adjust the
learning rate. The client will receive the dictionary returned by the
on_fit_config_fn
in its own client.fit()
function.
Similar to on_fit_config_fn
, there is also on_evaluate_config_fn
to customize
the configuration sent to client.evaluate()
서버 측 평가 구성¶
Server-side evaluation can be enabled by passing an evaluation function to
evaluate_fn
.
새로운 전략 구현¶
완전한 사용자 지정 전략을 작성하는 것은 조금 더 복잡하지만 유연성이 가장 뛰어납니다. 자세한 내용은 Implementing Strategies 가이드를 참조하세요.