המדריך הזה יעזור לכם להבין ולפרוס את הפתרון מאגר ידע של AI גנרטיבי. הפתרון הזה מדגים איך לבנות צינור (pipeline) של שאלות ותשובות (QA) שמבוסס על חילוץ מידע (extractive) כדי ליצור תוכן למאגר ידע פנימי.
צינור EQA מעבד מסמכים, מחלץ מהם זוגות של שאלות ותשובות ומספק לכם מידע מובנה כדי לכוונן מודל שפה גדול (LLM). לדוגמה, אפשר להעלות מסמך שמכיל הרבה שאלות נפוצות, לכוונן מודל LLM באמצעות השאלות הנפוצות האלה, ואז להשתמש במודל המאומן כדי לעזור לנציגי שירות לקוחות למצוא מידע בזמן שהם פותרים בעיות.
המסמך הזה מיועד למפתחים שיש להם רקע מסוים ב-LLM. ההנחה היא שאתם מכירים מושגי ענן בסיסיים.
מטרות
המדריך הזה יעזור לכם:
- פריסת אפליקציה שמחלצת זוגות של שאלות ותשובות מהמסמכים שלכם.
- פריסת צינור שמופעל כשהאפליקציה מעלה מסמך.
- לאמן מודל AI מבוסס-הנחיות באמצעות הפלט מהאפליקציה.
ארכיטקטורה
הפתרון הזה פורס אפליקציה של מאגר ידע מבוסס-AI גנרטיבי. התרשים הבא מציג את הארכיטקטורה של תשתית האפליקציה:
תהליך הבקשה
בשלבים הבאים מפורטת זרימת העיבוד של הבקשה באפליקציה. השלבים ב-Flow ממוספרים כמו בתרשים הארכיטקטורה שלמעלה.
כדי להפעיל את אפליקציית מאגר הידע של AI גנרטיבי, מעלים מסמך ישירות ל-bucket ב-Cloud Storage, דרך מסוף Google Cloud או ה-CLI של gcloud.
כשמעלים את המסמך, מופעלת פונקציית Cloud Run. הפונקציה הזו מריצה את התהליך של מענה לשאלות על סמך מידע שחולץ.
הפונקציה משתמשת ב-OCR של Document AI כדי לחלץ את כל הטקסט מהמסמך.
הפונקציה יוצרת אינדקס של המסמך ב-Vector Search. האינדקס של חיפוש וקטורי מספק הקשר ל-LLM כדי לחלץ זוגות של שאלות ותשובות שמבוססים רק על תוכן שנלקח ישירות מהמסמכים שהועלו.
הפונקציה משתמשת ב-Vertex AI כדי לחלץ שאלות ותשובות מהמסמך וליצור אותן.
הפונקציה מאחסנת את זוגות השאלה והתשובה שחולצו ב-Firestore.
ממסד הנתונים של Firestore נוצר מערך נתונים של JSONL לצורך כוונון עדין, והוא מאוחסן ב-Cloud Storage.
אחרי שמאמתים ידנית שהנתונים מספקים, אפשר להפעיל משימת כוונון עדין ב-Vertex AI.
כשפעולת הכוונון מסתיימת, המודל המכוונן נפרס בנקודת קצה. אחרי שמבצעים פריסה לנקודת קצה, אפשר לשלוח שאילתות למודל המכוונן ב-notebook של Colab ולהשוות אותו למודל הבסיס.
המוצרים שהשתמשו בהם
בקטע הזה מתוארים המוצרים שבהם נעשה שימוש בפתרון.
אם אתם מכירים את שפת ההגדרות של Terraform, אתם יכולים לשנות חלק מההגדרות של השירותים.
| רכיב | תיאור המוצר | המטרה בפתרון הזה |
|---|---|---|
| Cloud Storage | שירות מוכן לשימוש בארגונים שמספק אחסון אובייקטים בעלות נמוכה ללא הגבלה לסוגים שונים של נתונים. | אחסון של מסמכי ה-PDF, הטקסט שחולץ, מערך הנתונים של הכוונון והמודל המכוונן. |
| Eventarc | שירות שמנהל את זרימת השינויים במצב (אירועים) בין מיקרו-שירותים מנותקים, ומנתב אירועים ליעדים שונים תוך ניהול המסירה, האבטחה, ההרשאה, יכולת הצפייה וטיפול בשגיאות. | השירות עוקב אחרי מסמכים חדשים בקטגוריה של Cloud Storage ומפעיל אירוע בפונקציות Cloud Run. |
| פונקציות Cloud Run | שירות מחשוב קל משקל ללא שרת (serverless), שמאפשר ליצור פונקציות עצמאיות למטרה יחידה שמגיבות לאירועים, בלי צורך לנהל שרת או סביבת זמן ריצה. Google Cloud | מנהל את שלבי עיבוד המסמך. |
| Document AI | פלטפורמה להבנת מסמכים שמקבלת נתונים לא מובנים ממסמכים ומשנה אותם לנתונים מובנים. אתם יכולים להפוך משימות מייגעות לאוטומטיות, לשפר את חילוץ הנתונים ולקבל תובנות מעמיקות יותר מהנתונים. | מחלץ את הטקסט מהמסמכים. |
| Vertex AI | פלטפורמה ללמידת מכונה שמאפשרת לאמן, לבדוק, לכוונן ולפרוס מודלים גדולים של שפה (LLM) ואפליקציות של AI גנרטיבי. | יוצר שאלות ותשובות מהמסמכים. |
| Vector Search | שירות שמאפשר לכם להשתמש באותה תשתית שמספקת בסיס למוצרי Google כמו חיפוש Google, YouTube ו-Play. | מאפשר לחפש הטמעות כדי למצוא ישויות דומות או קשורות מבחינה סמנטית. |
| Firestore | מערכת קבצים מנוהלת באופן מלא עם זמן אחזור נמוך למכונות וירטואליות ולאשכולות, שמציעה זמינות גבוהה וקצב העברת נתונים גבוה. | מאחסן את השאלות והתשובות שנוצרו. |
עלות
כדי לקבל הערכה של עלות המשאבים בפתרון של בסיס ידע מבוסס-AI גנרטיבי ב- Google Cloud , אפשר לעיין בהערכה שחושבה מראש בGoogle Cloud מחשבון עלויות.
אפשר להשתמש בהערכה כנקודת התחלה לחישוב העלות של הפריסה. אפשר לשנות את האומדן כדי לשקף שינויים בתצורה שמתכננים לבצע במשאבים שמשמשים בפתרון.
האומדן המחושב מראש מבוסס על הנחות לגבי גורמים מסוימים, כולל:
- המיקומים שבהם נפרסים המשאבים. Google Cloud
משך הזמן שבו נעשה שימוש במשאבים.
כמות הנתונים שמאוחסנים ב-Cloud Storage.
מספר הפעמים שהופעלה אפליקציית מאגר הידע.
משאבי המחשוב שמשמשים לכוונון המודל.
לפני שמתחילים
כדי לפרוס את הפתרון הזה, קודם צריך פרויקט Google Cloud וכמה הרשאות IAM.
יצירה או בחירה של Google Cloud פרויקט
כשפורסים את הפתרון, בוחרים את Google Cloud הפרויקט שבו ייפרסו המשאבים. אפשר ליצור פרויקט חדש או להשתמש בפרויקט קיים לצורך הפריסה.
אם רוצים ליצור פרויקט חדש, צריך לעשות זאת לפני שמתחילים בפריסה. שימוש בפרויקט חדש יכול לעזור לכם להימנע מהתנגשויות עם משאבים שהוקצו בעבר, כמו משאבים שמשמשים לעומסי עבודה של ייצור.
כדי ליצור פרויקט, מבצעים את השלבים הבאים:
-
Ensure that you have the Project Creator IAM role
(
roles/resourcemanager.projectCreator). Learn how to grant roles. -
In the Google Cloud console, go to the project selector page.
-
Click Create project.
-
Name your project. Make a note of your generated project ID.
-
Edit the other fields as needed.
-
Click Create.
קבלת הרשאות ה-IAM הנדרשות
כדי להתחיל בתהליך הפריסה, אתם צריכים את ההרשאות של ניהול זהויות והרשאות גישה (IAM) שמפורטות בטבלה הבאה.
אם יצרתם פרויקט חדש בשביל הפתרון הזה, יש לכם roles/owner
תפקיד בסיסי בפרויקט הזה וכל ההרשאות הנדרשות. אם לא הוקצה לכם התפקיד roles/owner, אתם צריכים לבקש מהאדמין להקצות לכם את ההרשאות האלה (או את התפקידים שכוללים את ההרשאות האלה).
| נדרשת הרשאת IAM | תפקיד מוגדר מראש שכולל את ההרשאות הנדרשות |
|---|---|
|
אדמין בשימוש בשירות ( roles/serviceusage.serviceUsageAdmin) |
|
אדמין בחשבון שירות ( roles/iam.serviceAccountAdmin) |
|
אדמין IAM בפרויקט ( roles/resourcemanager.projectIamAdmin) |
config.deployments.createconfig.deployments.list |
אדמין של Cloud Infrastructure Manager ( roles/config.admin) |
iam.serviceAccount.actAs |
משתמש בחשבון שירות ( roles/iam.serviceAccountUser) |
מידע על הרשאות זמניות לחשבון שירות
אם מתחילים את תהליך הפריסה דרך המסוף, Google יוצרת חשבון שירות כדי לפרוס את הפתרון בשמכם (וכדי למחוק את הפריסה מאוחר יותר אם תבחרו לעשות זאת). לחשבון השירות הזה מוקצות הרשאות IAM מסוימות באופן זמני, כלומר ההרשאות מבוטלות באופן אוטומטי אחרי השלמת הפריסה של הפתרון ופעולות המחיקה. Google ממליצה למחוק את חשבון השירות אחרי שמוחקים את הפריסה, כמו שמתואר בהמשך המדריך הזה.
צפייה בתפקידים שהוקצו לחשבון השירות
התפקידים האלה מפורטים כאן למקרה שאדמין של פרויקט או ארגון ב- Google Cloud יזדקק למידע הזה.
roles/aiplatform.userroles/artifactregistry.adminroles/documentai.editorroles/firebase.adminroles/iam.serviceAccountUserroles/serviceusage.serviceUsageAdminroles/iam.serviceAccountAdminroles/resourcemanager.projectIamAdminroles/config.agent
פריסת הפתרון
כדי לעזור לכם לפרוס את הפתרון הזה במאמץ מינימלי, אנחנו מספקים הגדרת Terraform ב-GitHub. ההגדרות של Terraform מגדירות את כלGoogle Cloud המשאבים שנדרשים לפתרון.
אפשר לפרוס את הפתרון באחת מהשיטות הבאות:
דרך המסוף: כדאי להשתמש בשיטה הזו אם רוצים לנסות את הפתרון עם הגדרת ברירת המחדל ולראות איך הוא עובד. Cloud Build פורס את כל המשאבים שנדרשים לפתרון. אם כבר לא צריך את הפתרון שפרסתם, אפשר למחוק אותו דרך המסוף. יכול להיות שתצטרכו למחוק בנפרד משאבים שתיצרו אחרי שתפרסו את הפתרון.
כדי להשתמש בשיטת הפריסה הזו, פועלים לפי ההוראות במאמר פריסה דרך המסוף.
שימוש ב-Terraform CLI: כדאי להשתמש בשיטה הזו אם רוצים להתאים אישית את הפתרון או אם רוצים להפוך את הקצאת המשאבים והניהול שלהם לאוטומטיים באמצעות הגישה של תשתית כקוד (IaC). מורידים את ההגדרות של Terraform מ-GitHub, משנים את הקוד לפי הצורך ופורסים את הפתרון באמצעות Terraform CLI. אחרי פריסת הפתרון, אפשר להמשיך להשתמש ב-Terraform כדי לנהל אותו.
כדי להשתמש בשיטת הפריסה הזו, פועלים לפי ההוראות במאמר פריסה באמצעות Terraform CLI.
פריסה דרך המסוף
כדי לפרוס את הפתרון שהוגדר מראש:
בקטלוג הפתרונות של Jump Start, עוברים לפתרון Generative AI Knowledge Base. Google Cloud
בודקים את המידע שמופיע בדף, כמו העלות המשוערת של הפתרון וזמן ההטמעה המשוער.
כדי להתחיל לפרוס את הפתרון, לוחצים על פריסה.
מוצגת חלונית הגדרה עם הוראות מפורטות.
משלימים את השלבים בחלונית ההגדרה.
שימו לב לשם שהזנתם לפריסה. השם הזה נדרש בהמשך כשמוחקים את הפריסה.
כשלוחצים על פריסה, מוצג הדף פריסות של פתרונות. בשדה סטטוס בדף הזה מופיע הערך בפריסה.
ממתינים עד שהפתרון יופעל.
אם הפריסה נכשלת, בשדה סטטוס מופיע הערך נכשל. אפשר להשתמש ביומן של Cloud Build כדי לאבחן את השגיאות. מידע נוסף זמין במאמר שגיאות שמתרחשות כשפורסים דרך המסוף.
אחרי שהפריסה מסתיימת, השדה סטטוס משתנה לנפרס.
כדי לראות את המשאבים שנפרסו ואת ההגדרות שלהם, אפשר לצפות בסיור האינטראקטיבי במסוף. Google Cloud
לשלבים הבאים, אפשר לעבור אל שימוש בפתרון.
כשאין יותר צורך בפתרון, אפשר למחוק את הפריסה כדי להימנע מחיובים נוספים על Google Cloud המשאבים. מידע נוסף זמין במאמר בנושא מחיקת הפריסה.
פריסה באמצעות Terraform CLI
בקטע הזה מוסבר איך אפשר להתאים אישית את הפתרון או להפוך את ההקצאה והניהול של הפתרון לאוטומטיים באמצעות Terraform CLI. פתרונות שפורסים באמצעות Terraform CLI לא מוצגים בדף Solution deployments במסוף Google Cloud .
הגדרת לקוח Terraform
אפשר להריץ את Terraform ב-Cloud Shell או במארח המקומי. במדריך הזה מוסבר איך להריץ את Terraform ב-Cloud Shell, שבו Terraform מותקן מראש ומוגדר לאימות באמצעות Google Cloud.
קוד ה-Terraform של הפתרון הזה זמין במאגר GitHub.
משכפלים את מאגר GitHub ל-Cloud Shell.
תוצג בקשה לאישור ההורדה של מאגר GitHub אל Cloud Shell.
לוחצים על אישור.
Cloud Shell מופעל בכרטיסיית דפדפן נפרדת, והקוד של Terraform מורד לספרייה
$HOME/cloudshell_openשל סביבת Cloud Shell.ב-Cloud Shell, בודקים אם ספריית העבודה הנוכחית היא
$HOME/cloudshell_open/terraform-genai-knowledge-base/. זו הספרייה שמכילה את קובצי ההגדרות של Terraform לפתרון. אם אתם צריכים לעבור לספרייה הזו, מריצים את הפקודה הבאה:cd $HOME/cloudshell_open/terraform-genai-knowledge-base/מפעילים את Terraform באמצעות הפקודה הבאה:
terraform initמחכים עד שמופיעה ההודעה הבאה:
Terraform has been successfully initialized!
הגדרת משתני Terraform
קוד ה-Terraform שהורדתם כולל משתנים שבהם אפשר להשתמש כדי להתאים אישית את הפריסה בהתאם לדרישות שלכם. לדוגמה, אפשר לציין את הפרויקט Google Cloud ואת האזור שבהם רוצים לפרוס את הפתרון.
מוודאים שספריית העבודה הנוכחית היא
$HOME/cloudshell_open/terraform-genai-knowledge-base/. אם לא, עוברים לספרייה הזו.באותה ספרייה, יוצרים קובץ טקסט בשם
terraform.tfvars.בקובץ
terraform.tfvars, מעתיקים את קטע הקוד הבא ומגדירים ערכים למשתנים הנדרשים.- פועלים לפי ההוראות שמופיעות כהערות בקטע הקוד.
- קטע הקוד הזה כולל רק את המשתנים שחובה להגדיר להם ערכים. התצורה של Terraform כוללת משתנים אחרים עם ערכי ברירת מחדל. כדי לבדוק את כל המשתנים ואת ערכי ברירת המחדל, אפשר לעיין בקובץ
variables.tfשזמין בספרייה$HOME/cloudshell_open/terraform-genai-knowledge-base/. - חשוב לוודא שכל ערך שמוגדר בקובץ
terraform.tfvarsתואם לסוג המשתנה שמוצהר בקובץvariables.tf. לדוגמה, אם הסוג שמוגדר למשתנה בקובץvariables.tfהואbool, צריך לצייןtrueאוfalseכערך של המשתנה הזה בקובץterraform.tfvars.
# This is an example of the terraform.tfvars file. # The values in this file must match the variable types declared in variables.tf. # The values in this file override any defaults in variables.tf. # ID of the project in which you want to deploy the solution project_id = "PROJECT_ID"
אימות ובדיקה של הגדרות Terraform
מוודאים שספריית העבודה הנוכחית היא
$HOME/cloudshell_open/terraform-genai-knowledge-base/. אם לא, עוברים לספרייה הזו.מוודאים שאין שגיאות בהגדרות של Terraform:
terraform validateאם הפקודה מחזירה שגיאות, מבצעים את התיקונים הנדרשים בהגדרה ומריצים שוב את הפקודה
terraform validate. חוזרים על השלב הזה עד שהפקודה מחזירה את ההודעה הבאה:Success! The configuration is valid.בודקים את המשאבים שמוגדרים בהגדרה:
terraform planאם לא יצרתם את הקובץ
terraform.tfvarsכמו שמתואר למעלה, Terraform יבקש מכם להזין ערכים למשתנים שאין להם ערכי ברירת מחדל. מזינים את הערכים הנדרשים.הפלט של הפקודה
terraform planהוא רשימה של המשאבים ש-Terraform מקצה כשמחילים את ההגדרות.אם רוצים לבצע שינויים, עורכים את ההגדרה ומריצים שוב את הפקודות
terraform validateו-terraform plan.
הקצאת המשאבים
כשאין יותר שינויים שצריך לבצע בהגדרות של Terraform, פורסים את המשאבים.
מוודאים שספריית העבודה הנוכחית היא
$HOME/cloudshell_open/terraform-genai-knowledge-base/. אם לא, עוברים לספרייה הזו.מחילים את ההגדרות של Terraform:
terraform applyאם לא יצרתם את הקובץ
terraform.tfvarsכמו שמתואר למעלה, Terraform יבקש מכם להזין ערכים למשתנים שאין להם ערכי ברירת מחדל. מזינים את הערכים הנדרשים.ב-Terraform מוצגת רשימה של המשאבים שייווצרו.
כשמופיעה בקשה לבצע את הפעולות, מזינים
yes.ב-Terraform מוצגות הודעות שמראות את התקדמות הפריסה.
אם אי אפשר להשלים את הפריסה, Terraform מציג את השגיאות שגרמו לכשל. בודקים את הודעות השגיאה ומעדכנים את ההגדרה כדי לתקן את השגיאות. ואז מריצים שוב את הפקודה
terraform apply. אם אתם צריכים עזרה בפתרון שגיאות ב-Terraform, תוכלו לקרוא את המאמר שגיאות בפריסת הפתרון באמצעות Terraform CLI.אחרי שכל המשאבים נוצרים, מוצגת ב-Terraform ההודעה הבאה:
Apply complete!כדי לראות את המשאבים שנפרסו ואת ההגדרות שלהם, אפשר לצפות בסיור האינטראקטיבי במסוף. Google Cloud
אחרי כן, תוכלו להשתמש בפתרון ולראות איך הוא עובד.
כשאין יותר צורך בפתרון, אפשר למחוק את הפריסה כדי להימנע מחיובים נוספים על Google Cloud המשאבים. מידע נוסף זמין במאמר בנושא מחיקת הפריסה.
שימוש בפתרון
אחרי פריסת הפתרון, אפשר להעלות מסמך כדי ליצור לו אינדקס ולשאול עליו שאלות. בנוסף, נוצר קובץ של מערך נתונים לשיפור הביצועים בפורמט JSON lines (JSONL), שאפשר להשתמש בו כדי לשפר את הביצועים של מודל שפה גדול (LLM) באמצעות הנחיות.
העלאת מסמך ושליחת שאילתה למודל
כדי להתחיל להשתמש בפתרון הזה, מעלים מסמך ואז שואלים את LLM שעבר אימון מראש (pre-trained) שאלות לגבי המסמך.
כדי לקבל הסבר מפורט על המשימה הזו ישירות במסוף Google Cloud , לוחצים על תראו לי איך.
השלמת המשימה הזו נמשכת כ-10 דקות.כוונון המודל הגדול של השפה
אחרי שמעלים מסמכים לפתרון, אפשר להשתמש ב-Vertex AI כדי לכוונן מודל שפה גדול (LLM) באמצעות זוגות של שאלות ותשובות. התאמה של מודל שפה גדול (LLM) היא לא תהליך אוטומטי. לפני שמכווננים את ה-LLM, בודקים את הנתונים ומוודאים שהם תקינים ומדויקים. אחרי שאתם מרוצים מהנתונים, אתם יכולים להפעיל ידנית משימת התאמה ולהפעיל את ה-LLM ממאגר המודלים.
קובץ ההתאמה (tuning) בפורמט JSONL מכיל תוכן שחולץ מזוגות של שאלות ותשובות. כל שורה בקובץ היא רשומה בפורמט JSON עם השדות input_text ו-output_text. השדה input_text מכיל את התוכן מכל שאלה, והשדה output_text מכיל את התוכן מכל תשובה.
לדוגמה, קובץ ה-JSONL הבא מכיל את השאלה 'כמה אנשים גרים בבייג'ינג' ואת התשובה המתאימה:
{"input_text": "CONTEXT: With over 21 million residents, Beijing is the
world's most populous national capital city and is China's second largest
city after Shanghai. QUESTION: How many people live in Beijing?,
"output_text": "21 million people"}
כדי לקבל הסבר מפורט על כוונון המודל ישירות במסוף Google Cloud , לוחצים על תראו לי איך.
המדריך הזה נמשך כ-10 דקות, אבל כוונון המודל יכול להימשך שעה או יותר.מחיקת הפריסה
כשכבר לא צריך את הפתרון, מוחקים את הפריסה. כשמוחקים את הפריסה, לא מחויבים יותר על המשאבים שיצרתם.
לפני המחיקה
לפני שמוחקים את הפתרון הזה, צריך למחוק את הפריסה של אינדקס חיפוש הווקטורים:
עוברים לדף חיפוש וקטורי.
לוחצים על
knowledge-base-index.בקטע Deployed indexes (אינדקסים שנפרסו), לוחצים על more_vert More (עוד).
לוחצים על ביטול הפריסה.
לא צריך לחכות עד שתהליך מחיקת האינדקס יסתיים.
מחיקה דרך המסוף
משתמשים בהליך הזה אם פרסתם את הפתרון דרך המסוף.
נכנסים לדף Solution deployments במסוף Google Cloud .
בוחרים את הפרויקט שמכיל את הפריסה שרוצים למחוק.
מאתרים את הפריסה שרוצים למחוק.
בשורה של הפריסה, לוחצים על פעולות ואז על מחיקה.
יכול להיות שתצטרכו לגלול כדי לראות את הפעולות בשורה.
מזינים את שם הפריסה ולוחצים על אישור.
בשדה סטטוס מוצג הערך בתהליך מחיקה.
אם המחיקה נכשלת, אפשר להיעזר בהנחיות לפתרון בעיות במאמר שגיאה במחיקת פריסה.
אם כבר לא צריך את הפרויקט שבו השתמשתם לפתרון, אפשר למחוק אותו. Google Cloud מידע נוסף זמין במאמר אופציונלי: מחיקת הפרויקט.
מחיקה באמצעות Terraform CLI
משתמשים בהליך הזה אם פרסתם את הפתרון באמצעות Terraform CLI.
ב-Cloud Shell, מוודאים שספריית העבודה הנוכחית היא
$HOME/cloudshell_open/terraform-genai-knowledge-base/. אם לא, עוברים לספרייה הזו.מסירים את המשאבים שהוקצו על ידי Terraform:
terraform destroyב-Terraform מוצגת רשימה של המשאבים שיוסרו.
כשמופיעה בקשה לבצע את הפעולות, מזינים
yes.ב-Terraform מוצגות הודעות שמראות את ההתקדמות. אחרי שכל המשאבים נמחקים, Terraform מציגה את ההודעה הבאה:
Destroy complete!אם המחיקה נכשלת, אפשר להיעזר בהנחיות לפתרון בעיות במאמר שגיאה במחיקת פריסה.
אם כבר לא צריך את הפרויקט שבו השתמשתם לפתרון, אפשר למחוק אותו. Google Cloud מידע נוסף זמין במאמר אופציונלי: מחיקת הפרויקט.
מחיקת המודל שעבר כוונון
צריך למחוק ידנית את המודל שעבר התאמה.
כדי למחוק את המודל שעבר כוונון, אפשר לעיין במאמר בנושא מחיקת מודל ממרשם המודלים של Vertex AI.
אופציונלי: מחיקת הפרויקט
אם פרסתם את הפתרון בפרויקט חדש ב- Google Cloud ואתם כבר לא צריכים את הפרויקט, אתם יכולים למחוק אותו. כדי לעשות את זה, צריך לבצע את השלבים הבאים:
- נכנסים לדף Manage resources במסוף Google Cloud .
- ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
- בהנחיה, מקלידים את מזהה הפרויקט ולוחצים על Shut down (סגירה).
אם מחליטים להשאיר את הפרויקט, צריך למחוק את חשבון השירות שנוצר עבור הפתרון הזה, כמו שמתואר בקטע הבא.
אופציונלי: מחיקה של חשבון השירות
אם מחקתם את הפרויקט שבו השתמשתם כדי להפעיל את הפתרון, אפשר לדלג על הקטע הזה.
כמו שצוין קודם במדריך הזה, כשפרסתם את הפתרון, נוצר בשבילכם חשבון שירות. לחשבון השירות הוקצו הרשאות IAM מסוימות באופן זמני. כלומר, ההרשאות בוטלו באופן אוטומטי אחרי השלמת הפריסה של הפתרון ופעולות המחיקה, אבל חשבון השירות לא נמחק. מומלץ למחוק את חשבון השירות הזה.
אם פרסתם את הפתרון דרך מסוף Google Cloud , עוברים לדף Solution deployments. (אם כבר נמצאים בדף הזה, צריך לרענן את הדפדפן). תהליך מחיקת חשבון השירות מופעל ברקע. אין צורך בפעולה נוספת.
אם פרסתם את הפתרון באמצעות Terraform CLI, מבצעים את השלבים הבאים:
נכנסים לדף Service accounts במסוף Google Cloud .
בוחרים את הפרויקט שבו השתמשתם כדי ליצור את הפתרון.
בוחרים את חשבון השירות שרוצים למחוק.
מזהה האימייל של חשבון השירות שנוצר עבור הפתרון הוא בפורמט הבא:
goog-sc-DEPLOYMENT_NAME-NNN@PROJECT_ID.iam.gserviceaccount.comמזהה האימייל מכיל את הערכים הבאים:
- DEPLOYMENT_NAME: שם הפריסה.
- NNN: מספר אקראי בן 3 ספרות.
- PROJECT_ID: מזהה הפרויקט שבו פרסתם את הפתרון.
לוחצים על Delete.
פתרון בעיות במקרה של שגיאות
הפעולות שאפשר לבצע כדי לאבחן ולפתור שגיאות תלויות בשיטת הפריסה ובמורכבות השגיאה.
שגיאות בהטמעה דרך המסוף
אם הפריסה נכשלת כשמשתמשים במסוף, צריך לבצע את הפעולות הבאות:
עוברים לדף פריסות של פתרונות.
אם הפריסה נכשלה, בשדה סטטוס יופיע הערך נכשל.
צופים בפרטי השגיאות שגרמו לכשל:
בשורה של הפריסה, לוחצים על פעולות.
יכול להיות שתצטרכו לגלול כדי לראות את הפעולות בשורה.
בוחרים באפשרות הצגת יומני Cloud Build.
בודקים את היומן של Cloud Build ופועלים בהתאם כדי לפתור את הבעיה שגרמה לכשל.
שגיאות בפריסה באמצעות Terraform CLI
אם הפריסה נכשלת כשמשתמשים ב-Terraform, הפלט של הפקודה terraform
apply כולל הודעות שגיאה שאפשר לבדוק כדי לאבחן את הבעיה.
בדוגמאות שבקטעים הבאים מוצגות שגיאות פריסה שעשויות להתרחש כשמשתמשים ב-Terraform.
שגיאה: ה-API לא מופעל
אם יוצרים פרויקט ואז מנסים מיד לפרוס את הפתרון בפרויקט החדש, יכול להיות שהפריסה תיכשל ותופיע שגיאה כמו:
Error: Error creating Network: googleapi: Error 403: Compute Engine API has not
been used in project PROJECT_ID before or it is disabled. Enable it by visiting
https://console.developers.google.com/apis/api/compute.googleapis.com/overview?project=PROJECT_ID
then retry. If you enabled this API recently, wait a few minutes for the action
to propagate to our systems and retry.
אם השגיאה הזו מופיעה, צריך לחכות כמה דקות ואז להריץ שוב את הפקודה terraform apply.
שגיאה: אי אפשר להקצות את הכתובת המבוקשת
כשמריצים את הפקודה terraform apply, יכול להיות שתופיע שגיאה cannot assign requested address עם הודעה כמו זו:
Error: Error creating service account:
Post "https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts:
dial tcp [2001:db8:ffff:ffff::5f]:443:
connect: cannot assign requested address
אם השגיאה הזו מופיעה, מריצים שוב את הפקודה terraform apply.
שגיאת הגדרה
אם משנים ארגומנטים של משאבים בקובץ main.tf באמצעות ערכים לא נתמכים, מתרחשת שגיאה כמו זו שמופיעה בהמשך:
Error: Error creating Instance: googleapi: Error 400: Provided Redis version is
not supported: REDIS_5_X
│ com.google.apps.framework.request.StatusException:
<eye3 title='INVALID_ARGUMENT'/>
generic::INVALID_ARGUMENT: Provided Redis version is not supported: REDIS_5_X
Details:
│ [>
│ {
│ "@type": "type.googleapis.com/google.rpc.BadRequest",
│ "fieldViolations": [
│ {
│ "description": "Invalid value: REDIS_5_X",
│ "field": "instance.redis_version"
│ }
│ ]
│ }
│ ]
│
│ with google_redis_instance.main,
│ on main.tf line 96, in resource "google_redis_instance" "main":
│ 96: resource "google_redis_instance" "main" {
במקרה הזה, הכוונה הייתה להשתמש ב-Redis גרסה 5, אבל הערך שצוין לארגומנט instance.redis_version (REDIS_5_X) בקובץ main.tf לא תקין.
הערך הנכון הוא REDIS_5_0, כפי שמפורט במאמרי העזרה של ה-API בארכיטקטורת REST של Memorystore.
שגיאה במחיקת פריסה
במקרים מסוימים, יכול להיות שהניסיונות למחוק פריסה ייכשלו:
- אחרי שמפעילים פתרון דרך המסוף, אם משנים משאב כלשהו שהוקצה על ידי הפתרון, ואז מנסים למחוק את הפריסה, יכול להיות שהמחיקה תיכשל. בשדה סטטוס בדף פריסות של פתרונות מופיע הערך נכשל, ובלוג של Cloud Build מופיע הגורם לשגיאה.
- אחרי פריסת פתרון באמצעות Terraform CLI, אם משנים משאב כלשהו באמצעות ממשק שאינו Terraform (לדוגמה, המסוף), ואז מנסים למחוק את הפריסה, יכול להיות שהמחיקה תיכשל. ההודעות בפלט של הפקודה
terraform destroyמציגות את הסיבה לשגיאה.
בודקים את יומני השגיאות וההודעות, מזהים ומוחקים את המשאבים שגרמו לשגיאה, ואז מנסים למחוק שוב את הפריסה.
אם פריסה מבוססת-מסוף לא נמחקת ואם אי אפשר לאבחן את השגיאה באמצעות יומן Cloud Build, אפשר למחוק את הפריסה באמצעות Terraform CLI, כמו שמתואר בקטע הבא.
מחיקת פריסה שמבוססת על המסוף באמצעות Terraform CLI
בקטע הזה מוסבר איך למחוק פריסה שמבוססת על המסוף אם מתרחשות שגיאות כשמנסים למחוק אותה דרך המסוף. בגישה הזו, מורידים את ההגדרות של Terraform לפריסה שרוצים למחוק, ואז משתמשים ב-Terraform CLI כדי למחוק את הפריסה.
מזהים את האזור שבו מאוחסנים קוד ה-Terraform, היומנים ונתונים אחרים של הפריסה. יכול להיות שהאזור הזה יהיה שונה מהאזור שבחרתם כשפרסתם את הפתרון.
נכנסים לדף Solution deployments במסוף Google Cloud .
בוחרים את הפרויקט שמכיל את הפריסה שרוצים למחוק.
ברשימת הפריסות, מזהים את השורה של הפריסה שרוצים למחוק.
לוחצים על הצגת כל התוכן בשורה.
בעמודה מיקום, שימו לב למיקום השני, כפי שמודגש בדוגמה הבאה:
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
יוצרים משתני סביבה למזהה הפרויקט, לאזור ולשם של הפריסה שרוצים למחוק:
export REGION="REGION" export PROJECT_ID="PROJECT_ID" export DEPLOYMENT_NAME="DEPLOYMENT_NAME"בפקודות האלה, מחליפים את מה שכתוב בשדות הבאים:
- REGION: המיקום שציינתם קודם בהליך הזה.
- PROJECT_ID: מזהה הפרויקט שבו פרסתם את הפתרון.
- DEPLOYMENT_NAME: השם של הפריסה שרוצים למחוק.
מאתרים את המזהה של הגרסה האחרונה של הפריסה שרוצים למחוק:
export REVISION_ID=$(curl \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://config.googleapis.com/v1alpha2/projects/${PROJECT_ID}/locations/${REGION}/deployments/${DEPLOYMENT_NAME}" \ | jq .latestRevision -r) echo $REVISION_IDהפלט אמור להיראות כך:
projects/PROJECT_ID/locations/REGION/deployments/DEPLOYMENT_NAME/revisions/r-0מוצאים את המיקום ב-Cloud Storage של ההגדרות של Terraform לפריסה:
export CONTENT_PATH=$(curl \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://config.googleapis.com/v1alpha2/${REVISION_ID}" \ | jq .applyResults.content -r) echo $CONTENT_PATHהדוגמה הבאה היא של הפלט שמתקבל מהפקודה הזו:
gs://PROJECT_ID-REGION-blueprint-config/DEPLOYMENT_NAME/r-0/apply_results/contentמורידים את ההגדרות של Terraform מ-Cloud Storage אל Cloud Shell:
gcloud storage cp $CONTENT_PATH $HOME --recursive cd $HOME/content/ממתינים עד להצגת ההודעה
Operation completed, כמו שמוצג בדוגמה הבאה:Operation completed over 45 objects/268.5 KiBמאתחלים את Terraform:
terraform initמחכים עד שמופיעה ההודעה הבאה:
Terraform has been successfully initialized!מסירים את המשאבים שנפרסו:
terraform destroyב-Terraform מוצגת רשימה של המשאבים שיוסרו.
אם מוצגות אזהרות לגבי משתנים שלא הוגדרו, אפשר להתעלם מהן.
כשמופיעה בקשה לבצע את הפעולות, מזינים
yes.ב-Terraform מוצגות הודעות שמראות את ההתקדמות. אחרי שכל המשאבים נמחקים, Terraform מציג את ההודעה הבאה:
Destroy complete!מוחקים את פריט המידע שנוצר בתהליך פיתוח (Artifact) של הפריסה:
curl -X DELETE \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://config.googleapis.com/v1alpha2/projects/${PROJECT_ID}/locations/${REGION}/deployments/${DEPLOYMENT_NAME}?force=true&delete_policy=abandon"ממתינים כמה שניות ואז מוודאים שפריט הפריסה נמחק:
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://config.googleapis.com/v1alpha2/projects/${PROJECT_ID}/locations/${REGION}/deployments/${DEPLOYMENT_NAME}" \ | jq .error.messageאם הפלט מראה
null, מחכים כמה שניות ומריצים את הפקודה שוב.אחרי שמחיקת ארטיפקט הפריסה מסתיימת, מוצגת הודעה כמו בדוגמה הבאה:
Resource 'projects/PROJECT_ID/locations/REGION/deployments/DEPLOYMENT_NAME' was not found- כדי לשלוח משוב על מסמכי התיעוד, על מדריכים במסוף או על הפתרון, לוחצים על הלחצן שליחת משוב בדף.
- אם לא שיניתם את קוד Terraform, אתם יכולים ליצור בעיות במאגר GitHub. אנחנו בודקים את הבעיות ב-GitHub כמיטב יכולתנו, והן לא מיועדות לשאלות כלליות על השימוש.
- אם נתקלתם בבעיות במוצרים שבהם נעשה שימוש בפתרון, תוכלו לפנות אל Cloud Customer Care.
- מידע נוסף על AI גנרטיבי ב-Vertex AI
- סקירה כללית של עקרונות והמלצות לארכיטקטורה שספציפיים לעומסי עבודה של AI ו-ML ב- Google Cloudזמינה בפרספקטיבת ה-AI וה-ML ב-Well-Architected Framework.
שליחת משוב
פתרונות התחלתיים מיועדים למטרות מידע בלבד, והם לא מוצרים שנתמכים באופן רשמי. Google עשויה לשנות או להסיר פתרונות ללא הודעה מוקדמת.
כדי לפתור שגיאות, בודקים את היומנים של Cloud Build ואת הפלט של Terraform.
כדי לשלוח משוב: