במדריך הזה נסביר איך לבצע כוונון עדין של מודל שפה גדול (google/gemma-4-31b-it) של Gemma 4 31B באשכול Autopilot של Google Kubernetes Engine (GKE) עם כמה מארחים וכמה יחידות GPU ב- Google Cloud. באשכול הזה נעשה שימוש בשתי מכונות וירטואליות (VM) מסוג A4 (a4-highgpu-8g) עם סך של 16 מעבדי GPU מסוג NVIDIA B200.
שלושת התהליכים העיקריים שמתוארים במדריך הזה הם:
- פריסת אשכול GKE מרובה מארחים במצב אוטומטי.
- יוצרים קובץ אימג' של קונטיינר מותאם אישית עם יחסי התלות הנדרשים לצורך כוונון עדין באמצעות Cloud Build.
- ארגון של עומס עבודה מבוזר של כוונון עדין במארחים מרובים ב-16 יחידות GPU באמצעות JobSet של Kubernetes וספריית Hugging Face Accelerate עם Fully Sharded Data Parallel v2 (FSDP v2), ושמירת נקודות ביקורת ב-Hugging Face Hub.
המדריך הזה מיועד למהנדסי למידת מכונה (ML), חוקרים, מנהלי פלטפורמות ואופרטורים, ומומחי נתונים ו-AI שפורסים אשכולות GKE ב- Google Cloud כדי לבצע כוונון עדין של מודלים גדולים של שפה (LLM) במספר מארחים.
מטרות
אפשר לגשת למודל Gemma 4 באמצעות Hugging Face.
מכינים את הסביבה.
יצירה ופריסה של אשכול GKE A4 מרובה-מארחים.
אפשר לבצע כוונון עדין של מודל Gemma 4 31B ב-16 מעבדי GPU באמצעות Kubernetes
JobSetו-Hugging Face Accelerate עם FSDP v2.עוקבים אחרי העבודה.
אפשר לראות את המשקלים של המתאמים שעברו כוונון ב-Hugging Face Hub.
לפנות.
עלויות
במסמך הזה משתמשים ברכיבים הבאים של Google Cloud, והשימוש בהם כרוך בתשלום:
כדי ליצור הערכת עלויות בהתאם לשימוש החזוי, אתם יכולים להשתמש במחשבון התמחור.
לפני שמתחילים
כדי לקבל את ההרשאות שדרושות להשלמת המדריך הזה, צריך לבקש מהאדמין להקצות לכם בפרויקט את תפקידי ה-IAM הבאים:
- אדמין ב-Kubernetes Engine (
roles/container.admin) - אדמין ב-Compute (
roles/compute.admin) - אדמין באחסון (
roles/storage.admin) - אדמין של Artifact Registry (
roles/artifactregistry.admin) - עריכה ב-Cloud Build (
roles/cloudbuild.builds.editor) - משתמש בחשבון שירות (
roles/iam.serviceAccountUser) - אדמין בחשבון שירות (
roles/iam.serviceAccountAdmin) - אדמין IAM בפרויקט (
roles/resourcemanager.projectIamAdmin) - אדמין Service Usage (
roles/serviceusage.serviceUsageAdmin)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
מפעילים את ממשקי ה-API הנדרשים, אם יש כאלה שלא מופעלים כבר:
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את ההרשאה
serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק Service Usage' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידיםgcloud services enable compute.googleapis.com
container.googleapis.com artifactregistry.googleapis.com cloudbuild.googleapis.com logging.googleapis.com cloudresourcemanager.googleapis.com servicenetworking.googleapis.com מפעילים את חשבון השירות שמוגדר כברירת מחדל ב-Compute Engine עבור הפרויקטGoogle Cloud :
export PROJECT_NUMBER="$(gcloud projects describe "YOUR_PROJECT_ID" --format "value(project_number)")" gcloud iam service-accounts enable "${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \ --project=YOUR_PROJECT_IDמקצים את תפקידי ה-IAM עם ההרשאות המינימליות שחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine צריך כדי ליצור את קובץ אימג' של קונטיינר ולהריץ את עומס העבודה של הכוונון המדויק:
ROLES=( "roles/artifactregistry.writer" "roles/cloudbuild.builds.builder" "roles/logging.logWriter" "roles/monitoring.metricWriter" "roles/monitoring.viewer" "roles/stackdriver.resourceMetadata.writer" "roles/storage.objectViewer" ) for role in "${ROLES[@]}"; do gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \ --member="serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \ --role="${role}" 1>/dev/null done unset ROLESמוודאים שהתפקידים הוקצו לחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine:
echo "Displaying roles for ${PROJECT_NUMBER}-compute@developer.gserviceaccount.com:" gcloud projects get-iam-policy YOUR_PROJECT_ID \ --flatten="bindings[].members" \ --filter="bindings.members:serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \ --format="table(bindings.role)"יצירת פרטי כניסה לאימות מקומי בחשבון המשתמש:
gcloud auth application-default login
מפעילים את OS Login בפרויקט:
gcloud compute project-info add-metadata \ --metadata=enable-oslogin=TRUE \ --project=YOUR_PROJECT_ID
גישה ל-Gemma 4 באמצעות Hugging Face
כדי להשתמש ב-Hugging Face כדי לגשת ל-Gemma 4, צריך לבצע את השלבים הבאים:
- נכנסים לחשבון ב-Hugging Face ומאשרים את הסכם הרישיון של Gemma 4.
- יוצרים טוקן גישה ל-Hugging Face
write.
לוחצים על Your Profile > Settings > Access tokens > +Create new token. - מעתיקים ושומרים את הערך של
writeאסימון הגישה. משתמשים באסימון הזה כדי להוריד את מודל הבסיס ולדחוף את נקודות הבדיקה של המתאמים המכווננים אל Hugging Face Hub לפני ש-GKE מצמצם את מספר צמתי ה-GPU.
הכנת הסביבה
כדי להכין את הסביבה, מגדירים את משתני הסביבה הבאים:
מחליפים את מה שכתוב בשדות הבאים:
YOUR_PROJECT_ID: המזהה של Google Cloud הפרויקט שבו רוצים ליצור את אשכול GKE.
YOUR_CLUSTER_NAME: השם של אשכול GKE שרוצים ליצור.
YOUR_REGION: האזור שבו רוצים ליצור את אשכול GKE. אפשר ליצור את האשכול רק באזור שבו קיימת ההזמנה.
YOUR_RESERVATION_NAME: המזהה של הקיבולת המוזמנת.
YOUR_HF_TOKEN: אסימון הגישה ל-Hugging Face
writeשיצרתם בקטע הקודם.YOUR_ARTIFACT_REGISTRY_LOCATION: Google Cloud האזור (לדוגמה,
us-central1) שבו רוצים ליצור את מאגר Artifact Registry. כדי לצמצם את זמן האחזור של שליפת התמונה, צריך להשתמש באותו אזור שצוין עבור YOUR_REGION.YOUR_NUMBER_OF_NODES: מספר הצמתים של מכונות וירטואליות מסוג A4 במשימת הכוונון העדין. במדריך הזה לשימוש בכמה מארחים עם 16 יחידות GPU מסוג NVIDIA B200 בשני מופעים של
a4-highgpu-8g, צריך להגדיר את הערך הזה ל-2.
יצירת אשכול GKE עם כמה מארחים במצב Autopilot
יצירת אשכול GKE עם כמה מארחים במצב Autopilot:
יצירת אשכול GKE עשויה להימשך כמה דקות. כדי לוודא ש- Google Cloud סיים ליצור את האשכול, עוברים אל Kubernetes clusters במסוף Google Cloud .
הגדרת kubectl לתקשורת עם אשכול GKE
מגדירים את kubectl לתקשורת עם אשכול GKE:
יצירת סוד ב-Kubernetes לפרטי הכניסה של Hugging Face
יוצרים סוד של Kubernetes לאחסון הטוקן של Hugging Face:
הכנת עומס העבודה
כדי להכין את עומס העבודה, מבצעים את הפעולות הבאות:
יצירת סקריפטים של עומסי עבודה
כדי ליצור את קובצי התצורה והסקריפטים שעומס העבודה של הכוונון העדין משתמש בהם, מבצעים את השלבים הבאים:
יוצרים ספרייה לסקריפטים של עומס העבודה. משתמשים בספרייה הזו כספריית העבודה.
יוצרים את הקובץ
cloudbuild.yamlכדי ליצור את קובץ האימג' של הקונטיינר של עומס העבודה באמצעות Cloud Build ולהעביר אותו בדחיפה ל-Artifact Registry:יוצרים קובץ
Dockerfileכדי להגדיר את הסביבה ולהתקין את התלות שנדרשת להשלמת משימת הכוונון העדין:יוצרים את קובץ ה-
accel_fsdp_gemma4_config.yaml. ההגדרה הזו מכוונת את Hugging Face Accelerate לחלוקתGemma4TextDecoderLayerבין 16 מעבדי GPU בשני מארחים באמצעות FSDP גרסה 2:יוצרים את מניפסט
finetune.yamlKubernetesJobSet:יוצרים את סקריפט הכוונון המפוקח
finetune.py(SFT):
שימוש ב-Docker וב-Cloud Build ליצירת קונטיינר לכוונון עדין
יוצרים מאגר Docker ב-Artifact Registry:
מתקינים את
JobSetהגדרות המשאבים המותאמים אישית (CRD) שנדרשות לניהול עומסי עבודה בכמה מארחים:בספרייה
llm-finetuning-gemmaשיצרתם בשלב קודם, שולחים את גרסת ה-build של הקונטיינר אל Cloud Build:מייצאים את כתובת ה-URL של קובץ אימג' של קונטיינר עם כמה מארחים. תשתמשו בו בשלב מאוחר יותר במדריך הזה, כשפורסים את מניפסט
JobSet:
התחלת עומס העבודה של הכוונון העדין
כדי לפרוס ולנטר את עומס העבודה המבוזר של הכוונון העדין, מבצעים את השלבים הבאים:
מחליפים משתני סביבה במניפסט של הכוונון העדין כדי ליצור את משימת הכוונון העדין:
האשכול פועל במצב GKE Autopilot, ולכן יכול להיות שייקח כמה דקות להקצות את שני צמתי A4 עם GPU ולשלוף את קובץ אימג' של קונטיינר.
צופים בתרמילי העובדים עד ששני התרמילים עוברים לסטטוס
Running:אחרי שה-pods של העובדים עוברים למצב
Running, מזרים את יומני האימונים:
מעקב אחר עומס העבודה
אתם יכולים לעקוב אחרי השימוש ב-GPU באשכול GKE כדי לוודא שכל 16 יחידות ה-GPU בשני המארחים מסוג A4 מעבדות באופן פעיל שלבי אימון. יוצרים את הקישור לניתוח נתונים ופותחים אותו בדפדפן:
כשעוקבים אחרי עומס העבודה, צפויים הביצועים הבאים:
- ניצול GPU: כדי שמשימת כוונון עדין מבוזרת תפעל בצורה תקינה, אפשר לצפות לניצול GPU בכל 16 יחידות ה-GPU מסוג NVIDIA B200, שיעלה ויתייצב בטווח של 95% עד 100% במהלך שלבי האימון.
- משך העבודה: ב-2 צמתי
a4-highgpu-8g(16 מעבדים גרפיים מסוג B200), עבודת הכוונון העדין של 3 תקופות נמשכת כשעתיים וחצי.
צפייה במשקלים של המתאמים שעברו כוונון עדין
בסיום האימון, אפשר לראות את המשקלים של מתאם ה-LoRA ואת נקודות הבדיקה (checkpoint) ב-Hugging Face Hub בכתובת https://huggingface.co/YOUR_HF_USERNAME/gemma-31b-text-to-sql.
הסרת המשאבים
כדי להימנע מחיובים נוספים, מוחקים את המשאבים שנוצרו במהלך המדריך הזה.
מחיקת המשאבים
מחיקת הכוונון העדין
JobSet:מחיקת אשכול GKE:
מחיקת מאגר Artifact Registry: