Flower 1.0으로 업그레이드¶
참고
This guide is for users who have already worked with Flower 0.x and want to upgrade to Flower 1.0. Newer versions of Flower (1.13 and later) are based on a new architecture and not covered in this guide. After upgrading Flower 0.x projects to Flower 1.0, please refer to Upgrade to Flower 1.13 to make your project compatible with the lastest version of Flower.
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
채널을 이용하세요.