Outros métodos de compressão para Aprendizagem Federada

Aug 18 2020

Percebi que o método de compressão Gradient Quantization já está implementado no framework TFF. E quanto aos métodos de compressão não tradicionais em que selecionamos um submodelo eliminando algumas partes do modelo global? Encontrei o método de compressão "Desistência Federada" no artigo "Expandindo o Alcance da Aprendizagem Federada pela Redução dos Requisitos de Recursos do Cliente" (https://arxiv.org/abs/1812.07210) Alguma ideia se o método Federated Dropout já é compatível com o Tensorflow Federated. Se não, alguma ideia de como implementá-lo (a ideia principal do método é descartar uma porcentagem fixa das ativações e filtros no modelo global para trocar e treinar um submodelo menor)?

Respostas

2 JakubKonecny Aug 18 2020 at 19:34

Atualmente, não há implementação dessa ideia disponível na base de código da TFF.

Mas aqui está um esboço de como você poderia fazer isso, recomendo começar examples/simple_fedavg

  1. Modifique o nível superior build_federated_averaging_processpara aceitar dois model_fns - um server_model_fnpara o modelo global, um client_model_fnpara a estrutura de submodelo menor realmente treinada nos clientes.
  2. Modifique build_server_broadcast_messagepara extrair apenas o submodelo relevante do server_state.model_weights. Este seria o mapeamento do modelo de servidor para o modelo de cliente.
  3. O client_updatepode realmente não precisar ser alterado (não tenho 100% de certeza), contanto que apenas o client_model_fnseja fornecido de client_update_fn.
  4. Modificar server_update- weights_deltaserá a atualização do submodelo do cliente, portanto, você precisará mapeá-lo de volta para o modelo global maior.

Em geral, as etapas 2 e 4 são complicadas, pois dependem não apenas de quais camadas estão em um modelo, mas também de como elas estão conectadas. Portanto, será difícil criar uma solução geral fácil de usar, mas não deve haver problema em escrevê-la para uma estrutura de modelo específica que você conhece com antecedência.