Flower 1.0으로 업그레이드#
Flower 1.0이 출시되었습니다. 새로운 기능과 함께 Flower 1.0은 향후 성장을 위한 안정적인 기반을 제공합니다. Flower 0.19(및 다른 0.x 시리즈 릴리스)와 비교했을 때 기존 0.x 시리즈 프로젝트의 코드를 변경해야 하는 몇 가지 획기적인 변경 사항이 있습니다.
업데이트 설치#
다음은 pip 또는 Poetry를 사용하여 기존 설치를 Flower 1.0으로 업데이트하는 방법입니다:
pip: 설치할 때 ``-U``를 추가합니다.
python -m pip install -U flwr``(``start_server
및 ``start_client``를 사용하는 경우)python -m pip install -U 'flwr[simulation]'``(``start_simulation
사용 시)
Poetry:
pyproject.toml``에서 ``flwr
dependency을 업데이트한 다음 다시 설치하세요(``poetry 설치``를 실행하기 전에 ``rm poetry.lock``을 통해 ``poetry.lock``을 삭제하는 것을 잊지 마세요).flwr = "^1.0.0"``(``start_server
및start_client
사용 시)flwr = { version = "^1.0.0", extras = ["simulation"] }
(start_simulation
사용 시)
필수 변경 사항#
다음과 같은 주요 변경 사항에는 수동 업데이트가 필요합니다.
일반#
모든 전달인자를 위치 전달인자가 아닌 키워드 전달인자로 전달합니다. 다음은 예시입니다:
Flower 0.19 (위치 전달인자):
start_client("127.0.0.1:8080", FlowerClient())
Flower 1.0 (키워드 전달인자):
start_client(server_address="127.0.0.1:8080", client=FlowerClient())
클라이언트#
전략 / start_server
/ start_simulation
#
Dictionary 대신
ServerConfig``를 ``start_server
및 ``start_simulation``에 전달합니다. 다음은 예제입니다:Flower 0.19:
start_server(..., config={"num_rounds": 3, "round_timeout": 600.0}, ...)
Flower 1.0:
start_server(..., config=flwr.server.ServerConfig(num_rounds=3, round_timeout=600.0), ...)
``start_simulation``의 ``num_rounds=1``을 새로운 ``config=ServerConfig(…)``로 바꿉니다(이전 항목 참조)
‘start_server`` 호출에서
force_final_distributed_eval
매개변수를 제거합니다. 모든 클라이언트에 대한 분산 평가는 마지막 훈련 라운드 후 평가를 위해 모든 클라이언트를 샘플링하도록 전략을 구성하여 활성화할 수 있습니다.매개변수/ndarray 변환 함수의 이름을 바꿉니다:
parameters_to_weights
–>parameters_to_ndarrays
weights_to_parameters
–>ndarrays_to_parameters
전략 초기화: 전략이
fraction_fit
및fraction_evaluate``의 기본값에 의존하는 경우 ``fraction_fit
및fraction_evaluate``를 ``0.1``로 수동 설정합니다. 전략을 수동으로 생성하지 않는 프로젝트(전략 인스턴스를 전달하지 않고 ``start_server
또는start_simulation``을 호출하여)는 이제 ``fraction_fit
및 ``fraction_evaluate``를 ``0.1``로 설정하여 FedAvg를 수동으로 초기화해야 합니다.기본 제공 전략 매개변수의 이름을 바꿉니다(예:
FedAvg
):fraction_eval
–>fraction_evaluate
min_eval_clients
–>min_evaluate_clients
eval_fn
–>evaluate_fn
rnd``의 이름을 ``server_round``로 바꿉니다. 이는 여러 메서드 및 함수(예: ``configure_fit
,aggregate_fit
,configure_evaluate
,aggregate_evaluate
및evaluate_fn
)에 영향을 미칩니다.server_round
및 ``config``를 ``evaluate_fn``에 추가합니다:Flower 0.19:
def evaluate(parameters: NDArrays) -> Optional[Tuple[float, Dict[str, Scalar]]]:
Flower 1.0:
def evaluate(server_round: int, parameters: NDArrays, config: Dict[str, Scalar]) -> Optional[Tuple[float, Dict[str, Scalar]]]:
사용자 정의 전략#
매개변수
failures``의 유형이 ``List[BaseException]``에서 ``List[Union[Tuple[ClientProxy], FitRes], BaseException]]``(``aggregate_fit``에서) 및 ``List[Union[Tuple[ClientProxy], EvaluateRes], BaseException]]``(``aggregate_evaluate
)로 변경되었습니다이제
Strategy
메서드 ``evaluate``는 현재 federated 학습/평가 라운드를 첫 번째 파라미터로 받습니다:Flower 0.19:
def evaluate(self, parameters: Parameters) -> Optional[Tuple[float, Dict[str, Scalar]]]:
Flower 1.0:
def evaluate(self, server_round: int, parameters: Parameters) -> Optional[Tuple[float, Dict[str, Scalar]]]:
선택적 개선 사항#
위의 필수 변경 사항과 함께 방금 가능한 여러 가지 잠재적 개선 사항이 있습니다:
추가 도움말#
대부분의 공식 Flower code 예제 <https://github.com/adap/flower/tree/main/examples>`_는 이미 Flower 1.0으로 업데이트되어 있으며, Flower 1.0 API를 사용하기 위한 참고 자료로 사용할 수 있습니다. 더 궁금한 점이 있다면 ``플라워 슬랙 <https://flower.ai/join-slack/>`_에 가입하여 ``#questions
채널을 이용하세요.