AlloyDB AI הוא חבילת תכונות שכלולה ב-AlloyDB Omni ומאפשרת לכם ליצור אפליקציות AI גנרטיביות לארגונים. למידע נוסף על פונקציונליות ה-AI/ML של AlloyDB, אפשר לעיין במאמר בנושא יצירת אפליקציות AI גנרטיביות.
AlloyDB Omni עם AlloyDB AI מאפשר לכם לשלוח שאילתות למודלים מרוחקים של למידת מכונה כדי לעבוד עם תחזיות אונליין והטמעות של טקסט שנוצרו ממודלים של למידת מכונה.AlloyDB Omni עם AlloyDB AI יכול גם לעבד הטמעות וקטוריות מתוכן אחר, כמו תמונה. לדוגמה, אם אתם משתמשים בממשק google_ml.predict_row ומבצעים את התרגום בעצמכם בשאילתה.
הגדרת מכונת AlloyDB Omni לביצוע שאילתות במודלים מרוחקים
אפשר לשלוח שאילתות למודלים מרוחקים באמצעות ניהול נקודות קצה של מודלים על ידי הפעלת googleMLExtension במניפסט של אשכול מסד הנתונים.
אם רוצים לשלוח שאילתות למודלים של Vertex AI, צריך להגדיר חשבון שירות של AlloyDB עם Vertex AI, ליצור סוד של Kubernetes באמצעות המפתח ולהגדיר את הסוד של Kubernetes במניפסט של אשכול מסד הנתונים.
הוספת ההרשאות של Vertex AI לחשבון השירות של AlloyDB
כדי להגדיר את AlloyDB Omni לשליחת שאילתות למודלים מרוחקים של Vertex AI, מבצעים את השלבים הבאים:
יצירה של חשבון שירות עם Google Cloud.
יוצרים מפתח של חשבון שירות, שומרים אותו בפורמט JSON בקובץ
private-key.jsonומורידים אותו.שומרים את המפתח במיקום קבוע במערכת הקבצים. הוא נמצא במיקום הזה למשך כל חיי השרת של AlloyDB Omni.
חשוב לשים לב למיקום שלו במערכת הקבצים, כי תצטרכו אותו בשלבים הבאים.
מוסיפים הרשאות ניהול זהויות והרשאות גישה (IAM) ב-Vertex AI לפרויקט ולחשבון השירות המתאימים.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_ID" \ --role="roles/aiplatform.user"
מחליפים את מה שכתוב בשדות הבאים:
PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
SERVICE_ACCOUNT_ID: המזהה של חשבון השירות שיצרתם בשלב הקודם. כולל הסיומת המלאה@PROJECT_ID.iam.gserviceaccount.com, לדוגמהmy-service@my-project.iam.gserviceaccount.com.
יצירת סוד ב-Kubernetes באמצעות המפתח של חשבון השירות
כדי ליצור סוד של Kubernetes על סמך מפתח חשבון השירות שהורדתם בשלבים הקודמים, מריצים את הפקודה הבאה:
kubectl create secret generic SECRET_NAME \ --from-file=PATH_TO_SERVICE_ACCOUNT_KEY/private-key.json \ -n NAMESPACE
מחליפים את מה שכתוב בשדות הבאים:
SECRET_NAME: השם של הסוד שמשמש כשיוצרים מניפסטDBClusterכדי לאפשר ל-AlloyDB Omni לגשת לתכונות של AlloyDB AI. לדוגמה,vertex-ai-key-alloydb.
PATH_TO_SERVICE_ACCOUNT_KEY: הנתיב למיקום שבו הורדתם את המפתח של חשבון השירותprivate-key.json.
NAMESPACE: מרחב השמות של אשכול מסד הנתונים.
התקנת האופרטור של AlloyDB Omni
מתקינים את האופרטור AlloyDB Omni באמצעות השלבים שמפורטים במאמר התקנת האופרטור AlloyDB Omni.
יצירת אשכול מסדי נתונים באמצעות AlloyDB AI
יצירת אשכול מסדי נתונים באמצעות AlloyDB AI.
כשמגדירים את
enabledל-trueבשדהgoogleMLExtension, אפשר לשלוח שאילתות למודלים מרוחקים. אם רוצים לשלוח שאילתות למודלים של Vertex AI, צריך להגדיר אתvertexAIKeyRefלסוד של Kubernetes.apiVersion: v1 kind: Secret metadata: name: db-pw-DB_CLUSTER_NAME type: Opaque data: DB_CLUSTER_NAME: "ENCODED_PASSWORD" --- apiVersion: alloydbomni.dbadmin.goog/v1 kind: DBCluster metadata: name: DB_CLUSTER_NAME spec: databaseVersion: "16.8.0" primarySpec: adminUser: passwordRef: name: db-pw-DB_CLUSTER_NAME features: googleMLExtension: enabled: true config: vertexAIKeyRef: VERTEX_AI_SECRET_NAME vertexAIRegion: VERTEX_AI_REGION resources: cpu: CPU_COUNT memory: MEMORY_SIZE disks: - name: DataDisk size: DISK_SIZE storageClass: standardמחליפים את מה שכתוב בשדות הבאים:
DB_CLUSTER_NAME: השם של אשכול מסד הנתונים הזה, למשלmy-db-cluster.
VERTEX_AI_SECRET_NAME(אופציונלי): הסוד של Vertex AI שיצרתם בשלבים הקודמים. חובה להגדיר את האפשרות הזו אם רוצים להפעיל מודלים של Vertex AI.
VERTEX_AI_REGION(אופציונלי): נקודת הקצה האזורית של Vertex AI שאליה רוצים לשלוח את הבקשה, לדוגמה:us-west4. ערך ברירת המחדל הואus-central1.
ENCODED_PASSWORD: סיסמת ההתחברות למסד הנתונים עבור תפקיד המשתמש שמוגדר כברירת מחדלpostgres, בקידוד base64. לדוגמה,Q2hhbmdlTWUxMjM=עבורChangeMe123.
CPU_COUNT: מספר המעבדים הזמינים לכל מופע של מסד נתונים באשכול מסדי הנתונים הזה.
MEMORY_SIZE: כמות הזיכרון לכל מופע של מסד נתונים באשכול מסדי הנתונים הזה. מומלץ להגדיר את הערך הזה ל-8 גיגה-בייט לכל מעבד. לדוגמה, אם הגדרתם אתcpuל-2קודם במניפסט הזה, מומלץ להגדיר אתmemoryל-16Gi.
DISK_SIZE: גודל הדיסק לכל מופע של מסד נתונים, לדוגמה10Gi.
מחילים את המניפסט.
kubectl apply -f DB_CLUSTER_YAMLמחליפים את מה שכתוב בשדות הבאים:
-
DB_CLUSTER_YAML: השם של קובץ המניפסט של אשכול מסד הנתונים הזה, לדוגמהalloydb-omni-db-cluster.yaml.
-
חיבור באמצעות psql שהותקן מראש
אפשר ליצור חיבור בדיקה באמצעות לקוח psql שכבר מותקן ב-pod שבו פועל מסד הנתונים.
כדי לעשות זאת, מריצים את הפקודות הבאות:
export DBPOD=`kubectl get pod --selector=alloydbomni.internal.dbadmin.goog/dbcluster=DB_CLUSTER_NAME,alloydbomni.internal.dbadmin.goog/task-type=database -o jsonpath='{.items[0].metadata.name}'`kubectl exec -ti $DBPOD -c database -- psql -h localhost -U postgres
מחליפים את DB_CLUSTER_NAME בשם של אשכול מסדי הנתונים. זה אותו שם של אשכול מסדי הנתונים שהצהרתם עליו כשיצרתם אותו.
אחרי שמזינים את הפקודה, שרת מסד הנתונים מבקש סיסמה.
מזינים את הסיסמה שסיפקתם בקידוד Base64 כסוד של Kubernetes כשיוצרים את אשכול מסד הנתונים. לדוגמה, אם יצרתם את אשכול מסד הנתונים עם סוד של Q2hhbmdlTWUxMjM=, סיסמת הכניסה שצריך להשתמש בה כאן היא ChangeMe123.
אימות של AlloyDB Omni באמצעות התקנה של AlloyDB AI
כדי לוודא שההתקנה בוצעה בהצלחה ושהיא משתמשת בחיזוי מודל, מזינים את הפקודה הבאה:
CREATE EXTENSION IF NOT EXISTS google_ml_integration CASCADE;
SELECT array_dims(embedding('text-embedding-005', 'AlloyDB AI')::real[]);
הפלט אמור להיראות כך:
array_dims
------------
[1:768]
(1 row)
בשילוב עם השאילתה הקודמת, הקריאה embedding() יוצרת הטמעות לטקסט הקלט AlloyDB AI.
array_dims מחזירה את המימדים של המערך שמוחזר על ידי embedding().
מכיוון שהמודל text-embedding-005 מחזיר פלט עם 768 מימדים, הפלט הוא [768].
המאמרים הבאים
- הפעלה וחיבור ל-AlloyDB Omni
- ניהול של AlloyDB Omni
- יצירת אפליקציות מבוססות-AI גנרטיבי באמצעות AlloyDB AI
- רישום של מודלים של AI מרוחקים והפעלתם