फेडरेटेड लर्निंग के लिए अन्य संपीड़न विधियां
मैंने देखा कि ग्रेडिएंट क्वांटिज़ेशन कंप्रेशन विधि पहले से ही TFF फ्रेमवर्क में लागू है। गैर-पारंपरिक संपीड़न विधियों के बारे में कैसे हम वैश्विक मॉडल के कुछ हिस्सों को गिराकर एक उप-मॉडल का चयन करते हैं? मैं "फेडरेटेड ड्रॉपआउट" संपीड़न विधि में आया हूं "ग्राहक संसाधन आवश्यकताओं को कम करके फेडरेटेड लर्निंग के पहुंच का विस्तार करना" (https://arxiv.org/abs/1812.07210) का है। किसी भी विचार अगर Federated Dropout विधि पहले से ही Tensorflow Federated में समर्थित है। यदि नहीं, तो इसे लागू करने के तरीके के बारे में कोई भी जानकारी (विधि का मुख्य विचार एक छोटे उप-मॉडल का आदान-प्रदान और प्रशिक्षण के लिए वैश्विक मॉडल में सक्रियण और फ़िल्टर का एक निश्चित प्रतिशत छोड़ रहा है)?
जवाब
वर्तमान में, TFF कोड आधार में उपलब्ध इस विचार का कोई कार्यान्वयन नहीं है।
लेकिन यहां एक रूपरेखा है कि आप इसे कैसे कर सकते हैं, मैं इसे शुरू करने की सलाह देता हूं examples/simple_fedavg
- build_federated_averaging_processदो-
model_fn
एस को स्वीकार करने के लिए शीर्ष-स्तर को संशोधित करें - एक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. मुश्किल होते हैं, क्योंकि वे न केवल यह निर्भर करते हैं कि एक मॉडल में क्या परतें हैं, बल्कि वे कैसे जुड़े हुए हैं। इसलिए सामान्य समाधान का उपयोग करना आसान बनाना कठिन होगा, लेकिन एक विशिष्ट मॉडल संरचना जिसे आप पहले से जानते हैं, के लिए इन्हें लिखना ठीक होगा।