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