קבלת מסקנות למודל תחזית

בדף הזה מוסבר איך ליצור תחזית באמצעות מודל התחזית שאומן.

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

חיזוי באמצעות AutoML לא תואם לפריסת נקודות קצה או להסקות אונליין. כדי לבקש הסקות אונליין ממודל החיזוי, משתמשים ב-Tabular Workflow for Forecasting.

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

לפני שמתחילים

כדי ליצור תחזית, צריך לאמן מודל תחזית. מידע נוסף זמין במאמר אימון מודל חיזוי.

נתוני קלט

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

  • אובייקטים של CSV ב-Cloud Storage
  • טבלאות ב-BigQuery

מומלץ להשתמש באותו פורמט של נתוני הקלט ששימש לאימון המודל. לדוגמה, אם אימנתם את המודל באמצעות נתונים ב-BigQuery, מומלץ להשתמש בטבלה ב-BigQuery כקלט להסקת המסקנות באצווה. ‫Gemini Enterprise Agent Platform מתייחס לכל השדות להזנת קלט ב-CSV כמחרוזות, ולכן שילוב של פורמטים של נתוני אימון ונתוני קלט עלול לגרום לשגיאות.

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

הדרישות לגבי נתוני הקלט

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

  • כל הערכים בעמודת הזמן חייבים להיות קיימים ותקינים.
  • כל העמודות שמשמשות בבקשת ההסקה צריכות להיות בנתוני הקלט. אם העמודות ריקות או לא קיימות, פלטפורמת Agent ממלאת את הנתונים באופן אוטומטי.
  • תדירות הנתונים של נתוני הקלט ושל נתוני האימון צריכה להיות זהה. אם חסרות שורות בסדרת הזמן, צריך להוסיף אותן באופן ידני בהתאם לידע המתאים בתחום.
  • סדרות זמן עם חותמות זמן כפולות מוסרות מההסקה. כדי לכלול אותם, צריך להסיר את חותמות הזמן הכפולות.
  • לספק נתונים היסטוריים לכל סדרת זמנים שרוצים לחזות. כדי לקבל את התחזיות הכי מדויקות, כמות הנתונים צריכה להיות שווה לחלון ההקשר שמוגדר במהלך אימון המודל. לדוגמה, אם חלון ההקשר הוא 14 ימים, צריך לספק נתונים היסטוריים של 14 ימים לפחות. אם תספקו פחות נתונים, Agent Platform תמלא את הנתונים בערכים ריקים.
  • התחזית מתחילה בשורה הראשונה של סדרת הזמנים (לפי סדר הזמנים) עם ערך null בעמודת היעד. ערך ה-null חייב להיות רציף בסדרת הזמן. לדוגמה, אם עמודת היעד מסודרת לפי זמן, לא יכול להיות מצב שבו הערכים 1, 2, null, 3, 4, null, null מופיעים בסדרת זמן אחת. בקובצי CSV, ‏Gemini Enterprise Agent Platform מתייחס למחרוזת ריקה כערך null, וב-BigQuery יש תמיכה מובנית בערכי null.

טבלה ב-BigQuery

אם בוחרים טבלה ב-BigQuery כקלט, צריך לוודא את הדברים הבאים:

  • הגודל של טבלאות מקור נתונים ב-BigQuery לא יכול להיות יותר מ-100GB.
  • אם הטבלה נמצאת בפרויקט אחר, צריך להקצות את התפקיד BigQuery Data Editor לחשבון השירות של Agent Platform באותו פרויקט.

קובץ CSV

אם אתם בוחרים אובייקט CSV ב-Cloud Storage כקלט, אתם צריכים לוודא ש:

  • מקור הנתונים חייב להתחיל בשורת כותרת עם שמות העמודות.
  • הגודל של כל אובייקט במקור הנתונים לא יכול להיות יותר מ-10GB. אפשר לכלול כמה קבצים, עד לגודל מקסימלי של 100GB.
  • אם הקטגוריה של Cloud Storage נמצאת בפרויקט אחר, צריך להקצות את התפקיד Storage Object Creator לחשבון השירות של Agent Platform באותו פרויקט.
  • כל המחרוזות חייבות להיות מוקפות במירכאות כפולות (").

פורמט הפלט

פורמט הפלט של בקשת ההסקה באצווה לא חייב להיות זהה לפורמט הקלט. לדוגמה, אם אתם משתמשים בטבלה ב-BigQuery כקלט, אתם יכולים להפיק את תוצאות החיזוי לאובייקט CSV ב-Cloud Storage.

שליחת בקשה להסקת מסקנות באצווה למודל

כדי לשלוח בקשות להסקת מסקנות באצווה, אתם יכולים להשתמש במסוף Cloud de Confiance או ב-Agent Platform API. מקור נתוני הקלט יכול להיות אובייקטים של CSV שמאוחסנים בקטגוריה של Cloud Storage או בטבלאות של BigQuery. בהתאם לכמות הנתונים שאתם שולחים כקלט, יכול להיות שיעבור זמן מה עד שהמשימה של הסקת המסקנות באצווה תסתיים.

מסוף Cloud de Confiance

משתמשים במסוף Cloud de Confiance כדי לשלוח בקשה להסקה באצווה.

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

    כניסה לדף Batch inferences

  2. לוחצים על Create כדי לפתוח את החלון New batch inference.
  3. בקטע Define your batch inference, מבצעים את הפעולות הבאות:
    1. מזינים שם להסקת הנתונים באצווה.
    2. בשדה Model name, בוחרים את שם המודל שבו רוצים להשתמש להסקת המסקנות באצווה.
    3. בקטע Version, בוחרים את גרסת המודל.
    4. בקטע Select source, בוחרים אם נתוני הקלט של המקור הם קובץ CSV ב-Cloud Storage או טבלה ב-BigQuery.
      • בקובצי CSV, מציינים את המיקום ב-Cloud Storage שבו נמצא קובץ הקלט בפורמט CSV.
      • בטבלאות BigQuery, צריך לציין את מזהה הפרויקט שבו נמצאת הטבלה, את מזהה מערך הנתונים ב-BigQuery ואת מזהה הטבלה או התצוגה ב-BigQuery.
    5. בקטע Batch inference output, בוחרים באפשרות CSV או BigQuery.
      • אם בחרתם ב-CSV, ציינו את הקטגוריה של Cloud Storage שבה Gemini Enterprise Agent Platform שומרת את הפלט.
      • ב-BigQuery, אפשר לציין מזהה פרויקט או מערך נתונים קיים:
        • כדי לציין את מזהה הפרויקט, מזינים את מזהה הפרויקט בשדה Google Cloud project ID. ‫Gemini Enterprise Agent Platform יוצרת בשבילכם קבוצת נתוני פלט חדשה.
        • כדי לציין קבוצת נתונים קיימת, מזינים את הנתיב שלה ב-BigQuery בשדה מזהה פרויקט בענן של Google, למשל bq://projectid.datasetid.
      • אופציונלי. אם יעד הפלט הוא BigQuery או JSONL ב-Cloud Storage, אפשר להפעיל שיוך של מאפיינים בנוסף להסקות. כדי לעשות את זה, בוחרים באפשרות Enable feature attributions for this model. אי אפשר להשתמש בשיוך תכונות בקובצי CSV ב-Cloud Storage. מידע נוסף
  4. אופציונלי: ניתוח מעקב אחרי מודלים להסקות באצווה זמין בגרסת טרום-השקה (Preview). הדרישות המוקדמות להוספת הגדרת זיהוי ההטיה למשימת ההסקה באצווה.
    1. לוחצים על המתג Enable model monitoring for this batch inference.
    2. בוחרים מקור נתונים לאימון. מזינים את נתיב הנתונים או המיקום של מקור נתוני האימון שבחרתם.
    3. אופציונלי: בקטע Alert thresholds, מציינים את ערכי הסף להפעלת התראות.
    4. בשדה Notification emails, מזינים כתובת אימייל אחת או יותר, מופרדות בפסיקים, כדי לקבל התראות באימייל כשמודל חורג מסף ההתראה.
    5. אופציונלי: בשדה Notification channels, מוסיפים ערוצים של Cloud Monitoring כדי לקבל התראות כשהמודל חורג מסף ההתראה. אפשר לבחור ערוצים קיימים של Cloud Monitoring או ליצור ערוץ חדש בלחיצה על Manage notification channels. המסוף תומך בערוצי ההתראות PagerDuty,‏ Slack ו-Pub/Sub.
  5. לוחצים על יצירה.

‫API : ‏BigQuery

REST

משתמשים ב-method‏ batchPredictionJobs.create כדי לבקש הסקת מסקנות באצווה.

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

  • ‫LOCATION_ID: האזור שבו המודל מאוחסן ושבו מופעלת משימת ההסקה באצווה. לדוגמה, us-central1.
  • ‫PROJECT_ID: מזהה הפרויקט.
  • ‫BATCH_JOB_NAME: השם המוצג של המשימה באצווה
  • ‫MODEL_ID: המזהה של המודל שבו משתמשים כדי להסיק מסקנות
  • ‫INPUT_URI: הפניה למקור הנתונים ב-BigQuery. בטופס:
    bq://bqprojectId.bqDatasetId.bqTableId
    
  • ‫OUTPUT_URI: הפניה ליעד ב-BigQuery (המקום שבו נכתבות ההסקות). מציינים את מזהה הפרויקט ואופציונלית, מזהה של מערך נתונים קיים. צריך להשתמש בטופס הבא:
    bq://bqprojectId.bqDatasetId
    אם תציינו רק את מזהה הפרויקט, Agent Platform תיצור בשבילכם מערך נתונים חדש לפלט. צריך להשתמש בטופס הבא:
    bq://bqprojectId
  • ‫GENERATE_EXPLANATION: ערך ברירת המחדל הוא false. צריך להגדיר את הערך true כדי להפעיל את שיוך התכונות. מידע נוסף זמין במאמר שיוך תכונות לחיזוי.

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

POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/batchPredictionJobs

גוף בקשת JSON:

{
  "displayName": "BATCH_JOB_NAME",
  "model": "projects/PROJECT_ID/locations/LOCATION_ID/models/MODEL_ID",
  "inputConfig": {
    "instancesFormat": "bigquery",
    "bigquerySource": {
      "inputUri": "INPUT_URI"
    }
  },
  "outputConfig": {
    "predictionsFormat": "bigquery",
    "bigqueryDestination": {
      "outputUri": "OUTPUT_URI"
    }
  },
  "generate_explanation": GENERATE_EXPLANATION
}

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

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_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/batchPredictionJobs"

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_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/batchPredictionJobs" | Select-Object -Expand Content

אתם אמורים לקבל תגובת JSON שדומה לזו:

{
  "name": "projects/PROJECT_ID/locations/LOCATION_ID/batchPredictionJobs/67890",
  "displayName": "batch_job_1 202005291958",
  "model": "projects/12345/locations/us-central1/models/5678",
  "state": "JOB_STATE_PENDING",
  "inputConfig": {
    "instancesFormat": "bigquery",
    "bigquerySource": {
      "inputUri": "INPUT_URI"
    }
  },
  "outputConfig": {
    "predictionsFormat": "bigquery",
    "bigqueryDestination": {
        "outputUri": bq://12345
    }
  },
  "dedicatedResources": {
    "machineSpec": {
      "machineType": "n1-standard-32",
      "acceleratorCount": "0"
    },
    "startingReplicaCount": 2,
    "maxReplicaCount": 6
  },
  "manualBatchTuningParameters": {
    "batchSize": 4
  },
  "outputInfo": {
    "bigqueryOutputDataset": "bq://12345.reg_model_2020_10_02_06_04
  }
  "state": "JOB_STATE_PENDING",
  "createTime": "2020-09-30T02:58:44.341643Z",
  "updateTime": "2020-09-30T02:58:44.341643Z",
}

Java

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

כדי לבצע אימות ב-Agent Platform, צריך להגדיר את Application Default Credentials. למידע נוסף, ראו הגדרת אימות לסביבת פיתוח מקומית.

לפני שמריצים דוגמאות קוד, צריך להגדיר את משתנה הסביבה GOOGLE_CLOUD_UNIVERSE_DOMAIN לערך s3nsapis.fr.

בדוגמה הבאה, מחליפים את INSTANCES_FORMAT ואת PREDICTIONS_FORMAT ב-`bigquery`. כדי ללמוד איך להחליף את שאר הפלייסהולדרים, קראו את הכרטיסייה `REST & CMD LINE` בקטע הזה.
import com.google.cloud.aiplatform.v1.BatchPredictionJob;
import com.google.cloud.aiplatform.v1.BigQueryDestination;
import com.google.cloud.aiplatform.v1.BigQuerySource;
import com.google.cloud.aiplatform.v1.JobServiceClient;
import com.google.cloud.aiplatform.v1.JobServiceSettings;
import com.google.cloud.aiplatform.v1.LocationName;
import com.google.cloud.aiplatform.v1.ModelName;
import com.google.gson.JsonObject;
import com.google.protobuf.Value;
import com.google.protobuf.util.JsonFormat;
import java.io.IOException;

public class CreateBatchPredictionJobBigquerySample {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String project = "PROJECT";
    String displayName = "DISPLAY_NAME";
    String modelName = "MODEL_NAME";
    String instancesFormat = "INSTANCES_FORMAT";
    String bigquerySourceInputUri = "BIGQUERY_SOURCE_INPUT_URI";
    String predictionsFormat = "PREDICTIONS_FORMAT";
    String bigqueryDestinationOutputUri = "BIGQUERY_DESTINATION_OUTPUT_URI";
    createBatchPredictionJobBigquerySample(
        project,
        displayName,
        modelName,
        instancesFormat,
        bigquerySourceInputUri,
        predictionsFormat,
        bigqueryDestinationOutputUri);
  }

  static void createBatchPredictionJobBigquerySample(
      String project,
      String displayName,
      String model,
      String instancesFormat,
      String bigquerySourceInputUri,
      String predictionsFormat,
      String bigqueryDestinationOutputUri)
      throws IOException {
    JobServiceSettings settings =
        JobServiceSettings.newBuilder()
            .setEndpoint("us-central1-aiplatform.googleapis.com:443")
            .build();
    String location = "us-central1";

    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (JobServiceClient client = JobServiceClient.create(settings)) {
      JsonObject jsonModelParameters = new JsonObject();
      Value.Builder modelParametersBuilder = Value.newBuilder();
      JsonFormat.parser().merge(jsonModelParameters.toString(), modelParametersBuilder);
      Value modelParameters = modelParametersBuilder.build();
      BigQuerySource bigquerySource =
          BigQuerySource.newBuilder().setInputUri(bigquerySourceInputUri).build();
      BatchPredictionJob.InputConfig inputConfig =
          BatchPredictionJob.InputConfig.newBuilder()
              .setInstancesFormat(instancesFormat)
              .setBigquerySource(bigquerySource)
              .build();
      BigQueryDestination bigqueryDestination =
          BigQueryDestination.newBuilder().setOutputUri(bigqueryDestinationOutputUri).build();
      BatchPredictionJob.OutputConfig outputConfig =
          BatchPredictionJob.OutputConfig.newBuilder()
              .setPredictionsFormat(predictionsFormat)
              .setBigqueryDestination(bigqueryDestination)
              .build();
      String modelName = ModelName.of(project, location, model).toString();
      BatchPredictionJob batchPredictionJob =
          BatchPredictionJob.newBuilder()
              .setDisplayName(displayName)
              .setModel(modelName)
              .setModelParameters(modelParameters)
              .setInputConfig(inputConfig)
              .setOutputConfig(outputConfig)
              .build();
      LocationName parent = LocationName.of(project, location);
      BatchPredictionJob response = client.createBatchPredictionJob(parent, batchPredictionJob);
      System.out.format("response: %s\n", response);
      System.out.format("\tName: %s\n", response.getName());
    }
  }
}

Python

במאמר התקנת Vertex AI SDK ל-Python מוסבר איך להתקין או לעדכן את Vertex AI SDK ל-Python. מידע נוסף מופיע ב מאמרי העזרה של ה-API מבוסס-Python.

def create_batch_prediction_job_bigquery_sample(
    project: str,
    location: str,
    model_resource_name: str,
    job_display_name: str,
    bigquery_source: str,
    bigquery_destination_prefix: str,
    sync: bool = True,
):
    aiplatform.init(project=project, location=location)

    my_model = aiplatform.Model(model_resource_name)

    batch_prediction_job = my_model.batch_predict(
        job_display_name=job_display_name,
        bigquery_source=bigquery_source,
        bigquery_destination_prefix=bigquery_destination_prefix,
        sync=sync,
    )

    batch_prediction_job.wait()

    print(batch_prediction_job.display_name)
    print(batch_prediction_job.resource_name)
    print(batch_prediction_job.state)
    return batch_prediction_job

‫API : ‏Cloud Storage

REST

משתמשים ב-method‏ batchPredictionJobs.create כדי לבקש הסקת מסקנות באצווה.

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

  • ‫LOCATION_ID: האזור שבו המודל מאוחסן ושבו מופעלת משימת ההסקה באצווה. לדוגמה, us-central1.
  • PROJECT_ID:
  • ‫BATCH_JOB_NAME: השם המוצג של המשימה באצווה
  • ‫MODEL_ID: המזהה של המודל שבו משתמשים כדי להסיק מסקנות
  • ‫URI: נתיבים (URI) לקטגוריות של Cloud Storage שמכילות את נתוני האימון. יכול להיות יותר מאירוע אחד. לכל URI יש את הפורמט הבא:
    gs://bucketName/pathToFileName
    
  • ‫OUTPUT_URI_PREFIX: הנתיב ליעד ב-Cloud Storage שבו ייכתבו ההסקות. ‫Agent Platform כותבת הסקות באצווה לספריית משנה עם חותמת זמן בנתיב הזה. מגדירים את הערך הזה למחרוזת בפורמט הבא:
    gs://bucketName/pathToOutputDirectory
    
  • ‫GENERATE_EXPLANATION: ערך ברירת המחדל הוא false. צריך להגדיר את הערך true כדי להפעיל את שיוך התכונות. האפשרות הזו זמינה רק אם יעד הפלט הוא JSONL. שיוך תכונות לא נתמך בקובצי CSV ב-Cloud Storage. מידע נוסף זמין במאמר שיוך תכונות לחיזוי.

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

POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/batchPredictionJobs

גוף בקשת JSON:

{
  "displayName": "BATCH_JOB_NAME",
  "model": "projects/PROJECT_ID/locations/LOCATION_ID/models/MODEL_ID",
  "inputConfig": {
    "instancesFormat": "csv",
    "gcsSource": {
      "uris": [
        URI1,...
      ]
    },
  },
  "outputConfig": {
    "predictionsFormat": "csv",
    "gcsDestination": {
      "outputUriPrefix": "OUTPUT_URI_PREFIX"
    }
  },
  "generate_explanation": GENERATE_EXPLANATION
}

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

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_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/batchPredictionJobs"

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_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/batchPredictionJobs" | Select-Object -Expand Content

אתם אמורים לקבל תגובת JSON שדומה לזו:

{
  "name": "projects/PROJECT_ID/locations/LOCATION_ID/batchPredictionJobs/67890",
  "displayName": "batch_job_1 202005291958",
  "model": "projects/12345/locations/us-central1/models/5678",
  "state": "JOB_STATE_PENDING",
  "inputConfig": {
    "instancesFormat": "csv",
    "gcsSource": {
      "uris": [
        "gs://bp_bucket/reg_mode_test"
      ]
    }
  },
  "outputConfig": {
    "predictionsFormat": "csv",
    "gcsDestination": {
      "outputUriPrefix": "OUTPUT_URI_PREFIX"
    }
  },
  "dedicatedResources": {
    "machineSpec": {
      "machineType": "n1-standard-32",
      "acceleratorCount": "0"
    },
    "startingReplicaCount": 2,
    "maxReplicaCount": 6
  }
  "outputInfo": {
    "gcsOutputDataset": "OUTPUT_URI_PREFIX/prediction-batch_job_1 202005291958-2020-09-30T02:58:44.341643Z"
  }
  "state": "JOB_STATE_PENDING",
  "createTime": "2020-09-30T02:58:44.341643Z",
  "updateTime": "2020-09-30T02:58:44.341643Z",
}

Python

במאמר התקנת Vertex AI SDK ל-Python מוסבר איך להתקין או לעדכן את Vertex AI SDK ל-Python. מידע נוסף מופיע ב מאמרי העזרה של ה-API מבוסס-Python.

def create_batch_prediction_job_sample(
    project: str,
    location: str,
    model_resource_name: str,
    job_display_name: str,
    gcs_source: Union[str, Sequence[str]],
    gcs_destination: str,
    sync: bool = True,
):
    aiplatform.init(project=project, location=location)

    my_model = aiplatform.Model(model_resource_name)

    batch_prediction_job = my_model.batch_predict(
        job_display_name=job_display_name,
        gcs_source=gcs_source,
        gcs_destination_prefix=gcs_destination,
        sync=sync,
    )

    batch_prediction_job.wait()

    print(batch_prediction_job.display_name)
    print(batch_prediction_job.resource_name)
    print(batch_prediction_job.state)
    return batch_prediction_job

אחזור תוצאות של הסקת מסקנות באצווה

פלטפורמת הסוכנים של Gemini Enterprise שולחת את הפלט של הסקות באצווה ליעד שציינתם. היעד יכול להיות BigQuery או Cloud Storage.

אין תמיכה בפלט של Cloud Storage לשיוך תכונות.

BigQuery

קבוצת נתוני הפלט

אם אתם משתמשים ב-BigQuery, הפלט של הסקת אצווה נשמר במערך נתונים של פלט. אם סיפקתם קבוצת נתונים ל-Gemini Enterprise Agent Platform, השם של קבוצת הנתונים (BQ_DATASET_NAME) הוא השם שסיפקתם קודם. אם לא סיפקתם קבוצת נתונים לפלט, Gemini Enterprise Agent Platform יצרה אחת בשבילכם. כדי למצוא את השם שלו (BQ_DATASET_NAME):

  1. במסוף Cloud de Confiance , נכנסים לדף Batch inferences ב-Gemini Enterprise Agent Platform.

    כניסה לדף Batch inferences

  2. בוחרים את ההסקה שיצרתם.
  3. מערך הנתונים של הפלט מופיע במיקום הייצוא. שם מערך הנתונים מופיע בפורמט הבא: prediction_MODEL_NAME_TIMESTAMP

טבלאות פלט

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

  • טבלת הסקה

    הטבלה הזו מכילה שורה לכל שורה בנתוני הקלט שבהם התבקשה הסקה (כלומר, שבהם TARGET_COLUMN_NAME = null). לדוגמה, אם הקלט כלל 14 ערכי null בעמודת היעד (כמו מכירות ב-14 הימים הבאים), בקשת ההסקה תחזיר 14 שורות, מספר המכירות לכל יום. אם בקשת ההסקה חורגת מטווח התחזית של המודל, Gemini Enterprise Agent Platform מחזירה רק הסקות עד לטווח התחזית.

  • טבלת אימות שגיאות

    הטבלה הזו מכילה שורה לכל שגיאה לא קריטית שמתרחשת בשלב הצבירה, שמתבצע לפני הסקת המסקנות באצווה. כל שגיאה לא קריטית תואמת לשורה בנתוני הקלט ש-Agent Platform לא הצליחה להחזיר תחזית לגביה.

  • טבלת השגיאות

    הטבלה הזו מכילה שורה לכל שגיאה לא קריטית שזוהתה במהלך הסקת מסקנות באצווה. כל שגיאה לא קריטית תואמת לשורה בנתוני הקלט ש-Agent Platform לא הצליחה להחזיר תחזית לגביה.

טבלת החיזויים

שם הטבלה (BQ_PREDICTIONS_TABLE_NAME) נוצר על ידי הוספת `predictions_` לחותמת הזמן של תחילת משימת ההסקה באצווה: predictions_TIMESTAMP

כדי לאחזר את טבלת ההסקות:

  1. במסוף, נכנסים לדף BigQuery.
    כניסה ל-BigQuery
  2. מריצים את השאילתה הבאה:
    SELECT * FROM BQ_DATASET_NAME.BQ_PREDICTIONS_TABLE_NAME
          

פלטפורמת הסוכנים של Gemini Enterprise שומרת את ההסקות בעמודה predicted_TARGET_COLUMN_NAME.value.

אם אימנתם מודל באמצעות Temporal Fusion Transformer‏ (TFT), תוכלו למצוא את פלט הפרשנות של TFT בעמודה predicted_TARGET_COLUMN_NAME.tft_feature_importance.

העמודה הזו מחולקת לעמודות המשנה הבאות:

  • ‫context_columns: מאפייני חיזוי שערכי חלון ההקשר שלהם משמשים כקלט למקודד הזיכרון לטווח קצר לזמן ארוך (LSTM) של TFT.
  • ‫context_weights: משקלי החשיבות של המאפיינים שמשויכים לכל אחד מהערכים של context_columns במופע החזוי.
  • ‫horizon_columns: מאפייני חיזוי שערכי אופק החיזוי שלהם משמשים כקלט למפענח הזיכרון לטווח קצר לזמן ארוך (LSTM) של TFT.
  • ‫horizon_weights: משקלי החשיבות של המאפיינים שמשויכים לכל אחד מהערכים של horizon_columns במופע החזוי.
  • ‫attribute_columns: מאפייני חיזוי שהם בלתי תלויים בזמן.
  • ‫attribute_weights: המשקלים שמשויכים לכל אחד מהערכים של attribute_columns.

אם המודל עבר אופטימיזציה להפסד קוונטיל וקבוצת הקוונטילים כוללת את החציון, הערך של predicted_TARGET_COLUMN_NAME.value הוא ערך ההסקה בחציון. אחרת, predicted_TARGET_COLUMN_NAME.value הוא ערך ההסקה באחוזון הנמוך ביותר בקבוצה. לדוגמה, אם קבוצת האחוזונים היא [0.1, 0.5, 0.9], אז value היא ההסקה לאחוזון 0.5. אם קבוצת האחוזונים היא [0.1, 0.9], אז value היא ההסקה לגבי האחוזון 0.1.

בנוסף, פלטפורמת הסוכנים של Gemini Enterprise שומרת ערכי קוונטיל והסקת מסקנות בעמודות הבאות:

  • predicted_TARGET_COLUMN_NAME.quantile_values: הערכים של האחוזונים, שמוגדרים במהלך אימון המודל. לדוגמה, 0.1, 0.5 ו-0.9.
  • ‫predicted_TARGET_COLUMN_NAME.quantile_predictions: ערכי ההסקה שמשויכים לערכי האחוזונים.

אם המודל משתמש בהסקה הסתברותית, predicted_TARGET_COLUMN_NAME.value מכיל את הממזער של יעד האופטימיזציה. לדוגמה, אם יעד האופטימיזציה הוא minimize-rmse, הערך של predicted_TARGET_COLUMN_NAME.value הוא הערך הממוצע. אם הוא minimize-mae, השדה predicted_TARGET_COLUMN_NAME.value מכיל את הערך החציוני.

אם המודל משתמש בהסקה הסתברותית עם קוונטילים, Gemini Enterprise Agent Platform שומרת את ערכי הקוונטילים וההסקות בעמודות הבאות:

  • predicted_TARGET_COLUMN_NAME.quantile_values: הערכים של האחוזונים, שמוגדרים במהלך אימון המודל. לדוגמה, 0.1, 0.5 ו-0.9.
  • ‫predicted_TARGET_COLUMN_NAME.quantile_predictions: ערכי ההסקה שמשויכים לערכי הקוונטיל.

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

SELECT explanation.attributions[OFFSET(0)].featureAttributions.BQ_FEATURE_NAME FROM BQ_DATASET_NAME.BQ_PREDICTIONS_TABLE_NAME
  

מידע נוסף זמין במאמר שיוך תכונות לחיזוי.

טבלת אימות שגיאות

‫שם הטבלה (BQ_ERRORS_VALIDATION_TABLE_NAME) נוצר על ידי הוספת חותמת הזמן של תחילת משימת ההסקה באצווה ל-errors_validation: ‏errors_validation_TIMESTAMP

כדי לאחזר את טבלת אימות השגיאות:
  1. במסוף, נכנסים לדף BigQuery.
    כניסה ל-BigQuery
  2. מריצים את השאילתה הבאה:
    SELECT * FROM BQ_DATASET_NAME.BQ_ERRORS_VALIDATION_TABLE_NAME
          
הודעת השגיאה מאוחסנת בעמודה הבאה:
  • errors_TARGET_COLUMN_NAME

טבלת השגיאות

שם הטבלה (BQ_ERRORS_TABLE_NAME) נוצר על ידי הוספת `errors_` לחותמת הזמן של תחילת משימת ההסקה באצווה: errors_TIMESTAMP

כדי לאחזר את טבלת אימות השגיאות:
  1. במסוף, נכנסים לדף BigQuery.
    כניסה ל-BigQuery
  2. מריצים את השאילתה הבאה:
    SELECT * FROM BQ_DATASET_NAME.BQ_ERRORS_TABLE_NAME
          
השגיאות מאוחסנות בעמודות הבאות:
  • errors_TARGET_COLUMN_NAME.code
  • errors_TARGET_COLUMN_NAME.message

Cloud Storage

אם ציינתם את Cloud Storage כיעד הפלט, התוצאות של בקשת ההסקה באצווה יוחזרו כאובייקטים של CSV בתיקייה חדשה בקטגוריה שציינתם. שם התיקייה הוא שם המודל, עם הקידומת "prediction-‎" והסיומת של חותמת הזמן שבה התחילה משימת ההסקה באצווה. שם התיקייה ב-Cloud Storage מופיע בכרטיסייה Batch predictions של המודל.

תיקיית Cloud Storage מכילה שני סוגים של אובייקטים:
  • אובייקטים של הסקה

    אובייקטי ההסקה נקראים ‎predictions_1.csv,‏ ‎predictions_2.csv וכן הלאה. הם מכילים שורת כותרת עם שמות העמודות, ושורה לכל תחזית שהוחזרה. מספר ערכי ההסקה תלוי בקלט ההסקה ובאופק החיזוי. לדוגמה, אם הקלט כלל 14 רשומות ריקות בעמודת היעד (כמו מכירות ב-14 הימים הבאים), בקשת ההסקה תחזיר 14 שורות, מספר המכירות לכל יום. אם בקשת ההסקה חורגת מאופק החיזוי של המודל, Gemini Enterprise Agent Platform מחזירה רק הסקות עד לאופק החיזוי.

    ערכי התחזית מוחזרים בעמודה בשם `predicted_TARGET_COLUMN_NAME`. בתחזיות של קוונטילים, עמודת הפלט מכילה את ההסקה של הקוונטילים ואת ערכי הקוונטילים בפורמט JSON.

  • אובייקטים של שגיאות

    אובייקטי השגיאות נקראים errors_1.csv,‏ errors_2.csv וכן הלאה. הם מכילים שורת כותרת, ושורה לכל שורה בנתוני הקלט ש-Agent Platform לא הצליחה להחזיר תחזית עבורה (לדוגמה, אם תכונה שלא יכולה להיות null הייתה null).

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

שאילתות לדוגמה לשיוך תכונות ב-BigQuery

דוגמה 1: קביעת שיוכים להסקה אחת

חשבו על השאלה הבאה:

בכמה עלו המכירות החזויות של מוצר מסוים בחנות מסוימת ב-24 בנובמבר בעקבות פרסום המוצר?

השאילתה המתאימה היא:

SELECT
  * EXCEPT(explanation, predicted_sales),
  ROUND(predicted_sales.value, 2) AS predicted_sales,
  ROUND(
    explanation.attributions[OFFSET(0)].featureAttributions.advertisement,
    2
  ) AS attribution_advertisement
FROM
  `project.dataset.predictions`
WHERE
  product = 'product_0'
  AND store = 'store_0'
  AND date = '2019-11-24'

דוגמה 2: קביעת החשיבות של תכונה גלובלית

חשבו על השאלה הבאה:

מה הייתה התרומה של כל תכונה למכירות החזויות הכוללות?

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

WITH

/*
* Aggregate from (id, date) level attributions to global feature importance.
*/
attributions_aggregated AS (
 SELECT
   SUM(ABS(attributions.featureAttributions.date)) AS date,
   SUM(ABS(attributions.featureAttributions.advertisement)) AS advertisement,
   SUM(ABS(attributions.featureAttributions.holiday)) AS holiday,
   SUM(ABS(attributions.featureAttributions.sales)) AS sales,
   SUM(ABS(attributions.featureAttributions.store)) AS store,
   SUM(ABS(attributions.featureAttributions.product)) AS product,
 FROM
   project.dataset.predictions,
   UNNEST(explanation.attributions) AS attributions

),

/*
* Calculate the normalization constant for global feature importance.
*/
attributions_aggregated_with_total AS (
 SELECT
   *,
   date + advertisement + holiday + sales + store + product AS total
 FROM
   attributions_aggregated
)

/*
* Calculate the normalized global feature importance.
*/
SELECT
 ROUND(date / total, 2) AS date,
 ROUND(advertisement / total, 2) AS advertisement,
 ROUND(holiday / total, 2) AS holiday,
 ROUND(sales / total, 2) AS sales,
 ROUND(store / total, 2) AS store,
 ROUND(product / total, 2) AS product,
FROM
 attributions_aggregated_with_total

דוגמה לפלט של הסקת אצווה ב-BigQuery

לדוגמה, בקבוצת נתונים של מכירות משקאות חריפים, יש ארבע חנויות בעיר "Ida Grove":‏ "Ida Grove Food Pride",‏ "Discount Liquors of Ida Grove", ‏ "Casey's General Store #3757" ו-"Brew Ida Grove". ‫store_name הוא series identifier, ובשלוש מתוך ארבע החנויות נשלחות בקשות להסקת מסקנות לגבי עמודת היעד sale_dollars. נוצרת שגיאת אימות כי לא התבקשה תחזית לגבי "Discount Liquors of Ida Grove".

הקטע הבא נלקח מקבוצת הנתונים של הקלט שמשמשת להסקת מסקנות:

קבוצת נתונים לדוגמה של קלט לחיזוי תחזית

הקטע הבא הוא חלק מתוצאות ההסקה:

תוצאות לדוגמה של תחזיות

הנה קטע משגיאות האימות:

שגיאות בבדיקה של דוגמאות

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

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

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

ערכי האחוזונים מופיעים בעמודה predicted_Sales.quantile_values. בדוגמה הזו, המודל חזה ערכים באחוזונים 0.1,‏ 0.5 ו-0.9.

ערכי ההסקה מופיעים בעמודה predicted_Sales.quantile_predictions. זהו מערך של ערכי מכירות, שממופים לערכי האחוזונים בעמודה predicted_Sales.quantile_values. בשורה הראשונה, אנחנו רואים שההסתברות שערך המכירות יהיה נמוך מ-4484.04 היא 10%. הסבירות שערך המכירות יהיה נמוך מ-5615.64 היא 50%. ההסתברות שערך המכירות יהיה נמוך מ-6853.29 היא 90%. ההסקה לגבי השורה הראשונה, שמיוצגת כערך יחיד, היא 5615.64.