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

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

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

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

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

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

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

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

בכל מקרה, אפשר להגדיר את Model כך שיתמוך ב-Vertex 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 . כשמגיעים לשלב הסבר, מבצעים את הפעולות הבאות:

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

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

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

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

    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. אם רלוונטי, מגדירים את השדה שם הקבוצה.

  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"
        }
      }
    }
    

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

    אפשר גם להוסיף 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 . כשמגיעים לשלב הסבר, מבצעים את הפעולות הבאות:

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

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

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

    2. אפשר להשאיר את ההגדרות של קליפ מתחת, קליפ מעל, סוג שכבת-על ומספר השלבים השלמים כברירת מחדל.

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

  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 AI ניתן להסברה.
    • MODALITY: image אם Model מקבל תמונות כקלט או numeric אם Model מקבל נתונים בטבלה כקלט. ברירת המחדל היא numeric.
    • VIZUALIZATION_OPTIONS: אפשרויות להצגת הסברים. כדי ללמוד איך לאכלס את השדה הזה, קראו הגדרת אפשרויות ויזואליזציה של נתוני תמונות.

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

    • OUTPUT_NAME: שם קליט כלשהו לפלט של המודל.
    • OUTPUT_TENSOR_NAME: השם של טנסור הפלט ב-TensorFlow. כדי למצוא את הערך הנכון לשדה הזה, כדאי לקרוא את המאמר שימוש ב-TensorFlow עם Vertex 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 AI ניתן להסברה.
  • MODALITY: image אם Model מקבל תמונות כקלט או numeric אם Model מקבל נתונים בטבלה כקלט. ברירת המחדל היא numeric.
  • VIZUALIZATION_OPTIONS: אפשרויות להצגת הסברים. כדי ללמוד איך לאכלס את השדה הזה, קראו הגדרת אפשרויות ויזואליזציה של נתוני תמונות.

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

  • OUTPUT_NAME: שם קליט כלשהו לפלט של המודל.
  • OUTPUT_TENSOR_NAME: השם של טנסור הפלט ב-TensorFlow. כדי למצוא את הערך הנכון לשדה הזה, כדאי לקרוא את המאמר שימוש ב-TensorFlow עם Vertex 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 . כשמגיעים לשלב הסבר, מבצעים את הפעולות הבאות:

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

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

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

    2. אפשר להשאיר את ההגדרות של קליפ מתחת, קליפ מעל, סוג שכבת-על ומספר השלבים השלמים כברירת מחדל.

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

  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": "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 לחיזוי, אפשר להגדיר אותו כך שישתמש בשיטת השיוך Sampled Shapley להסברים.

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

המסוף

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

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

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

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

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

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

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

    2. אפשר גם להוסיף קווי בסיס של קלט. אחרת, Vertex Explainable 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 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 מצפה שלכל מופע של קלט יהיו מפתחות מסוימים ברמה העליונה, אז המפתחות האלה הם שמות התכונות.

לדוגמה, נניח שיש 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 . כשמגיעים לשלב הסבר, מבצעים את הפעולות הבאות:

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

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

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

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

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

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

    2. אפשר גם להוסיף קווי בסיס של קלט. אחרת, Vertex Explainable 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 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

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