इस पेज का अनुवाद Cloud Translation API से किया गया है.
Switch to English

लर्निंग फेडरेटेड

अवलोकन

यह दस्तावेज़ ऐसे इंटरफेस का परिचय देता है जो कि संघ के शिक्षण कार्यों की सुविधा प्रदान करता है, जैसे कि फ़ेडरेटेड ट्रेनिंग या मौजूदा मशीन लर्निंग मॉडल के साथ मूल्यांकन जो टेन्सरफ्लो में लागू किया गया है। इन इंटरफेस को डिजाइन करने में, हमारा प्राथमिक लक्ष्य फ़ेडरेटेड लर्निंग के साथ प्रयोग करना संभव करना था, बिना यह जानने की आवश्यकता के कि यह हुड के तहत कैसे काम करता है, और विभिन्न मौजूदा मॉडल और डेटा पर कार्यान्वित फ़ेडरेटेड लर्निंग एल्गोरिदम का मूल्यांकन करना है। हम आपको मंच पर वापस योगदान करने के लिए प्रोत्साहित करते हैं। TFF को व्यापकता और रचनाशीलता को ध्यान में रखते हुए तैयार किया गया है, और हम योगदान का स्वागत करते हैं; हम यह देखने के लिए उत्साहित हैं कि आप क्या कर रहे हैं!

इस परत द्वारा दिए गए इंटरफेस में निम्नलिखित तीन प्रमुख भाग होते हैं:

  • मॉडल । कक्षाएं और सहायक कार्य जो आपको TFF के उपयोग के लिए अपने मौजूदा मॉडल को लपेटने की अनुमति देते हैं। एक मॉडल को लपेटना एक रैपिंग फ़ंक्शन (जैसे, tff.learning.from_keras_model ) को कॉल करने या पूर्ण रूप से tff.learning.Model के लिए tff.learning.Model इंटरफ़ेस के उपवर्ग को परिभाषित करने के रूप में सरल हो सकता है।

  • संघीय संगणना बिल्डर्स । हेल्पर फ़ंक्शंस जो आपके मौजूदा मॉडल का उपयोग करके प्रशिक्षण या मूल्यांकन के लिए संघबद्ध संगणना का निर्माण करते हैं।

  • डेटासेट । फ़ेडरेटेड लर्निंग परिदृश्यों का उपयोग करने के लिए डेटा का डिब्बाबंद संग्रह जिसे आप डाउनलोड कर सकते हैं और पाइथन में पहुंच सकते हैं। हालांकि संघबद्ध शिक्षा को विकेन्द्रीकृत डेटा के साथ उपयोग के लिए डिज़ाइन किया गया है जिसे केवल एक केंद्रीकृत स्थान पर डाउनलोड नहीं किया जा सकता है, अनुसंधान और विकास चरणों में अक्सर डेटा का उपयोग करके प्रारंभिक प्रयोगों का संचालन करना सुविधाजनक होता है जिसे स्थानीय रूप से डाउनलोड और हेरफेर किया जा सकता है, खासकर डेवलपर्स के लिए जो हो सकते हैं दृष्टिकोण के लिए नया।

इन इंटरफेस को मुख्य रूप से tff.learning नामस्थान में परिभाषित किया गया है, सिवाय डेटा डेटा सेट और अन्य सिमुलेशन-संबंधित क्षमताओं के जो tff.simulation में समूहीकृत किए tff.simulation । इस परत को फेडरेटेड कोर (FC) द्वारा प्रस्तुत निचले स्तर के इंटरफेस का उपयोग करके कार्यान्वित किया जाता है, जो एक रनटाइम वातावरण भी प्रदान करता है।

आगे बढ़ने से पहले, हम अनुशंसा करते हैं कि आप पहले छवि वर्गीकरण और पाठ पीढ़ी पर ट्यूटोरियल की समीक्षा करें, क्योंकि वे ठोस उदाहरणों का उपयोग करके यहां वर्णित अधिकांश अवधारणाओं का परिचय देते हैं। यदि आप इस बारे में अधिक जानने में रुचि रखते हैं कि TFF कैसे काम करता है, तो आप कस्टम एल्गोरिदम ट्यूटोरियल को निम्न स्तर के इंटरफेस के लिए एक परिचय के रूप में स्किम करना चाहते हैं, जिसका उपयोग हम संघटित संगणना के तर्क को व्यक्त करने के लिए, और मौजूदा कार्यान्वयन का अध्ययन करने के लिए करते हैं। tff.learning इंटरफेस।

मॉडल

स्थापत्य मान्यताओं

क्रमबद्धता

TFF का उद्देश्य विभिन्न प्रकार के वितरित शिक्षण परिदृश्यों का समर्थन करना है जिसमें आपके द्वारा लिखा गया मशीन लर्निंग मॉडल कोड विविध क्षमताओं वाले विषम ग्राहकों की एक बड़ी संख्या पर क्रियान्वित हो सकता है। स्पेक्ट्रम के एक छोर पर, कुछ अनुप्रयोगों में वे क्लाइंट शक्तिशाली डेटाबेस सर्वर हो सकते हैं, कई महत्वपूर्ण हमारे मंच का उपयोग सीमित संसाधनों के साथ मोबाइल और एम्बेडेड उपकरणों को शामिल करने के लिए करना चाहते हैं। हम यह नहीं मान सकते हैं कि ये उपकरण पायथन रनटाइम की मेजबानी करने में सक्षम हैं; केवल एक ही बात हम इस बिंदु पर मान सकते हैं कि वे एक स्थानीय TensorFlow रनटाइम की मेजबानी करने में सक्षम हैं। इस प्रकार, हम TFF में एक मौलिक वास्तुशिल्प धारणा बनाते हैं कि आपका मॉडल कोड TensorFlow ग्राफ के रूप में क्रमबद्ध होना चाहिए।

आप उत्सुक मोड का उपयोग करके नवीनतम सर्वोत्तम प्रथाओं के बाद भी अपना TF कोड विकसित कर सकते हैं (और चाहिए)। हालांकि, अंतिम कोड क्रमिक होना चाहिए (जैसे, उत्सुक मोड कोड के लिए tf.function रूप में लपेटा जा सकता है)। यह सुनिश्चित करता है कि निष्पादन समय पर आवश्यक किसी भी पायथन राज्य या नियंत्रण प्रवाह को क्रमबद्ध किया जा सकता है (संभवतः ऑटोग्राफ की मदद से)।

वर्तमान में, TensorFlow पूरी तरह से सीरियल-मोडिंग और deserializing उत्सुक-मोड TensorFlow का समर्थन नहीं करता है। इस प्रकार, टीएफएफ में क्रमबद्धता वर्तमान में टीएफ 1.0 पैटर्न का अनुसरण करती है, जहां सभी कोड एक tf.Graph अंदर निर्मित किए जाने चाहिए जो TFF को नियंत्रित करता है। इसका मतलब है कि वर्तमान में TFF पहले से निर्मित मॉडल का उपभोग नहीं कर सकता है; इसके बजाय, मॉडल परिभाषा तर्क एक नो-आर्ग फ़ंक्शन में पैक किया गया है जो tff.learning.Model देता है। इस फ़ंक्शन को तब TFF द्वारा बुलाया जाता है ताकि यह सुनिश्चित हो सके कि मॉडल के सभी घटकों को क्रमबद्ध किया गया है। इसके अलावा, एक दृढ़ता से टाइप किया गया वातावरण होने के नाते, TFF को अतिरिक्त मेटाडेटा की थोड़ी आवश्यकता होगी, जैसे कि आपके मॉडल के इनपुट प्रकार के विनिर्देश।

एकत्रीकरण

हम जोरदार अनुशंसा करते हैं कि अधिकांश उपयोगकर्ता Keras का उपयोग करके मॉडल का निर्माण करें, नीचे दिए गए Keras अनुभाग के लिए कन्वर्टर्स देखें। ये रैपर मॉडल अपडेट के एकत्रीकरण के साथ-साथ मॉडल के लिए स्वचालित रूप से परिभाषित किसी भी मैट्रिक्स को संभालते हैं। हालाँकि, यह समझना अभी भी उपयोगी हो सकता है कि कैसे एकत्रीकरण को सामान्य tff.learning.Model लिए नियंत्रित किया जाता है।

फ़ेडरेटेड लर्निंग में एकत्रीकरण की कम से कम दो परतें होती हैं: स्थानीय ऑन-डिवाइस एग्रीगेशन, और क्रॉस-डिवाइस (या फ़ेडरेटेड) एकत्रीकरण:

  • स्थानीय एकत्रीकरण । एकत्रीकरण का यह स्तर एक व्यक्तिगत ग्राहक के स्वामित्व वाले उदाहरणों के कई बैचों के एकत्रीकरण को संदर्भित करता है। यह दोनों मॉडल मापदंडों (चर) पर लागू होता है, जो क्रमिक रूप से विकसित होता रहता है क्योंकि मॉडल स्थानीय रूप से प्रशिक्षित होता है, साथ ही आपके द्वारा गणना किए जाने वाले आँकड़े (जैसे औसत हानि, सटीकता और अन्य मैट्रिक्स), जो आपका मॉडल फिर से स्थानीय रूप से अपडेट होगा। के रूप में यह प्रत्येक व्यक्ति ग्राहक के स्थानीय डेटा स्ट्रीम पर पुनरावृत्त करता है।

    इस स्तर पर एकत्रीकरण करना आपके मॉडल कोड की जिम्मेदारी है, और मानक TensorFlow constructs का उपयोग करके पूरा किया जाता है।

    प्रसंस्करण की सामान्य संरचना इस प्रकार है:

    • मॉडल पहले tf.Variable s को समुच्चय के रूप में tf.Variable , जैसे बैचों की संख्या या संसाधित किए गए उदाहरणों की संख्या, प्रति-बैच या प्रति-उदाहरण हानि का योग, आदि।

    • TFF forward_pass Model बाद के बैचों पर क्रमिक रूप से आपके Model कई बार forward_pass विधि को आमंत्रित करता है, जो आपको विभिन्न प्रभावों को एक साइड इफेक्ट के रूप में रखने वाले चर को अपडेट करने की अनुमति देता है।

    • अंत में, TFF क्लाइंट द्वारा निर्यात किए जाने वाले मैट्रिक्स के एक कॉम्पैक्ट सेट में एकत्र किए गए सभी सारांश आँकड़ों को संकलित करने के लिए अपने मॉडल पर report_local_outputs विधि को लागू करता है। यह वह जगह है जहां आपका मॉडल कोड, उदाहरण के लिए, औसत नुकसान को निर्यात करने के लिए संसाधित किए गए उदाहरणों की संख्या से नुकसान की राशि को विभाजित कर सकता है, आदि।

  • संघीय एकत्रीकरण । एकत्रीकरण का यह स्तर प्रणाली में कई ग्राहकों (उपकरणों) के एकत्रीकरण को संदर्भित करता है। फिर, यह दोनों मॉडल मापदंडों (चर) पर लागू होता है, जो कि ग्राहकों के बीच औसतन हो रहा है, साथ ही साथ आपके मॉडल को स्थानीय एकत्रीकरण के परिणामस्वरूप निर्यात होने वाले मीट्रिक भी।

    इस स्तर पर एकत्रीकरण करना TFF की जिम्मेदारी है। एक मॉडल निर्माता के रूप में, हालांकि, आप इस प्रक्रिया को नियंत्रित कर सकते हैं (नीचे इस पर अधिक)।

    प्रसंस्करण की सामान्य संरचना इस प्रकार है:

    • प्रारंभिक मॉडल, और प्रशिक्षण के लिए आवश्यक किसी भी पैरामीटर को सर्वर द्वारा ग्राहकों के सबसेट में वितरित किया जाता है जो प्रशिक्षण या मूल्यांकन के एक दौर में भाग लेंगे।

    • प्रत्येक क्लाइंट पर, स्वतंत्र रूप से और समानांतर में, आपका मॉडल कोड मॉडल मापदंडों (जब प्रशिक्षण) का एक नया सेट, और स्थानीय मैट्रिक्स के एक नए सेट का उत्पादन करने के लिए स्थानीय डेटा बैचों की एक धारा पर बार-बार आमंत्रित किया जाता है, जैसा कि ऊपर वर्णित है (यह स्थानीय है एकत्रीकरण)।

    • TFF मॉडल पैरामीटरों को संचित करने और एकत्र करने और सिस्टम में स्थानीय रूप से निर्यात किए गए मैट्रिक्स को एकत्रित करने के लिए एक वितरित एकत्रीकरण प्रोटोकॉल चलाता है। इस तर्क को मॉडल की federated_output_computation. में TFF की अपनी फेडरेटेड कंप्यूटेशन लैंग्वेज (TensorFlow में नहीं) का उपयोग करते हुए एक घोषित तरीके से व्यक्त किया गया है federated_output_computation. एकत्रीकरण एपीआई पर अधिक के लिए कस्टम एल्गोरिदम ट्यूटोरियल देखें।

सार इंटरफेस

यह बुनियादी निर्माता + मेटाडेटा इंटरफ़ेस इंटरफ़ेस tff.learning.Model द्वारा प्रस्तुत किया गया है, इस प्रकार है:

  • निर्माता, forward_pass , और report_local_outputs तरीकों मॉडल चर, फॉरवर्ड पास निर्माण करना चाहिए, और आंकड़ों आप तदनुसार, रिपोर्ट करना चाहते हैं। जैसा कि ऊपर चर्चा की गई है, उन तरीकों से निर्मित TensorFlow क्रमबद्ध होना चाहिए।

  • input_spec गुण, साथ ही 3 गुण जो आपके ट्रेन योग्य, गैर-प्रशिक्षित, और स्थानीय चर के सबसेट input_spec हैं, मेटाडेटा का प्रतिनिधित्व करते हैं। TFF इस जानकारी का उपयोग यह निर्धारित करने के लिए करता है कि आपके मॉडल के कुछ हिस्सों को संघबद्ध अनुकूलन एल्गोरिदम से कैसे जोड़ा जाए, और निर्माण प्रणाली की शुद्धता की पुष्टि करने में सहायता करने के लिए आंतरिक प्रकार के हस्ताक्षरों को परिभाषित किया जाए (ताकि आपका मॉडल डेटा से त्वरित रूप से मेल नहीं खा सके, जो मेल नहीं खाता मॉडल का उपभोग करने के लिए डिज़ाइन किया गया है)।

इसके अलावा, सार इंटरफ़ेस tff.learning.Model एक संपत्ति federated_output_computation को उजागर करता है, जो पहले उल्लेख की गई report_local_outputs संपत्ति के साथ मिलकर आपको सारांश आंकड़ों को एकत्र करने की प्रक्रिया को नियंत्रित करने की अनुमति देता है।

आप अपने स्वयं के कस्टम tf.learning.Model को हमारे छवि वर्गीकरण ट्यूटोरियल के दूसरे भाग में कैसे परिभाषित करें, इसके उदाहरणों के साथ-साथ हम जिस मॉडल मॉडल का उपयोग करने के लिए model_examples.py में परीक्षण करते हैं, उसके उदाहरण model_examples.py

करस के लिए कन्वर्टर्स

लगभग सभी जानकारी है कि TFF के लिए आवश्यक है फोन करके प्राप्त किया जा सकता tf.keras इंटरफेस, इसलिए यदि आप एक Keras मॉडल है, तो आप पर भरोसा कर सकते tff.learning.from_keras_model एक निर्माण करने के लिए tff.learning.Model

ध्यान दें कि TFF अभी भी आपको एक कंस्ट्रक्टर प्रदान करना चाहता है - निम्नलिखित के रूप में एक नो-तर्क मॉडल फ़ंक्शन :

def model_fn():
  keras_model = ...
  return tff.learning.from_keras_model(keras_model, sample_batch, loss=...)

मॉडल के अलावा, आप डेटा के एक नमूना बैच की आपूर्ति करते हैं जो टीएफएफ आपके मॉडल के इनपुट के प्रकार और आकार को निर्धारित करने के लिए उपयोग करता है। यह सुनिश्चित करता है कि TFF डेटा के लिए मॉडल को ठीक से तैयार कर सकता है जो वास्तव में क्लाइंट डिवाइसेस पर मौजूद होगा (क्योंकि हम मानते हैं कि यह डेटा उस समय उपलब्ध नहीं है जब आप TensorFlow का निर्माण क्रमबद्ध करने के लिए कर रहे हैं)।

केरस रैपर का उपयोग हमारी छवि वर्गीकरण और पाठ पीढ़ी के ट्यूटोरियल में चित्रित किया गया है।

संघीय संगणना बिल्डर्स

tff.learning पैकेज tff.Computation s के लिए कई बिल्डरों को प्रदान करता है जो सीखने से संबंधित कार्य करते हैं; हम भविष्य में इस तरह के कम्प्यूटेशन के विस्तार की उम्मीद करते हैं।

स्थापत्य मान्यताओं

क्रियान्वयन

संघबद्ध संगणना चलाने में दो अलग-अलग चरण होते हैं।

  • संकलित : TFF पहले संकलित शिक्षण एल्गोरिदम को पूरे वितरित संगणना के अमूर्त क्रमबद्ध प्रतिनिधित्व में संकलित करता है। यह तब है जब TensorFlow क्रमांकन होता है, लेकिन अधिक कुशल निष्पादन का समर्थन करने के लिए अन्य परिवर्तन हो सकते हैं। हम संकलित प्रतिनिधित्व को संकलित अभिकलन के रूप में संकलक द्वारा उत्सर्जित करते हैं।

  • निष्पादित TFF इन गणनाओं को निष्पादित करने के तरीके प्रदान करता है। अभी के लिए, निष्पादन केवल एक स्थानीय सिमुलेशन (उदाहरण के लिए, नकली विकेन्द्रीकृत डेटा का उपयोग करके नोटबुक में) के माध्यम से समर्थित है।

TFF के फेडरेटेड लर्निंग एपीआई द्वारा उत्पन्न एक संघनित संगणना, जैसे कि एक प्रशिक्षण एल्गोरिथ्म जो कि संघमित मॉडल औसत , या एक संघीकृत मूल्यांकन का उपयोग करता है, में कई तत्व शामिल हैं, जिनमें सबसे विशेष रूप से शामिल हैं:

  • आपके मॉडल कोड का एक क्रमबद्ध रूप और साथ ही आपके मॉडल के प्रशिक्षण / मूल्यांकन पाश (जैसे ऑप्टिमाइज़र का निर्माण, मॉडल अपडेट लागू करना,tf.data.Dataset s, और कंप्यूटिंग मेट्रिक्स पर पुनरावृत्ति करना) को चलाने के लिए Federated Learning Framework द्वारा निर्मित अतिरिक्त TensorFlow कोड। और सर्वर पर एकत्रित अद्यतन को लागू करना, कुछ नाम देना)।

  • क्लाइंट और सर्वर के बीच संचार का एक घोषणात्मक विनिर्देश (आमतौर पर क्लाइंट डिवाइसों पर एकत्रीकरण के विभिन्न प्रकार, और सर्वर से सभी क्लाइंट के लिए प्रसारण ), और यह कैसे वितरित संचार क्लाइंट-स्थानीय या सर्वर-स्थानीय निष्पादन के साथ interleaved है TensorFlow कोड का।

इस क्रमबद्ध रूप में प्रस्तुत संघबद्ध गणनाएं पायथन से अलग एक प्लेटफॉर्म-स्वतंत्र आंतरिक भाषा में व्यक्त की जाती हैं, लेकिन फेडरेटेड लर्निंग एपीआई का उपयोग करने के लिए, आपको इस प्रतिनिधित्व के विवरण के साथ खुद को चिंता करने की आवश्यकता नहीं होगी। अभिकलन आपके Python कोड में tff.Computation की वस्तुओं के रूप में tff.Computation , जो कि अधिकांश भाग के लिए आप अपारदर्शी अजगर tff.Computation callable s के रूप में व्यवहार कर सकते हैं।

ट्यूटोरियल में, आप उन फ़ेडरेटेड कंप्यूटेशनों को आमंत्रित करेंगे जैसे कि वे नियमित रूप से पायथन फ़ंक्शंस थे, जिन्हें स्थानीय स्तर पर निष्पादित किया जाना था। हालांकि, TFF को निष्पादन पर्यावरण के अधिकांश पहलुओं के लिए एक तरह से अज्ञेय के रूप में संघनन अभिकलन व्यक्त करने के लिए डिज़ाइन किया गया है, ताकि वे संभावित रूप से Android चलने वाले उपकरणों के समूहों, या किसी डेटासेंटर में समूहों में तैनात हो सकें। फिर, इसका मुख्य परिणाम क्रमांकन के बारे में मजबूत धारणाएं हैं। विशेष रूप से, जब आप build_... से किसी एक को लागू करते हैं, तो गणना के नीचे वर्णित तरीके पूरी तरह से क्रमबद्ध होते हैं।

मॉडलिंग की अवस्था

टीएफएफ एक कार्यात्मक प्रोग्रामिंग वातावरण है, फिर भी फेडरेटेड लर्निंग में रुचि की कई प्रक्रियाएं स्टेटफुल हैं। उदाहरण के लिए, एक प्रशिक्षण लूप जिसमें फ़ेडरेटेड मॉडल औसत के कई राउंड शामिल होते हैं, एक उदाहरण है जिसे हम एक राज्य प्रक्रिया के रूप में वर्गीकृत कर सकते हैं । इस प्रक्रिया में, राज्य जो कि गोल से विकसित होता है, में मॉडल मापदंडों का सेट शामिल होता है जिन्हें प्रशिक्षित किया जाता है, और संभवतः एडेप्टर से जुड़े अतिरिक्त राज्य (जैसे, एक गति वेक्टर)।

चूंकि TFF कार्यात्मक है, इसलिए स्टेटफुल प्रक्रियाओं को TFF में कम्प्यूटेशन के रूप में तैयार किया जाता है जो वर्तमान स्थिति को एक इनपुट के रूप में स्वीकार करते हैं और फिर अपडेटेड स्टेट को आउटपुट के रूप में प्रदान करते हैं। किसी राज्य प्रक्रिया को पूरी तरह से परिभाषित करने के लिए, किसी को यह भी निर्दिष्ट करना होगा कि प्रारंभिक राज्य कहां से आता है (अन्यथा हम प्रक्रिया को बूटस्ट्रैप नहीं कर सकते हैं)। यह सहायक वर्ग की परिभाषा में कब्जा कर लिया है tff.templates.IterativeProcess 2 गुणों के साथ, initialize और next , आरंभीकरण करने के लिए इसी और यात्रा क्रमशः।

उपलब्ध बिल्डरों

फिलहाल, TFF दो बिल्डर फ़ंक्शंस प्रदान करता है जो फ़ेडरेटेड प्रशिक्षण और मूल्यांकन के लिए संघबद्ध गणनाएँ उत्पन्न करते हैं:

  • tff.learning.build_federated_averaging_process एक मॉडल फ़ंक्शन और क्लाइंट ऑप्टिमाइज़र लेता है, और एक स्टेटफुल tff.templates.IterativeProcess देता है।

  • tff.learning.build_federated_evaluation मॉडल फ़ंक्शन लेता है और मॉडल के फ़ेडरेटेड मूल्यांकन के लिए एकल फ़ेडरेटेड संगणना देता है, क्योंकि मूल्यांकन स्टेटफुल नहीं है।

डेटासेट

स्थापत्य मान्यताओं

ग्राहक का चयन

विशिष्ट फ़ेडरेटेड सीखने के परिदृश्य में, हमारे पास लाखों-करोड़ों ग्राहकों के संभावित उपकरणों की एक बड़ी आबादी है, जिनमें से केवल एक छोटा हिस्सा सक्रिय हो सकता है और किसी भी समय प्रशिक्षण के लिए उपलब्ध हो सकता है (उदाहरण के लिए, यह उन ग्राहकों तक सीमित हो सकता है जो हैं पावर स्रोत में प्लग किया गया है, न कि एक मीटर्ड नेटवर्क पर, और अन्यथा निष्क्रिय)। आम तौर पर, प्रशिक्षण या मूल्यांकन में भाग लेने के लिए उपलब्ध क्लाइंट का सेट डेवलपर के नियंत्रण से बाहर होता है। इसके अलावा, जैसा कि लाखों ग्राहकों को समन्वित करना अव्यावहारिक है, प्रशिक्षण या मूल्यांकन के एक विशिष्ट दौर में उपलब्ध ग्राहकों का केवल एक अंश शामिल होगा, जिसे यादृच्छिक रूप से नमूना लिया जा सकता है।

इसका प्रमुख परिणाम यह है कि डिजाइन द्वारा, संघनित संगणनाएँ, इस तरीके से व्यक्त की जाती हैं जो प्रतिभागियों के सटीक सेट से बेखबर होती हैं; सभी प्रसंस्करण अनाम ग्राहकों के एक सार समूह पर कुल संचालन के रूप में व्यक्त किए जाते हैं , और यह समूह एक दौर के प्रशिक्षण से दूसरे में भिन्न हो सकता है। कंक्रीट प्रतिभागियों के लिए अभिकलन का वास्तविक बंधन, और इस प्रकार वे गणना में खिलाए गए ठोस आंकड़ों के लिए, इस प्रकार संगणना के बाहर मॉडलिंग की जाती है।

अपने फ़ेडरेटेड लर्निंग कोड की यथार्थवादी तैनाती का अनुकरण करने के लिए, आप आमतौर पर एक प्रशिक्षण लूप लिखेंगे जो इस तरह दिखता है:

trainer = tff.learning.build_federated_averaging_process(...)
state = trainer.initialize()
federated_training_data = ...

def sample(federate_data):
  return ...

while True:
  data_for_this_round = sample(federated_training_data)
  state, metrics = trainer.next(state, data_for_this_round)

इसे सुविधाजनक बनाने के लिए, सिमुलेशन में TFF का उपयोग करते समय, फ़ेडरेटेड डेटा को Python list s के रूप में स्वीकार किया जाता है, जिसमें उस डिवाइस के स्थानीयtf.data.Dataset का प्रतिनिधित्व करने के लिए प्रति ग्राहक क्लाइंट डिवाइस में एक तत्वtf.data.Dataset

सार इंटरफेस

सिम्युलेटेड फ़ेडरेटेड डेटा सेट से निपटने के लिए मानकीकरण करने के लिए, TFF एक अमूर्त इंटरफ़ेस tff.simulation.ClientData प्रदान करता है, जो क्लाइंट के सेट को एन्यूमरेट करने के लिए, और एकtf.data.Dataset का निर्माण करने की अनुमति देता है जिसमें एक विशेष क्लाइंट का डेटा होता है। उनtf.data.Dataset s को उत्सुक मोड में उत्पन्न फेडरेटेड कंप्यूटर्स के इनपुट के रूप में सीधे फीड किया जा सकता है।

यह ध्यान दिया जाना चाहिए कि ग्राहक पहचान तक पहुंचने की क्षमता एक ऐसी विशेषता है जो केवल सिमुलेशन में उपयोग के लिए डेटासेट द्वारा प्रदान की जाती है, जहां विशिष्ट ग्राहकों के डेटा से डेटा को प्रशिक्षित करने की क्षमता की आवश्यकता हो सकती है (उदाहरण के लिए, अलग-अलग द्विगुणित विषमता का अनुकरण करना ग्राहकों के प्रकार)। संकलित संगणना और अंतर्निहित रनटाइम में ग्राहक पहचान की कोई धारणा शामिल नहीं है। एक बार ग्राहकों के एक विशिष्ट सबसेट के डेटा को इनपुट के रूप में चुना गया है, उदाहरण के लिए, कॉल में tff.templates.IterativeProcess.next , क्लाइंट पहचान अब इसमें दिखाई नहीं देती है।

उपलब्ध डेटा सेट

हमने डेटासेट के लिए नामस्थान tff.simulation.datasets को समर्पित किया है जो सिमुलेशन में उपयोग के लिए tff.simulation.ClientData इंटरफ़ेस को कार्यान्वित करते हैं, और छवि वर्गीकरण और पाठ ट्यूटोरियल ट्यूटोरियल का समर्थन करने के लिए इसे 2 डेटा सेट के साथ वरीयता देते हैं। हम आपको अपने स्वयं के डेटा सेट को प्लेटफ़ॉर्म पर योगदान करने के लिए प्रोत्साहित करना चाहते हैं।