הגדרת הסברים מבוססי-תכונות

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

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

מתי ואיפה מגדירים הסברים

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

הגדרת הסברים כשיוצרים או מייבאים מודלים

כשיוצרים או מייבאים Model, אפשר להגדיר את תצורת ברירת המחדל לכל ההסברים שלו באמצעות השדה explanationSpec של Model.

אתם יכולים ליצור מודל Model שעבר אימון בהתאמה אישית ב-Vertex AI באחת מהדרכים הבאות:

בכל מקרה, אפשר להגדיר את Model כך שיתמוך ב-Vertex Explainable AI. בדוגמאות במסמך הזה מניחים שאתם מייבאים Model. כדי להגדיר את Vertex AI ניתן להסברה כשיוצרים Model שאומן בהתאמה אישית באמצעות TrainingPipeline, משתמשים בהגדרות שמתוארות במסמך הזה בשדה modelToUpload של TrainingPipeline.

הגדרת הסברים כשפורסים מודלים או מקבלים מסקנות אצווה

כשפורסים Model במשאב Endpoint, אפשר:

  • הגדרת הסברים, גם אם המודל הוגדר בעבר להסברים. האפשרות הזו שימושית אם לא תכננתם לקבל הסברים (והשמטתם את השדה explanationSpec כשבניתם את המודל), אבל החלטתם בהמשך שאתם רוצים הסברים לגבי המודל, או אם אתם רוצים לבטל חלק מהגדרות ההסבר.
  • השבתת ההסברים. האפשרות הזו שימושית אם המודל מוגדר להסברים, אבל אתם לא מתכננים לקבל הסברים מנקודת הקצה. כדי להשבית את ההסברים כשפורסים את המודל לנקודת קצה, מבטלים את הסימון של האפשרויות של Explainability במסוף Cloud או מגדירים את DeployedModel.disableExplanations ל-true.

באופן דומה, כשמקבלים מסקנות אצווה מ-Model, אפשר להגדיר הסברים על ידי מילוי השדה BatchPredictionJob.explanationSpec או להשבית את ההסברים על ידי הגדרת BatchPredictionJob.generateExplanation ל-false.

שינוי ההגדרה כשמקבלים הסברים אונליין

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

כששולחים בקשת explain אל Vertex AI, אפשר לשנות חלק מהגדרות ההסבר שהוגדרו קודם עבור Model או DeployedModel.

בבקשת explain, אפשר לשנות את הערכים של השדות הבאים:

אפשר לשנות את ההגדרות האלה בשדה explanationSpecOverride של בקשת ההסבר.

ייבוא מודל עם שדה explanationSpec

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

מאגר מוכן מראש של TensorFlow

אפשר להשתמש בכל אחת משיטות הייחוס הבאות ב-Vertex AI ניתן להסברה. כדי לבחור את השיטה המתאימה לModel, מומלץ לקרוא את ההשוואה בין שיטות לשיוך תכונות.

דגימת Shapley

בהתאם לכלי שבו רוצים להשתמש כדי ליצור או לייבא את Model, בוחרים באחד מהכרטיסיות הבאות:

המסוף

פועלים לפי המדריך בנושא ייבוא מודל באמצעות מסוף Google Cloud . כשמגיעים לשלב Explainability, מבצעים את הפעולות הבאות:

  1. בקטע 'שיטת שיוך התכונות', בוחרים באפשרות Sampled Shapely (for tabular models) (שיוך תכונות באמצעות דגימה של Shapely (למודלים טבלאיים)).

  2. מגדירים את מספר הנתיבים למספר התמורות של התכונות שרוצים להשתמש בהן לשיטת השיוך Sampled Shapley. הערך הזה צריך להיות מספר שלם בטווח [1, 50].

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

  3. מגדירים כל תכונת קלט במודל:

    1. מזינים את השם של תכונת הקלט.

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

    3. אם מייבאים מודל TensorFlow, יש שדות קלט נוספים:

      1. ממלאים את השדה Input tensor name.

      2. אם רלוונטי, ממלאים את השדות Indices tensor name ו/או Dense shape tensor name.

      3. אי אפשר לעדכן כאן את האופן. ההגדרה הזו מוגדרת אוטומטית ל-NUMERIC עבור מודלים טבלאיים, או ל-IMAGE עבור מודלים של תמונות.

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

      5. אם רלוונטי, מגדירים את השדה שם הקבוצה.

  4. אם מייבאים מודל TensorFlow, צריך לציין שדות פלט:

    1. מגדירים את שם הפלט של התכונה.
    2. מגדירים את שם טנסור הפלט של התכונה.
    3. אם רלוונטי, מגדירים את המיפוי של השם המוצג של האינדקס.
    4. אם רלוונטי, מגדירים את מפתח המיפוי של השם המוצג.

  5. בסיום הגדרת ההסברים, לוחצים על הלחצן ייבוא.

gcloud

  1. ב-TensorFlow 2, ‏ ExplanationMetadata הוא אופציונלי.

    כותבים את הטקסט הבא ExplanationMetadata לקובץ JSON בסביבה המקומית. שם הקובץ לא משנה, אבל בדוגמה הזו נקרא לקובץ explanation-metadata.json:

    explanation-metadata.json

    {
      "inputs": {
        "FEATURE_NAME": {
          "inputTensorName": "INPUT_TENSOR_NAME",
        }
      },
      "outputs": {
        "OUTPUT_NAME": {
          "outputTensorName": "OUTPUT_TENSOR_NAME"
        }
      }
    }
    

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

    • FEATURE_NAME: שם קליט כלשהו לתכונת הקלט.
    • INPUT_TENSOR_NAME: שם טנסור הקלט ב-TensorFlow. כדי למצוא את הערך הנכון לשדה הזה, כדאי לקרוא את המאמר שימוש ב-TensorFlow עם Vertex Explainable AI.
    • OUTPUT_NAME: שם קליט כלשהו לפלט של המודל.
    • OUTPUT_TENSOR_NAME: השם של טנסור הפלט ב-TensorFlow. כדי למצוא את הערך הנכון לשדה הזה, כדאי לקרוא את המאמר שימוש ב-TensorFlow עם Vertex Explainable AI.

    אפשר גם להוסיף input baselines ל-ExplanationMetadata. אחרת, Vertex AI בוחר קווי בסיס של קלט עבור Model.

  2. מריצים את הפקודה הבאה כדי ליצור משאב Model שתומך ב-Vertex AI ניתן להסברה. הדגלים הרלוונטיים ביותר ל-Vertex AI ניתן להסברה מודגשים.

    gcloud ai models upload \
      --region=LOCATION \
      --display-name=MODEL_NAME \
      --container-image-uri=IMAGE_URI \
      --artifact-uri=PATH_TO_MODEL_ARTIFACT_DIRECTORY \
      --explanation-method=sampled-shapley \
      --explanation-path-count=PATH_COUNT \
      --explanation-metadata-file=explanation-metadata.json
    

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

    מידע על ערכים מתאימים למחזיקי המקום האחרים זמין במאמרים upload וייבוא מודלים.

REST

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

מידע על ערכים מתאימים למחזיקי המקום האחרים זמין במאמרים upload וייבוא מודלים.

אפשר גם להוסיף input baselines ל-ExplanationMetadata. אחרת, Vertex AI בוחר קווי בסיס של קלט עבור Model.

במודלים של TensorFlow 2, השדה metadata הוא אופציונלי. אם לא מציינים את הערכים האלה, מערכת Vertex AI מסיקה אוטומטית את הערכים של inputs ו-outputs מהמודל.

ה-method של ה-HTTP וכתובת ה-URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/models:upload

גוף בקשת JSON:

{
  "model": {
    "displayName": "MODEL_NAME",
    "containerSpec": {
      "imageUri": "IMAGE_URI"
    },
    "artifactUri": "PATH_TO_MODEL_ARTIFACT_DIRECTORY",
    "explanationSpec": {
      "parameters": {
        "sampledShapleyAttribution": {
          "pathCount": PATH_COUNT
        }
      },
      "metadata": {
        "inputs": {
          "FEATURE_NAME": {
            "inputTensorName": "INPUT_TENSOR_NAME",
          }
        },
        "outputs": {
          "OUTPUT_NAME": {
            "outputTensorName": "OUTPUT_TENSOR_NAME"
          }
        }
      }
    }
  }
}

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

curl

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/models:upload"

PowerShell

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/models:upload" | Select-Object -Expand Content

מעברי צבע משולבים

בהתאם לכלי שבו רוצים להשתמש כדי ליצור או לייבא את Model, בוחרים באחד מהכרטיסיות הבאות:

המסוף

פועלים לפי המדריך בנושא ייבוא מודל באמצעות מסוף Google Cloud . כשמגיעים לשלב Explainability, מבצעים את הפעולות הבאות:

  1. בשיטת השיוך של התכונות, בוחרים באפשרות Integrated gradients (for tabular models) (שיפועים משולבים (למודלים טבלאיים)) או באפשרות Integrated gradients (for image classification models) (שיפועים משולבים (למודלים של סיווג תמונות)), בהתאם לאפשרות שמתאימה יותר למודל שלכם.

  2. אם מייבאים מודל לסיווג תמונות:

    1. מגדירים את סוג התצוגה החזותית ואת מפת הצבעים.

    2. אפשר להשאיר את ההגדרות של Clip below,‏ Clip above,‏ Overlay type ו-Number of integral steps כברירת מחדל.

    מידע נוסף על הגדרות הוויזואליזציה

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

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

  4. מגדירים כל תכונת קלט במודל:

    1. מזינים את השם של תכונת הקלט.

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

    3. אם מייבאים מודל TensorFlow, יש שדות קלט נוספים:

      1. ממלאים את השדה Input tensor name.

      2. אם רלוונטי, ממלאים את השדות Indices tensor name ו/או Dense shape tensor name.

      3. אי אפשר לעדכן כאן את האופן. ההגדרה הזו מוגדרת אוטומטית ל-NUMERIC עבור מודלים טבלאיים, או ל-IMAGE עבור מודלים של תמונות.

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

      5. אם רלוונטי, מגדירים את השדה שם הקבוצה.

  5. אם מייבאים מודל TensorFlow, צריך לציין שדות פלט:

    1. מגדירים את שם הפלט של התכונה.
    2. מגדירים את שם טנסור הפלט של התכונה.
    3. אם רלוונטי, מגדירים את המיפוי של השם המוצג של האינדקס.
    4. אם רלוונטי, מגדירים את מפתח המיפוי של השם המוצג.

  6. בסיום הגדרת ההסברים, לוחצים על הלחצן ייבוא.

gcloud

  1. ב-TensorFlow 2, ‏ ExplanationMetadata הוא אופציונלי.

    כותבים את הטקסט הבא ExplanationMetadata לקובץ JSON בסביבה המקומית. שם הקובץ לא משנה, אבל בדוגמה הזו נקרא לקובץ explanation-metadata.json:

    explanation-metadata.json

    {
      "inputs": {
        "FEATURE_NAME": {
          "inputTensorName": "INPUT_TENSOR_NAME",
          "modality": "MODALITY",
          "visualization": VISUALIZATION_SETTINGS
        }
      },
      "outputs": {
        "OUTPUT_NAME": {
          "outputTensorName": "OUTPUT_TENSOR_NAME"
        }
      }
    }
    

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

    • FEATURE_NAME: שם קליט כלשהו לתכונת הקלט.
    • INPUT_TENSOR_NAME: שם טנסור הקלט ב-TensorFlow. כדי למצוא את הערך הנכון לשדה הזה, כדאי לקרוא את המאמר שימוש ב-TensorFlow עם Vertex Explainable AI.
    • MODALITY: image אם Model מקבל תמונות כקלט או numeric אם Model מקבל נתונים בטבלה כקלט. ברירת המחדל היא numeric.
    • VIZUALIZATION_OPTIONS: אפשרויות להצגת הסברים. כדי להבין איך מאכלסים את השדה הזה, אפשר לקרוא את המאמר הגדרת הגדרות ויזואליזציה של נתוני תמונות.

      אם משמיטים את השדה modality או מגדירים את השדה modality ל-numeric, צריך להשמיט את השדה visualization לחלוטין.

    • OUTPUT_NAME: שם קליט כלשהו לפלט של המודל.
    • OUTPUT_TENSOR_NAME: השם של טנסור הפלט ב-TensorFlow. כדי למצוא את הערך הנכון לשדה הזה, כדאי לקרוא את המאמר שימוש ב-TensorFlow עם Vertex Explainable AI.

    אפשר גם להוסיף input baselines ל-ExplanationMetadata. אחרת, Vertex AI בוחר קווי בסיס של קלט עבור Model.

  2. מריצים את הפקודה הבאה כדי ליצור משאב Model שתומך ב-Vertex AI ניתן להסברה. הדגלים הרלוונטיים ביותר ל-Vertex AI ניתן להסברה מודגשים.

    gcloud ai models upload \
      --region=LOCATION \
      --display-name=MODEL_NAME \
      --container-image-uri=IMAGE_URI \
      --artifact-uri=PATH_TO_MODEL_ARTIFACT_DIRECTORY \
      --explanation-method=integrated-gradients \
      --explanation-step-count=STEP_COUNT \
      --explanation-metadata-file=explanation-metadata.json
    

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

    מידע על ערכים מתאימים למחזיקי המקום האחרים זמין במאמרים upload וייבוא מודלים.

    אפשר גם להוסיף דגלים כדי להגדיר את הקירוב של SmoothGrad של גרדיאנטים.

REST

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • IMAGE_URI: ה-URI של קונטיינר מוכן מראש של TensorFlow להצגת תחזיות.
  • STEP_COUNT: מספר השלבים שמשמשים לקירוב של אינטגרל הנתיב במהלך שיוך התכונות. חייב להיות מספר שלם בטווח [1, 100].

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

  • FEATURE_NAME: שם קליט כלשהו לתכונת הקלט.
  • INPUT_TENSOR_NAME: שם טנסור הקלט ב-TensorFlow. כדי למצוא את הערך הנכון לשדה הזה, כדאי לקרוא את המאמר שימוש ב-TensorFlow עם Vertex Explainable AI.
  • MODALITY: image אם Model מקבל תמונות כקלט או numeric אם Model מקבל נתונים בטבלה כקלט. ברירת המחדל היא numeric.
  • VIZUALIZATION_OPTIONS: אפשרויות להצגת הסברים. כדי להבין איך מאכלסים את השדה הזה, אפשר לקרוא את המאמר הגדרת הגדרות ויזואליזציה של נתוני תמונות.

    אם משמיטים את השדה modality או מגדירים את השדה modality ל-numeric, צריך להשמיט את השדה visualization לחלוטין.

  • OUTPUT_NAME: שם קליט כלשהו לפלט של המודל.
  • OUTPUT_TENSOR_NAME: השם של טנסור הפלט ב-TensorFlow. כדי למצוא את הערך הנכון לשדה הזה, כדאי לקרוא את המאמר שימוש ב-TensorFlow עם Vertex Explainable AI.

מידע על ערכים מתאימים למחזיקי המקום האחרים זמין במאמרים upload וייבוא מודלים.

אפשר גם להוסיף input baselines ל-ExplanationMetadata. אחרת, Vertex AI בוחר קווי בסיס של קלט עבור Model.

אופציונלי: אפשר להוסיף שדות כדי להגדיר את הקירוב של SmoothGrad לשיפועים ל-ExplanationParameters.

במודלים של TensorFlow 2, השדה metadata הוא אופציונלי. אם לא מציינים את הערכים האלה, מערכת Vertex AI מסיקה אוטומטית את הערכים של inputs ו-outputs מהמודל.

ה-method של ה-HTTP וכתובת ה-URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/models:upload

גוף בקשת JSON:

{
  "model": {
    "displayName": "MODEL_NAME",
    "containerSpec": {
      "imageUri": "IMAGE_URI"
    },
    "artifactUri": "PATH_TO_MODEL_ARTIFACT_DIRECTORY",
    "explanationSpec": {
      "parameters": {
        "integratedGradientsAttribution": {
          "stepCount": STEP_COUNT
        }
      },
      "metadata": {
        "inputs": {
          "FEATURE_NAME": {
            "inputTensorName": "INPUT_TENSOR_NAME",
            "modality": "MODALITY",
            "visualization": VISUALIZATION_SETTINGS
          }
        },
        "outputs": {
          "OUTPUT_NAME": {
            "outputTensorName": "OUTPUT_TENSOR_NAME"
          }
        }
      }
    }
  }
}

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

curl

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/models:upload"

PowerShell

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/models:upload" | Select-Object -Expand Content

XRAI

בהתאם לכלי שבו רוצים להשתמש כדי ליצור או לייבא את Model, בוחרים באחד מהכרטיסיות הבאות:

המסוף

פועלים לפי המדריך בנושא ייבוא מודל באמצעות מסוף Google Cloud . כשמגיעים לשלב Explainability, מבצעים את הפעולות הבאות:

  1. בשיטת השיוך של התכונות, בוחרים באפשרות XRAI (למודלים של סיווג תמונות).

  2. מגדירים את אפשרויות התצוגה החזותית הבאות:

    1. מגדירים את מפת הצבעים.

    2. אפשר להשאיר את ההגדרות של Clip below,‏ Clip above,‏ Overlay type ו-Number of integral steps כברירת מחדל.

      מידע נוסף על הגדרות הוויזואליזציה

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

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

  4. מגדירים כל תכונת קלט במודל:

    1. מזינים את השם של תכונת הקלט.

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

    3. אם מייבאים מודל TensorFlow, יש שדות קלט נוספים:

      1. ממלאים את השדה Input tensor name.

      2. אם רלוונטי, ממלאים את השדות Indices tensor name ו/או Dense shape tensor name.

      3. אי אפשר לעדכן כאן את האופן. ההגדרה הזו מוגדרת אוטומטית ל-NUMERIC עבור מודלים טבלאיים, או ל-IMAGE עבור מודלים של תמונות.

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

      5. אם רלוונטי, מגדירים את השדה שם הקבוצה.

  5. אם מייבאים מודל TensorFlow, צריך לציין שדות פלט:

    1. מגדירים את שם הפלט של התכונה.
    2. מגדירים את שם טנסור הפלט של התכונה.
    3. אם רלוונטי, מגדירים את המיפוי של השם המוצג של האינדקס.
    4. אם רלוונטי, מגדירים את מפתח המיפוי של השם המוצג.

  6. בסיום הגדרת ההסברים, לוחצים על הלחצן ייבוא.

gcloud

  1. ב-TensorFlow 2, ‏ ExplanationMetadata הוא אופציונלי.

    כותבים את הטקסט הבא ExplanationMetadata לקובץ JSON בסביבה המקומית. שם הקובץ לא משנה, אבל בדוגמה הזו נקרא לקובץ explanation-metadata.json:

    explanation-metadata.json

    {
      "inputs": {
        "FEATURE_NAME": {
          "inputTensorName": "INPUT_TENSOR_NAME",
          "modality": "image",
          "visualization": VISUALIZATION_SETTINGS
        }
      },
      "outputs": {
        "OUTPUT_NAME": {
          "outputTensorName": "OUTPUT_TENSOR_NAME"
        }
      }
    }
    

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

    אפשר גם להוסיף input baselines ל-ExplanationMetadata. אחרת, Vertex AI בוחר קווי בסיס של קלט עבור Model.

  2. מריצים את הפקודה הבאה כדי ליצור משאב Model שתומך ב-Vertex AI ניתן להסברה. הדגלים הרלוונטיים ביותר ל-Vertex AI ניתן להסברה מודגשים.

    gcloud ai models upload \
      --region=LOCATION \
      --display-name=MODEL_NAME \
      --container-image-uri=IMAGE_URI \
      --artifact-uri=PATH_TO_MODEL_ARTIFACT_DIRECTORY \
      --explanation-method=xrai \
      --explanation-step-count=STEP_COUNT \
      --explanation-metadata-file=explanation-metadata.json
    

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

    מידע על ערכים מתאימים למחזיקי המקום האחרים זמין במאמרים upload וייבוא מודלים.

    אפשר גם להוסיף דגלים כדי להגדיר את הקירוב של SmoothGrad של גרדיאנטים.

REST

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

מידע על ערכים מתאימים למחזיקי המקום האחרים זמין במאמרים upload וייבוא מודלים.

אפשר גם להוסיף input baselines ל-ExplanationMetadata. אחרת, Vertex AI בוחר קווי בסיס של קלט עבור Model.

אופציונלי: אפשר להוסיף שדות כדי להגדיר את הקירוב של SmoothGrad לשיפועים ל-ExplanationParameters.

במודלים של TensorFlow 2, השדה metadata הוא אופציונלי. אם לא מציינים את הערכים האלה, מערכת Vertex AI מסיקה אוטומטית את הערכים של inputs ו-outputs מהמודל.

ה-method של ה-HTTP וכתובת ה-URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/models:upload

גוף בקשת JSON:

{
  "model": {
    "displayName": "MODEL_NAME",
    "containerSpec": {
      "imageUri": "IMAGE_URI"
    },
    "artifactUri": "PATH_TO_MODEL_ARTIFACT_DIRECTORY",
    "explanationSpec": {
      "parameters": {
        "xraiAttribution": {
          "stepCount": STEP_COUNT
        }
      },
      "metadata": {
        "inputs": {
          "FEATURE_NAME": {
            "inputTensorName": "INPUT_TENSOR_NAME",
            "modality": "image",
            "visualization": VISUALIZATION_SETTINGS
          }
        },
        "outputs": {
          "OUTPUT_NAME": {
            "outputTensorName": "OUTPUT_TENSOR_NAME"
          }
        }
      }
    }
  }
}

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

curl

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/models:upload"

PowerShell

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/models:upload" | Select-Object -Expand Content

קונטיינרים מוכנים מראש של scikit-learn ו-XGBoost

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

בהתאם לכלי שבו רוצים להשתמש כדי ליצור או לייבא את Model, בוחרים באחד מהכרטיסיות הבאות:

המסוף

פועלים לפי המדריך בנושא ייבוא מודל באמצעות מסוף Google Cloud . כשמגיעים לשלב Explainability, מבצעים את הפעולות הבאות:

  1. בקטע 'שיטת שיוך התכונות', בוחרים באפשרות Sampled Shapely (for tabular models) (שיוך תכונות באמצעות דגימה של Shapely (למודלים טבלאיים)).

  2. מגדירים את מספר הנתיבים למספר התמורות של התכונות שרוצים להשתמש בהן לשיטת השיוך Sampled Shapley. הערך הזה צריך להיות מספר שלם בטווח [1, 50].

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

  3. מגדירים כל תכונת קלט במודל:

    1. מזינים את השם של תכונת הקלט.

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

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

  4. מגדירים את שם הפלט של התכונה.

  5. בסיום הגדרת ההסברים, לוחצים על הלחצן ייבוא.

gcloud

  1. כותבים את הטקסט הבא ExplanationMetadata לקובץ JSON בסביבה המקומית. שם הקובץ לא משנה, אבל בדוגמה הזו נקרא לקובץ explanation-metadata.json:

    explanation-metadata.json

    {
      "inputs": {
        "FEATURE_NAME": {
        }
      },
      "outputs": {
        "OUTPUT_NAME": {
        }
      }
    }
    

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

    • FEATURE_NAME: שם קליט כלשהו לתכונת הקלט.
    • OUTPUT_NAME: שם קליט כלשהו לפלט של המודל.

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

  2. מריצים את הפקודה הבאה כדי ליצור משאב Model שתומך ב-Vertex AI ניתן להסברה. הדגשנו את הדגלים שהכי רלוונטיים ל-Vertex Explainable AI.

    gcloud ai models upload \
      --region=LOCATION \
      --display-name=MODEL_NAME \
      --container-image-uri=IMAGE_URI \
      --artifact-uri=PATH_TO_MODEL_ARTIFACT_DIRECTORY \
      --explanation-method=sampled-shapley \
      --explanation-path-count=PATH_COUNT \
      --explanation-metadata-file=explanation-metadata.json
    

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

    מידע על ערכים מתאימים למחזיקי המקום האחרים זמין במאמרים upload וייבוא מודלים.

REST

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

מידע על ערכים מתאימים למחזיקי המקום האחרים זמין במאמרים upload וייבוא מודלים.

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

ה-method של ה-HTTP וכתובת ה-URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/models:upload

גוף בקשת JSON:

{
  "model": {
    "displayName": "MODEL_NAME",
    "containerSpec": {
      "imageUri": "IMAGE_URI"
    },
  "artifactUri": "PATH_TO_MODEL_ARTIFACT_DIRECTORY",
  "explanationSpec": {
    "parameters": {
      "sampledShapleyAttribution": {
        "pathCount": PATH_COUNT
      }
    },
    "metadata": {
       "inputs": {
         "FEATURE_NAME": {
         }
       },
       "outputs": {
         "OUTPUT_NAME": {
         }
       }
    }
  }
}

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

curl

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/models:upload"

PowerShell

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/models:upload" | Select-Object -Expand Content

מאגר תגים בהתאמה אישית

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

שרתי חיזוי בהתאמה אישית חייבים לקבל ולהחזיר היקש של קבוצות.

קביעת שמות התכונות והפלט

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

קביעת שמות התכונות

אם Model מצפה שלכל מופע של input יהיו מפתחות מסוימים ברמה העליונה, אז המפתחות האלה הם שמות התכונות.

לדוגמה, נניח שיש Model שמצפה שכל מופע קלט יהיה בפורמט הבא:

{
  "length": <value>,
  "width": <value>
}

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

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

לדוגמה, נניח שיש Model שצפוי שכל מופע קלט יהיה בפורמט הבא:

[
  <value>,
  <value>
]

במקרה כזה, צריך לספק ל-Vertex AI ניתן להסברה שם תכונה יחיד לפי בחירתכם, כמו dimensions.

קביעת שם הפלט

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

לדוגמה, נניח שיש Model שמחזירה כל חיזוי בפורמט הבא:

{
  "scores": <value>
}

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

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

יצירת Model

בהתאם לכלי שבו רוצים להשתמש כדי ליצור או לייבא את Model, בוחרים באחד מהכרטיסיות הבאות:

המסוף

פועלים לפי המדריך בנושא ייבוא מודל באמצעות מסוף Google Cloud . כשמגיעים לשלב Explainability, מבצעים את הפעולות הבאות:

  1. בקטע 'שיטת שיוך התכונות', בוחרים באפשרות Sampled Shapely (for tabular models) (שיוך תכונות באמצעות דגימה של Shapely (למודלים טבלאיים)).

  2. מגדירים את מספר הנתיבים למספר התמורות של התכונות שרוצים להשתמש בהן לשיטת השיוך Sampled Shapley. הערך הזה צריך להיות מספר שלם בטווח [1, 50].

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

  3. מגדירים כל תכונת קלט במודל:

    1. מזינים את השם של תכונת הקלט.

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

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

  4. מגדירים את שם הפלט של התכונה.

  5. בסיום הגדרת ההסברים, לוחצים על הלחצן ייבוא.

gcloud

  1. כותבים את הטקסט הבא ExplanationMetadata לקובץ JSON בסביבה המקומית. שם הקובץ לא משנה, אבל בדוגמה הזו נקרא לקובץ explanation-metadata.json:

    explanation-metadata.json

    {
      "inputs": {
        "FEATURE_NAME": {}
      },
      "outputs": {
        "OUTPUT_NAME": {}
      }
    }
    

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

    • FEATURE_NAME: שם התכונה, כפי שמתואר בקטע 'קביעת שמות של תכונות' במסמך הזה.
    • OUTPUT_NAME: שם הפלט, כפי שמתואר בקטע 'קביעת שם הפלט' במסמך הזה.

    אפשר גם להוסיף input baselines ל-ExplanationMetadata. אחרת, Vertex AI בוחר קווי בסיס של קלט עבור Model.

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

  2. מריצים את הפקודה הבאה כדי ליצור משאב Model שתומך ב-Vertex AI ניתן להסברה. הדגשנו את הדגלים שהכי רלוונטיים ל-Vertex Explainable AI.

    gcloud ai models upload \
      --region=LOCATION \
      --display-name=MODEL_NAME \
      --container-image-uri=IMAGE_URI \
      --artifact-uri=PATH_TO_MODEL_ARTIFACT_DIRECTORY \
      --explanation-method=sampled-shapley \
      --explanation-path-count=PATH_COUNT \
      --explanation-metadata-file=explanation-metadata.json
    

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

    מידע על ערכים מתאימים למחזיקי המקום האחרים זמין במאמרים upload וייבוא מודלים.

REST

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • PATH_COUNT: מספר התמורות של התכונות שבהן יש להשתמש לשיטת השיוך Sampled Shapley. חייב להיות מספר שלם בטווח [1, 50].

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

  • FEATURE_NAME: שם התכונה, כפי שמתואר בקטע 'קביעת שמות התכונות' במסמך הזה.
  • OUTPUT_NAME: שם הפלט, כפי שמתואר בקטע 'קביעת שם הפלט' במסמך הזה.

מידע על ערכים מתאימים למחזיקי המקום האחרים זמין במאמרים upload וייבוא מודלים.

אפשר גם להוסיף input baselines ל-ExplanationMetadata. אחרת, Vertex AI בוחר קווי בסיס של קלט עבור Model.

ה-method של ה-HTTP וכתובת ה-URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/models:upload

גוף בקשת JSON:

{
  "model": {
    "displayName": "MODEL_NAME",
    "containerSpec": {
      "imageUri": "IMAGE_URI"
    },
  "artifactUri": "PATH_TO_MODEL_ARTIFACT_DIRECTORY",
  "explanationSpec": {
    "parameters": {
      "sampledShapleyAttribution": {
        "pathCount": PATH_COUNT
      }
    },
    "metadata": {
       "inputs": {
         "FEATURE_NAME": {}
       },
       "outputs": {
         "OUTPUT_NAME": {}
       }
    }
  }
}

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

curl

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/models:upload"

PowerShell

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/models:upload" | Select-Object -Expand Content

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