שגרות הסקה בהתאמה אישית

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

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

ההבדלים העיקריים הם:

  • לא צריך לכתוב שרת מודל או Dockerfile. שרת המודל, שהוא שרת ה-HTTP שמארח את המודל, מסופק לכם.

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

יצירה ופריסה של מאגר תגים בהתאמה אישית

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

הגדרה

צריך להתקין בסביבה שלכם את Agent Platform SDK for Python ואת Docker.

כתיבת ממשק הסקה מותאם אישית Predictor

הטמעה של הממשק Predictor.

לדוגמה, אפשר לעיין בהטמעה של Sklearn Predictor.

כתיבת Handler בהתאמה אישית (אופציונלי)

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

דוגמה ל-Notebook שכולל גם Predictor וגם Handler

למרות שזה לא חובה, כדי לשפר את הארגון של הקוד ואת האפשרות לשימוש חוזר בו, מומלץ להטמיע את הלוגיקה של שרת האינטרנט ב-Handler ואת הלוגיקה של ה-ML ב-Predictor, כמו שמוצג ב-Handler שמוגדר כברירת מחדל.

יצירת מאגר תגים מותאם אישית

מכניסים לתיקייה את הקוד המותאם אישית ואת קובץ requirements.txt נוסף, אם צריך להתקין חבילות כלשהן בתמונות.

כדי ליצור קונטיינרים בהתאמה אישית, משתמשים ב-Agent Platform SDK for Python באופן הבא:

from google.cloud.aiplatform.prediction import LocalModel

# {import your predictor and handler}

local_model = LocalModel.build_cpr_model(
    {PATH_TO_THE_SOURCE_DIR},
    f"{REGION}-docker.pkg.dev/{PROJECT_ID}/{REPOSITORY}/{IMAGE}",
    predictor={PREDICTOR_CLASS},
    handler={HANDLER_CLASS},
    requirements_path={PATH_TO_REQUIREMENTS_TXT},
)

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

local_model.get_serving_container_spec()

הפעלת הקונטיינר באופן מקומי (אופציונלי)

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

with local_model.deploy_to_local_endpoint(
    artifact_uri={GCS_PATH_TO_MODEL_ARTIFACTS},
    credential_path={PATH_TO_CREDENTIALS},
) as local_endpoint:
    health_check_response = local_endpoint.run_health_check()
    predict_response = local_endpoint.predict(
        request_file={PATH_TO_INPUT_FILE},
        headers={ANY_NEEDED_HEADERS},
    )

מדפיסים את בדיקת התקינות ואת תשובת ההסקה.

print(health_check_response, health_check_response.content)
print(predict_response, predict_response.content)

מדפיסים את כל יומני המכולה.

local_endpoint.print_container_logs(show_all=True)

העלאה אל Gemini Enterprise Agent Platform Model Registry

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

מעבירים את התמונה אל Artifact Registry.

local_model.push_image()

לאחר מכן, מעלים למרשם המודלים.

from google.cloud import aiplatform

model = aiplatform.Model.upload(
    local_model=local_model,
    display_name={MODEL_DISPLAY_NAME},
    artifact_uri={GCS_PATH_TO_MODEL_ARTIFACTS},
)

אחרי שהמודל מועלה ל-Model Registry, אפשר להשתמש בו כדי לקבל מסקנות בקבוצות או לפרוס אותו לנקודת קצה של Agent Platform כדי לקבל מסקנות אונליין.

פריסה לנקודת קצה של Agent Platform

endpoint = model.deploy(machine_type="n1-standard-4")

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

דוגמאות ל-Notebook

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