יצירה, העלאה ושימוש בתבנית של פייפליין

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

לקוח הרישום של Kubeflow Pipelines SDK הוא ממשק לקוח חדש שבו אפשר להשתמש עם שרת רישום תואם, כמו Artifact Registry, כדי לבצע ניהול גרסאות של תבניות Kubeflow Pipelines ‏ (KFP). מידע נוסף זמין במאמר בנושא שימוש בתבנית בלקוח רישום של Kubeflow Pipelines SDK.

בדף הזה נסביר איך:

  • יצירת תבנית של צינור KFP
  • משתמשים בלקוח הרישום של Kubeflow Pipelines SDK כדי להעלות את התבנית למאגר תבניות של צינורות עיבוד נתונים
  • שימוש בתבנית בלקוח של Kubeflow Pipelines

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

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

  1. מתקינים את גרסה 2 ואילך של Kubeflow Pipelines SDK.

    pip install --upgrade "kfp>=2,<3"
    
  1. מתקינים את הגרסה 1.15.0 ואילך של Agent Platform SDK for Python.
    (אופציונלי) לפני ההתקנה, מריצים את הפקודה הבאה כדי לראות איזו גרסה של Agent Platform SDK for Python מותקנת:

      pip freeze | grep google-cloud-aiplatform
    
  2. (אופציונלי) מתקינים את גרסה 390.0.0 ואילך של Google Cloud CLI.

  3. מפעילים את Artifact Registry API.

הגדרת הרשאות

אם עדיין לא הגדרתם את פרויקט ה-CLI של gcloud עבור Gemini Enterprise Agent Platform Pipelines, אתם צריכים לפעול לפי ההוראות במאמר הגדרת פרויקט Google Cloud עבור Gemini Enterprise Agent Platform Pipelines.

בנוסף, צריך להקצות את ההרשאות המוגדרות מראש הבאות לניהול זהויות והרשאות גישה (IAM) כדי להשתמש ב-Artifact Registry כמאגר התבניות:

  • roles/artifactregistry.admin: הקצאת התפקיד הזה מאפשרת ליצור ולנהל מאגר.
  • roles/artifactregistry.repoAdmin או roles/artifactregistry.writer: הקצאת אחד מהתפקידים האלה מאפשרת לנהל תבניות במאגר.
  • roles/artifactregistry.reader: הקצאת התפקיד הזה להורדת תבניות ממאגר.
  • roles/artifactregistry.reader: צריך להקצות את התפקיד הזה לחשבון שירות שמשויך ל-Agent Platform Pipelines כדי ליצור הפעלה של צינור עיבוד נתונים מתבנית.

מידע נוסף על תפקידים מוגדרים מראש של ניהול זהויות והרשאות גישה (IAM) ב-Artifact Registry זמין במאמר תפקידים מוגדרים מראש ב-Artifact Registry.

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

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member=PRINCIPAL \
    --role=ROLE

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

  • PROJECT_ID: הפרויקט שבו רוצים ליצור את צינור העברת הנתונים.
  • PRINCIPAL: חשבון המשתמש שרוצים להוסיף לו הרשאות.
  • ROLE: התפקיד בניהול זהויות והרשאות גישה (IAM) שרוצים להקצות לחשבון המשתמש.

מידע נוסף על הנושאים הבאים מופיע במאמר תפקידים והרשאות במסמכי התיעוד של Artifact Registry:

יצירת מאגר ב-Artifact Registry

בשלב הבא, יוצרים מאגר ב-Artifact Registry לתבניות של צינורות העברת הנתונים.

המסוף

  1. פותחים את Agent Platform Pipelines במסוף Google Cloud .

    כניסה אל צינורות עיבוד נתונים של Agent Platform

  2. לוחצים על הכרטיסייה התבניות שלך.

  3. כדי לפתוח את החלונית Select repository (בחירת מאגר), לוחצים על Select repository (בחירת מאגר).

  4. לוחצים על יצירת מאגר.

  5. מציינים את quickstart-kfp-repo כשם המאגר.

  6. בקטע פורמט, בוחרים באפשרות Kubeflow Pipelines.

  7. בקטע סוג המיקום, בוחרים באפשרות אזור.

  8. ברשימה הנפתחת אזור, בוחרים באפשרות us-central1.

  9. לוחצים על יצירה.

Google Cloud CLI

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

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

  • LOCATION: המיקום או האזור שבו רוצים ליצור את המאגר, לדוגמה, us-central1

מריצים את הפקודה gcloud artifacts repositories create:

‫Linux,‏ macOS או Cloud Shell

gcloud artifacts repositories create quickstart-kfp-repo --location=LOCATION_ID --repository-format=KFP

‏Windows (PowerShell)

gcloud artifacts repositories create quickstart-kfp-repo --location=LOCATION_ID --repository-format=KFP

Windows‏ (cmd.exe)

gcloud artifacts repositories create quickstart-kfp-repo --location=LOCATION_ID --repository-format=KFP
 

יצירת תבנית

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

from kfp import dsl
from kfp import compiler

@dsl.component()
def hello_world(text: str) -> str:
    print(text)
    return text

@dsl.pipeline(name='hello-world', description='A simple intro pipeline')
def pipeline_hello_world(text: str = 'hi there'):
    """Pipeline that passes small pipeline parameter string to consumer op."""

    consume_task = hello_world(
        text=text)  # Passing pipeline parameter as argument to consumer op

compiler.Compiler().compile(
    pipeline_func=pipeline_hello_world,
    package_path='hello_world_pipeline.yaml')

כשמריצים את הדוגמה, ההצהרה compiler.Compiler().compile(...) מהדרת את צינור הנתונים hello-world לקובץ YAML מקומי בשם hello_world_pipeline.yaml.

העלאת התבנית

המסוף

  1. פותחים את Agent Platform Pipelines במסוף Google Cloud .

    כניסה אל צינורות עיבוד נתונים של Agent Platform

  2. לוחצים על העלאה כדי לפתוח את החלונית צינור או רכיב להעלאה.

  3. בתפריט הנפתח Repository, בוחרים את מאגר quickstart-kfp-repo.

  4. מציינים שם לתבנית של צינור הנתונים.

  5. בשדה File (קובץ), לוחצים על Choose (בחירה) כדי לבחור ולהעלות את קובץ ה-YAML של תבנית הצינור המהודרת ממערכת הקבצים המקומית.

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

    עוברים אל התבניות שלך

Kubeflow Pipelines SDK client

  1. כדי להגדיר את לקוח הרישום של Kubeflow Pipelines SDK, מריצים את הפקודות הבאות:

    from kfp.registry import RegistryClient
    
    client = RegistryClient(host=f"https://us-central1-kfp.pkg.dev/PROJECT_ID/quickstart-kfp-repo")
    
  2. מעלים את קובץ ה-YAML שעבר קומפילציה למאגר ב-Artifact Registry.

    templateName, versionName = client.upload_pipeline(
      file_name="hello_world_pipeline.yaml",
      tags=["v1", "latest"],
      extra_headers={"description":"This is an example pipeline template."})
    
  3. כדי לוודא שהתבנית הועלתה:

    1. פותחים את Agent Platform Pipelines במסוף Google Cloud .

      כניסה אל צינורות עיבוד נתונים של Agent Platform

    2. לוחצים על הכרטיסייה התבניות שלך.

    3. לוחצים על בחירת מאגר.

    4. מהרשימה, בוחרים את מאגר quickstart-kfp-repo ולוחצים על בחירה.

    5. ברשימה אמורה להופיע חבילת התבנית שהועלתה hello-world.

    6. כדי לראות את רשימת הגרסאות של תבנית הצינור, לוחצים על התבנית hello-world.

    7. כדי לראות את טופולוגיית צינור הנתונים, לוחצים על הגרסה.

שימוש בתבנית ב-Agent Platform

אחרי שמעלים את תבנית צינור עיבוד הנתונים למאגר ב-Artifact Registry, היא מוכנה לשימוש בצינורות עיבוד נתונים של Agent Platform.

יצירת קטגוריית אחסון זמנית לתבנית

כדי להשתמש בתבנית של צינור, צריך ליצור מאגר (bucket) ב-Cloud Storage כדי להכין את ההרצות של צינורות הנתונים.

כדי ליצור את הקטגוריה, פועלים לפי ההוראות במאמר הגדרת קטגוריה של Cloud Storage לארטיפקטים של צינורות העברת נתונים ואז מריצים את הפקודה הבאה:

STAGING_BUCKET="gs://BUCKET_NAME"

מחליפים את BUCKET_NAME בשם הקטגוריה שיצרתם.

יצירת הרצת פייפליין מהתבנית

אתם יכולים להשתמש ב-SDK של Agent Platform ל-Python או במסוף Google Cloud כדי ליצור הפעלה של צינור עיבוד נתונים מהתבנית שלכם ב-Artifact Registry.

המסוף

  1. פותחים את Agent Platform Pipelines במסוף Google Cloud .

    כניסה אל צינורות עיבוד נתונים של Agent Platform

  2. לוחצים על הכרטיסייה התבניות שלך.

  3. כדי לפתוח את החלונית Select repository (בחירת מאגר), לוחצים על Select repository (בחירת מאגר).

  4. בוחרים את מאגר quickstart-kfp-repo ולוחצים על בחירה.

  5. לוחצים על החבילה hello-world.

  6. לצד הגרסה 4f245e8f9605, לוחצים על יצירת הפעלה.

  7. לוחצים על הגדרת זמן ריצה.

  8. מזינים את הערכים הבאים בקטע מיקום האחסון בענן:

    gs://BUCKET_NAME
    

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

  9. לוחצים על שליחה.

Agent Platform SDK ל-Python

אפשר להשתמש בדוגמה הבאה כדי ליצור הרצת צינור מהתבנית:

from google.cloud import aiplatform

# Initialize the aiplatform package
aiplatform.init(
    project="PROJECT_ID",
    location='us-central1',
    staging_bucket=STAGING_BUCKET)

# Create a pipeline job using a version ID.
job = aiplatform.PipelineJob(
    display_name="hello-world-latest",
    template_path="https://us-central1-kfp.pkg.dev/PROJECT_ID/quickstart-kfp-repo/hello-world@SHA256_TAG" + \
        versionName)

# Alternatively, create a pipeline job using a tag.
job = aiplatform.PipelineJob(
    display_name="hello-world-latest",
    template_path="https://us-central1-kfp.pkg.dev/PROJECT_ID/quickstart-kfp-repo/hello-world/TAG")

job.submit()

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

  • PROJECT_ID: Google Cloud הפרויקט שבו צינור העברת הנתונים הזה פועל.

  • SHA256_TAG: ערך הגיבוב sha256 של גרסת התבנית.

  • TAG: תג הגרסה של התבנית.

הצגת הפעלות של צינורות עיבוד נתונים שנוצרו

אתם יכולים לראות את ההרצות שנוצרו על ידי גרסה ספציפית של צינור ב-Agent Platform SDK for Python.

המסוף

  1. פותחים את Agent Platform Pipelines במסוף Google Cloud .

    כניסה אל צינורות עיבוד נתונים של Agent Platform

  2. לוחצים על הכרטיסייה התבניות שלך.

  3. לוחצים על בחירת מאגר.

  4. מהרשימה, בוחרים את מאגר quickstart-kfp-repo ולוחצים על בחירה.

  5. כדי לראות את רשימת הגרסאות של תבנית הצינור hello-world, לוחצים על התבנית hello world.

  6. לוחצים על הגרסה הרצויה שרוצים לראות את ההרצות של צינורות הנתונים שלה.

  7. כדי לראות את ההרצות של צינורות העיבוד לגרסה שנבחרה, לוחצים על View Runs (הצגת הרצות) ואז על הכרטיסייה Runs (הרצות).

Agent Platform SDK ל-Python

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

  from google.cloud import aiplatform

  # To filter all runs created from a specific version
  filter = 'template_uri:"https://us-central1-kfp.pkg.dev/PROJECT_ID/quickstart-kfp-repo/hello-world/*" AND ' + \
           'template_metadata.version="%s"' % versionName
  aiplatform.PipelineJob.list(filter=filter)

  # To filter all runs created from a specific version tag
  filter = 'template_uri="https://us-central1-kfp.pkg.dev/PROJECT_ID/quickstart-kfp-repo/hello-world/latest"'
  aiplatform.PipelineJob.list(filter=filter)

  # To filter all runs created from a package
  filter = 'template_uri:"https://us-central1-kfp.pkg.dev/PROJECT_ID/quickstart-kfp-repo/hello-world/*"'
  aiplatform.PipelineJob.list(filter=filter)

  # To filter all runs created from a repo
  filter = 'template_uri:"https://us-central1-kfp.pkg.dev/PROJECT_ID/quickstart-kfp-repo/*"'
  aiplatform.PipelineJob.list(filter=filter)

שימוש בתבנית בלקוח של רישום ב-Kubeflow Pipelines SDK

אתם יכולים להשתמש בלקוח רישום של Kubeflow Pipelines SDK יחד עם Artifact Registry כדי להוריד את תבנית הצינור ולהשתמש בה.

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

    templatePackages = client.list_packages()
    templatePackage = client.get_package(package_name = "hello-world")
    
    versions = client.list_versions(package_name="hello-world")
    version = client.get_version(package_name="hello-world", version=versionName)
    
    tags = client.list_tags(package_name = "hello-world")
    tag = client.get_tag(package_name = "hello-world", tag="latest")
    

    הרשימה המלאה של השיטות והמסמכים הזמינים מופיעה protoבקובצי המאגר של Artifact Registry ב-GitHub.

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

    # Sample 1
    filename = client.download_pipeline(
      package_name = "hello-world",
      version = versionName)
    # Sample 2
    filename = client.download_pipeline(
      package_name = "hello-world",
      tag = "v1")
    # Sample 3
    filename = client.download_pipeline(
      package_name = "hello-world",
      tag = "v1",
      file_name = "hello-world-template.yaml")
    

שימוש ב-Artifact Registry API בארכיטקטורת REST

בקטעים הבאים מוסבר איך משתמשים ב-Artifact Registry API בארכיטקטורת REST כדי לנהל את תבניות הפייפליין במאגר Artifact Registry.

העלאה של תבנית פייפליין באמצעות API בארכיטקטורת REST של Artifact Registry

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

  • PROJECT_ID הוא Google Cloud הפרויקט שבו צינור הנתונים הזה פועל.
  • REPO_ID הוא המזהה של מאגר Artifact Registry.

דוגמה לבקשת curl

curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -F tags=v1,latest \
    -F content=@pipeline_spec.yaml \
    https://us-central1-kfp.pkg.dev/PROJECT_ID/REPO_ID

יצירת בקשת ההעלאה

הבקשה היא בקשת HTTP או HTTPS שמורכבת מחלקים מרובים. היא חייבת לכלול את אסימון האימות בכותרת הבקשה. מידע נוסף זמין במאמר בנושא gcloud auth print-access-token.

המטען הייעודי (payload) של הבקשה הוא התוכן של הקובץ pipeline_spec.yaml (או חבילת ‎ .zip). המגבלה המומלצת היא 10MiB‎.

שם החבילה נלקח מהערך pipeline_spec.pipeline_info.name בקובץ pipeline_spec.yaml. שם החבילה מזהה באופן ייחודי את החבילה והוא לא משתנה בין הגרסאות. אורך המחרוזת יכול להיות בין 4 ל-128 תווים והיא צריכה להתאים לביטוי הרגולרי הבא: ^[a-z0-9][a-z0-9-]{3,127}$.

החבילה tags היא רשימה של עד שמונה תגים שמופרדים בפסיקים. כל תג חייב להתאים לביטוי הרגולרי הבא: ^[a-zA-Z0-9\-._~:@+]{1,128}$.

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

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

העלאת תשובה

אם בקשת ההעלאה מצליחה, מוחזר סטטוס HTTP OK. גוף התגובה הוא:

{packageName}/{versionName=sha256:abcdef123456...}

versionName הוא תקציר sha256 של pipeline_spec.yaml בפורמט של מחרוזת הקסדצימלית.

הורדת תבנית של פייפליין באמצעות Artifact Registry API בארכיטקטורת REST

כדי להוריד תבנית של צינור, יוצרים בקשת HTTP באמצעות ערכי הפרמטרים שמתוארים בקטע הזה, כאשר:

  • PROJECT_ID הוא Google Cloud הפרויקט שבו צינור הנתונים הזה פועל.
  • REPO_ID הוא המזהה של מאגר Artifact Registry.
  • PACKAGE_ID הוא מזהה החבילה של התבנית שהעליתם.
  • TAG הוא תג הגרסה.
  • VERSION היא גרסת התבנית בפורמט sha256:abcdef123456....

כדי להוריד קובץ Artifact Registry רגיל, צריך ליצור את קישור ההורדה באופן הבא:

url = https://us-central1-kfp.pkg.dev/PROJECT_ID/REPO_ID/PACKAGE_ID/VERSION
url = https://us-central1-kfp.pkg.dev/PROJECT_ID/REPO_ID/PACKAGE_ID/TAG

דוגמאות לבקשות curl

curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    https://us-central1-kfp.pkg.dev/PROJECT_ID/REPO_ID/PACKAGE_ID/VERSION

אפשר להחליף את VERSION ב-TAG ולהוריד את אותה תבנית, כמו בדוגמה הבאה:

curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    https://us-central1-kfp.pkg.dev/PROJECT_ID/REPO_ID/PACKAGE_ID/TAG

הורדת התשובה

אם בקשת ההורדה מצליחה, מוחזר סטטוס HTTP OK. גוף התגובה הוא התוכן של הקובץ pipeline_spec.yaml.