Birleşik Öğrenme için diğer sıkıştırma yöntemleri
Gradient Quantization sıkıştırma yönteminin zaten TFF çerçevesinde uygulandığını fark ettim. Global modelin bazı kısımlarını çıkararak bir alt model seçtiğimiz geleneksel olmayan sıkıştırma yöntemlerine ne dersiniz? "Müşteri Kaynak Gereksinimlerini Azaltarak Federe Öğrenmenin Erişimini Genişletme" başlıklı belgede "Birleşik Bırakma" sıkıştırma yöntemine rastladım (https://arxiv.org/abs/1812.07210). Federated Dropout yönteminin Tensorflow Federated'da zaten desteklenip desteklenmediği konusunda herhangi bir fikir. Değilse, nasıl uygulanacağına dair herhangi bir kavrayış (yöntemin ana fikri, daha küçük bir alt modeli değiştirmek ve eğitmek için küresel modeldeki etkinleştirme ve filtrelerin sabit bir yüzdesini düşürmektir)?
Yanıtlar
Şu anda, TFF kod tabanında bu fikrin bir uygulaması yoktur.
Ama işte bunu nasıl yapabileceğinizin bir özeti, baştan başlamanızı tavsiye ederim examples/simple_fedavg
- Üst seviyeyi build_federated_averaging_processiki
model_fn
s'yi kabul edecek şekilde değiştirin - biriserver_model_fn
global model için, diğericlient_model_fn
ise istemciler üzerinde gerçekten eğitilmiş daha küçük alt model yapısı için. - Dosyasından build_server_broadcast_messageyalnızca ilgili alt modeli çıkarmak için değiştirin
server_state.model_weights
. Bu, sunucu modelinden istemci modeline eşleme olacaktır. - client_updateAslında sürece sadece (Emin% 100 değilim) değiştirilmesi gerekmeyebilir
client_model_fn
sağlanmaktadır client_update_fn. - Değiştir server_update-
weights_delta
istemci alt modelinin güncellemesi olacaktır, bu nedenle onu daha büyük global modelle eşleştirmeniz gerekecektir.
Genel olarak, 2. ve 4. adımlar, yalnızca bir modelde hangi katmanların olduğuna değil, aynı zamanda nasıl bağlandıklarına da bağlı olduklarından aldatıcıdır. Bu nedenle, kullanımı kolay bir genel çözüm oluşturmak zor olacaktır, ancak bunları önceden bildiğiniz belirli bir model yapısı için yazmakta sorun olmamalıdır.