Altri metodi di compressione per Federated Learning
Ho notato che il metodo di compressione Gradient Quantization è già implementato nel framework TFF. Che ne dici di metodi di compressione non tradizionali in cui selezioniamo un sottomodello eliminando alcune parti del modello globale? Mi sono imbattuto nel metodo di compressione "Federated Dropout" nel documento "Expanding the Reach of Federated Learning by Reducing Client Resource Requirements" (https://arxiv.org/abs/1812.07210). Qualche idea se il metodo Federated Dropout è già supportato in Tensorflow Federated. In caso negativo, qualche intuizione su come implementarlo (l'idea principale del metodo è eliminare una percentuale fissa delle attivazioni e dei filtri nel modello globale per scambiare e addestrare un sottomodello più piccolo)?
Risposte
Attualmente, non è disponibile alcuna implementazione di questa idea nel codice di base TFF.
Ma ecco uno schema di come potresti farlo, ti consiglio di iniziare examples/simple_fedavg
- Modifica il livello superiore build_federated_averaging_processper accettare due
model_fn
s: unoserver_model_fn
per il modello globale, unoclient_model_fn
per la struttura del sottomodello più piccola effettivamente addestrata sui client. - Modifica build_server_broadcast_messageper estrarre solo il sottomodello pertinente dal file
server_state.model_weights
. Questa sarebbe la mappatura dal modello server al modello client. - La client_updatenon può effettivamente bisogno di essere cambiato (non sono sicuro al 100%), a condizione che solo il
client_model_fn
è fornito da client_update_fn. - Modifica server_update: l'
weights_delta
aggiornamento sarà il sottomodello del client, quindi sarà necessario mapparlo di nuovo al modello globale più grande.
In generale, i passaggi 2. e 4. sono complicati, poiché dipendono non solo dai livelli presenti in un modello, ma anche dal modo in cui sono collegati. Quindi sarà difficile creare una soluzione generale facile da usare, ma dovrebbe essere corretto scriverle per una struttura di modello specifica che conosci in anticipo.