במדריך הזה מוסבר איך להכניס לשימוש בסביבת הייצור מודל שפה גדול (LLM) של Gemma בקוד פתוח באמצעות Tensor Processing Units (TPUs) ב-Gemini Enterprise Agent Platform עם Saxml. במדריך הזה נסביר איך להוריד את מודלי Gemma עם 2B ו-7B פרמטרים שעברו כוונון לפי הוראות ל-Cloud Storage, ולפרוס אותם ב-Gemini Enterprise Agent Platform שמריץ Saxml ב-TPU.
רקע
הפעלת Gemma באמצעות TPUs בפלטפורמת הסוכנים של Gemini Enterprise עם Saxml. אתם יכולים ליהנות מפתרון AI מנוהל שמטפל בתשתית ברמה נמוכה ומציע דרך חסכונית להפעלת מודלים גדולים של שפה (LLM). בקטע הזה מתוארות הטכנולוגיות העיקריות שבהן נעשה שימוש במדריך הזה.
Gemma
Gemma היא קבוצה של מודלים קלי משקל של בינה מלאכותית (AI) גנרטיבית שזמינים לכולם ופורסמו ברישיון קוד פתוח. מודלים של AI זמינים להרצה באפליקציות, בחומרה, במכשירים ניידים או בשירותים מתארחים. אתם יכולים להשתמש במודלים של Gemma ליצירת טקסט, אבל אתם יכולים גם לכוונן את המודלים האלה למשימות מיוחדות.
מידע נוסף זמין במאמרי העזרה בנושא Gemma.
Saxml
Saxml היא מערכת ניסיונית שמשמשת להסקת מסקנות ממודלים של Paxml, JAX ו-PyTorch. במדריך הזה נסביר איך להשתמש ב-TPU כדי להפעיל את Gemma בצורה חסכונית יותר ב-Saxml. ההגדרה של מעבדי GPU דומה. Saxml מציע סקריפטים ליצירת קונטיינרים ל-Gemini Enterprise Agent Platform, שנשתמש בהם במדריך הזה.
TPUs
יחידות TPU הן מעגלים משולבים לאפליקציות ספציפיות (ASIC) שפותחו על ידי Google כדי להאיץ מסגרות לעיבוד נתונים כמו TensorFlow, PyTorch ו-JAX.
במדריך הזה נעשה שימוש במודלים Gemma 2B ו-Gemma 7B. Gemini Enterprise Agent Platform מארחת את המודלים האלה במאגרי הצמתים הבאים של TPU v5e עם מארח יחיד:
- Gemma 2B: מתארח במאגר צומתי TPU v5e עם טופולוגיה של
1x1שמייצגת שבב TPU אחד. סוג המכונה של הצמתים הואct5lp-hightpu-1t. - Gemma 7B: מתארח במאגר צומתי TPU v5e עם טופולוגיה של
2x2שמייצגת ארבעה שבבי TPU. סוג המכונה של הצמתים הואct5lp-hightpu-4t.
לפני שמתחילים
-
In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Cloud de Confiance project.
Enable the Agent Platform API, if it is not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
במסוף Cloud de Confiance , מפעילים את Cloud Shell.
בחלק התחתון של Cloud de Confiance המסוף יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.
במדריך הזה מניחים שאתם משתמשים ב-Cloud Shell כדי ליצור אינטראקציה עם Cloud de Confiance by S3NS. אם אתם רוצים להשתמש במעטפת אחרת במקום ב-Cloud Shell, אתם צריכים לבצע את ההגדרה הנוספת הבאה:
-
התקינו את ה-CLI של Google Cloud.
-
הגדירו שה-CLI של gcloud ישתמש בזהות המאוחדת שלכם.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init - מוודאים שיש לכם מספיק מכסת שימוש בשבבי TPU v5e ל-
Gemini Enterprise Agent Platform. כברירת מחדל, המכסה הזו היא 0.
בטופולוגיה של
1x1, הערך צריך להיות 1. במקרה של2x2, הערך צריך להיות 4. כדי להפעיל את שתי הטופולוגיות, הערך צריך להיות 5. - אם עדיין אין לכם חשבון Kaggle, אתם צריכים ליצור חשבון.
גישה למודל
שימו לב: יכול להיות שלא יהיו לכם מספיק משאבים ב-Cloud Shell כדי להוריד את משקלי המודל. אם כן, תוכלו ליצור מופע של Gemini Enterprise Agent Platform Workbench כדי לבצע את המשימה.
כדי לקבל גישה למודלים של Gemma לצורך פריסה ב-Gemini Enterprise Agent Platform, צריך להיכנס לפלטפורמת Kaggle, לחתום על הסכם ההסכמה לרישיון ולקבל טוקן API של Kaggle. במדריך הזה נשתמש ב-Kubernetes Secret בשביל פרטי הכניסה ל-Kaggle.
חתימה על הסכם ההסכמה לרישיון
כדי להשתמש ב-Gemma, צריך לחתום על הסכם ההסכמה. פועלים לפי ההוראות הבאות:
- נכנסים אל דף ההסכמה לשימוש במודל באתר Kaggle.com.
- נכנסים לחשבון Kaggle, אם עדיין לא עשיתם זאת.
- לוחצים על בקשת גישה.
- בקטע Choose Account for Consent, בוחרים באפשרות Verify via Kaggle Account כדי להשתמש בחשבון Kaggle לצורך מתן הסכמה.
- מאשרים את התנאים וההגבלות של המודל.
יצירת אסימון גישה
כדי לגשת למודל דרך Kaggle, צריך טוקן Kaggle API.
אם עדיין אין לכם טוקן, אתם יכולים ליצור טוקן חדש באמצעות השלבים הבאים:
- בדפדפן, עוברים אל ההגדרות של Kaggle.
בקטע API, לוחצים על Create New Token (יצירת אסימון חדש).
קובץ בשם
kaggle.jsonיורד.
העלאה של טוקן הגישה ל-Cloud Shell
ב-Cloud Shell, אפשר להעלות את אסימון Kaggle API לפרויקט Cloud de Confiance by S3NS:
- ב-Cloud Shell, לוחצים על אפשרויות נוספות > העלאה.
- בוחרים באפשרות 'קובץ' ולוחצים על בחירת קבצים.
- פותחים את הקובץ
kaggle.json. - לוחצים על Upload.
יצירת קטגוריה של Cloud Storage
יוצרים קטגוריה של Cloud Storage לאחסון של נקודות הביקורת של המודל.
ב-Cloud Shell, מריצים את הפקודה הבאה:
gcloud storage buckets create gs://CHECKPOINTS_BUCKET_NAME
מחליפים את CHECKPOINTS_BUCKET_NAME בשם של קטגוריה של Cloud Storage שבה מאוחסנים נקודות הבדיקה של המודל.
העתקת המודל לקטגוריה של Cloud Storage
ב-Cloud Shell, מריצים את הפקודה הבאה:
pip install kaggle --break-system-packages
# For Gemma 2B
mkdir -p /data/gemma_2b-it
kaggle models instances versions download google/gemma/pax/2b-it/1 --untar -p /data/gemma_2b-it
gcloud storage cp /data/gemma_2b-it/* gs://CHECKPOINTS_BUCKET_NAME/gemma_2b-it/ --recursive
# For Gemma 7B
mkdir -p /data/gemma_7b-it
kaggle models instances versions download google/gemma/pax/7b-it/1 --untar -p /data/gemma_7b-it
gcloud storage cp /data/gemma_7b-it/* gs://CHECKPOINTS_BUCKET_NAME/gemma_7b-it/ --recursive
פריסת המודל
העלאת מודל
כדי להעלות משאב Model שמשתמש בקונטיינר Saxml, מריצים את הפקודה gcloud ai models upload הבאה:
Gemma 2B-it
gcloud ai models upload \
--region=LOCATION \
--display-name=DEPLOYED_MODEL_NAME \
--container-image-uri=us-docker.pkg.dev/vertex-ai/prediction/sax-tpu:latest \
--artifact-uri='gs://CHECKPOINTS_BUCKET_NAME/gemma_2b-it/' \
--container-args='--model_path=saxml.server.pax.lm.params.gemma.Gemma2BFP16' \
--container-args='--platform_chip=tpuv5e' \
--container-args='--platform_topology=2x2' \
--container-args='--ckpt_path_suffix=checkpoint_00000000' \
--container-ports=8502
Gemma 7B-it
gcloud ai models upload \
--region=LOCATION \
--display-name=DEPLOYED_MODEL_NAME \
--container-image-uri=us-docker.pkg.dev/vertex-ai/prediction/sax-tpu:latest \
--artifact-uri='gs://CHECKPOINTS_BUCKET_NAME/gemma_7b-it/' \
--container-args='--model_path=saxml.server.pax.lm.params.gemma.Gemma7BFP16' \
--container-args='--platform_chip=tpuv5e' \
--container-args='--platform_topology=2x2' \
--container-args='--ckpt_path_suffix=checkpoint_00000000' \
--container-ports=8502
מחליפים את מה שכתוב בשדות הבאים:
- PROJECT_ID: המזהה של Cloud de Confianceהפרויקט
- LOCATION_ID: האזור שבו משתמשים ב-Agent Platform. חשוב לדעת ש-TPU זמין רק באזור us-west1.
-
DEPLOYED_MODEL_NAME: שם ל-
DeployedModel. אפשר גם להשתמש בשם המוצג שלModelבשבילDeployedModel.
יצירת נקודת קצה
כדי להשתמש במודל להצגת מסקנות אונליין, צריך לפרוס אותו לנקודת קצה. אם אתם פורסים מודל לנקודת קצה קיימת, אתם יכולים לדלג על השלב הזה. בדוגמה הבאה משתמשים בפקודה gcloud ai endpoints create:
gcloud ai endpoints create \
--region=LOCATION \
--display-name=ENDPOINT_NAME
מחליפים את מה שכתוב בשדות הבאים:
- LOCATION_ID: האזור שבו משתמשים ב-Agent Platform.
- ENDPOINT_NAME: השם המוצג של נקודת הקצה.
יכול להיות שיעברו כמה שניות עד שנקודת הקצה תיווצר באמצעות הכלי Google Cloud CLI.
פריסת המודל בנקודת קצה
אחרי שנקודת הקצה מוכנה, פורסים את המודל בנקודת הקצה.
ENDPOINT_ID=$(gcloud ai endpoints list \
--region=LOCATION \
--filter=display_name=ENDPOINT_NAME \
--format="value(name)")
MODEL_ID=$(gcloud ai models list \
--region=LOCATION \
--filter=display_name=DEPLOYED_MODEL_NAME \
--format="value(name)")
gcloud ai endpoints deploy-model $ENDPOINT_ID \
--region=LOCATION \
--model=$MODEL_ID \
--display-name=DEPLOYED_MODEL_NAME \
--machine-type=ct5lp-hightpu-4t \
--traffic-split=0=100
מחליפים את מה שכתוב בשדות הבאים:
- LOCATION_ID: האזור שבו משתמשים ב-Agent Platform.
- ENDPOINT_NAME: השם המוצג של נקודת הקצה.
-
DEPLOYED_MODEL_NAME: שם ל-
DeployedModel. אפשר גם להשתמש בשם המוצג שלModelבשבילDeployedModel.
אפשר לפרוס את Gemma 2B במכונה קטנה יותר מסוג ct5lp-hightpu-1t, ובמקרה כזה צריך לציין את --platform_topology=1x1 כשמעלים את המודל.
יכול להיות שיחלפו כמה דקות עד שכלי Google Cloud CLI יפרוס את המודל לנקודת הקצה. כשהמודל נפרס בהצלחה, הפקודה הזו מדפיסה את הפלט הבא:
Deployed a model to the endpoint xxxxx. Id of the deployed model: xxxxx.
קבלת מסקנות אונליין מהמודל שנפרס
כדי להפעיל את המודל דרך נקודת הקצה של Gemini Enterprise Agent Platform, צריך לעצב את בקשת ההסקה באמצעות אובייקט JSON סטנדרטי של בקשת הסקה .
בדוגמה הבאה משתמשים בפקודה gcloud ai endpoints predict:
ENDPOINT_ID=$(gcloud ai endpoints list \
--region=LOCATION \
--filter=display_name=ENDPOINT_NAME \
--format="value(name)")
gcloud ai endpoints predict $ENDPOINT_ID \
--region=LOCATION \
--http-headers=Content-Type=application/json \
--json-request instances.json
מחליפים את מה שכתוב בשדות הבאים:
- LOCATION_ID: האזור שבו משתמשים ב-Agent Platform.
- ENDPOINT_NAME: השם המוצג של נקודת הקצה.
- instances.json בפורמט הבא:
{"instances": [{"text_batch": "<your prompt>"},{...}]}
סידור וארגון
כדי להימנע מחיובים נוספים על Gemini Enterprise Agent Platform ועל Artifact Registry, צריך למחוק את Cloud de Confiance המשאבים שיצרתם במהלך המדריך הזה:
כדי לבטל את הפריסה של המודל מנקודת הקצה ולמחוק את נקודת הקצה, מריצים את הפקודה הבאה במעטפת:
ENDPOINT_ID=$(gcloud ai endpoints list \ --region=LOCATION \ --filter=display_name=ENDPOINT_NAME \ --format="value(name)") DEPLOYED_MODEL_ID=$(gcloud ai endpoints describe $ENDPOINT_ID \ --region=LOCATION \ --format="value(deployedModels.id)") gcloud ai endpoints undeploy-model $ENDPOINT_ID \ --region=LOCATION \ --deployed-model-id=$DEPLOYED_MODEL_ID gcloud ai endpoints delete $ENDPOINT_ID \ --region=LOCATION \ --quietמחליפים את LOCATION באזור שבו יצרתם את המודל בקטע הקודם.
כדי למחוק את המודל, מריצים את הפקודה הבאה במעטפת:
MODEL_ID=$(gcloud ai models list \ --region=LOCATION \ --filter=display_name=DEPLOYED_MODEL_NAME \ --format="value(name)") gcloud ai models delete $MODEL_ID \ --region=LOCATION \ --quietמחליפים את LOCATION באזור שבו יצרתם את המודל בקטע הקודם.
מגבלות
- ב-Gemini Enterprise Agent Platform, יש תמיכה ב-Cloud TPU רק ב-
us-west1. מידע נוסף זמין במאמר בנושא מיקומים.
המאמרים הבאים
- איך פורסים מודלים אחרים של Saxml, כמו Llama2 ו-GPT-J