연합 학습을위한 기타 압축 방법

Aug 18 2020

Gradient Quantization 압축 방법은 이미 TFF 프레임 워크에 구현되어 있습니다. 글로벌 모델의 일부를 삭제하여 하위 모델을 선택하는 비 전통적인 압축 방법은 어떻습니까? 필자는 "클라이언트 리소스 요구 사항을 줄임으로써 연합 학습의 범위 확장"이라는 논문에서 "Federated Dropout"압축 방법을 발견했습니다 (https://arxiv.org/abs/1812.07210). Federated Dropout 메서드가 Tensorflow Federated에서 이미 지원되는지 여부. 그렇지 않은 경우 구현 방법에 대한 통찰력이 있습니까 (방법의 주요 아이디어는 글로벌 모델에서 활성화 및 필터의 고정 비율을 삭제하여 더 작은 하위 모델을 교환하고 훈련시키는 것입니다)?

답변

2 JakubKonecny Aug 18 2020 at 19:34

현재 TFF 코드베이스에서는이 아이디어를 구현할 수 없습니다.

하지만 여기에 어떻게 할 수 있는지에 대한 개요가 있습니다. examples/simple_fedavg

  1. build_federated_averaging_process두 개의 model_fns 를 허용하도록 최상위 레벨 을 수정하십시오. 하나 server_model_fn는 글로벌 모델 용이고 다른 하나 client_model_fn는 클라이언트에서 실제로 훈련 된 더 작은 하위 모델 구조용입니다.
  2. build_server_broadcast_message에서 관련 하위 모델 만 추출하도록 수정 합니다 server_state.model_weights. 이것은 서버 모델에서 클라이언트 모델로의 매핑입니다.
  3. 은 client_update실제로만큼 단지 (나는 확실히 100 % 아니다) 변경할 필요가 있습니다 client_model_fn에서 제공됩니다 client_update_fn.
  4. 수정 server_update- weights_delta클라이언트 하위 모델에 대한 업데이트이므로 더 큰 글로벌 모델에 다시 매핑해야합니다.

일반적으로 2 단계와 4 단계는 모델에 포함 된 레이어뿐만 아니라 연결 방법에 따라 달라지기 때문에 까다 롭습니다. 따라서 사용하기 쉬운 일반 솔루션을 만드는 것은 어렵지만 미리 알고있는 특정 모델 구조에 대해 작성하는 것이 좋습니다.