שיפור הטמעות טקסט

בדף הזה מוסבר איך לשפר את הביצועים של מודלים להטמעת טקסט.

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

לחצו כדי להרחיב את רשימת המודלים הנתמכים

  • text-embedding-004
  • text-embedding-005
  • text-multilingual-embedding-002

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

מידע נוסף על שיפור המודל

שיפור האיכות הצפוי

‫Gemini Enterprise Agent Platform משתמשת בשיטת כוונון יעילה לפרמטרים לצורך התאמה אישית. המתודולוגיה הזו מראה שיפורים משמעותיים באיכות, של עד 41% (ממוצע של 12%) בניסויים שבוצעו על מערכי נתונים ציבוריים של מדדי ביצועים לאחזור.

תרחיש לדוגמה לשיפור מודל הטמעה

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

תהליך העבודה של כוונון

תהליך העבודה של כוונון המודל ב-Gemini Enterprise Agent Platform הוא כזה:

  • מכינים את מערך הנתונים לכוונון המודל.
  • מעלים את מערך הנתונים לכוונון המודל לקטגוריה של Cloud Storage.
  • מגדירים את הפרויקט לצינורות של Gemini Enterprise Agent Platform.
  • יוצרים משימת כוונון של מודל.
  • פורסים את המודל שעבר התאמה לנקודת קצה ב-Gemini Enterprise Agent Platform עם אותו שם. בניגוד למשימות של כוונון מודלים של טקסט, משימה של כוונון הטמעות טקסט לא פורסת את המודלים המכווננים שלכם לנקודת קצה של Gemini Enterprise Agent Platform.

הכנת מערך נתוני ההטבעות

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

פורמט מערך הנתונים לכוונון מודל הטמעה

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

  • קובץ הקורפוס: הנתיב מוגדר על ידי הפרמטר corpus_path. זהו קובץ JSONL שבו כל שורה מכילה את השדות _id, title ו-text עם ערכים מסוג מחרוזת. המאפיינים _id ו-text הם מאפייני חובה, והמאפיין title הוא אופציונלי. קובץ corpus.jsonl לדוגמה:

    {"_id": "doc1", "title": "Get an introduction to Agent Platform", "text": "Agent Platform Studio offers a Google Cloud console tool for rapidly prototyping and testing generative AI models. Learn how you can use Agent Platform Studio to test models using prompt samples, design and save prompts, tune a foundation model, and convert between speech and text."}
    {"_id": "doc2", "title": "Use gen AI for summarization, classification, and extraction", "text": "Learn how to create text prompts for handling any number of tasks with Agent Platform's generative AI support. Some of the most common tasks are classification, summarization, and extraction. Agent Platform's PaLM API for text lets you design prompts with flexibility in terms of their structure and format."}
    {"_id": "doc3", "title": "Custom ML training overview and documentation", "text": "Get an overview of the custom training workflow in Agent Platform, the benefits of custom training, and the various training options that are available. This page also details every step involved in the ML training workflow from preparing data to inferences."}
    {"_id": "doc4", "text": "Text embeddings are useful for clustering, information retrieval, retrieval-augmented generation (RAG), and more."}
    {"_id": "doc5", "title": "Text embedding tuning", "text": "Google's text embedding models can be tuned on Agent Platform."}
    
  • קובץ שאילתות: קובץ השאילתות מכיל את השאילתות לדוגמה. הנתיב מוגדר על ידי הפרמטר queries_path. קובץ השאילתות הוא בפורמט JSONL ויש בו את אותם שדות כמו בקובץ הקורפוס. קובץ queries.jsonl לדוגמה:

    {"_id": "query1", "text": "Does Vertex support generative AI?"}
    {"_id": "query2", "text": "What can I do with Vertex GenAI offerings?"}
    {"_id": "query3", "text": "How do I train my models using Vertex?"}
    {"_id": "query4", "text": "What is a text embedding?"}
    {"_id": "query5", "text": "Can text embedding models be tuned on Vertex?"}
    {"_id": "query6", "text": "embeddings"}
    {"_id": "query7", "text": "embeddings for rag"}
    {"_id": "query8", "text": "custom model training"}
    {"_id": "query9", "text": "Google Cloud PaLM API"}
    
  • תוויות אימון: הנתיב מוגדר על ידי הפרמטר train_label_path. הנתיב train_label_path הוא ה-URI של Cloud Storage למיקום של נתוני התוויות לאימון, והוא מצוין כשיוצרים את משימת ההתאמה. התוויות צריכות להיות בקובץ TSV עם כותרת. קבוצת משנה של השאילתות ומאגר המידע צריכים להיכלל בקובץ תוויות האימון. הקובץ צריך לכלול את העמודות query-id, corpus-id ו-score. ‫query-id היא מחרוזת שתואמת למפתח _id מקובץ השאילתות, ו-corpus-id היא מחרוזת שתואמת ל-_id בקובץ הקורפוס. ‫Score הוא ערך מספרי שלם לא שלילי. אם זוג של שאילתה ומסמך לא קשורים, אפשר להשמיט אותו מקובץ תוויות האימון או לכלול אותו עם ציון אפס. כל ציון שגדול מאפס מצביע על כך שהמסמך קשור לשאילתה. מספרים גדולים יותר מצביעים על רמת רלוונטיות גבוהה יותר. אם הציון לא מצוין, ערך ברירת המחדל הוא 1. קובץ train_labels.tsv לדוגמה:

    query-id  corpus-id   score
    query1    doc1    1
    query2    doc2    1
    query3    doc3    2
    query3    doc5  1
    query4    doc4  1
    query4    doc5  1
    query5    doc5  2
    query6    doc4  1
    query6    doc5  1
    query7    doc4  1
    query8    doc3  1
    query9    doc2  1
    
  • תוויות לבדיקה: אופציונלי. תוויות הבדיקה הן באותו פורמט כמו תוויות האימון, והן מוגדרות באמצעות הפרמטר test_label_path. אם לא מספקים test_label_path, המערכת תפצל אוטומטית את תוויות הבדיקה מתוויות האימון.

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

הדרישות לגבי גודל מערך הנתונים

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

  • מספר השאילתות חייב להיות בין 9 ל-10,000.
  • מספר המסמכים בקורפוס חייב להיות בין 9 ל-500,000.
  • כל קובץ תוויות של מערך נתונים חייב לכלול לפחות 3 מזהי שאילתות, ובכל הפיצולים של מערך הנתונים צריכים להיות לפחות 9 מזהי שאילתות.
  • המספר הכולל של תוויות צריך להיות קטן מ-500,000.

הגדרת הפרויקט לצינורות של Gemini Enterprise Agent Platform

הכוונון מתבצע בפרויקט באמצעות פלטפורמת Gemini Enterprise Agent Platform Pipelines.

הגדרת הרשאות

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

חשבון השירות של Compute Engine שמוגדר כברירת מחדל
PROJECT_NUMBER-compute@developer.gserviceaccount.com

חשבון השירות הזה צריך:

  • Storage Object Viewer גישה לכל קובץ של מערך נתונים שיצרתם ב-Cloud Storage.
  • Storage Object User גישה לספריית הפלט של צינור העברת הנתונים ב-Cloud Storage, ‏ PIPELINE_OUTPUT_DIRECTORY.
  • גישה לAgent Platform User לפרויקט.

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

Gemini Enterprise Agent Platform Tuning Service Agent
service-PROJECT_NUMBER@gcp-sa-aiplatform-ft.iam.gserviceaccount.com

חשבון השירות הזה צריך:

  • Storage Object Viewer גישה לכל קובץ של מערך נתונים שיצרתם ב-Cloud Storage.
  • Storage Object User גישה לספריית הפלט של צינור העברת הנתונים ב-Cloud Storage, ‏ PIPELINE_OUTPUT_DIRECTORY.

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

שימוש במאיצים

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

  • NVIDIA_L4
  • NVIDIA_TESLA_A100
  • NVIDIA_TESLA_T4
  • NVIDIA_TESLA_V100
  • NVIDIA_TESLA_P100

כדי להפעיל משימת אופטימיזציה, צריך מכסת Restricted image training GPUs מספיקה לסוג המאיץ ולאזור שבחרתם, לדוגמה Restricted image training Nvidia V100 GPUs per region. כדי להגדיל את המכסה של הפרויקט, אפשר לעיין במאמר בנושא בקשה להגדלת מכסה.

לא כל המאיצים זמינים בכל האזורים. מידע נוסף זמין במאמר בנושא שימוש במאיצים ב-Gemini Enterprise Agent Platform.

יצירת משימת כוונון של מודל הטמעה

אפשר ליצור משימת כוונון של מודל הטמעה באמצעות מסוף Google Cloud , API ל-REST או ספריות לקוח.

REST

כדי ליצור משימת כוונון של מודל הטמעה, משתמשים בשיטה projects.locations.pipelineJobs.create.

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

  • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
  • PIPELINE_OUTPUT_DIRECTORY: הנתיב של פריטי הפלט של הצינור, שמתחיל ב-gs://‎.

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

POST https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/pipelineJobs

תוכן בקשת JSON:

{
  "displayName": "tune_text_embeddings_model_sample",
  "runtimeConfig": {
    "gcsOutputDirectory": "PIPELINE_OUTPUT_DIRECTORY",
    "parameterValues": {
      "corpus_path": "gs://cloud-samples-data/ai-platform/embedding/goog-10k-2024/r11/corpus.jsonl",
      "queries_path": "gs://cloud-samples-data/ai-platform/embedding/goog-10k-2024/r11/queries.jsonl",
      "train_label_path": "gs://cloud-samples-data/ai-platform/embedding/goog-10k-2024/r11/train.tsv",
      "test_label_path": "gs://cloud-samples-data/ai-platform/embedding/goog-10k-2024/r11/test.tsv",
      "base_model_version_id":"text-embedding-004",
      "task_type": "DEFAULT",
      "batch_size": "128",
      "train_steps": "1000",
      "output_dimensionality": "768",
      "learning_rate_multiplier": "1.0"
    }
  },
  "templateUri": "https://us-kfp.pkg.dev/ml-pipeline/llm-text-embedding/tune-text-embedding-model/v1.1.3"
}

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

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

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

כניסה למסוף Google Cloud

Python

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

import re

from google.cloud.aiplatform import initializer as aiplatform_init
from vertexai.language_models import TextEmbeddingModel


def tune_embedding_model(
    api_endpoint: str,
    base_model_name: str = "text-embedding-005",
    corpus_path: str = "gs://cloud-samples-data/ai-platform/embedding/goog-10k-2024/r11/corpus.jsonl",
    queries_path: str = "gs://cloud-samples-data/ai-platform/embedding/goog-10k-2024/r11/queries.jsonl",
    train_label_path: str = "gs://cloud-samples-data/ai-platform/embedding/goog-10k-2024/r11/train.tsv",
    test_label_path: str = "gs://cloud-samples-data/ai-platform/embedding/goog-10k-2024/r11/test.tsv",
):  # noqa: ANN201
    """Tune an embedding model using the specified parameters.
    Args:
        api_endpoint (str): The API endpoint for the Vertex AI service.
        base_model_name (str): The name of the base model to use for tuning.
        corpus_path (str): GCS URI of the JSONL file containing the corpus data.
        queries_path (str): GCS URI of the JSONL file containing the queries data.
        train_label_path (str): GCS URI of the TSV file containing the training labels.
        test_label_path (str): GCS URI of the TSV file containing the test labels.
    """
    match = re.search(r"^(\w+-\w+)", api_endpoint)
    location = match.group(1) if match else "us-central1"
    base_model = TextEmbeddingModel.from_pretrained(base_model_name)
    tuning_job = base_model.tune_model(
        task_type="DEFAULT",
        corpus_data=corpus_path,
        queries_data=queries_path,
        training_data=train_label_path,
        test_data=test_label_path,
        batch_size=128,  # The batch size to use for training.
        train_steps=1000,  # The number of training steps.
        tuned_model_location=location,
        output_dimensionality=768,  # The dimensionality of the output embeddings.
        learning_rate_multiplier=1.0,  # The multiplier for the learning rate.
    )
    return tuning_job

Java

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

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

import com.google.cloud.aiplatform.v1.CreatePipelineJobRequest;
import com.google.cloud.aiplatform.v1.LocationName;
import com.google.cloud.aiplatform.v1.PipelineJob;
import com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig;
import com.google.cloud.aiplatform.v1.PipelineServiceClient;
import com.google.cloud.aiplatform.v1.PipelineServiceSettings;
import com.google.protobuf.Value;
import java.io.IOException;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class EmbeddingModelTuningSample {
  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running this sample.
    String apiEndpoint = "us-central1-aiplatform.googleapis.com:443";
    String project = "PROJECT";
    String baseModelVersionId = "BASE_MODEL_VERSION_ID";
    String taskType = "DEFAULT";
    String pipelineJobDisplayName = "PIPELINE_JOB_DISPLAY_NAME";
    String outputDir = "OUTPUT_DIR";
    String queriesPath = "QUERIES_PATH";
    String corpusPath = "CORPUS_PATH";
    String trainLabelPath = "TRAIN_LABEL_PATH";
    String testLabelPath = "TEST_LABEL_PATH";
    double learningRateMultiplier = 1.0;
    int outputDimensionality = 768;
    int batchSize = 128;
    int trainSteps = 1000;

    createEmbeddingModelTuningPipelineJob(
        apiEndpoint,
        project,
        baseModelVersionId,
        taskType,
        pipelineJobDisplayName,
        outputDir,
        queriesPath,
        corpusPath,
        trainLabelPath,
        testLabelPath,
        learningRateMultiplier,
        outputDimensionality,
        batchSize,
        trainSteps);
  }

  public static PipelineJob createEmbeddingModelTuningPipelineJob(
      String apiEndpoint,
      String project,
      String baseModelVersionId,
      String taskType,
      String pipelineJobDisplayName,
      String outputDir,
      String queriesPath,
      String corpusPath,
      String trainLabelPath,
      String testLabelPath,
      double learningRateMultiplier,
      int outputDimensionality,
      int batchSize,
      int trainSteps)
      throws IOException {
    Matcher matcher = Pattern.compile("^(?<Location>\\w+-\\w+)").matcher(apiEndpoint);
    String location = matcher.matches() ? matcher.group("Location") : "us-central1";
    String templateUri =
        "https://us-kfp.pkg.dev/ml-pipeline/llm-text-embedding/tune-text-embedding-model/v1.1.4";
    PipelineServiceSettings settings =
        PipelineServiceSettings.newBuilder().setEndpoint(apiEndpoint).build();
    try (PipelineServiceClient client = PipelineServiceClient.create(settings)) {
      Map<String, Value> parameterValues =
          Map.of(
              "base_model_version_id", valueOf(baseModelVersionId),
              "task_type", valueOf(taskType),
              "queries_path", valueOf(queriesPath),
              "corpus_path", valueOf(corpusPath),
              "train_label_path", valueOf(trainLabelPath),
              "test_label_path", valueOf(testLabelPath),
              "learning_rate_multiplier", valueOf(learningRateMultiplier),
              "output_dimensionality", valueOf(outputDimensionality),
              "batch_size", valueOf(batchSize),
              "train_steps", valueOf(trainSteps));
      PipelineJob pipelineJob =
          PipelineJob.newBuilder()
              .setTemplateUri(templateUri)
              .setDisplayName(pipelineJobDisplayName)
              .setRuntimeConfig(
                  RuntimeConfig.newBuilder()
                      .setGcsOutputDirectory(outputDir)
                      .putAllParameterValues(parameterValues)
                      .build())
              .build();
      CreatePipelineJobRequest request =
          CreatePipelineJobRequest.newBuilder()
              .setParent(LocationName.of(project, location).toString())
              .setPipelineJob(pipelineJob)
              .build();
      return client.createPipelineJob(request);
    }
  }

  private static Value valueOf(String s) {
    return Value.newBuilder().setStringValue(s).build();
  }

  private static Value valueOf(int n) {
    return Value.newBuilder().setNumberValue(n).build();
  }

  private static Value valueOf(double n) {
    return Value.newBuilder().setNumberValue(n).build();
  }
}

Node.js

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

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

async function main(
  apiEndpoint,
  project,
  outputDir,
  pipelineJobDisplayName = 'embedding-customization-pipeline-sample',
  baseModelVersionId = 'text-embedding-005',
  taskType = 'DEFAULT',
  corpusPath = 'gs://cloud-samples-data/ai-platform/embedding/goog-10k-2024/r11/corpus.jsonl',
  queriesPath = 'gs://cloud-samples-data/ai-platform/embedding/goog-10k-2024/r11/queries.jsonl',
  trainLabelPath = 'gs://cloud-samples-data/ai-platform/embedding/goog-10k-2024/r11/train.tsv',
  testLabelPath = 'gs://cloud-samples-data/ai-platform/embedding/goog-10k-2024/r11/test.tsv',
  outputDimensionality = 768,
  learningRateMultiplier = 1.0,
  batchSize = 128,
  trainSteps = 1000
) {
  const aiplatform = require('@google-cloud/aiplatform');
  const {PipelineServiceClient} = aiplatform.v1;
  const {helpers} = aiplatform; // helps construct protobuf.Value objects.

  const client = new PipelineServiceClient({apiEndpoint});
  const match = apiEndpoint.match(/(?<L>\w+-\w+)/);
  const location = match ? match.groups.L : 'us-central1';
  const parent = `projects/${project}/locations/${location}`;
  const params = {
    base_model_version_id: baseModelVersionId,
    task_type: taskType,
    queries_path: queriesPath,
    corpus_path: corpusPath,
    train_label_path: trainLabelPath,
    test_label_path: testLabelPath,
    batch_size: batchSize,
    train_steps: trainSteps,
    output_dimensionality: outputDimensionality,
    learning_rate_multiplier: learningRateMultiplier,
  };
  const runtimeConfig = {
    gcsOutputDirectory: outputDir,
    parameterValues: Object.fromEntries(
      Object.entries(params).map(([k, v]) => [k, helpers.toValue(v)])
    ),
  };
  const pipelineJob = {
    templateUri:
      'https://us-kfp.pkg.dev/ml-pipeline/llm-text-embedding/tune-text-embedding-model/v1.1.4',
    displayName: pipelineJobDisplayName,
    runtimeConfig,
  };
  async function createTuneJob() {
    const [response] = await client.createPipelineJob({parent, pipelineJob});
    console.log(`job_name: ${response.name}`);
    console.log(`job_state: ${response.state}`);
  }

  await createTuneJob();
}

המסוף

כדי לכוונן מודל להטמעת טקסט באמצעות מסוף Google Cloud , אפשר להפעיל צינור עיבוד נתונים להתאמה אישית באמצעות השלבים הבאים:

  1. בקטע Agent Platform במסוף Google Cloud , עוברים לדף Gemini Enterprise Agent Platform Pipelines.

    מעבר ל-Gemini Enterprise Agent Platform Pipelines

  2. לוחצים על יצירת הרצה כדי לפתוח את החלונית יצירת הרצת צינור.
  3. לוחצים על בחירה מתוך צינורות קיימים ומזינים את הפרטים הבאים:
    1. בתפריט הנפתח select a resource (בחירת משאב), בוחרים באפשרות ml-pipeline.
    2. בתפריט הנפתח Repository (מאגר), בוחרים באפשרות llm-text-embedding.
    3. בתפריט הנפתח Pipeline or component (צינור או רכיב), בוחרים באפשרות tune-text-embedding-model.
    4. בתפריט הנפתח Version, בוחרים בגרסה עם התווית v1.1.3.
  4. מציינים שם הפעלה כדי לזהות באופן ייחודי את ההפעלה של צינור עיבוד הנתונים.
  5. בתפריט הנפתח Region, בוחרים את האזור שבו רוצים ליצור את ההרצה של צינור הנתונים. זה יהיה אותו אזור שבו נוצר המודל המכוונן.
  6. לוחצים על Continue. מופיעה החלונית Runtime configuration.
  7. בקטע Cloud storage location (מיקום ב-Cloud Storage), לוחצים על Browse (עיון) כדי לבחור את קטגוריית Cloud Storage לאחסון פריטי הפלט של צינור העיבוד, ואז לוחצים על Select (בחירה).
  8. בקטע Pipeline parameters (פרמטרים של צינור העיבוד), מציינים את הפרמטרים של צינור העיבוד להתאמה. שלושת הפרמטרים הנדרשים הם corpus_path,‏ queries_path ו-train_label_path, והפורמטים שלהם מפורטים במאמר הכנת מערך הנתונים של ההטמעות. מידע מפורט יותר על כל פרמטר מופיע בכרטיסייה REST בקטע הזה.
  9. לוחצים על שליחה כדי ליצור את ההרצה של צינור העיבוד.

תכונות נתמכות אחרות

התאמה אישית של הטמעת טקסט תומכת ב-VPC Service Controls, ואפשר להגדיר אותה להפעלה בענן וירטואלי פרטי (VPC) על ידי העברת הפרמטר network כשיוצרים את PipelineJob.

כדי להשתמש במפתחות הצפנה בניהול הלקוח (CMEK), מעבירים את המפתח לפרמטר הצינור parameterValues.encryption_spec_key_name, וגם לפרמטר encryptionSpec.kmsKeyName כשיוצרים את PipelineJob.

שימוש במודל שעבר התאמה

צפייה במודלים מכווננים במרשם המודלים

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

כדי לראות את המודלים המכווננים במסוף Google Cloud , עוברים לדף Gemini Enterprise Agent Platform Model Registry.

מעבר למרשם המודלים של Gemini Enterprise Agent Platform

פריסת המודל

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

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

המודל המותאם תומך בעד 3,072 טוקנים ויכול לחתוך קלטים ארוכים יותר.

קבלת מסקנות לגבי מודל שנפרס

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

דוגמאות לפקודות curl למודלים שעברו התאמה אישית textembedding-gecko@001

כדי לקבל מסקנות מגרסה שעברה כוונון של textembedding-gecko@001, משתמשים בפקודת ה-curl הבאה לדוגמה.

PROJECT_ID=PROJECT_ID
LOCATION=LOCATION
ENDPOINT_URI=https://${LOCATION}-aiplatform.googleapis.com
MODEL_ENDPOINT=TUNED_MODEL_ENDPOINT_ID

curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json"  \
    ${ENDPOINT_URI}/v1/projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/${MODEL_ENDPOINT}:predict \
    -d '{
  "instances": [
    {
      "content": "Dining in New York City"
    },
    {
      "content": "Best resorts on the east coast"
    }
  ]
}'

פקודות curl לדוגמה למודלים שאינם textembedding-gecko@001

גרסאות מותאמות של מודלים אחרים (לדוגמה, textembedding-gecko@003 ו-textembedding-gecko-multilingual@001) דורשות 2 קלטים נוספים: task_type ו-title. מידע נוסף על הפרמטרים האלה זמין במאמר בנושא פקודת curl.

PROJECT_ID=PROJECT_ID
LOCATION=LOCATION
ENDPOINT_URI=https://${LOCATION}-aiplatform.googleapis.com
MODEL_ENDPOINT=TUNED_MODEL_ENDPOINT_ID

curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json"  \
    ${ENDPOINT_URI}/v1/projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/${MODEL_ENDPOINT}:predict \
    -d '{
  "instances": [
    {
      "content": "Dining in New York City",
      "task_type": "DEFAULT",
      "title": ""
    },
    {
      "content": "There are many resorts to choose from on the East coast...",
      "task_type": "RETRIEVAL_DOCUMENT",
      "title": "East Coast Resorts"
    }
  ]
}'

פלט לדוגמה

הפלט של בקשת הסקה למודל המשופר שנפרס לא זהה לפורמט הפלט של בקשה ל-API של הטמעת טקסט.

{
 "predictions": [
   [ ... ],
   [ ... ],
   ...
 ],
 "deployedModelId": "...",
 "model": "projects/.../locations/.../models/...",
 "modelDisplayName": "tuned-text-embedding-model",
 "modelVersionId": "1"
}

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