חיפוש ארכיטקטורות עצביות (NAS) לרשתות עצביות מיטביות

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

תחומי פיתוח AI

שאלות נפוצות

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

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

Neural architecture search: איפה הבחירה הידנית של רשתות נכשלת

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

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

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

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

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

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

תוצאת החיפוש אינה רשת "טובה" אחת, אלא מקבץ של אפשרויות למגבלות שונות של שיהוי וזיכרון.

מה נותן החיפוש האוטומטי של ארכיטקטורות ואיך זה נראה

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

מחזור הבחירה מתקצר, העבודה הידנית נעלמת

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

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

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

נעלם סוג הכשלים "המודל לא עומד במשאבים"

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

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

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

שיטות לחיפוש ארכיטקטורות: השוואת גישות ומגבלות

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

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

מתי בחירה ידנית מספיקה

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

מתי נדרש חיפוש אוטומטי

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

שלבי ההטמעה: מהצגת המשימה ועד מסירת המודל

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

מה קורה בשלב הביקורת

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

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

איך מתבצעת קבלת התוצאה

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

חפצי אספקה: קונפיגורציות חיפוש, סכמות, תקנות

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

תיעוד ויכולת שחזור

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

הרשאות גישה לנתונים ולמודלים

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

מקרה בוחן: איך הכנסנו את המודל למגבלות מכשיר היעד

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

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

מה היה לפני

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

מה קרה אחרי

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

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

מהנדס הלקוח: "בעבר לא יכולתי להסביר מדוע נבחר דווקא вариант זה. כעת יש פרוטוקול מדידות ורשימת קונפיגורציות שנפסלו עם סיבת הפסילה".

איך לצמצם את search space בדרישות קפדניות לשיהוי

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

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

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

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

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

שאלות טכניות נפוצות: נתונים, חומרה, יכולת שחזור

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

כמה נתונים דרושים כדי שחיפוש ארכיטקטורות ייתן אפקט?

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

מה יקרה למודל שכבר אומן?

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

איך אתם מונעים התאמה לסט המבחן?

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

האם ניתן לבצע חיפוש במעגל סגור?

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

בואו נדון במשימה: מה לשלוח להערכה ותוכנית

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

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

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