फ़ेडरेटेड कंप्यूट (एफ़सी) सर्वर, ऑन-डिवाइस पर्सनलाइज़ेशन (ओडीपी) की ओर से दी जाने वाली फ़ेडरेटेड लर्निंग का हिस्सा है. इस दस्तावेज़ का मकसद, फ़ेडरेटेड कंप्यूट सर्वर (एफ़सी सर्वर), उसके कॉम्पोनेंट, और इस्तेमाल की गई टेक्नोलॉजी के बारे में बताना है. यह दस्तावेज़, आर्किटेक्चर की खास जानकारी देता है और फिर हर कॉम्पोनेंट के बारे में पूरी जानकारी देता है. इसमें यह भी बताया गया है कि फ़ेडरेटेड लर्निंग का माहौल देने के लिए, कॉम्पोनेंट एक साथ कैसे काम करते हैं. साथ ही, इसमें वर्कलोड को स्केल करने और उसे अलग-अलग हिस्सों में बांटने की रणनीतियां भी बताई गई हैं.
ट्रेनिंग का फ़्लो
ट्रेनिंग में, एफ़सी क्लाइंट और एफ़सी सर्वर के बीच डेटा फ़्लो शामिल होते हैं. FC क्लाइंट, Android का एक मुख्य मॉड्यूल है. यह डिवाइस पर एमएल मॉडल को ट्रेन करता है और FC सर्वर के साथ इंटरैक्ट करता है. एफ़सी सर्वर, एफ़सी क्लाइंट से मिले नतीजों को ट्रस्टेड एक्ज़ीक्यूशन एनवायरमेंट (टीईई) में सुरक्षित तरीके से प्रोसेस करता है और इकट्ठा करता है.
ट्रेनिंग में ये चरण शामिल होते हैं:
- डिवाइस पर मौजूद FC क्लाइंट, Key Services से एन्क्रिप्ट (सुरक्षित) करने के लिए इस्तेमाल होने वाली सार्वजनिक कुंजी डाउनलोड करता है.
- FC क्लाइंट, FC सर्वर से जांच करता है और उसे ट्रेनिंग टास्क मिलता है.
- FC Client एक ट्रेनिंग प्लान डाउनलोड करेगा. साथ ही, मॉडल का सबसे नया वर्शन, वर्शन N डाउनलोड करेगा.
- एफ़सी क्लाइंट, लोकल डेटा और प्लान का इस्तेमाल करके ट्रेनिंग लेता है.
- FC क्लाइंट, इस डिवाइस के योगदान को चरण 0 में मिली सार्वजनिक कुंजी के साथ एन्क्रिप्ट करता है और उसे एफ़सी सर्वर पर अपलोड करता है.
- एफ़सी क्लाइंट, एफ़सी सर्वर को सूचना देता है कि उसकी ट्रेनिंग पूरी हो गई है.
- FC सर्वर तब तक इंतज़ार करता है, जब तक ज़रूरत के मुताबिक क्लाइंट अपना योगदान सबमिट नहीं कर देते.
- एग्रीगेशन का एक राउंड ट्रिगर होता है.
- एन्क्रिप्ट (सुरक्षित) किए गए योगदान को एग्रीगेटर, ट्रस्टेड एक्ज़ीक्यूशन एनवायरमेंट (टीईई) में लोड करता है.
- एग्रीगेटर, एनआईएसटी की आरएफ़सी 9334 रिमोट अटेस्टेशन प्रोसेसएस (आरएटीएस) आर्किटेक्चर का पालन करके, कोऑर्डिनेटर के सामने खुद को प्रमाणित करता है. पुष्टि हो जाने के बाद, कुंजी सेवाएं उसे डिक्रिप्ट करने की कुंजियां देती हैं. Shamir secret sharing स्कीम में, इन कुंजियों को कई कुंजी देने वाली कंपनियों के बीच बांटा जा सकता है.
- एग्रीगेटर, डिफ़रेंशियल प्राइवसी (डीपी) के सही तरीकों के हिसाब से, क्रॉस-डिवाइस एग्रीगेशन, क्लिप, और नॉइज़ का इस्तेमाल करता है. इससे, शोर वाले नतीजे दिखाए जाते हैं.
- एग्रीगेटर मॉडल अपडेटर को ट्रिगर करता है.
- मॉडल अपडेटर, इकट्ठा किए गए योगदान को लोड करता है और मॉडल वर्शन N + 1 बनाने के लिए, उसे मॉडल वर्शन N पर लागू करता है. नए मॉडल को मॉडल के स्टोरेज में पुश किया जाता है.
एफ़सी सर्वर को टीईई और सुरक्षा से जुड़ी सुविधाओं के साथ काम करने वाली किसी भी क्लाउड सेवा पर डिप्लॉय किया जा सकता है. हम सार्वजनिक क्लाउड सेवा देने वाली कंपनियों और इससे जुड़ी टेक्नोलॉजी की जांच कर रहे हैं. हालांकि, फ़िलहाल नीचे दिए गए सेक्शन में, गोपनीय स्पेस का इस्तेमाल करके, Google Cloud की सेवाओं को लागू करने का उदाहरण दिया गया है.
हाई-लेवल आर्किटेक्चर
एफ़सी सर्वर में ये कॉम्पोनेंट Google क्लाउड में डिप्लॉय किए जाते हैं:
कॉम्पोनेंट | जानकारी |
टास्क मैनेजमेंट सेवा | ट्रेनिंग टास्क को मैनेज करने के लिए वेब सेवा. पार्टनर को ट्रेनिंग टास्क बनाने, ट्रेनिंग के सभी मौजूदा टास्क की सूची बनाने, किसी टास्क को रद्द करने, और ट्रेनिंग के सभी स्टेटस वापस पाने के लिए, Task Management API का इस्तेमाल करना चाहिए. |
टास्क असाइन करने की सेवा | एचटीटीपीएस पर आधारित एक वेब सेवा, जहां क्लाइंट डिवाइस समय-समय पर ट्रेनिंग के टास्क पाने और ट्रेनिंग की स्थिति की रिपोर्ट करने के लिए चेक इन करते हैं. |
एग्रीगेटर | गोपनीय स्पेस में बैकग्राउंड में चलने वाली सेवा. यह ODP से बनाए गए वर्कलोड चलाता है. यह उन कोऑर्डिनेटर को प्रमाणित करना होगा जो डिक्रिप्शन कुंजियों के ऐक्सेस को सुरक्षित रखते हैं. सिर्फ़ पुष्टि किए गए एग्रीगेटर, क्लाइंट डिवाइसों से सबमिट किए गए योगदानों को डिक्रिप्ट कर सकते हैं और अलग-अलग डिवाइसों से एग्रीगेट कर सकते हैं. |
मॉडल अपडेटर | Confidential Space में चलने वाली बैकग्राउंड सेवा, जो मॉडल पर एग्रीगेट किए गए ग्रेडिएंट लागू करती है. |
कॉम्पोनेंट की जानकारी
यहां दिए गए सेक्शन में, हाई-लेवल आर्किटेक्चर के बारे में ज़्यादा जानकारी दी गई है:
टास्क मैनेजमेंट सेवा
टास्क मैनेजमेंट सेवा में दो सब-कॉम्पोनेंट होते हैं: टास्क मैनेजमेंट वेब सेवा और टास्क शेड्यूलर सेवा. दोनों को GKE पर डिप्लॉय किया जाता है.
टास्क मैनेजमेंट
यह फ़्रंटएंड वेब सेवाओं का एक सेट है, जो एचटीटीपीएस अनुरोधों को स्वीकार करता है और टास्क डेटाबेस से टास्क बनाता है या उन्हें पाता है.
टास्क शेड्यूलर
ऐसी बैकग्राउंड सेवा जो टास्क के डेटाबेस को लगातार स्कैन करती है. यह ट्रेनिंग फ़्लो को मैनेज करता है. उदाहरण के लिए, ट्रेनिंग के नए राउंड और बार-बार टेस्ट करना.
टास्क का डेटाबेस
ANSI SQL के मुताबिक काम करने वाला डेटाबेस, जो टास्क, दोहराव, और असाइनमेंट की जानकारी सेव करता है. इस तरीके को लागू करने के लिए, Google Cloud Spanner का इस्तेमाल डेटाबेस सेवा के तौर पर किया जाता है.
टास्क असाइनमेंट सेवा
टास्क असाइनमेंट सेवा, एक फ़्रंटएंड वेब सेवा है. इसे GKE पर होस्ट किया जाता है. यह एफ़सी क्लाइंट के अनुरोध लेता है और ज़रूरत पड़ने पर ट्रेनिंग के टास्क बांटता है.
यहां मौजूद टास्क डेटाबेस, टास्क मैनेजमेंट सेवा में टास्क के डेटाबेस के जैसा ही है.
एग्रीगेटर सेवा
एग्रीगेटर और मॉडल अपडेटर
एग्रीगेटर और मॉडल अपडेटर, दोनों एक जैसे हैं. ये बैकग्राउंड सेवाएं हैं, जो गोपनीय स्पेस में डेटा को सुरक्षित तरीके से प्रोसेस करती हैं. ऑफ़लाइन जॉब के बीच कम्यूनिकेशन PubSub के ज़रिए होता है.
ग्रेडिएंट, एग्रीगेट किए गए ग्रेडिएंट, मॉडल, और प्लान
- क्लाइंट डिवाइस पर अपलोड किए गए (एन्क्रिप्ट किए गए) ग्रेडिएंट के लिए स्टोरेज.
- एग्रीगेट किए गए, क्लिप किए गए, और नॉइज़ किए गए ग्रेडिएंट के लिए एग्रीगेट किया गया ग्रेडिएंट स्टोरेज.
- ट्रेनिंग प्लान, मॉडल, और वज़न के लिए मॉडल और प्लान का स्टोरेज.
कलेक्टर
कलेक्टर एक बैकग्राउंड सेवा है, जो ट्रेनिंग राउंड के दौरान, क्लाइंट डिवाइस के सबमिशन की समय-समय पर गिनती करती है. यह एग्रीगेटर को सूचना देता है कि ज़रूरत के मुताबिक सबमिशन उपलब्ध होने के बाद, एग्रीगेशन शुरू किया जाए.
सर्विस होस्ट
जिन सेवाओं के पास संवेदनशील जानकारी का ऐक्सेस नहीं है उन्हें GKE पर होस्ट किया जाता है.
संवेदनशील जानकारी को छू सकने वाली सभी सेवाएं, गोपनीय स्पेस में होस्ट की जाती हैं.
सारा संवेदनशील डेटा, एन्क्रिप्शन कुंजियों की मदद से एन्क्रिप्ट किया जाता है. इन कुंजियों को, कई पक्षों के मालिकाना हक वाली कुंजी सेवाएं मैनेज करती हैं. डिक्रिप्शन कुंजियों को सिर्फ़ ऐसे वर्शन ऐक्सेस किया जा सकता है जिनकी पुष्टि मान्य हो और जिनमें ओडीपी मोड वाला ओपन सोर्स कोड हो. यह कोड, गोपनीय स्पेस के ऐसे वर्शन पर चल सकता है जिनमें गोपनीय कंप्यूटिंग की सुविधा चालू हो.
किसी एक सेवा यूनिट में, कंप्यूट रिसॉर्स इस तरह दिखता है:
विस्तार करने की क्षमता
पहले बताए गए इन्फ़्रास्ट्रक्चर में, एक सेवा यूनिट पर फ़ोकस किया गया है.
एक सेवा यूनिट एक Cloud Spanner का इस्तेमाल करती है. ज़रूरी सीमाओं के बारे में जानने के लिए, Spanner के कोटा और सीमाएं देखें.
इस आर्किटेक्चर के हर कॉम्पोनेंट को अलग-अलग स्केल किया जा सकता है. ऐसा करने के लिए, गोपनीय स्पेस या GKE क्लस्टर में, स्टैंडर्ड स्केलिंग मशीन का इस्तेमाल करके, कैपेसिटी को बढ़ाया जाता है. यहां दिए गए उदाहरणों को जोड़कर, प्रोसेसिंग की क्षमता बढ़ाई जा सकती है:
- टास्क असाइनमेंट वेब सेवा
- टास्क मैनेजमेंट वेब सेवा
- एग्रीगेटर इंस्टेंस
- मॉडल अपडेटर इंस्टेंस
रेज़िलिएंस
एफ़सी सर्वर के रेज़िलिएंस, आपदा के बाद डेटा की बहाली से मैनेज की जाती है. इसके लिए, डुप्लीकेट स्टोरेज का इस्तेमाल किया जाता है. अगर आपको आपातकालीन स्थिति में डेटा वापस पाने की सुविधा चाहिए, तो आपको अलग-अलग इलाकों में डेटा का डुप्लीकेट कॉपी बनाने की सुविधा चालू करनी चाहिए. इससे यह पक्का होगा कि कोई आपदा आने पर (जैसे कि किसी डेटा सेंटर में किसी मौसम का असर होने की वजह से), सेवा को ट्रेनिंग के आखिरी राउंड से फिर से चालू किया जाए.
Spanner
FC सर्वर को डिफ़ॉल्ट रूप से लागू करने के लिए, टास्क का स्टेटस सेव करने के तौर पर Google Cloud Spanner का इस्तेमाल किया जाता है. इस स्टेटस का इस्तेमाल, ट्रेनिंग फ़्लो को कंट्रोल करने के लिए किया जाता है. एक से ज़्यादा क्षेत्रों के लिए कॉन्फ़िगरेशन चुनने से पहले, आपको अपने कारोबार की ज़रूरतों के हिसाब से, डेटा के एक जैसे होने और उपलब्धता के बीच के फ़ायदे और नुकसान का आकलन करना चाहिए.
Spanner के किसी भी इंस्टेंस में, उपयोगकर्ता का कोई भी डेटा या उसके डेरिवेटिव, रॉ या एन्क्रिप्ट (सुरक्षित) किए गए रूप में सेव नहीं किए जाते. Spanner की आपदा से जुड़ी रिकवरी की सुविधाओं में से किसी भी सुविधा का इस्तेमाल करें.
स्पैनर बदलाव का इतिहास रिकॉर्ड करता है. एग्रीगेटर और मॉडल अपडेटर, ट्रेनिंग राउंड के हर राउंड का डेटा स्टोर करते हैं और हर राउंड के नतीजे को एक-दूसरे को ओवरराइट किए बिना अलग-अलग स्टोर किया जाता है. इस वजह से, आपदा की स्थिति में सेवा को ट्रेनिंग के आखिरी चरण से फिर से शुरू किया जा सकता है.
Google Cloud Storage
एफ़सी सर्वर को डिफ़ॉल्ट रूप से लागू करने पर, Google Cloud Storage का इस्तेमाल करके ब्लॉब डेटा सेव किया जाता है. जैसे, मॉडल, ट्रेनिंग प्लान, और एन्क्रिप्ट (सुरक्षित) किए गए डिवाइस के योगदान.
डिज़ाइन में तीन GCS इंस्टेंस होते हैं:
- डिवाइस में योगदान: डिवाइसों से अपलोड किए गए, एन्क्रिप्ट (सुरक्षित) किए गए डिवाइस के योगदान.
- मॉडल: ट्रेनिंग प्लान, मॉडल, और उनका वज़न.
- एग्रीगेट किए गए ग्रेडिएंट: एग्रीगेटर से मिलने वाले एग्रीगेट किए गए ग्रेडिएंट.
GCS में सेव किया गया डेटा इनमें से कोई एक होता है:
- डेवलपर से मिला डेटा, जैसे कि ट्रेनिंग प्लान या
- संभावित रूप से निजी डेटा, क्योंकि यह डेटा, उपयोगकर्ता के सिग्नल (एक से ज़्यादा कोऑर्डिनेटर बैक अप किए गए एन्क्रिप्शन से सुरक्षित किया गया होता है) से मिला होता है. जैसे, डिवाइस में अपलोड किए गए ग्रेडिएंट और एग्रीगेट किए गए ग्रेडिएंट या
- ऐसा डेटा जो उपयोगकर्ता के सिग्नल से मिलता है, लेकिन डिफ़रेंशियल प्राइवसी ऐप्लिकेशन के बाद मिलता है, जैसे कि मॉडल का वेट.
आपको एक जैसा अनुभव और उपलब्धता के बीच के फ़र्क़ को समझना चाहिए. इसके बाद, GCS से जुड़े डेटा की उपलब्धता और उसके लंबे समय तक इस्तेमाल करने से जुड़ी सुविधाओं को चुनें. आपको डेटा के रखरखाव की अपनी नीतियां बतानी चाहिए.
डेटा का डुप्लीकेट कॉपी बनाना और बैकअप लेना
Google Cloud की ओर से उपलब्ध कराए गए डेटा डुप्लीकेट करने के तरीकों के अलावा, आपके पास समय-समय पर Spanner और GCS में डेटा का बैकअप लेने का विकल्प भी होता है. उदाहरण के लिए, क्रॉस-क्लाउड कॉपी करने की सेवाओं और ऑफ़र का इस्तेमाल किया जा सकता है. ओडीपी कोई सैंपल उपलब्ध नहीं कराता, क्योंकि ये कॉन्फ़िगरेशन कारोबार की ज़रूरतों पर निर्भर करते हैं. मौजूदा डिज़ाइन में, डेवलपर की ऐसी कॉपी और बैकअप की संभावित ज़रूरतों को ध्यान में रखा गया है. इसलिए, यह तीसरे पक्ष की कॉपी बनाने और बैकअप लेने की सेवाओं और प्रॉडक्ट के साथ काम करता है.