שרת מחשוב מאוחד להתאמה אישית במכשיר

שרת המחשוב המאוחד (FC) הוא חלק מהלמידה המשותפת (Federated) שמוצעת על ידי התאמה אישית במכשיר (ODP). המטרה של המסמך הזה היא להציג את Federated Compute Server‏ (FC Server), את הרכיבים שלו ואת הטכנולוגיה שבה נעשה שימוש. במסמך מוצגת סקירה כללית ברמה גבוהה של הארכיטקטורה, ולאחר מכן מתוארים כל הרכיבים בפירוט. בנוסף, מוסבר איך הרכיבים פועלים יחד כדי לספק סביבה של למידת מכונה מאוחדת, ומפורטות אסטרטגיות להתאמה לעומס ולחלוקה של עומסי עבודה.

תהליך ההדרכה

האימון מורכב מזרמי נתונים בין לקוח ה-FC לבין שרת ה-FC. לקוח FC הוא מודול ליבה של Android שמאמן מודלים של למידת מכונה במכשיר ומקיים אינטראקציה עם שרת FC. שרת ה-FC מעבד את התוצאות מלקוח ה-FC ומאגד אותן באופן מאובטח בסביבת מחשוב אמינה (TEE).

ההדרכה כוללת את השלבים הבאים:

תרשים זרימה שבו מוצג תהליך האימון בין שרת לבין לקוח מחשוב מאוחד בארגז החול לפרטיות ל-Android.
  1. לקוח ה-FC במכשיר מוריד מפתח הצפנה ציבורי מ-Key Services.
  2. לקוח FC בודק עם שרת FC ומקבל משימה של אימון.
  3. לקוח FC מוריד תוכנית אימון, וגם את הגרסה האחרונה של המודל, גרסה N.
  4. הלקוח של FC מתאמן באמצעות הנתונים המקומיים והתוכנית.
  5. לקוח FC מצפין את התרומות של המכשיר הזה באמצעות המפתח הציבורי שהתקבל בשלב 0, ומעלה אותן לשרת FC.
  6. לקוח ה-FC מודיע לשרת ה-FC שהאימון שלו הושלם.
  7. שרת ה-FC ממתין עד שיהיו מספיק לקוחות ששלחו את התרומות שלהם.
  8. מתבצעת סבב של צבירת נתונים.
  9. המערכת המרכזית (Aggregator) טוענת את התרומות המוצפנות לסביבת מחשוב אמינה (TEE).
  10. המאגר מאמת את עצמו בפני התיאמים, בהתאם לRFC 9334 Remote ATtestation procedureS (RATS) Architecture של NIST. לאחר אימות מוצלח, שירותי המפתחות מעניקים לו את מפתחות הפענוח. אפשר לפצל את המפתחות האלה בין מספר ספקי מפתחות לפי תוכנית שיתוף סודות של Shamir.
  11. המאגר מבצע צבירת נתונים במכשירים שונים, חותך קטעים ומוסיף רעשי רקע בהתאם למנגנוני פרטיות דיפרנציאלית (DP) המתאימים, ומפיק את התוצאות עם הרעשי הרקע.
  12. ה-Aggregator מפעיל את ה-Model Updater.
  13. הכלי לעדכון מודלים טוען את התרומה המצטברת ומחילה אותה על גרסת המודל N כדי ליצור את גרסת המודל N + 1. המודל החדש מועבר לאחסון המודלים.

אפשר לפרוס את שרת ה-FC בכל שירותי הענן שתומכים ב-TEE ובתכונות אבטחה קשורות. אנחנו בודקים ספקי ענן ציבורי וטכנולוגיות בסיסיות, אבל בינתיים בקטע הבא מוצגת דוגמה להטמעה ב-Google Cloud באמצעות Confidential Space.

ארכיטקטורה ברמה גבוהה

שרת FC כולל את הרכיבים הבאים שנפרסים ב-Google Cloud:

תרשים שבו מוצגת הארכיטקטורה של שרת המחשוב המאוחד של ארגז החול לפרטיות ב-Android.
רכיב תיאור
שירות ניהול משימות שירות אינטרנט לניהול המשימה של אימון המודלים. שותפים צריכים להשתמש ב-Task Management API כדי ליצור משימה של הדרכה, להציג רשימה של כל המשימות הקיימות של הדרכה, לבטל משימה ולאחזר את כל הסטטוסים של ההדרכה.
שירות הקצאת משימות שירות אינטרנט מבוסס HTTPS שבו מכשירי הלקוח מדווחים מדי פעם על סטטוס האימון ומקבלים משימות אימון.
אתר אגרגטור שירות רקע שפועל ב-Confidential Space. הוא מפעיל עומסי עבודה שנוצרו על ידי ODP. הוא צריך לאמת את התיאום, שמטרתו להגן על הגישה למפתחות ההצפנה. רק אגרגטורים שעברו אימות יכולים לפענח את התרומות שנשלחו ממכשירי לקוח ולבצע צבירת נתונים במכשירים שונים.
הכלי לעדכון מודלים שירות רקע שפועל ב-Confidential Space ומחיל את הגרדיאנטים המצטברים על המודל.

פרטי הרכיב

בקטעים הבאים מוסבר בהרחבה על הארכיטקטורה ברמה הכללית:

תרשים שבו מוצגים הרכיבים של שרת המחשוב המאוחד של ארגז החול לפרטיות ל-Android.

שירות ניהול משימות

תרשים שבו מוצגת הטופולוגיה של שירות ניהול המשימות של ארגז החול לפרטיות ב-Android.

שירות ניהול המשימות מכיל שני רכיבים משניים: שירות האינטרנט לניהול משימות ושירות תזמון המשימות, שניהם פרוסים ב-GKE.

ניהול משימות

זוהי קבוצה של שירותי אינטרנט לקצה הקדמי שמקבלים בקשות HTTPS ויוצרים או מקבלים משימות ממסד נתוני המשימות.

מתזמן המשימות

שירות רקע שסורק באופן רציף את מסד הנתונים של המשימות. הוא מנהל את תהליך האימון, למשל יוצר מחזורי אימון וחזרות חדשים.

מסד נתונים של משימות

מסד נתונים תואם ANSI SQL שבו מאוחסנים פרטי המשימות, החזרות וההקצאות. בהטמעה הזו, Google Cloud Spanner משמש כשירות מסד הנתונים הבסיסי.

שירות הקצאת משימות

תרשים שבו מוצגת הטופולוגיה של שירות הקצאת המשימות של ארגז החול לפרטיות ב-Android.

שירות הקצאת המשימות הוא שירות אינטרנט של ממשק קצה שמתארח ב-GKE. הוא מקבל בקשות מלקוחות FC ומחלק משימות אימון במקרים הרלוונטיים.

מסד נתוני המשימות כאן הוא אותו מכונה של מסד נתונים כמו מסד נתוני המשימות בשירות ניהול המשימות.

שירות אגרגטור

תרשים שבו מוצגת הטופולוגיה של שירות המאגר של ארגז החול לפרטיות ב-Android.
אגרגטור ותוכנה לעדכון מודלים

ה-Aggregator וה-Model Updater דומים. אלה שירותי רקע שמעבדים נתונים באופן מאובטח ב-Confidential Space. התקשורת בין המשימות אופליין מתבצעת דרך PubSub.

שיפועים, שיפועים מצטברים, מודל ותוכנית
  • אחסון של גרדיאנטים במכשיר הלקוח, גרדיאנטים שהועלו (הוצפנו).
  • אחסון של גרדיאנטים מצטברים לגרדיאנטים מצטברים, חתוכים ומשוייכים לרעש.
  • אחסון של מודלים ותוכניות לאימון, למודלים ולמשקלים.
שרת לאיסוף נתונים

האוסף הוא שירות ברקע שמספר מדי פעם את הבקשות שנשלחות ממכשיר הלקוח במהלך סיבוב אימון. הוא מודיע למאגר הנתונים להתחיל את הצבירה ברגע שיהיו מספיק נתונים.

מארחי שירות

כל השירותים שאין להם גישה למידע רגיש מתארחים ב-GKE.

כל השירותים שעשויים לגעת במידע אישי רגיש מתארחים ב-Confidential Space.

כל הנתונים הרגישים מוצפנים באמצעות מפתחות הצפנה שמנוהלים על ידי שירותי מפתחות בבעלות מספר צדדים. רק קוד פתוח שנכתב על ידי ODP ועבר אימות, שפועל בגרסאות חוקיות של Confidential Space עם מחשוב סודי מופעל, יכול לגשת למפתחות הפענוח.

ביחידת שירות אחת, משאב המחשוב נראה כך:

תרשים שבו מוצגת הטופולוגיה של יחידת השירות של ארגז החול לפרטיות ב-Android.

מדרגיות

התשתית שתיארנו קודם מתמקדת ביחידת שירות אחת.

יחידת שירות אחת משתמשת ב-Cloud Spanner אחד. למגבלות משמעותיות, אפשר לעיין במאמר מכסות ומגבלות ב-Spanner.

אפשר לשנות את ההיקף של כל רכיב בארכיטקטורה הזו בנפרד. כדי לעשות זאת, משנים את הקיבולת ב-Confidential Space או באשכולות GKE באמצעות מנגנוני התאמה סטנדרטיים. אפשר להגדיל את קיבולת העיבוד על ידי הוספת עוד מופעים של:

  • שירות האינטרנט להקצאת משימות
  • שירות האינטרנט לניהול משימות
  • מכונות של אתר אגרגטור
  • מכונות של Model Updater

יכולת התמודדות

עמידות של שרת FC מטופלת על ידי תוכנית התאוששות מאסון באמצעות אחסון מרופל. אם אתם רוצים להשתמש בתכונה 'שחזור מאסון', עליכם להפעיל שכפול נתונים בין אזורים. כך תוכלו לוודא שבמקרה של אסון (למשל אירוע מזג אוויר שמפריע למרכז נתונים), השירות ימשיך מהסבב האחרון של האימון.

Spanner

בהטמעת ברירת המחדל של שרת FC נעשה שימוש ב-Google Cloud Spanner כמסד הנתונים לאחסון סטטוס המשימות, שמשמש לצורך בקרה על תהליך האימון. לפני שבוחרים הגדרה בכמה אזורים, כדאי להעריך את הפשרות בין עקביות לזמינות בהתאם לצרכים העסקיים שלכם.

אין נתוני משתמשים או נגזרות שלהם, גולמיים או מוצפנים, שמאוחסנים במכונה של Spanner. אתם יכולים להשתמש בכל אחת מתכונות התאוששות מאסון שזמינות ב-Spanner.

היסטוריית השינויים מתועדת ב-Spanner. המאגר והכלי לעדכון המודלים שומרים את הנתונים לפי סיבוב אימון, ותוצאת כל סיבוב נשמרת בנפרד בלי להחליף את התוצאות של הסיבובים הקודמים. לכן, במקרה אסון, השירות יכול להמשיך מהסבב האחרון של האימון.

Google Cloud Storage

בהטמעת ברירת המחדל של שרת FC נעשה שימוש ב-Google Cloud Storage כדי לאחסן נתוני blob, כמו מודלים, תוכניות אימון ותרומות מוצפנות ממכשירים.

יש שלוש מכונות GCS בתכנון:

  • תרומות מהמכשיר: תרומות מוצפנות מהמכשיר.
  • מודלים: תוכניות אימון, מודלים והמשקלים שלהם.
  • שיפועים מצטברים: השיפועים המצטברים שנוצרו על ידי האגרגטור.

הנתונים ששמורים ב-GCS הם:

  • המפתח סיפק נתונים, כמו תוכנית אימון או
  • נתונים שעשויים להיות פרטיים כי הם נגזרים מאותות של משתמשים (שמוצפנים באמצעות הצפנה שמגובים על ידי מספר גורמים מתאימים), כמו שיפועים שהועלו מהמכשיר ושיפועים מצטברים. לחלופין,
  • נתונים לא פרטיים שמקורם באותות של משתמשים, אבל לאחר החלת פרטיות דיפרנציאלית, כמו משקלים של מודלים.

כדאי להעריך את הפשרות בין עקביות לזמינות ולבחור את תכונות הזמינות והעמידות של נתוני GCS המתאימות. כדאי לציין את מדיניות שמירת הנתונים שלכם.

רפליקציה וגיבויים

בנוסף למנגנוני הרפליקה של הנתונים ש-Google Cloud מספקת, אפשר גם לגבות את הנתונים ב-Spanner וב-GCS מדי פעם. לדוגמה, תוכלו להשתמש בשירותים ובחבילות שירות של רפליקה בעננים שונים. לא ניתן למצוא דוגמה ב-ODP כי ההגדרות האלה תלויות מאוד בצרכים העסקיים. התכנון הנוכחי מתייחס לצרכים הפוטנציאליים של המפתחים לגבי רפליקציות וגיבויים כאלה. כתוצאה מכך, הוא תואם למוצרים ולשירותי גיבוי ורפליקציה של צד שלישי.