במאמר הזה מוסבר איך Gemini Enterprise Agent Platform משתמשת בקבוצות האימון, האימות והבדיקה של הנתונים כדי לאמן מודל AutoML, ואיך אפשר לשלוט באופן שבו הנתונים מחולקים בין שלוש הקבוצות האלה. AutoML משתמש בפיצולי נתונים באופן שונה בהתאם לסוג הנתונים של נתוני האימון.
בדף הזה מוסבר על פיצולי נתונים של נתוני תמונות. מידע על פיצול נתונים בנתונים טבלאיים זמין במאמר פיצול נתונים בנתונים טבלאיים.
במערכי נתונים של תמונות, AutoML משתמש בקבוצת נתונים לאימון כדי לאמן את המודל, ובקבוצת נתונים לתיקוף כדי לאמת את התוצאות שהמודל מחזיר במהלך האימון. כשהאימון מסתיים, AutoML משתמשת בקבוצת נתונים לבדיקה כדי לספק את מדדי ההערכה הסופיים.
אתם יכולים לאפשר ל-Gemini Enterprise Agent Platform לחלק את הנתונים שלכם באופן אוטומטי. הנתונים שלכם מפולגים באופן אקראי לשלוש קבוצות לפי אחוזים. זו הדרך הכי קלה לפצל את הנתונים, והיא מתאימה לרוב המקרים.
| הגדרה | אחוז |
|---|---|
| הדרכה | 80 |
| אימות | 10 |
| בדיקה | 10 |
כדי להשתמש בחלוקת הנתונים שמוגדרת כברירת מחדל, מאשרים את ברירת המחדל במסוף Google Cloud , או משאירים את השדה split ריק ב-API.
אם אתם רוצים לקבוע איך הנתונים יפוצלו לקבוצות, יש לכם את האפשרויות הבאות:
צריך לבחור רק אחת מהאפשרויות האלה, בזמן אימון המודל. חלק מהאפשרויות האלה מחייבות שינויים בנתוני האימון (לדוגמה, התווית ml_use). הוספת נתונים או תוויות לאפשרויות של פיצול נתונים לא מחייבת אתכם להשתמש באפשרויות האלה. אתם עדיין יכולים לבחור אפשרות אחרת כשאתם מאמנים את המודל.
פיצול ידני של נתונים לא מובְנים
הפיצול הידני נקרא גם "פיצול מוגדר מראש".
כדי להשתמש בתווית ml_use כדי לשלוט בחלוקת הנתונים, צריך להגדיר את התווית ml_use בנתונים.
הגדרת ערך לתווית ml_use
אפשר להגדיר את התווית ml_use לנתוני תמונות בזמן ייבוא הנתונים (לכל פריט נתונים או לקובץ הייבוא כולו), או אחרי ייבוא הנתונים באמצעות מסוף Google Cloud .
הגדרת ml_use על פריטי נתונים ספציפיים בזמן הייבוא
מגדירים את התווית ml_use לכל פריט נתונים על ידי הוספת ערך לשדה aiplatform.googleapis.com/ml_use בנתונים בפורמט JSON Lines, או על ידי הגדרת הערך של העמודה הראשונה בקובץ ה-CSV. לפרטים נוספים, אפשר לעיין במידע על הכנת נתונים לסוג הנתונים.
אם יש פריטים שחוזרים על עצמם בנתונים (אם קטע קוד של אותה תמונה מופיע כמה פעמים בקובץ הייבוא), Agent Platform משתמשת בערך ml_use של פריט הנתונים הראשון שהיא נתקלת בו, ומתעלמת מכל ערך ml_use שמופיע אחריו. הפריט הראשון שנתקלים בו הוא לא בהכרח הפריט שקרוב יותר לתחילת קובץ ההעלאה.
הגדרת ml_use לכל הקבצים שמועלים
אם אפשר למיין את הנתונים לקובצי העלאה שונים לפי ערך ml_use, אפשר להגדיר את הערך ml_use לכל קובץ ההעלאה באמצעות התפריט הנפתח 'לכל קובץ' כשמעלים קבצים באמצעות Google Cloud המסוף, או באמצעות שדה המיפוי dataItemLabels בשיטה datasets.import.
אם מגדירים את ml_use לקובץ העלאה, והקובץ מכיל גם ערכים של ml_use, הערכים של ml_use בקובץ מקבלים עדיפות על פני הערך שמוגדר לכל הקובץ.
הגדרת ml_use אחרי הייבוא
אחרי שמעלים את הנתונים, אפשר להגדיר או לעדכן את הערך ml_use של פריטי נתונים ספציפיים במסוף Google Cloud . לשם כך, בוחרים פריט אחד או יותר בתצוגת הרשימה ומשתמשים בתפריט הנפתח הקצאת שימוש ב-ML.
אם תעלו שוב קובץ נתונים, גם אם הערכים של ml_use השתנו, הערך של ml_use לא יתעדכן. אי אפשר לעדכן את הערכים של ml_use אחרי הייבוא באמצעות Agent Platform API.
שימוש בתווית ml_use
כשמאמנים את המודל, מציינים ידני (מתקדם) עבור פיצול הנתונים במסוף Google Cloud . אם אתם מאמנים את המודל באמצעות Agent Platform API, אתם צריכים להשתמש באובייקט FilterSplit ולציין labels.aiplatform.googleapis.com/ml_use=training עבור מסנן האימון, labels.aiplatform.googleapis.com/ml_use=validation עבור מסנן האימות ו-labels.aiplatform.googleapis.com/ml_use=test עבור מסנן הבדיקה.
לדוגמה:
model = job.run(
dataset=dataset,
model_display_name=_name,
training_filter_split="labels.aiplatform.googleapis.com/ml_use=training",
validation_filter_split="labels.aiplatform.googleapis.com/ml_use=validation",
test_filter_split="labels.aiplatform.googleapis.com/ml_use=test")
כל פריטי הנתונים עם ערך ml_use מוקצים לקבוצה שצוינה. פריטי נתונים שלא מוגדר להם ערך ml_use מוחרגים מתהליך האימון.
פיצול של מסנן נתונים
אתם יכולים להשתמש בתוויות אחרות (חוץ מ-ml-use) ובשדות אחרים כדי לפצל את הנתונים באמצעות האובייקט FilterSplit ב-Agent Platform API. לדוגמה, אפשר להגדיר את trainingFilter ל-labels.flower=rose, את validationFilter ל-labels.flower=daisy ואת testFilter ל-labels.flower=dahlia. הגדרה זו גורמת לכך שכל הנתונים שתויגו כ-rose יתווספו לקבוצת הנתונים לאימון, כל הנתונים שתויגו כ-daisy יתווספו לקבוצת הנתונים לתיקוף וכל הנתונים שתויגו כ-dahlia יתווספו לקבוצת הנתונים לבדיקה.
אם מסננים לפי כמה שדות, יכול להיות שפריט נתונים יתאים ליותר ממסנן אחד. במקרה כזה, קבוצת הנתונים לאימון מקבלת עדיפות, ואחריה קבוצת הנתונים לתיקוף, ואז קבוצת הנתונים לבדיקה. במילים אחרות, פריט נכלל בקבוצת נתונים לבדיקה רק אם הוא תואם למסנן של קבוצת נתונים לבדיקה, אבל לא תואם למסננים של קבוצת האימון או קבוצת האימות. אם פריט לא תואם למסננים של אף אחת מהקבוצות, הוא לא ייכלל באימון.
אל תשתמשו בקטגוריות לפיצול הנתונים שקשורות למה שהמודל יחזה. כל אחת מהקבוצות צריכה לשקף את טווח הנתונים שהמודל משתמש בהם כדי לבצע חיזויים. (לדוגמה, אל תשתמשו במסננים שתוארו קודם אם אתם מצפים שהמודל יסווג תמונות לפי סוג הפרח).
אם לא רוצים שהמסנן יתאים לפריטים כלשהם, מגדירים אותו לערך - (סימן המינוס).
חלוקה מתמטית
הפיצול המתמטי נקרא גם "פיצול שברים".
כברירת מחדל, הנתונים שלכם מפולגים באופן אקראי לקבוצות בהתאם לאחוזים שמוגדרים כברירת מחדל עבור סוג הנתונים. אפשר לשנות את אחוזי התנועה לכל ערך שקטן מ-100 (ב-Agent Platform API, צריך להשתמש בשברים שסכומם הוא 1.0).
כדי לשנות את האחוזים (השברים), משתמשים באובייקט FractionSplit כדי להגדיר את השברים. בנוסף, כשמאמנים את המודל, אפשר להשתמש במסוףGoogle Cloud כדי לעדכן את אחוזי החלוקה של סוגי נתונים של תמונות.