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

फेडरेटेड कोर

यह दस्तावेज़ TFF की मुख्य परत का परिचय देता है जो फेडरेटेड लर्निंग , और संभव भविष्य के गैर-शिक्षण फ़ेडरेटेड एल्गोरिदम की नींव के रूप में कार्य करता है।

फेडरेटेड कोर के एक सौम्य परिचय के लिए, कृपया निम्नलिखित ट्यूटोरियल पढ़ें, क्योंकि वे कुछ मूलभूत अवधारणाओं का उदाहरण देते हैं और चरण-दर-चरण एक सरल फ़ेडरेटेड औसत एल्गोरिथ्म के निर्माण का प्रदर्शन करते हैं।

हम आपको फेडरेटेड लर्निंग और छवि वर्गीकरण और पाठ पीढ़ी पर संबंधित ट्यूटोरियल के साथ खुद को परिचित करने के लिए भी प्रोत्साहित करेंगे, क्योंकि फ़ेडरेटेड लर्निंग के लिए Federated Core API (FC API) के उपयोग हमारे द्वारा किए गए कुछ विकल्पों के लिए महत्वपूर्ण संदर्भ प्रदान करते हैं। इस परत को डिजाइन करना।

अवलोकन

लक्ष्य, इरादा उपयोग, और स्कोप

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

वितरित शब्द बहुत ही सामान्य है, और TFF वहाँ से वितरित किए गए सभी प्रकार के वितरित एल्गोरिदम को लक्षित नहीं करता है, इसलिए हम इस फ्रेमवर्क में व्यक्त किए जाने वाले एल्गोरिदम के प्रकारों का वर्णन करने के लिए कम जेनेरिक शब्द फेडरेटेड गणना का उपयोग करना पसंद करते हैं।

पूरी तरह से औपचारिक तरीके से संघटित गणना को परिभाषित करना इस दस्तावेज़ के दायरे से बाहर है, लेकिन एक नए प्रकाशन वितरित एल्गोरिथ्म का वर्णन करने वाले शोध प्रकाशन में छद्मकोश में व्यक्त किए गए एल्गोरिदम के प्रकारों के बारे में सोचें।

एफसी का लक्ष्य, संक्षेप में, प्रोग्राम लॉजिक का एक समान छद्मकोश-समान स्तर पर समान रूप से कॉम्पैक्ट निरूपण को सक्षम करना है, जो कि छद्मकोश नहीं है, बल्कि, लक्ष्य वातावरण की एक किस्म में निष्पादन योग्य है।

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

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

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

नतीजतन, जबकि सामान्य प्रयोजनों के लिए वितरित फ्रेमवर्क बिल्डिंग ब्लॉक के रूप में भेजने और प्राप्त करने के रूप में संचालन की पेशकश कर सकते हैं, एफसी tff.federated_sum , tff.federated_reduce , या tff.federated_broadcast जैसे बिल्डिंग ब्लॉक प्रदान करता है जो सरल वितरित प्रोटोकॉल को tff.federated_broadcast करते हैं।

भाषा: हिन्दी

पायथन इंटरफ़ेस

TFF, संघनित संगणनाओं का प्रतिनिधित्व करने के लिए एक आंतरिक भाषा का उपयोग करता है, जिसका वाक्यविन्यास संगणना में क्रमिक प्रतिनिधित्व द्वारा परिभाषित किया गया हैप्रोटो । एफसी एपीआई के उपयोगकर्ताओं को आम तौर पर इस भाषा के साथ सीधे बातचीत करने की आवश्यकता नहीं होती है, हालांकि। इसके बजाय, हम एक पायथन एपीआई ( tff नेमस्पेस) प्रदान करते हैं जो कम्प्यूटेशंस को परिभाषित करने के तरीके के रूप में इसे लपेटता है।

विशेष रूप से, TFF Python फंक्शन डेकोरेटर्स जैसे tff.federated_computation प्रदान करता है जो सजाए गए फ़ंक्शंस के बॉडी को ट्रेस करता है, और TFF की भाषा में फ़ेडरेटेड कम्प्यूटेशन लॉजिक के क्रमबद्ध अभ्यावेदन का उत्पादन करता है। tff.federated_computation साथ सजाया गया एक फ़ंक्शन इस तरह के क्रमबद्ध प्रतिनिधित्व के वाहक के रूप में कार्य करता है, और इसे किसी अन्य अभिकलन के शरीर में एक बिल्डिंग ब्लॉक के रूप में एम्बेड कर सकता है, या मांगे जाने पर इसे निष्पादित कर सकता है।

यहाँ सिर्फ एक उदाहरण है; अधिक उदाहरण कस्टम एल्गोरिदम ट्यूटोरियल में पाए जा सकते हैं।

@tff.federated_computation(tff.type_at_clients(tf.float32))
def get_average_temperature(sensor_readings):
  return tff.federated_mean(sensor_readings)

गैर-उत्सुक TensorFlow से परिचित पाठक पायथन कोड लिखने के लिए इस दृष्टिकोण को अनुरूप पाएंगे जो कि पायथन कोड के एक खंड में tf.add या tf.reduce_sum जैसे कार्यों का उपयोग करता है जो TthorFlow ग्राफ को परिभाषित करता है। यद्यपि कोड पायथन में तकनीकी रूप से व्यक्त किया गया है, इसका उद्देश्य एक tf.Graph क्रमिक प्रतिनिधित्व का निर्माण tf.Graph है, और यह ग्राफ़ है, न कि पायथन कोड, जो कि TororFlow रनटाइम द्वारा आंतरिक रूप से निष्पादित किया जाता है। इसी तरह, कोई भी tff.federated_mean बारे में सोच सकता है क्योंकि एक tff.federated_mean ऑप को एक संघित संगणना में सम्मिलित किया जा सकता है जो tff.federated_mean द्वारा get_average_temperature

एफसी को परिभाषित करने के लिए एक भाषा को परिभाषित करने का एक कारण इस तथ्य के साथ करना है कि, जैसा कि ऊपर उल्लेख किया गया है, संघनित गणनाएं वितरित सामूहिक व्यवहारों को निर्दिष्ट करती हैं, और इस तरह, उनका तर्क गैर-स्थानीय है। उदाहरण के लिए, TFF ऑपरेटर, इनपुट और आउटपुट प्रदान करता है, जो नेटवर्क में विभिन्न स्थानों पर मौजूद हो सकते हैं।

यह एक भाषा और एक प्रकार की प्रणाली के लिए कहता है जो वितरण की धारणा को पकड़ती है।

सिस्टम टाइप करें

Federated Core निम्न प्रकार की श्रेणियां प्रदान करता है। इन प्रकारों का वर्णन करने के लिए, हम टाइप कंस्ट्रक्टर्स को इंगित करते हैं और साथ ही एक कॉम्पैक्ट नोटेशन भी प्रस्तुत करते हैं, क्योंकि यह एक आसान तरीका है या कम्प्यूटेशन और ऑपरेटरों के प्रकारों का वर्णन करता है।

सबसे पहले, यहां उन प्रकारों की श्रेणियां हैं जो वैचारिक रूप से मौजूदा मुख्यधारा की भाषाओं में पाए जाने वाले समान हैं:

  • टेन्सर प्रकार ( tff.TensorType )। जैसे TensorFlow में, ये dtype और shape । एकमात्र अंतर यह है कि इस प्रकार की वस्तुएं केवल tf.Tensor तक सीमित नहीं हैं। पायथन में tf.Tensor उदाहरण जो कि TensorFlow ग्राफ में TensorFlow op के आउटपुट का प्रतिनिधित्व करते हैं, लेकिन इसमें डेटा की इकाइयाँ भी शामिल की जा सकती हैं जो किसी वितरित के आउटपुट के रूप में उत्पादित की जा सकती हैं, जैसे एकत्रीकरण प्रोटोकॉल। इस प्रकार, TFF टेंसर प्रकार केवल पायथन या टेन्सरफ्लो में इस प्रकार के ठोस भौतिक प्रतिनिधित्व का एक सार संस्करण है।

    dtype प्रकारों के लिए कॉम्पैक्ट अंकन dtype या dtype[shape] । उदाहरण के लिए, int32 और int32[10] क्रमशः पूर्णांक और इंट वैक्टर के प्रकार हैं।

  • अनुक्रम प्रकार ( tff.SequenceType )। ये टीएफएफ के अमूर्त समतुल्य हैं TensorFlow के ठोस अवधारणा केtf.data.Dataset s। अनुक्रम के तत्वों को क्रमबद्ध तरीके से खाया जा सकता है, और इसमें जटिल प्रकार शामिल हो सकते हैं।

    अनुक्रम प्रकारों का कॉम्पैक्ट प्रतिनिधित्व T* , जहां T तत्वों का प्रकार है। उदाहरण के लिए int32* एक पूर्णांक अनुक्रम का प्रतिनिधित्व करता है।

  • नाम दिया टपल टाइप ( tff.StructType )। ये TFF के निर्माण के तरीके हैं जैसे टुपल्स और डिक्शनरी जैसी संरचनाएँ जिनमें विशिष्ट प्रकार के तत्वों की पूर्वनिर्धारित संख्या होती है, जिनका नाम या नाम नहीं होता है। महत्वपूर्ण रूप से, TFF की नामांकित अवधारणा पायथन के तर्क ट्यूपल्स के सार समतुल्य को समाहित करती है, अर्थात, जिनमें से कुछ के तत्वों के संग्रह, लेकिन सभी का नाम नहीं है, और कुछ स्थितिगत हैं।

    ट्यूपल्स नाम की कॉम्पैक्ट नोटेशन <n_1=T_1, ..., n_k=T_k> , जहां n_k वैकल्पिक तत्व नाम हैं, और T_k तत्व प्रकार हैं। उदाहरण के लिए, <int32,int32> अनाम पूर्णांक की एक जोड़ी के लिए एक कॉम्पैक्ट संकेतन है, और <X=float32,Y=float32> X और Y नाम की एक जोड़ी के लिए एक कॉम्पैक्ट अंकन है जो एक विमान पर एक बिंदु का प्रतिनिधित्व कर सकता है। । ट्यूपल्स को घोंसले के साथ-साथ अन्य प्रकारों के साथ मिश्रित किया जा सकता है, उदाहरण के लिए, <X=float32,Y=float32>* अंकों के अनुक्रम के लिए एक कॉम्पैक्ट अंकन होगा।

  • फ़ंक्शन प्रकार ( tff.FunctionType )। TFF एक फ़ंक्शनल प्रोग्रामिंग फ्रेमवर्क है, जिसमें प्रथम श्रेणी के मानों के रूप में कार्य किए जाते हैं । फ़ंक्शंस में अधिकांश एक तर्क होता है, और बिल्कुल एक परिणाम।

    फ़ंक्शंस के लिए कॉम्पैक्ट नोटेशन है (T -> U) , जहां T एक तर्क का प्रकार है, और U परिणाम का प्रकार है, या ( -> U) अगर कोई तर्क नहीं है (हालांकि नो-तर्क फ़ंक्शन एक पतित हैं अवधारणा जो ज्यादातर पायथन स्तर पर मौजूद है)। उदाहरण के लिए (int32* -> int32) एक प्रकार के कार्यों के लिए एक संकेतन है जो एक पूर्णांक मान को एक पूर्णांक मान को कम करता है।

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

  • प्लेसमेंट प्रकार । यह प्रकार अभी तक सार्वजनिक एपीआई में 2 tff.SERVER और tff.CLIENTS के रूप में अन्य के रूप में उजागर नहीं है जिसे आप इस प्रकार के स्थिरांक के रूप में सोच सकते हैं। हालांकि, इसका उपयोग आंतरिक रूप से किया जाता है, और भविष्य के रिलीज में सार्वजनिक एपीआई में पेश किया जाएगा। इस प्रकार का कॉम्पैक्ट प्रतिनिधित्व placement

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

    प्लेसमेंट की धारणा को परिभाषित करने का प्राथमिक उद्देश्य संघबद्ध प्रकारों को परिभाषित करने का एक आधार है।

  • फ़ेडरेटेड प्रकार ( tff.FederatedType )। एक फ़ेडरेटेड प्रकार का एक मूल्य वह होता है जिसे एक विशिष्ट प्लेसमेंट (जैसे tff.SERVER या tff.CLIENTS ) द्वारा परिभाषित सिस्टम प्रतिभागियों के समूह द्वारा होस्ट किया जाता है। एक फ़ेडरेटेड प्रकार को प्लेसमेंट मान द्वारा परिभाषित किया जाता है (इस प्रकार, यह एक आश्रित प्रकार है ), सदस्य घटक का प्रकार (प्रतिभागियों में से प्रत्येक किस प्रकार की सामग्री स्थानीय रूप से होस्ट कर रहा है), और अतिरिक्त बिट all_equal निर्दिष्ट करता है कि सभी प्रतिभागी स्थानीय हैं एक ही आइटम होस्ट कर रहा है।

    फ़ेडरेटेड प्रकार के मानों के लिए कॉम्पैक्ट नोटेशन जिसमें टाइप T आइटम (सदस्य घटक) शामिल हैं, प्रत्येक को समूह (स्थान) G द्वारा {T}@G T@G या {T}@G किया गया है, all_equal क्रमशः all_equal बिट सेट या सेट नहीं है।

    उदाहरण के लिए:

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

    • {<X=float32,Y=float32>*}@CLIENTS डेटा सेट का प्रतिनिधित्व करते हैं, एक मान जिसमें XY निर्देशांक के कई अनुक्रम होते हैं, प्रति ग्राहक डिवाइस में एक क्रम।

    • <weights=float32[10,5],bias=float32[5]>@SERVER पर वजन और पूर्वाग्रह <weights=float32[10,5],bias=float32[5]>@SERVER एक नामित टपल का प्रतिनिधित्व करता है। चूंकि हमने घुंघराले ब्रेसिज़ को गिरा दिया है, यह इंगित करता है कि all_equal बिट सेट है, अर्थात, केवल एक ही टपल है (इस मान की मेजबानी करने वाले क्लस्टर में कितने सर्वर प्रतिकृतियां हो सकती हैं)।

इमारत ब्लॉकों

फेडरेटेड कोर की भाषा कुछ अतिरिक्त तत्वों के साथ लैम्ब्डा-कैलकुलस का एक रूप है।

यह सार्वजनिक एपीआई में वर्तमान में निम्नलिखित प्रोग्रामिंग सार प्रदान करता है:

  • TensorFlow संगणना ( tff.tf_computation )। ये tff.tf_computation डेकोरेटर का उपयोग करके TFF में पुन: प्रयोज्य घटकों के रूप में लिपटे TensorFlow कोड के tff.tf_computation । उनके पास हमेशा कार्यात्मक प्रकार होते हैं, और TensorFlow में कार्यों के विपरीत, वे संरचित पैरामीटर ले सकते हैं या अनुक्रम प्रकार के संरचित परिणाम वापस कर सकते हैं।

    यहां एक उदाहरण है, टाइप की एक TF संगणना (int32* -> int) जो पूर्णांक की राशि की गणना करने के लिए tf.data.Dataset.reduce ऑपरेटर का उपयोग करता है:

    @tff.tf_computation(tff.SequenceType(tf.int32))
    def add_up_integers(x):
      return x.reduce(np.int32(0), lambda x, y: x + y)
    
  • आंतरिक या फ़ेडरेटेड ऑपरेटर ( tff.federated_... )। यह tff.federated_sum या tff.federated_broadcast जैसे फ़ंक्शंस की एक लाइब्रेरी है जो FC API के थोक का गठन करती है, जिनमें से अधिकांश TFF के साथ उपयोग के लिए वितरित संचार ऑपरेटरों का प्रतिनिधित्व करते हैं।

    हम इन्हें आंतरिक के रूप में संदर्भित करते हैं, क्योंकि कुछ हद तक आंतरिक कार्यों की तरह, वे एक खुले-अंत वाले, ऑपरेटरों के एक्स्टेंसिबल सेट हैं जिन्हें टीएफएफ द्वारा समझा जाता है, और निचले स्तर के कोड में संकलित किया जाता है।

    इनमें से अधिकांश ऑपरेटरों में फ़ेडरेटेड प्रकार के पैरामीटर और परिणाम हैं, और अधिकांश ऐसे टेम्पलेट हैं जिन्हें विभिन्न प्रकार के डेटा पर लागू किया जा सकता है।

    उदाहरण के लिए, tff.federated_broadcast को एक कार्यात्मक प्रकार T@SERVER -> T@CLIENTS tff.federated_broadcast टेम्पलेट ऑपरेटर के रूप में सोचा जा सकता है।

  • लैम्ब्डा एक्सप्रेशन ( tff.federated_computation )। TFF में एक लैम्ब्डा अभिव्यक्ति एक के बराबर है lambda या def अजगर में; इसमें पैरामीटर नाम और एक निकाय (अभिव्यक्ति) होता है, जिसमें इस पैरामीटर के संदर्भ होते हैं।

    पायथन कोड में, इन्हें tff.federated_computation साथ पायथन कार्यों को tff.federated_computation और एक तर्क को परिभाषित करके बनाया जा सकता है।

    यहाँ एक लंबोदर अभिव्यक्ति का उदाहरण दिया गया है जिसका उल्लेख हम पहले कर चुके हैं:

    @tff.federated_computation(tff.type_at_clients(tf.float32))
    def get_average_temperature(sensor_readings):
      return tff.federated_mean(sensor_readings)
    
  • प्लेसमेंट शाब्दिक । अभी के लिए, केवल tff.SERVER और tff.CLIENTS सरल क्लाइंट-सर्वर संगणना को परिभाषित करने के लिए अनुमति देते हैं।

  • फंक्शन इनवोकेशन ( __call__ )। कुछ भी जो एक कार्यात्मक प्रकार है, मानक पायथन __call__ सिंटैक्स का उपयोग करके लागू किया जा सकता है। आह्वान एक अभिव्यक्ति है, जिसका प्रकार फ़ंक्शन के परिणाम के प्रकार के समान है।

    उदाहरण के लिए:

    • add_up_integers(x) एक तर्क x पर पहले परिभाषित TensorFlow संगणना के एक आह्वान का प्रतिनिधित्व करता है। इस अभिव्यक्ति का प्रकार int32

    • tff.federated_mean(sensor_readings) sensor_readings पर फ़ेडरेटेड औसत ऑपरेटर के एक आह्वान का प्रतिनिधित्व करता है। इस अभिव्यक्ति का प्रकार float32@SERVER (ऊपर उदाहरण से संदर्भ मानते हुए)।

  • ट्यूपल्स बनाना और उनके तत्वों का चयन करना। प्रपत्र के अजगर अभिव्यक्ति [x, y] , x[y] , या xy जो tff.federated_computation साथ सजाए गए कार्यों के निकायों में दिखाई देते हैं।