연합 학습을위한 기타 압축 방법
Gradient Quantization 압축 방법은 이미 TFF 프레임 워크에 구현되어 있습니다. 글로벌 모델의 일부를 삭제하여 하위 모델을 선택하는 비 전통적인 압축 방법은 어떻습니까? 필자는 "클라이언트 리소스 요구 사항을 줄임으로써 연합 학습의 범위 확장"이라는 논문에서 "Federated Dropout"압축 방법을 발견했습니다 (https://arxiv.org/abs/1812.07210). Federated Dropout 메서드가 Tensorflow Federated에서 이미 지원되는지 여부. 그렇지 않은 경우 구현 방법에 대한 통찰력이 있습니까 (방법의 주요 아이디어는 글로벌 모델에서 활성화 및 필터의 고정 비율을 삭제하여 더 작은 하위 모델을 교환하고 훈련시키는 것입니다)?
답변
2 JakubKonecny
현재 TFF 코드베이스에서는이 아이디어를 구현할 수 없습니다.
하지만 여기에 어떻게 할 수 있는지에 대한 개요가 있습니다. examples/simple_fedavg
- build_federated_averaging_process두 개의
model_fn
s 를 허용하도록 최상위 레벨 을 수정하십시오. 하나server_model_fn
는 글로벌 모델 용이고 다른 하나client_model_fn
는 클라이언트에서 실제로 훈련 된 더 작은 하위 모델 구조용입니다. - build_server_broadcast_message에서 관련 하위 모델 만 추출하도록 수정 합니다
server_state.model_weights
. 이것은 서버 모델에서 클라이언트 모델로의 매핑입니다. - 은 client_update실제로만큼 단지 (나는 확실히 100 % 아니다) 변경할 필요가 있습니다
client_model_fn
에서 제공됩니다 client_update_fn. - 수정 server_update-
weights_delta
클라이언트 하위 모델에 대한 업데이트이므로 더 큰 글로벌 모델에 다시 매핑해야합니다.
일반적으로 2 단계와 4 단계는 모델에 포함 된 레이어뿐만 아니라 연결 방법에 따라 달라지기 때문에 까다 롭습니다. 따라서 사용하기 쉬운 일반 솔루션을 만드는 것은 어렵지만 미리 알고있는 특정 모델 구조에 대해 작성하는 것이 좋습니다.