הטמעת פלטפורמת MLOps מקצה לקצה: מחזור חיים מלא של מודלי ML

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

תחומי פיתוח AI

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1359
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1330
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    776
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1077
  • פיתוח לוגו חברת AIDER
    פיתוח לוגו חברת AIDER
    1022
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1113

פלטפורמת MLOps: מדוע מודלים לא מגיעים לפרודקשן

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

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

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

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

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

מה משתנה לאחר ההטמעה: האפקט בלוחות זמנים ובכשלים

האפקט מורגש במקום שבו הכול נשען קודם על עבודה ידנית. בעבר המחזור מניסוי מוצלח ועד לשחרור ארך שבועות: המהנדס הרכיב סביבה אצלו, עמית העביר את הקוד לפרודקשן, האנליסט הכין בנפרד את המאפיינים, ובכל חיבור המודל «עבר» עם פערים.

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

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

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

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

הרווח העיקרי — הפחתת כשלים מסוג מסוים. הפער בין נתוני האימון לנתוני הפרודקשן נעלם כקטגוריה: המאפיינים מחושבים ממקור אחד ולפי אותה לוגיקה עבור האימון ועבור האינפרנץ, וגרסת מערך הנתונים קשורה לגרסת המודל. זה מסיר הידרדרויות שקטות, שהתגלו בעבר רק לפי תלונות המשתמשים.

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

אפשרויות פריסה של פלטפורמת MLOps: השוואת גישות

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

אפשרות מתי מתאימה מגבלות
שרת משלכם הנתונים אינם יוצאים מהמתחם, העומס צפוי, יש משמרות תורנות משלכם עמידות בכשלים, עדכונים והרחבה — בצד הלקוח; שיאי אימון נתקלים בציוד שנרכש
סביבה מנוהלת נדרש התחלה מהירה, הצוות קטן, העומס משתנה תלות בספק; חלק מהטלמטריה מחוץ למתחם; הגדרות המתזמן מוגבלות
מתאר היברידי נתונים רגישים ואימון בפנים, מסירת המודלים — בחוץ חיבורי רשת וכניסה אחודה מורכבים יותר; גרסאות המודלים והמאפיינים מסונכרנות בין החלקים
רכיבים בקוד פתוח נדרש מחזור אימון לא סטנדרטי או לוגיקת תיעוד גרסאות משלכם האינטגרציה, העדכונים ותאימות הגרסאות מתוחזקים בידי הצוות; אין שילובים מוכנים «מהקופסה»

הבחירה מצטמצמת לשלוש שאלות: היכן יכולים להיות הנתונים, מי תורן בנפילת האימון, וכמה מהר יש להרחיב את החישוב מחדש. את התשובות מתעדים לפני תחילת העבודה — אחרת יהיה צורך לבנות מחדש את המתאר יחד עם רישום המודלים והיסטוריית הניסויים.

שלבי ההטמעה: מביקורת הנתונים ועד למסירה לתפעול

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

  1. ביקורת נתונים. מקורות, תדירות עדכון, שיעור הערכים החסרים והכפולים, היסטוריית התיוג. בפלט — מפת נתונים ורשימת מערכים שאינם מתאימים לאימון.
  2. תרשים המתאר היעד. היכן מאוחסנים הנתונים, היכן מאומנים המודלים, היכן מופקות התחזיות, כיצד מופרדות הסביבות ומוגדרות הרשאות הגישה. מתאמים לפני רכישת המשאבים.
  3. פריסה והגדרה. רישום מודלים, מחסן מאפיינים, בדיקות אוטומטיות לאיכות הנתונים, שחזור ניסויים: הרצת האימון קשורה לגרסת הנתונים והקוד.
  4. מודל פיילוט. מריצים את כל המסלול על משימה אמיתית אחת — מהכנת הנתונים ועד הפקת התוצאה. מודדים את זמן האימון מחדש, את האיכות על מדגם מופרש ואת שיעור הכשלים.
  5. בדיקת תקלות וחזרה לאחור. מה קורה בהתיישנות נתונים ובנפילת איכות. חזרה לגרסה קודמת של המודל — בלי לעצור את השירות.
  6. מסירה לתפעול. נהלי עדכון, ספי התראה, הדרכת צוות הלקוח ותיעוד למתאר.

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

ארטיפקטים של ההטמעה: קונפיגורציות, תרשימים ונהלים

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

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

מקרה בוחן: כיצד קיצרנו את מחזור שחרור המודלים בחצי

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

כל פריסה רביעית הסתיימה בחזרה לאחור, והחזרה לגרסה קודמת — 4–6 שעות של עבודה ידנית, משום שהמשקלים, ההגדרות והתלויות חיו על המכונה של מהנדס מסוים ולא תועדו בגרסאות בידי איש.

מדדים לפני השינויים

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

מה שינינו

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

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

התוצאה

זמן השחרור של גרסת מודל הצטמצם מ-24 ל-10–12 ימים, כלומר בחצי. שיעור הפריסות עם חזרה לאחור ירד מ-25% ל-6%, וזמן החזרה לגרסה קודמת — משעות אחדות לכמה דקות. מהנדס אחד מנהל כעת כעשרים מודלים במקום ארבעה-חמישה, ובמקביל מצבה של כל גרסה משוחזר לפי הרישום, ולא לפי זיכרון הצוות.

במה נבדלת אוטומציה של אימון מאספקת יישומים

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

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

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

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

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

ספקות טכניים: מגבלות, תאימות, תמיכה

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

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

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

כיצד נשלטת הסחיפה ומה קורה בעת הידרדרות?

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

מה נכלל בתמיכה במתאר לאחר ההפעלה?

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

מאיפה להתחיל: מה להכין לדיון במשימה

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

מה להכין לשיחה הראשונה:

  • רשימת המודלים והמשימות שהם פותרים, עם ציון מה כבר עובד למשתמש ומה חי בבדיקה;
  • מקורות הנתונים: היכן הם נמצאים, מי הבעלים, באיזו תדירות הם מתעדכנים, האם יש תיוג וכמה הוא מלא;
  • המסלול הנוכחי של המודל עד לתוצאה: הרצה ידנית, סקריפט לפי לוח זמנים או שירות נפרד, מי עוקב אחר האיכות;
  • הרשאות גישה למערכות אחסון הנתונים ולמאגרי הקוד — די בקריאה, ולא יהיה צורך לשנות דבר;
  • מגבלות: מתאר סגור, דרישות לעיבוד נתונים אישיים, מי מאשר את הוצאת המודל לעבודה;
  • מדדים שלפיהם אתם שופטים את האיכות: שיעור ההפעלות הנכונות, זמן התגובה, היקף העריכות הידניות לאחר ההפקה.

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