בדף הזה מוסבר איך ליצור חיזויים של למידת מכונה (ML) ממסד נתונים של Spanner. חיזויים של למידת מכונה פועלים עם מסדי נתונים בניב GoogleSQL ועם מסדי נתונים בניב PostgreSQL.
שילוב של Spanner Agent Platform מאפשר לכם ליצור תחזיות באמצעות קוד ה-SQL שלכם על ידי קריאה לפונקציה ML.PREDICT ל-GoogleSQL או לפונקציה spanner.ML_PREDICT_ROW ל-PostgreSQL. מידע נוסף על שילוב של Spanner Agent Platform זמין במאמר סקירה כללית על שילוב של Spanner Agent Platform.
לפני שמתחילים
כדי ליצור תחזיות ממופע Spanner, צריך להכין את מסד הנתונים ולבחור מודל.
הגדרת גישה לשילוב של Spanner Agent Platform עם נקודות קצה של Agent Platform
Spanner יוצר את סוכן השירות ומעניק את ההרשאות הנדרשות באופן אוטומטי כש-Spanner מריץ את הצהרת ה-DDL הראשונה של MODEL. אם מסד הנתונים של Spanner ונקודת הקצה של Gemini Enterprise Agent Platform נמצאים באותו פרויקט, לא נדרש שום הגדרה נוספת.
אם חשבון הסוכן של שירות 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 בפרויקט של פלטפורמת הסוכנים.
בחירת מודל
כשמשתמשים בפונקציה ML.PREDICT (ל-GoogleSQL) או בפונקציה spanner.ML_PREDICT_ROW (ל-PostgreSQL), צריך לציין את המיקום של מודל ה-ML. המודל שתבחרו יכול להיות אחד מהבאים:
מודל שפועל ב-Model Garden.
מודל של Agent Platform עם נקודת קצה פעילה שלסוכן השירות של Spanner שיש לו הרשאת IAM לגשת אליה.
מידע נוסף על שילוב Spanner Agent Platform זמין במאמר איך שילוב Spanner Agent Platform פועל?
יצירת חיזויים
השלבים ליצירת התחזיות משתנים בהתאם לסוג המודל שבחרתם.
שימוש במודל ב-Model Garden
כדי ליצור חיזוי באמצעות מודל מ-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 גנרטיבי.
משתמשים בפונקציית GoogleSQL ML.PREDICT עם המודל שנבחר מ-Model Garden כדי ליצור את התחזית.
SELECT * FROM ML.PREDICT(
MODEL `MODEL_NAME`,
`INPUT_RELATION`[, `PARAMETERS`])
מחליפים את מה שכתוב בשדות הבאים:
MODEL_NAME: השם שרוצים לתת למודלמידע נוסף על מודלים זמין במאמר הפניה ל-API של מודלים ל-AI גנרטיבי.
INPUT_RELATION: TABLE table_nameאו שאילתת משנה שהטבלה או שאילתת המשנה מספקות נתונים להרצת התחזית של למידת המכונה.
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.
שימוש בנקודת קצה של מודל ב-Agent Platform
כדי להשתמש במודל מאומן או במודל שהורדתם בשילוב עם Agent Platform של Spanner, אתם צריכים לפרוס את המודל ב-Agent Platform. מידע נוסף על פריסת מודל לנקודת קצה ב-Agent Platform זמין במאמר פריסת מודל לנקודת קצה.
GoogleSQL
כדי ליצור את התחזית, משתמשים בפונקציית ML.PREDICT GoogleSQL עם המודל בנקודת קצה של Agent Platform. לפני שמשתמשים במודל עם 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 עם המודל בנקודת קצה של Agent Platform כדי ליצור את התחזית.
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: האזור שבו משתמשים ב-Agent Platform
הרצת המודל
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" |
+--------------------+