בדף הזה מוסבר איך ליצור חיזויים של למידת מכונה (ML) ממסד נתונים של Spanner. תחזיות של למידת מכונה פועלות עם מסדי נתונים בניב GoogleSQL ועם מסדי נתונים בניב PostgreSQL.
השילוב של Spanner עם Vertex AI מאפשר לכם ליצור תחזיות באמצעות קוד ה-SQL שלכם על ידי קריאה לפונקציה ML.PREDICT ב-GoogleSQL או לפונקציה spanner.ML_PREDICT_ROW ב-PostgreSQL. מידע נוסף על שילוב של Spanner עם Vertex AI זמין במאמר סקירה כללית על שילוב של Spanner עם Vertex AI.
לפני שמתחילים
כדי ליצור תחזיות ממופע Spanner, צריך להכין את מסד הנתונים ולבחור מודל.
הגדרת גישה של שילוב Spanner Vertex AI לנקודות קצה של Vertex AI
מערכת Spanner יוצרת את סוכן השירות ומעניקה את ההרשאות הנדרשות באופן אוטומטי כשמערכת Spanner מריצה את הצהרת ה-DDL הראשונה של MODEL. אם מסד הנתונים של Spanner ונקודת הקצה של Vertex AI נמצאים באותו פרויקט, לא נדרשת הגדרה נוספת.
אם חשבון סוכן השירות של Spanner לא קיים בפרויקט Spanner שלכם, צרו אותו על ידי הרצת הפקודה הבאה:
gcloud beta services identity create --service=spanner.googleapis.com --project={PROJECT}`
כדי להקצות את התפקיד Spanner API Service Agent לחשבון סוכן השירות של Spanner service-PROJECT_NUMBER@gcp-sa-spanner.iam.gserviceaccount.com בפרויקט Vertex AI, פועלים לפי השלבים שמתוארים במאמר בנושא הקצאת תפקיד יחיד.
בחירת דגם
כשמשתמשים בפונקציה ML.PREDICT (ל-GoogleSQL) או בפונקציה spanner.ML_PREDICT_ROW (ל-PostgreSQL), צריך לציין את המיקום של מודל ה-ML. המודל שתבחרו יכול להיות אחד מהבאים:
מודל שפועל ב-Vertex AI Model Garden.
מודל Vertex AI עם נקודת קצה פעילה שלסוכן השירות של Spanner שיש לו הרשאת IAM לגשת אליו.
מידע נוסף על שילוב של Spanner עם Vertex AI זמין במאמר איך פועל השילוב של Spanner עם Vertex AI?
יצירת חיזויים
השלבים ליצירת התחזיות משתנים בהתאם לסוג המודל שבחרתם.
שימוש במודל ב-Vertex AI Model Garden
כדי ליצור חיזוי באמצעות מודל מ-Vertex AI Model Garden, בוחרים מודל מ-Model Garden.
GoogleSQL
לפני שמשתמשים במודל עם ML.PREDICT(), צריך לרשום את המודל באמצעות ההצהרה CREATE MODEL.
CREATE MODEL 'MODEL_NAME'
INPUT (INPUT_COLUMN_NAME INPUT_COLUMN_TYPE)
OUTPUT (OUTPUT_COLUMN_NAME OUTPUT_COLUMN_TYPE)
REMOTE
OPTIONS (
endpoint = '//aiplatform.googleapis.com/projects/PROJECT_ID/locations/LOCATION_ID/publishers/google/models/model_id'
);
מחליפים את מה שכתוב בשדות הבאים:
MODEL_NAME: השם שרוצים לתת למודל
INPUT_COLUMN_NAME: השם של עמודת הקלט. לדוגמה, אם משתמשים במודלgemini-pro, שם עמודת הקלט הואprompt.
INPUT_COLUMN_TYPE: סוג הנתונים שלINPUT_COLUMN_NAME
OUTPUT_COLUMN_NAME: שם עמודת הפלט. לדוגמה, אם משתמשים במודלgemini-pro, שם עמודת הפלט הואcontent.
OUTPUT_COLUMN_TYPE: סוג הנתונים שלOUTPUT_COLUMN_NAME
PROJECT_ID: מזהה הפרויקט ב- Google Cloud
REGION_ID: המזהה של האזור שבו המודל נמצא, לדוגמהus-central1Google Cloud
MODEL_ID: המזהה של מודל ה-ML שרוצים להשתמש בו, לדוגמה:gemini-proמידע נוסף על מודלים זמין במאמר הפניה ל-API של מודלים ל-AI גנרטיבי.
משתמשים בפונקציית ML.PREDICT GoogleSQL עם המודל שנבחר מ-Model Garden כדי ליצור את התחזית.
SELECT * FROM ML.PREDICT(
MODEL `MODEL_NAME`,
`INPUT_RELATION`[, `PARAMETERS`])
מחליפים את מה שכתוב בשדות הבאים:
MODEL_NAME: השם שרוצים לתת למודלמידע נוסף על מודלים זמין במאמר הפניה ל-API של מודלים ל-AI גנרטיבי.
INPUT_RELATION: TABLE table_nameאו שאילתת משנה שהטבלה או שאילתת המשנה מספקות נתונים להרצת התחזית של ה-ML.
PARAMETERS: ערךSTRUCTשמכיל פרמטרים שנתמכים על ידיmodel_id.
אפשר גם להשתמש ב-SAFE.ML.PREDICT כדי להחזיר null במקום שגיאה בתחזיות. האפשרות הזו שימושית במקרים שבהם מריצים שאילתות גדולות, ונסבלות תחזיות שנכשלו.
PostgreSQL
משתמשים בפונקציית ML_PREDICT_ROW PostgreSQL עם המודל שנבחר מ-Model Garden כדי ליצור את התחזית.
SELECT spanner.ml_predict_row(
'projects/PROJECT_ID/locations/REGION_ID/publishers/google/models/MODEL_ID'::text,
'{
"instances": [ INSTANCES ],
"parameters": { PARAMETERS }
}'::jsonb);
מחליפים את מה שכתוב בשדות הבאים:
PROJECT_ID: מזהה הפרויקט ב- Google Cloud
REGION_ID: המזהה של האזור שבו המודל נמצא, לדוגמהus-central1Google Cloud
MODEL_ID: המזהה של מודל ה-ML שרוצים להשתמש בו, לדוגמה:gemini-proמידע נוסף על מודלים זמין במאמר הפניה ל-API של מודלים ל-AI גנרטיבי.
INSTANCES: הקלט לקריאת החיזוי, בפורמט JSON
PARAMETERS: פרמטרים אופציונליים לקריאה לחיזוי, בפורמט JSON
השאילתה הזו יוצרת תגובת JSON. מידע נוסף על הודעות התגובה של JSON של המודל זמין במאמר PredictResponse.
שימוש בנקודת קצה של מודל Vertex AI
כדי להשתמש במודל מאומן או במודל שהורדתם עם האינטגרציה של Spanner Vertex AI, אתם צריכים לפרוס את המודל ב-Vertex AI. מידע נוסף על פריסת מודל לנקודת קצה ב-Vertex AI זמין במאמר פריסת מודל לנקודת קצה.
GoogleSQL
משתמשים בפונקציית ML.PREDICT GoogleSQL עם המודל בנקודת קצה של Vertex AI כדי ליצור את החיזוי. לפני שמשתמשים במודל עם ML.PREDICT(), צריך לרשום את המודל באמצעות ההצהרה CREATE MODEL. לכל מודל שפורס יש סכימה ייחודית משלו. הסכימה הבאה היא דוגמה מתוך סקירה כללית על סיווג ורגרסיה
CREATE MODEL MyClassificationModel
INPUT (
length FLOAT64,
material STRING(MAX),
tag_array ARRAY<STRING(MAX)>
)
OUTPUT (
scores ARRAY<FLOAT64>,
classes ARRAY<STRING(MAX)>
)
REMOTE
OPTIONS (
endpoint = '//aiplatform.googleapis.com/projects/PROJECT/locations/LOCATION/endpoints/ENDPOINT_ID'
)
מחליפים את מה שכתוב בשדות הבאים:
PROJECT_ID: מזהה הפרויקט ב- Google Cloud
LOCATION: המזהה של האזור שבו המודל נמצא, לדוגמהus-central1Google Cloud
ENDPOINT_ID: המזהה של מודל ה-ML שרוצים להשתמש בו, לדוגמה:gemini-proמידע נוסף על מודלים זמין במאמר הפניה ל-API של מודלים ל-AI גנרטיבי.
משתמשים בפונקציית ML.PREDICT GoogleSQL עם המודל שנבחר מ-Model Garden כדי ליצור את התחזית.
SELECT * FROM ML.PREDICT(
`MODEL_ID`,
`INPUT_RELATION`[, `PARAMETERS`])
מחליפים את מה שכתוב בשדות הבאים:
MODEL_ID: המזהה של מודל ה-ML שרוצים להשתמש בו.
INPUT_RELATION: הטבלה או שאילתת המשנה שרוצים להריץ עליהן את התחזית של ה-ML.
PARAMETERS: ערךSTRUCTשמכיל פרמטרים שנתמכים על ידיmodel_name.
השאילתה הזו יוצרת קשר שמכיל את כל עמודות הפלט של המודל ואת כל העמודות של קשר הקלט.
PostgreSQL
משתמשים בפונקציה ML.PREDICT PostgreSQL עם המודל בנקודת קצה של Vertex AI כדי ליצור את החיזוי.
SELECT spanner.ml_predict_row(
'projects/PROJECT_ID/locations/REGION_ID/endpoints/ENDPOINT_ID'::text,
'{
"instances": [ INSTANCES ],
"parameters": { PARAMETERS }
}'::jsonb);
```
Replace the following:
PROJECT_ID: המזהה של Google Cloud הפרויקט שבו נמצא המודל
REGION_ID: המזהה של Google Cloud האזור שבו המודל נמצא, לדוגמהus-central1
ENDPOINT_ID: המזהה של נקודת הקצה של המודל
INSTANCES: הקלט לקריאה לחיזוי, בפורמט JSON
PARAMETERS: פרמטרים אופציונליים לקריאה לחיזוי, בפורמט JSON
השאילתה הזו יוצרת תגובת JSON. מידע נוסף על הודעות התגובה של JSON של המודל זמין במאמר PredictResponse.
דוגמאות לשימוש בפונקציות ML כדי ליצור תחזיות
בדוגמה הבאה נעשה שימוש במודל gemini-pro מ-Model Garden כדי ליצור טקסט על סמך הנחיה קצרה שמועברת כארגומנט. המודל הזה זמין כחלק מ-Gemini ב-Spanner.
GoogleSQL
רישום של מודל gemini-pro
CREATE MODEL GeminiPro
INPUT (prompt STRING(MAX))
OUTPUT (content STRING(MAX))
REMOTE
OPTIONS (
endpoint = '//aiplatform.googleapis.com/projects/PROJECT/locations/LOCATION/publishers/google/models/gemini-pro',
default_batch_size = 1
);
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT: מזהה הפרויקט -
LOCATION: האזור שבו אתם משתמשים ב-Vertex AI
הרצת המודל
SELECT content
FROM ML.PREDICT(
MODEL GeminiPro,
(SELECT "Is 7 a prime number?" AS prompt),
STRUCT(256 AS maxOutputTokens, 0.2 AS temperature, 40 as topK, 0.95 AS topP)
);
הפלט המצופה
הפלט הצפוי הוא:
+--------------------+
| content |
+--------------------+
| "Yes" |
+--------------------+
PostgreSQL
הרצת המודל
select spanner.ml_predict_row(
'{
"endpoint": "projects/PROJECT_ID/locations/us-central1/publishers/google/models/gemini-pro",
"default_batch_size": 1
}'::jsonb,
'{
"instances":[{"prompt": "Is 7 a prime number?"}],
"parameters":{"maxOutputTokens":256, "topK": 40, "topP":0.96, "temperature":0.2}
}'
);
הפלט המצופה
הפלט הצפוי הוא:
+--------------------+
| content |
+--------------------+
| "Yes" |
+--------------------+