חדש: אימון בהתאמה אישית – הצגת תחזיות ממודל סיווג תמונות בהתאמה אישית

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

המדריך הזה כולל כמה דפים:

  1. הגדרת הפרויקט והסביבה.

  2. אימון מודל בהתאמה אישית לסיווג תמונות

  3. הצגת חיזויים ממודל מותאם אישית לסיווג תמונות.

  4. פינוי מקום בפרויקט

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

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

  1. מפעילים את Cloud Shell במסוף Cloud de Confiance .

    הפעלת Cloud Shell

  2. בסשן של Cloud Shell, מריצים את הפקודה הבאה:

    cd hello-custom-sample

יצירת נקודת קצה (endpoint)

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

  1. במסוף Cloud de Confiance , בקטע Agent Platform, נכנסים לדף Models.

    לדף Models

  2. מוצאים את השורה של המודל שאימנתם בשלב הקודם של המדריך, hello_custom, ולוחצים על שם המודל כדי לפתוח את דף הפרטים שלו.

  3. בכרטיסייה Deploy & test, לוחצים על Deploy to endpoint כדי לפתוח את החלונית Deploy to endpoint.

  4. בשלב Define your endpoint, מוסיפים מידע בסיסי על נקודת הקצה:

    1. לוחצים על Create new endpoint.

    2. בשדה Endpoint name, מזינים hello_custom.

    3. בקטע Model settings, מוודאים שמופיע שם המודל, שנקרא גם hello_custom. מציינים את הגדרות המודל הבאות:

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

      2. בשדה Minimum number of compute nodes, מזינים 1.

      3. ברשימה הנפתחת Machine type, בוחרים באפשרות n1-standard-2 בקטע Standard.

      4. לוחצים על סיום.

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

    לוחצים על Continue.

  5. בשלב Endpoint details, מוודאים שנקודת הקצה תיפרס ב-us-central1 (Iowa).

    אל תסמנו את התיבה Use a customer-managed encryption key (CMEK). במדריך הזה לא משתמשים ב-CMEK.

  6. לוחצים על Deploy כדי ליצור את נקודת הקצה ולפרוס בה את המודל.

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

פריסת פונקציית Cloud Run

כדי לקבל חיזויים מנקודת הקצה שיצרתם ב-Agent Platform, אתם יכולים לשלוח בקשות לממשק ה-REST של Agent Platform API. עם זאת, רק חשבונות משתמשים עם ההרשאה aiplatform.endpoints.predict יכולים לשלוח בקשות לחיזוי אונליין. אי אפשר להפוך את נקודת הקצה לציבורית כדי שכל אחד יוכל לשלוח אליה בקשות, למשל דרך אפליקציית אינטרנט.

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

less function/main.py

פריסת הפונקציה משמשת למטרות הבאות:

  • אפשר להגדיר פונקציית Cloud Run כך שתקבל בקשות לא מאומתות. בנוסף, הפונקציות פועלות באמצעות חשבון שירות עם תפקיד עריכה כברירת מחדל, שכולל את ההרשאה aiplatform.endpoints.predict שנדרשת כדי לקבל חיזויים מנקודת הקצה של Agent Platform.

  • הפונקציה הזו גם מבצעת עיבוד מקדים שימושי של הבקשות. נקודת הקצה של Agent Platform מצפה לבקשות חיזוי בפורמט של השכבה הראשונה בתרשים של TensorFlow Keras שעבר אימון: טנזור של מספרים מנורמלים עם נקודה צפה (float) במימדים קבועים. הפונקציה מקבלת את כתובת ה-URL של התמונה כקלט, ומעבדת מראש את התמונה לפורמט הזה לפני שהיא מבקשת חיזוי מנקודת הקצה של Agent Platform.

כדי לפרוס את פונקציית Cloud Run:

  1. בקטע Agent Platform במסוף Cloud de Confiance , נכנסים לדף Endpoints.

    כניסה לדף Endpoints

  2. מוצאים את השורה של נקודת הקצה שיצרתם בקטע הקודם, בשם hello_custom. בשורה הזו, לוחצים על Sample request כדי לפתוח את החלונית Sample request.

  3. בחלונית Sample request, מאתרים את שורת הקוד של המעטפת שתואמת לתבנית הבאה:

    ENDPOINT_ID="ENDPOINT_ID"

    ‫ENDPOINT_ID הוא מספר שמזהה את נקודת הקצה הספציפית הזו.

    מעתיקים את שורת הקוד הזו ומריצים אותה בסשן של Cloud Shell כדי להגדיר את המשתנה ENDPOINT_ID.

  4. מריצים את הפקודה הבאה בסשן של Cloud Shell כדי לפרוס את פונקציית Cloud Run:

    gcloud functions deploy classify_flower \
      --region=us-central1 \
      --source=function \
      --runtime=python37 \
      --memory=2048MB \
      --trigger-http \
      --allow-unauthenticated \
      --set-env-vars=ENDPOINT_ID=${ENDPOINT_ID}
    

פריסת אפליקציית אינטרנט כדי לשלוח בקשות חיזוי

בסוף, מארחים אפליקציית אינטרנט סטטית ב-Cloud Storage כדי לקבל חיזויים ממודל ה-ML שאומן. אפליקציית האינטרנט שולחת בקשות לפונקציית Cloud Run, שמעבדת אותן מראש ומקבלת חיזויים מנקודת הקצה של Agent Platform.

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

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

    PROJECT_ID=PROJECT_ID
    BUCKET_NAME=BUCKET_NAME
    

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

  2. עורכים את האפליקציה כדי לספק לה את כתובת ה-URL של הטריגר של פונקציית Cloud Run:

    echo "export const CLOUD_FUNCTION_URL = 'https://us-central1-${PROJECT_ID}.cloudfunctions.net/classify_flower';" \
      > webapp/function-url.js
    
  3. מעלים את הספרייה webapp לקטגוריה של Cloud Storage:

    gcloud storage cp webapp gs://${BUCKET_NAME}/ --recursive
    
  4. מגדירים את קובצי אפליקציית האינטרנט שהעליתם כניתנים לקריאה באופן ציבורי:

    gcloud storage objects update gs://${BUCKET_NAME}/webapp/** --add-acl-grant=entity=allUsers,role=READER
    
  5. עכשיו אפשר לעבור לכתובת ה-URL הבאה כדי לפתוח את אפליקציית האינטרנט ולקבל תחזיות:

    https://storage.googleapis.com/BUCKET_NAME/webapp/index.html
    

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

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

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

המאמרים הבאים

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