בדף הזה מתואר איך Vertex AI משתמש בנתוני האימון, האימות והבדיקה כדי לאמן מודל AutoML, ואיך אפשר לשלוט באופן שבו הנתונים מחולקים בין שלושת המערכים האלה. AutoML משתמש בפיצולי נתונים באופן שונה בהתאם לסוג הנתונים של נתוני האימון.
בדף הזה מתוארים פיצולים של נתוני תמונות. מידע על פיצול נתונים בנתונים טבלאיים זמין במאמר פיצול נתונים בנתונים טבלאיים.
במערכי נתונים של תמונות, AutoML משתמש בקבוצת הנתונים לאימון כדי לאמן את המודל, ובקבוצת הנתונים לתיקוף כדי לאמת את התוצאות שהמודל מחזיר במהלך האימון. כשהאימון מסתיים, AutoML משתמשת בקבוצת הנתונים לבדיקה כדי לספק את מדדי ההערכה הסופיים.
אתם יכולים לאפשר ל-Vertex AI לחלק את הנתונים באופן אוטומטי. הנתונים שלכם מפולגים באופן אקראי לשלוש קבוצות לפי אחוזים. זו הדרך הכי קלה לפצל את הנתונים, והיא מתאימה לרוב המקרים.
| הגדרה | אחוז |
|---|---|
| הדרכה | 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. לפרטים נוספים, אפשר לעיין במידע על הכנת נתונים לפי סוג הנתונים.
אם יש פריטי נתונים שחוזרים על עצמם בנתונים (אם קטע קוד של אותה תמונה מופיע כמה פעמים בקובץ הייבוא), מערכת Vertex AI משתמשת בערך 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 באמצעות Vertex AI API.
שימוש בתווית ml_use
כשמאמנים את המודל, מציינים ידני (מתקדם) עבור פיצול הנתונים במסוף Google Cloud . אם אתם מאמנים באמצעות Vertex AI 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 ב-Vertex AI API. לדוגמה, אפשר להגדיר את trainingFilter ל-labels.flower=rose, את validationFilter ל-labels.flower=daisy ואת testFilter ל-labels.flower=dahlia. ההגדרה הזו גורמת לכך שכל הנתונים שתויגו כ-rose יתווספו לקבוצת הנתונים לאימון, כל הנתונים שתויגו כ-daisy יתווספו לקבוצת הנתונים לתיקוף וכל הנתונים שתויגו כ-dahlia יתווספו לקבוצת הנתונים לבדיקה.
אם מסננים לפי כמה שדות, יכול להיות שפריט נתונים יתאים ליותר ממסנן אחד. במקרה כזה, קבוצת הנתונים לאימון מקבלת עדיפות, ואחריה קבוצת הנתונים לתיקוף ואז קבוצת הנתונים לבדיקה. במילים אחרות, פריט נכלל בקבוצת נתונים לבדיקה רק אם הוא תואם למסנן של קבוצת נתונים לבדיקה, אבל לא תואם למסננים של קבוצת האימון או קבוצת האימות. אם פריט לא תואם למסננים של אף אחת מהקבוצות, הוא לא ייכלל באימון.
אל תשתמשו בקטגוריות כדי לפצל את הנתונים לפי מה שהמודל ינבא. כל אחת מקבוצות הנתונים צריכה לשקף את טווח הנתונים שהמודל משתמש בהם כדי לבצע ניבויים. (לדוגמה, אל תשתמשו במסננים שתוארו קודם אם אתם רוצים שהמודל יסווג תמונות לפי סוג הפרח).
אם לא רוצים שהמסנן יתאים לפריטים כלשהם, מגדירים אותו לערך - (סימן המינוס).
חלוקה מתמטית
הפיצול המתמטי נקרא גם "פיצול שברים".
כברירת מחדל, הנתונים שלכם מפולגים באופן אקראי לקבוצות בהתאם לאחוזים שמוגדרים כברירת מחדל עבור סוג הנתונים. אפשר לשנות את אחוזי הערכים כך שיסתכמו ל-100 (ב-Vertex AI API, צריך להשתמש בשברים שמסתכמים ל-1.0).
כדי לשנות את האחוזים (השברים), משתמשים באובייקט FractionSplit כדי להגדיר את השברים. בנוסף, כשמאמנים את המודל, אפשר להשתמש במסוףGoogle Cloud כדי לעדכן את אחוזי החלוקה של סוגי נתונים של תמונות.