שרת המחשוב המאוחד (FC) הוא חלק מהלמידה המשותפת (Federated) שמוצעת על ידי התאמה אישית במכשיר (ODP). מטרת המסמך הזה היא להציג את Fedeted Compute Server (FC Server), את הרכיבים שלו ואת הטכנולוגיה שבה משתמשים. המסמך מספק סקירה ברמה גבוהה של הארכיטקטורה ולאחר מכן מתעמק בכל רכיב. נסביר גם איך הרכיבים פועלים יחד כדי לספק סביבת למידה מאוחדת, נציע אסטרטגיות להתאמה לעומס (scaling) של עומסי העבודה ולפלח אותם.
תהליך אימון
אימון כולל מעברי נתונים בין לקוח ה-FC לבין השרת של ה-FC. לקוח ה-FC הוא מודול ליבה של Android לאימון מודלים של למידת מכונה במכשיר ולאינטראקציה עם השרת של FC. שרת ה-FC מעבד את התוצאות מלקוח ה-FC ומאגד אותן באופן מאובטח בסביבת מחשוב אמינה (TEE).
ההדרכה כוללת את השלבים הבאים:
- לקוח FC במכשיר מוריד מפתח הצפנה ציבורי מהשירותים למפתחות הצפנה.
- לקוח ה-FC מבצע בדיקה מול שרת ה-FC ומקבלים משימת הדרכה.
- לקוח ה-FC מוריד תוכנית הדרכה, וגם את הגרסה האחרונה של המודל, גרסה N.
- לקוח ה-FC מבצע אימון באמצעות הנתונים המקומיים והתוכנית.
- לקוח ה-FC מצפין את התכנים הרשומים של המכשיר הזה באמצעות המפתח הציבורי שהתקבל בשלב 0 ומעלה את התוכן לשרת של ה-FC.
- לקוח ה-FC מודיע לשרת ה-FC שהאימון שלו הושלם.
- שרת ה-FC ממתין עד שמספיק לקוחות ישלחו את התכנים שלהם.
- מתבצעת סבב של צבירת נתונים.
- תכנים מוצפנים נטענים לסביבת הפעלה מהימנה (TEE) על ידי אתר האגרגטור.
- אתר האגרגטור מאמת את עצמו למתאמים בהתאם לנוהלי האימות מרחוק של RFC 9334 (RATS). אחרי שהאימות בוצע בהצלחה, השירותים למפתחות ההצפנה מעניקים לו את מפתחות הפענוח. אפשר לפצל את המפתחות האלה בין מספר ספקי מפתחות לפי תוכנית שיתוף סודות של Shamir.
- המאגר מבצע צבירת נתונים במכשירים שונים, חותך קטעים ומוסיף רעשי רקע בהתאם למנגנוני פרטיות דיפרנציאלית (DP) המתאימים, ומפיק את התוצאות עם הרעשי הרקע.
- אתר האגרגטור מפעיל את המעדכן של המודלים.
- הכלי לעדכון המודלים טוען את התוכן המצטבר ומחיל אותה על גרסה N כדי ליצור את גרסה N + 1 של המודל. המודל החדש מועבר לאחסון המודלים.
ניתן לפרוס את שרת ה-FC בכל שירותי ענן שתומכים ב-TEE ובתכונות אבטחה קשורות. אנחנו בודקים ספקים של ענן ציבורי ואת הטכנולוגיות הבסיסיות, אבל בינתיים פירטנו כאן הטמעה לדוגמה של Google Cloud באמצעות Confidential Space.
אדריכלות ברמה גבוהה
שרת ה-FC כולל את הרכיבים הבאים ב-Google Cloud:
רכיב | תיאור |
שירות ניהול משימות | שירות אינטרנט לניהול המשימה של אימון המודלים. על השותפים להשתמש ב-Tasks Management API כדי ליצור משימת אימון, להציג רשימה של כל משימות האימון הקיימות, לבטל משימה ולאחזר את כל הסטטוסים של האימון. |
שירות הקצאת משימות | שירות אינטרנט מבוסס HTTPS שבו מכשירי הלקוח מדווחים מדי פעם על סטטוס האימון ומקבלים משימות אימון. |
אתר אגרגטור | שירות רקע שפועל ב-Confidential Space. היא מפעילה עומסי עבודה שנכתבו על ODP. הוא צריך לאמת את התיאום, שמטרתו להגן על הגישה למפתחות ההצפנה. רק אגרגטורים שעברו אימות יכולים לפענח את התרומות שנשלחו ממכשירי לקוח ולבצע צבירת נתונים במכשירים שונים. |
הכלי לעדכון מודלים | שירות רקע שפועל ב-Confidential Space ומחילים את ההדרגתיות המצטברות על המודל. |
פרטי הרכיב
בקטעים הבאים מוסבר בהרחבה על הארכיטקטורה ברמה הזו:
שירות ניהול משימות
שירות ניהול המשימות כולל שני רכיבי משנה: שירות האינטרנט לניהול משימות ושירות מתזמן המשימות, שניהם פרוסים ב-GKE.
ניהול משימות
זוהי קבוצה של שירותי אינטרנט לקצה הקדמי שמקבלים בקשות HTTPS ויוצרים או מקבלים משימות ממסד נתוני המשימות.
מתזמן המשימות
שירות ברקע שסורק באופן רציף את מסד הנתונים של המשימות. הוא מנהל את תהליך האימון, לדוגמה יוצר סבבי הדרכה חדשים ואיטרציות.
מסד הנתונים של המשימות
מסד נתונים תואם ANSI SQL שבו מאוחסנים פרטי המשימות, החזרות וההקצאות. בהטמעה הזו, Google Cloud Spanner משמש בתור שירות מסד הנתונים הבסיסי.
שירות הקצאת משימות
שירות הקצאת המשימות הוא שירות אינטרנט לקצה הקדמי שמתארח ב-GKE. הוא מקבל בקשות מלקוחות FC ומחלק משימות אימון במקרים הרלוונטיים.
מסד נתוני המשימות כאן הוא אותו מכונה של מסד נתונים כמו מסד נתוני המשימות בשירות ניהול המשימות.
שירות אתרי אגרגטור
אגרגטור ושירות לעדכון מודלים
ה-Aggregator וה-Model Updater דומים. הם שירותי רקע שמעבדים נתונים באופן מאובטח ב-Confidential Space. התקשורת בין המשימות אופליין מתבצעת דרך PubSub.
מעברים הדרגתיים, הדרגתיות של צבירה, מודל ותוכנית
- אחסון של גרדיאנטים במכשיר הלקוח, גרדיאנטים שהועלו (הוצפנו).
- אחסון של שיפועים מצטברים לשיפועים מצטברים, חתוכים ומשויישים.
- מודל ותכנון אחסון של תוכניות אימונים, דגמים ומשקולות.
אספן
האוסף הוא שירות ברקע שמספר מדי פעם את הבקשות שנשלחות ממכשיר הלקוח במהלך סיבוב אימון. ההודעה מיידעת את אתר האגרגטור להתחיל את צבירת הנתונים כשיהיו מספיק עבודות שהוגשו.
מארחי שירותים
כל השירותים שאין להם גישה למידע רגיש מתארחים ב-GKE.
כל השירותים שעשויים לגעת במידע רגיש מתארחים ב-Confidential Space.
כל הנתונים הרגישים מוצפנים באמצעות מפתחות הצפנה שמנוהלים על ידי שירותי מפתחות שבבעלות מספר צדדים. רק קוד פתוח שנכתב על ידי ODP ועבר אימות, שפועל בגרסאות חוקיות של Confidential Space עם מחשוב סודי מופעל, יכול לגשת למפתחות הפענוח.
ביחידת שירות אחת, משאב המחשוב נראה כך:
מדרגיות
התשתית שתיארנו קודם מתמקדת ביחידת שירות אחת.
יחידת שירות אחת משתמשת ב-Cloud Spanner אחד. למגבלות משמעותיות, אפשר לעיין במאמר מכסות ומגבלות ב-Spanner.
ניתן להתאים בנפרד כל רכיב בארכיטקטורה הזו. כדי לעשות זאת, יש צורך בעומס (scaling) של הקיבולת בתוך Confidential Space או בתוך אשכול GKE, באמצעות מנגנוני התאמה לעומס (scaling) סטנדרטיים. אפשר להגדיל את קיבולת העיבוד על ידי הוספת עוד מופעים של:
- שירות האינטרנט להקצאת משימות
- שירות אינטרנט לניהול משימות
- מכונות של אתר אגרגטור
- מכונות של עדכון מודל
יכולת התמודדות
העמידות של שרת FC מטופלת על ידי תוכנית התאוששות מאסון (DR) באמצעות אחסון משוכפל. אם אתם רוצים להשתמש בתכונה 'שחזור מאסון', עליכם להפעיל רפליקציה של נתונים בין אזורים. כך תבטיחו שבמקרה של אסון (למשל: אירוע מזג אוויר שמשבש את מרכז הנתונים), השירות יחזור לפעול החל מסבב האימון האחרון.
Spanner
בהטמעת ברירת המחדל של שרת FC נעשה שימוש ב-Google Cloud Spanner כמסד הנתונים לאחסון סטטוס המשימות, שמשמש לצורך בקרה על תהליך האימון. לפני שבוחרים הגדרה בכמה אזורים, כדאי להעריך את הפשרות בין עקביות לזמינות בהתאם לצרכים העסקיים שלכם.
לא מאוחסנים נתוני משתמשים או נגזרות שלהם, גולמיים או מוצפנים, באף מכונה של Spanner. אתם יכולים להשתמש בכל אחת מתכונות התאוששות מאסון שזמינות ב-Spanner.
Spanner מתעד את היסטוריית השינויים. אתר האגרגטור ומעדכן המודלים מאחסנים את הנתונים לכל סבב אימון והתוצאה של כל סבב מאוחסנת בנפרד בלי להחליף אחד את השני. לכן, במקרה אסון, השירות יכול להמשיך מהסבב האחרון של האימון.
Google Cloud Storage
בהטמעת ברירת המחדל של שרת ה-FC נעשה שימוש ב-Google Cloud Storage כדי לאחסן נתוני blob כמו מודלים, תוכניות אימונים ומידע מוצפן על מכשירים שנוספו.
יש שלוש מכונות GCS בתכנון:
- תרומות מהמכשיר: תכנים מוצפנים שנוספו ממכשירים.
- מודלים: תוכניות אימון, מודלים והמשקלים שלהם.
- שיפועים מצטברים: השיפועים המצטברים שנוצרו על ידי האגרגטור.
הנתונים שמאוחסנים ב-GCS הם:
- נתונים שסופקו על ידי המפתח, כמו תוכנית הדרכה, או
- נתונים שעשויים להיות פרטיים כי הם נגזרים מאותות של משתמשים (שמוצפנים באמצעות הצפנה שמגובים על ידי מספר גורמים מתאימים), כמו שיפועים שהועלו מהמכשיר ושיפועים מצטברים. לחלופין,
- נתונים לא פרטיים שנגזרים מאותות של משתמשים, אבל אחרי יישום פרטיות דיפרנציאלית, כמו משקולות של מודל.
כדאי להעריך את הפשרות בין עקביות לזמינות ולבחור את תכונות הזמינות והעמידות של נתוני GCS המתאימות. כדאי לציין את מדיניות שמירת הנתונים שלכם.
רפליקציה וגיבויים
בנוסף למנגנוני הרפליקה של הנתונים ש-Google Cloud מספקת, אפשר גם לגבות את הנתונים ב-Spanner וב-GCS מדי פעם. לדוגמה, תוכלו להשתמש בשירותים ובחבילות שירות של רפליקה בעננים שונים. ה-ODP לא מספק דוגמה כי ההגדרות האישיות האלה תלויות בצרכים עסקיים. העיצוב הנוכחי מביא בחשבון את הצרכים הפוטנציאליים של המפתחים ליצירת רפליקות וגיבויים כאלה. לכן, הוא תואם לשירותים ולמוצרים של רפליקציות וגיבויים שמסופקים על ידי צד שלישי.