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

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

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

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

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

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

איך פועל כוונון המודל?

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

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

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

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

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

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

  • מכינים את מערך הנתונים לכוונון המודל.
  • מעלים את קבוצת הנתונים לכוונון המודל לקטגוריה של Cloud Storage.
  • מגדירים את הפרויקט ל-Gemini Enterprise Agent Platform Pipelines.
  • יוצרים משימת כוונון מודל.
  • פורסים את המודל המכוונן בנקודת קצה של 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 Studio offers a Google Cloud console tool for rapidly prototyping and testing generative AI models. Learn how you can use Agent 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 Pipelines

הכוונון מתבצע בפרויקט שלכם באמצעות הפלטפורמה 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
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

כדי ליצור משימת כוונון של מודל הטמעה, משתמשים ב-method‏ 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

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

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

import os

from google.cloud import aiplatform

# TODO (Developer) set the following environment variables.
PROJECT_ID = os.getenv("PROJECT_ID")
LOCATION_ID = os.getenv("LOCATION_ID", "us-central1")
MODEL_NAME = os.getenv("MODEL_NAME", "text-embedding-004")
# A storage bucket: gs://your-bucket-name/embedding-tuning-output
OUTPUT_URI = os.getenv("OUTPUT_DIR")

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

ACCELERATOR_TYPE = "NVIDIA_L4"

# Official Google Cloud KFP pipeline template URI for text embedding model tuning
EMBEDDING_TUNING_PIPELINE_URI = "https://us-kfp.pkg.dev/ml-pipeline/llm-text-embedding/tune-text-embedding-model/v1.1.3"


def tune_embedding_model() -> aiplatform.PipelineJob:
    """Tune an embedding model using the specified parameters."""

    aiplatform.init(project=PROJECT_ID, location=LOCATION_ID)

    # Configure parameters expected by the embedding tuning pipeline template
    pipeline_parameters = {
        "base_model_version_id": MODEL_NAME,
        "corpus_path": CORPUS_PATH,
        "queries_path": QUERIES_PATH,
        "train_label_path": TRAIN_LABEL_PATH,
        "test_label_path": TEST_LABEL_PATH,
        "accelerator_type": ACCELERATOR_TYPE,
    }

    # Instantiate the Vertex AI Pipeline job
    pipeline_job = aiplatform.PipelineJob(
        display_name="tune-text-embedding-model-job",
        template_path=EMBEDDING_TUNING_PIPELINE_URI,
        pipeline_root=OUTPUT_URI,
        parameter_values=pipeline_parameters,
        project=PROJECT_ID,
        location=LOCATION_ID,
    )

    pipeline_job.submit()

    print(f"Pipeline submitted successfully: {pipeline_job.resource_name}")

    return pipeline_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. לוחצים על Create run כדי לפתוח את החלונית Create pipeline run.
  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, לוחצים על Browse כדי לבחור את הקטגוריה של Cloud Storage שבה יישמרו פריטי המידע שנוצרו בפלט של צינור עיבוד הנתונים, ואז לוחצים על Select.
  8. בקטע Pipeline parameters, מציינים את הפרמטרים של צינור עיבוד הנתונים לכוונון. שלושת הפרמטרים הנדרשים הם corpus_path,‏ queries_path ו-train_label_path, והפורמטים שלהם מתוארים במאמר הכנת קבוצת הנתונים של ההטמעות. מידע מפורט יותר על כל פרמטר זמין בכרטיסייה REST בקטע הזה.
  9. לוחצים על Submit כדי ליצור את הרצת צינור עיבוד הנתונים.

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

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

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

שימוש במודל המכוונן

הצגת מודלים מכווננים ב-Model Registry

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

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

מעבר אל Gemini Enterprise Agent Platform Model Registry

פריסת המודל

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

בניגוד למודלים בסיסיים, המשתמש מנהל את המודלים המכווננים להטמעת טקסט. זה כולל ניהול של משאבי הצגה, כמו סוג המכונה ומאיצים. כדי למנוע שגיאות של מחסור בזיכרון במהלך ההסקה, מומלץ לפרוס באמצעות סוג ה-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"
}

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