קבלת מסקנות לגבי קבוצות של נתונים ב-TabNet

בדף הזה מוסבר איך לשלוח בקשת הסקה (inference) של קבוצת נתונים למודל סיווג או רגרסיה שאומן באמצעות מסוף Google Cloud או Vertex AI API.

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

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

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

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

נתוני קלט

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

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

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

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

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

טבלת BigQuery

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

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

קובץ CSV

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

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

פורמט פלט

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

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

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

מסוף Google Cloud

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

  1. במסוף Google Cloud , בקטע Vertex AI, עוברים לדף Batch inference.

    כניסה לדף Batch inference

  2. לוחצים על Create (יצירה) כדי לפתוח את החלון New batch inference (הסקת מסקנות חדשה באצווה).
  3. בקטע Define your batch inference (הגדרת מסקנות אצווה), מבצעים את השלבים הבאים:
    1. מזינים שם להסקת המסקנות באצווה.
    2. בקטע שם המודל, בוחרים את שם המודל שרוצים להשתמש בו להסקת המסקנות באצווה הזו.
    3. בשדה Version, בוחרים את גרסת המודל שרוצים להשתמש בה כדי להסיק מסקנות לגבי קבוצת הנתונים הזו.
    4. בקטע Select source (בחירת מקור), בוחרים אם נתוני הקלט של המקור הם קובץ CSV ב-Cloud Storage או טבלה ב-BigQuery.
      • עבור קובצי CSV, מציינים את המיקום ב-Cloud Storage שבו נמצא קובץ הקלט CSV.
      • בטבלאות BigQuery, מציינים את מזהה הפרויקט שבו נמצאת הטבלה, את מזהה מערך הנתונים ב-BigQuery ואת מזהה הטבלה או התצוגה ב-BigQuery.
    5. בקטע פלט, בוחרים באפשרות CSV או BigQuery.
      • במקרה של CSV, מציינים את קטגוריית Cloud Storage שבה Vertex AI מאחסן את הפלט.
      • ב-BigQuery, אפשר לציין מזהה פרויקט או מערך נתונים קיים:
        • כדי לציין את מזהה הפרויקט, מזינים את מזהה הפרויקט בשדה מזהה פרויקט ב-Google Cloud. ‫Vertex AI יוצר בשבילכם מערך נתונים חדש של פלט.
        • כדי לציין מערך נתונים קיים, מזינים את הנתיב שלו ב-BigQuery בשדה מזהה הפרויקט ב-Google Cloud, למשל bq://projectid.datasetid.
  4. אופציונלי: ניתוח של מעקב אחרי מודלים של מסקנות אצווה זמין בתצוגה מקדימה. במאמר דרישות מוקדמות מוסבר איך מוסיפים הגדרה של זיהוי הטיה למשימת הסקת מסקנות באצווה.
    1. לוחצים על המתג כדי להפעיל את האפשרות הפעלת מעקב אחר המודל עבור הסקת המסקנות הזו.
    2. בוחרים מקור נתוני אימון. מזינים את נתיב הנתונים או המיקום של מקור נתוני האימון שבחרתם.
    3. אופציונלי: בקטע ערכי סף להתראות, מציינים את ערכי הסף להפעלת ההתראות.
    4. בקטע Notification emails (התראות באימייל), מזינים כתובת אימייל אחת או יותר שמופרדות בפסיקים כדי לקבל התראות כשמודל חורג מערך הסף להתראה.
    5. אופציונלי: בערוצי התראות, מוסיפים ערוצים של Cloud Monitoring כדי לקבל התראות כשמודל חורג מסף ההתראה. אפשר לבחור ערוצים קיימים של Cloud Monitoring או ליצור ערוץ חדש בלחיצה על Manage notification channels. המסוף תומך בערוצי התראות של PagerDuty,‏ Slack ו-Pub/Sub.
  5. לוחצים על יצירה.

‫API: BigQuery

REST

משתמשים בשיטה batchPredictionJobs.create כדי לבקש חיזוי באצווה.

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

  • LOCATION_ID: האזור שבו המודל מאוחסן ועבודת ההסקה באצווה מבוצעת. לדוגמה, us-central1.
  • PROJECT_ID: מזהה הפרויקט
  • BATCH_JOB_NAME: השם המוצג של המשימה באצווה
  • MODEL_ID: המזהה של המודל שבו רוצים להשתמש כדי להסיק מסקנות
  • INPUT_URI: הפניה למקור הנתונים של BigQuery. בטופס:
    bq://bqprojectId.bqDatasetId.bqTableId
    
  • OUTPUT_URI: הפניה ליעד ב-BigQuery (המקום שבו נכתבות ההסקות). מציינים את מזהה הפרויקט ואופציונלית מזהה של מערך נתונים קיים. אם מציינים רק את מזהה הפרויקט, Vertex AI יוצר מערך נתונים חדש של פלט בשבילכם. צריך להשתמש בטופס הבא:
    bq://bqprojectId.bqDatasetId
    
  • MACHINE_TYPE: משאבי המכונה שישמשו לעבודת ההיסק הזו. מידע נוסף
  • STARTING_REPLICA_COUNT: מספר הצמתים ההתחלתי של משימת ההסקה הזו. אפשר להגדיל או להקטין את מספר הצמתים בהתאם לעומס, עד למספר המקסימלי של הצמתים, אבל הוא אף פעם לא יירד מתחת למספר הזה.
  • MAX_REPLICA_COUNT: המספר המקסימלי של הצמתים בעבודת ההסקת המסקנות הזו. אפשר להגדיל או להקטין את מספר הצמתים לפי הצורך בהתאם לעומס, אבל הוא אף פעם לא יעלה על המקסימום. אופציונלי, ברירת המחדל היא 10.

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

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

גוף בקשת JSON:

{
  "displayName": "BATCH_JOB_NAME",
  "model": "MODEL_ID",
  "inputConfig": {
    "instancesFormat": "bigquery",
    "bigquerySource": {
      "inputUri": "INPUT_URI"
    }
  },
  "outputConfig": {
    "predictionsFormat": "bigquery",
    "bigqueryDestination": {
      "outputUri": "OUTPUT_URI"
    }
  },
  "dedicatedResources": {
    "machineSpec": {
      "machineType": "MACHINE_TYPE",
      "acceleratorCount": "0"
    },
    "startingReplicaCount": STARTING_REPLICA_COUNT,
    "maxReplicaCount": MAX_REPLICA_COUNT
  },

}

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

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
  },
  "generateExplanation": false,
  "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הוראות ההגדרה במאמר Vertex AI quickstart using client libraries. מידע נוסף מופיע במאמרי העזרה של Vertex AI Java API.

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

בדוגמה הבאה, מחליפים את INSTANCES_FORMAT ואת PREDICTIONS_FORMAT ב-bigquery. כדי ללמוד איך להחליף את שאר placeholders, אפשר לעיין בכרטיסייה 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. מידע נוסף מופיע ב מאמרי העזרה של Python API.

בדוגמה הבאה, הפרמטרים `instances_format` ו-`predictions_format` מוגדרים לערך `"bigquery"`. כדי ללמוד איך להגדיר את הפרמטרים האחרים, אפשר לעיין בכרטיסייה `REST & CMD LINE` בקטע הזה.
from google.cloud import aiplatform_v1beta1
from google.protobuf import json_format
from google.protobuf.struct_pb2 import Value


def create_batch_prediction_job_bigquery_sample(
    project: str,
    display_name: str,
    model_name: str,
    instances_format: str,
    bigquery_source_input_uri: str,
    predictions_format: str,
    bigquery_destination_output_uri: str,
    location: str = "us-central1",
    api_endpoint: str = "us-central1-aiplatform.googleapis.com",
):
    # The AI Platform services require regional API endpoints.
    client_options = {"api_endpoint": api_endpoint}
    # Initialize client that will be used to create and send requests.
    # This client only needs to be created once, and can be reused for multiple requests.
    client = aiplatform_v1beta1.JobServiceClient(client_options=client_options)
    model_parameters_dict = {}
    model_parameters = json_format.ParseDict(model_parameters_dict, Value())

    batch_prediction_job = {
        "display_name": display_name,
        # Format: 'projects/{project}/locations/{location}/models/{model_id}'
        "model": model_name,
        "model_parameters": model_parameters,
        "input_config": {
            "instances_format": instances_format,
            "bigquery_source": {"input_uri": bigquery_source_input_uri},
        },
        "output_config": {
            "predictions_format": predictions_format,
            "bigquery_destination": {"output_uri": bigquery_destination_output_uri},
        },
        # optional
        "generate_explanation": True,
    }
    parent = f"projects/{project}/locations/{location}"
    response = client.create_batch_prediction_job(
        parent=parent, batch_prediction_job=batch_prediction_job
    )
    print("response:", response)

‫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 שבו ייכתבו ההסקות. ‫Vertex AI כותב מסקנות של אצווה לספריית משנה עם חותמת זמן של הנתיב הזה. מגדירים את הערך הזה כמחרוזת בפורמט הבא:
    gs://bucketName/pathToOutputDirectory
    
  • MACHINE_TYPE: משאבי המכונה שישמשו לעבודת ההיסק הזו. מידע נוסף
  • STARTING_REPLICA_COUNT: מספר הצמתים ההתחלתי של משימת ההסקה הזו. אפשר להגדיל או להקטין את מספר הצמתים בהתאם לעומס, עד למספר המקסימלי של הצמתים, אבל הוא אף פעם לא יירד מתחת למספר הזה.
  • MAX_REPLICA_COUNT: המספר המקסימלי של הצמתים בעבודת ההסקת המסקנות הזו. אפשר להגדיל או להקטין את מספר הצמתים לפי הצורך בהתאם לעומס, אבל הוא אף פעם לא יעלה על המקסימום. אופציונלי, ברירת המחדל היא 10.

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

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

גוף בקשת JSON:

{
  "displayName": "BATCH_JOB_NAME",
  "model": "MODEL_ID",
  "inputConfig": {
    "instancesFormat": "csv",
    "gcsSource": {
      "uris": [
        URI1,...
      ]
    },
  },
  "outputConfig": {
    "predictionsFormat": "csv",
    "gcsDestination": {
      "outputUriPrefix": "OUTPUT_URI_PREFIX"
    }
  },
  "dedicatedResources": {
    "machineSpec": {
      "machineType": "MACHINE_TYPE",
      "acceleratorCount": "0"
    },
    "startingReplicaCount": STARTING_REPLICA_COUNT,
    "maxReplicaCount": MAX_REPLICA_COUNT
  },

}

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

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
  },
  "manualBatchTuningParameters": {
    "batchSize": 4
  }
  "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",
}

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

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

BigQuery

מערך נתונים של פלט

אם אתם משתמשים ב-BigQuery, הפלט של הסקת מסקנות באצווה מאוחסן במערך נתונים של פלט. אם סיפקתם מערך נתונים ל-Vertex AI, השם של מערך הנתונים (BQ_DATASET_NAME) הוא השם שסיפקתם קודם. אם לא סיפקתם מערך נתונים של פלט, מערכת Vertex AI יצרה בשבילכם מערך כזה. כדי למצוא את השם שלו (BQ_DATASET_NAME), צריך לבצע את השלבים הבאים:

  1. נכנסים לדף Batch inference של Vertex AI במסוף Google Cloud .

    כניסה לדף Batch inference

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

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

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

    הטבלה הזו מכילה שורה לכל שורה בנתוני הקלט שבהם נדרשה הסקה (כלומר, שבהם TARGET_COLUMN_NAME = null).

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

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

טבלת חיזויים

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

כדי לאחזר את ההסקות, עוברים לדף BigQuery.

כניסה לדף BigQuery

הפורמט של השאילתה תלוי בסוג המודל:

סיווג:

SELECT predicted_TARGET_COLUMN_NAME.classes AS classes,
predicted_TARGET_COLUMN_NAME.scores AS scores
FROM BQ_DATASET_NAME.BQ_PREDICTIONS_TABLE_NAME

classes היא רשימת הכיתות הפוטנציאליות, ו-scores הם ציוני המהימנות התואמים.

רגרסיה:

SELECT predicted_TARGET_COLUMN_NAME.value
FROM BQ_DATASET_NAME.BQ_PREDICTIONS_TABLE_NAME

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

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

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

SELECT predicted_TARGET_COLUMN_NAME.feature_importance.BQ_FEATURE_NAME FROM BQ_DATASET_NAME.BQ_PREDICTIONS_TABLE_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 וכן הלאה. הם מכילים שורת כותרת עם שמות העמודות ושורה לכל היקש שמוחזר. באובייקטים של ההסקות, מערכת Vertex AI מחזירה את נתוני ההסקות ויוצרת עמודה חדשה אחת או יותר לתוצאות ההסקות על סמך סוג המודל:

    • סיווג: לכל ערך פוטנציאלי בעמודת היעד, מתווספת לתוצאות עמודה בשם TARGET_COLUMN_NAME_VALUE_score. העמודה הזו מכילה את הניקוד או את ההערכה של מידת הוודאות לגבי הערך הזה.
    • Regression: הערך החזוי של השורה הזו מוחזר בעמודה בשם predicted_TARGET_COLUMN_NAME. מרווח החיזוי לא מוחזר בפלט CSV.
  • אובייקטים של שגיאות

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

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

אי אפשר לראות את חשיבות התכונות בתוצאות של הסקת מסקנות באצווה שמוחזרות ב-Cloud Storage.

פירוש תוצאות התחזית

סיווג

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

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

רגרסיה

מודלים של רגרסיה מחזירים ערך הסקה.

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

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

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

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