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

अवलोकन

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

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

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

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

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

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

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

मॉडल

वास्तु धारणा

क्रमबद्धता

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

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

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

एकत्रीकरण

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

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

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

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

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

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

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

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

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

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

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

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

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

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

सार इंटरफेस

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

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

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

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

आप कैसे अपने स्वयं के कस्टम को परिभाषित करने के उदाहरण मिल सकते हैं tff.learning.Model हमारे के दूसरे भाग में छवि वर्गीकरण के साथ-साथ उदाहरण के मॉडल हम में परीक्षण के लिए प्रयुक्त में, ट्यूटोरियल 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 आपके मॉडल के इनपुट के प्रकार और आकार को निर्धारित करने के लिए करता है। यह सुनिश्चित करता है कि TFF डेटा के लिए मॉडल को ठीक से इंस्टेंट कर सकता है जो वास्तव में क्लाइंट डिवाइस पर मौजूद होगा (क्योंकि हम मानते हैं कि यह डेटा आमतौर पर उस समय उपलब्ध नहीं होता है जब आप TensorFlow को क्रमबद्ध करने के लिए बना रहे होते हैं)।

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

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

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

वास्तु धारणा

क्रियान्वयन

फ़ेडरेटेड गणना चलाने में दो अलग-अलग चरण होते हैं।

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

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

इस तरह के एक प्रशिक्षण एल्गोरिथ्म है कि का उपयोग करता है के रूप में TFF के संघीय अध्ययन API, द्वारा उत्पन्न एक फ़ेडरेटेड गणना फ़ेडरेटेड मॉडल औसत , या एक फ़ेडरेटेड मूल्यांकन, तत्वों, सबसे विशेष रूप से की एक संख्या में शामिल हैं:

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

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

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

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

मॉडलिंग राज्य

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 का उपयोग कर, फ़ेडरेटेड डेटा के रूप में स्वीकार किया जाता है पायथन list है, ग्राहक उपकरण भाग लेने कि उपकरण का स्थानीय प्रतिनिधित्व करने के लिए प्रति एक तत्व के साथ tf.data.Dataset

सार इंटरफेस

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

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

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

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