במדריך הזה תלמדו איך לכוונן מודל גדול של שפה (LLM) מסוג Gemma 3 באשכול GKE Autopilot עם כמה מארחים ב- Google Cloud. האשכול הזה משתמש בשתי מכונות וירטואליות (VM) מסוג A4 עם סך של 16 יחידות GPU מסוג NVIDIA B200.
שני התהליכים העיקריים שמתוארים במדריך הזה הם:
- פריסת אשכול GKE עם ביצועים גבוהים ומספר מארחים באמצעות GKE Autopilot. כחלק מהפריסה הזו, יוצרים קובץ אימג' של מכונה וירטואלית בהתאמה אישית עם התוכנה הנדרשת שכבר מותקנת.
- אחרי פריסת האשכול, מריצים עבודת כוונון עדין מבוזרת באמצעות קבוצת הסקריפטים שמצורפת למדריך הזה. העבודה מתבססת על ספריית Hugging Face Accelerate.
המדריך הזה מיועד למהנדסי למידת מכונה (ML), לחוקרים, לאדמינים ולמפעילים של פלטפורמות ולמומחים בתחום הנתונים וה-AI שרוצים לפרוס אשכולות GKE ב- Google Cloud כדי לאמן מודלים גדולים של שפה (LLM).
מטרות
אפשר לגשת למודל Gemma 3 באמצעות Hugging Face.
מכינים את הסביבה.
יצירה ופריסה של אשכול GKE מסוג A4.
אפשר לכוונן את מודל Gemma 3 באמצעות ספריית Hugging Face Accelerate עם נתונים מקבילים שחולקו באופן מלא (FSDP).
עוקבים אחרי העבודה.
לפנות.
עלויות
במסמך הזה משתמשים ברכיבים הבאים של Google Cloud, והשימוש בהם כרוך בתשלום:
כדי להעריך את ההוצאות בהתאם לתחזית השימוש שלכם, אתם יכולים להיעזר במחשבון העלויות.
לפני שמתחילים
- נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init -
יוצרים או בוחרים Google Cloud פרויקט.
תפקידים שנדרשים כדי לבחור או ליצור פרויקט
- Select a project: כדי לבחור פרויקט לא צריך תפקיד IAM ספציפי – אפשר לבחור כל פרויקט שקיבלתם בו תפקיד.
-
יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד Project Creator (יצירת פרויקטים) (
roles/resourcemanager.projectCreator), שכולל את ההרשאהresourcemanager.projects.create. איך מקצים תפקידים
-
יוצרים Google Cloud פרויקט:
gcloud projects create PROJECT_ID
מחליפים את
PROJECT_IDבשם של פרויקט Google Cloud שיוצרים. -
בוחרים את הפרויקט שיצרתם: Google Cloud
gcloud config set project PROJECT_ID
מחליפים את
PROJECT_IDבשם הפרויקט ב- Google Cloud .
מפעילים את ממשקי ה-API הנדרשים:
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, נדרשת ההרשאה
serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין של Service Usage' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידיםgcloud services enable compute.googleapis.com
container.googleapis.com file.googleapis.com logging.googleapis.com cloudresourcemanager.googleapis.com servicenetworking.googleapis.com -
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init -
יוצרים או בוחרים Google Cloud פרויקט.
תפקידים שנדרשים כדי לבחור או ליצור פרויקט
- Select a project: כדי לבחור פרויקט לא צריך תפקיד IAM ספציפי – אפשר לבחור כל פרויקט שקיבלתם בו תפקיד.
-
יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד Project Creator (יצירת פרויקטים) (
roles/resourcemanager.projectCreator), שכולל את ההרשאהresourcemanager.projects.create. איך מקצים תפקידים
-
יוצרים Google Cloud פרויקט:
gcloud projects create PROJECT_ID
מחליפים את
PROJECT_IDבשם של פרויקט Google Cloud שיוצרים. -
בוחרים את הפרויקט שיצרתם: Google Cloud
gcloud config set project PROJECT_ID
מחליפים את
PROJECT_IDבשם הפרויקט ב- Google Cloud .
מפעילים את ממשקי ה-API הנדרשים:
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, נדרשת ההרשאה
serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין של Service Usage' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידיםgcloud services enable compute.googleapis.com
container.googleapis.com file.googleapis.com logging.googleapis.com cloudresourcemanager.googleapis.com servicenetworking.googleapis.com -
מעניקים תפקידים לחשבון המשתמש. מריצים את הפקודה הבאה לכל אחד מהתפקידים הבאים ב-IAM:
roles/compute.admin, roles/iam.serviceAccountUser, roles/cloudbuild.builds.editor, roles/artifactregistry.admin, roles/storage.admin, roles/serviceusage.serviceUsageAdmingcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט. -
USER_IDENTIFIER: המזהה של חשבון המשתמש . לדוגמה,myemail@example.com. -
ROLE: תפקיד ה-IAM שאתם מקצים לחשבון המשתמש.
-
- מפעילים את חשבון השירות שמוגדר כברירת מחדל עבור Google Cloud הפרויקט:
export PROJECT_NUMBER="$(gcloud projects describe "PROJECT_ID" --format "value(project_number)")" gcloud iam service-accounts enable "${PROJECT_NUMBER}-compute@developer.gserviceaccount.com \ --project=PROJECT_ID
- מקצים את התפקיד 'עריכה' (
roles/editor) לחשבון השירות שמוגדר כברירת מחדל:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \ --role=roles/editor
- יצירת פרטי כניסה לאימות מקומי בחשבון המשתמש:
gcloud auth application-default login
- מפעילים את OS Login בפרויקט:
gcloud compute project-info add-metadata --metadata=enable-oslogin=TRUE
- נכנסים לחשבון Hugging Face או יוצרים חשבון.
גישה ל-Gemma 3 באמצעות Hugging Face
כדי להשתמש ב-Hugging Face כדי לגשת ל-Gemma 3:
- כניסה לחשבון Hugging Face
- יוצרים טוקן גישה ל-Hugging Face
write.
לוחצים על הפרופיל שלך > הגדרות > טוקנים של גישה > +יצירת טוקן חדש. - מעתיקים ושומרים את ערך הטוקן
write access. תשתמשו בו בהמשך המדריך הזה.
הכנת הסביבה
כדי להכין את הסביבה, מגדירים את הפרטים הבאים:
מחליפים את מה שכתוב בשדות הבאים:
PROJECT_ID: השם של Google Cloud הפרויקט שבו רוצים ליצור את אשכול GKE.
CLUSTER_NAME: השם של אשכול GKE שרוצים ליצור.
CLUSTER_REGION: האזור שבו רוצים ליצור את אשכול GKE. אפשר ליצור את האשכול רק באזור שבו קיימת ההזמנה.
RESERVATION: המזהה של הקיבולת המוזמנת.
HF_TOKEN: טוקן הגישה ל-Hugging Face שיצרתם בקטע הקודם.
ARTIFACT_REPO_LOCATION: המיקום שבו רוצים ליצור את מאגר Artifact Registry.
NUM_NODES: מספר הצמתים שרוצים שיהיו באשכול GKE.
NETWORK: הרשת שבה רוצים להשתמש.
יצירת אשכול GKE עם כמה מארחים במצב Autopilot
יצירת אשכול GKE עם כמה מארחים במצב Autopilot:
יצירת אשכול GKE עשויה להימשך זמן מה. כדי לוודא ש- Google Cloud סיים ליצור את האשכול, עוברים אל Kubernetes clusters במסוף Google Cloud .
קבלת פרטי כניסה לאשכול GKE
מגדירים את kubectl לתקשורת עם אשכול GKE שנוצר לאחרונה על ידי הרצת הפקודה הבאה:
יצירת סוד ב-Kubernetes לפרטי הכניסה של Hugging Face
כדי ליצור סוד של Kubernetes לפרטי הכניסה של Hugging Face, פועלים לפי השלבים הבאים:
מגדירים את
kubectlלתקשורת עם אשכול GKE:יוצרים סוד של Kubernetes לאחסון הטוקן של Hugging Face:
הכנת עומס העבודה
כדי להכין את עומס העבודה, מבצעים את הפעולות הבאות:
יצירת סקריפטים של עומסי עבודה
כדי ליצור את הסקריפטים שעומס העבודה של הכוונון העדין משתמש בהם:
יוצרים ספרייה לסקריפטים של עומס העבודה. משתמשים בספרייה הזו כספריית העבודה.
יוצרים את הקובץ
cloudbuild.yamlכדי להשתמש ב-Google Cloud Build. הקובץ הזה יוצר את קונטיינר עומס העבודה ושומר אותו ב-Artifact Registry:יוצרים קובץ
Dockerfileכדי להגדיר את הסביבה ולהתקין את יחסי התלות שנדרשים להשלמת משימת הכוונון העדין:יוצרים את קובץ ה-
accel_fsdp_gemma3_config.yaml. קובץ ההגדרות הזה מכוון את Hugging Face Accelerate לפצל את משימת ההתאמה העדינה בין כמה מעבדים גרפיים.יוצרים את הקובץ
finetune.yaml:יוצרים את הקובץ
finetune.py:
שימוש ב-Docker וב-Cloud Build ליצירת קונטיינר לכוונון עדין
יוצרים מאגר Docker ב-Artifact Registry:
מתקינים את ההגדרות של משאבים מותאמים אישית (CRD) של JobSet שנדרשות לניהול עומסי עבודה במארחים מרובים.
JobSet הוא תוסף ל-Kubernetes שמשמש לניהול קבוצות של משימות קשורות. מידע נוסף על JobSet זמין במסמכי התיעוד החיצוניים של JobSet.
בספרייה
llm-finetuning-gemmaשיצרתם בשלב קודם, מריצים את הפקודה הבאה כדי ליצור את תמונת ה-fine-tuning ולהעביר אותה אל Artifact Registry.מייצאים את כתובת ה-URL של התמונה. תשתמשו בו בשלב מאוחר יותר במדריך הזה:
התחלת עומס העבודה של הכוונון העדין
כדי להתחיל את עומס העבודה של הכוונון העדין:
מחילים את מניפסט הכוונון העדין כדי ליצור את משימת הכוונון העדין:
מכיוון שאתם משתמשים באשכולות במצב GKE Autopilot, יכול להיות שיחלפו כמה דקות עד שהצומת עם ה-GPU יופעל.
מריצים את הפקודה הבאה כדי לעקוב אחרי העבודה:
מריצים את הפקודה הבאה כדי לבדוק את היומנים של פוד העובד הראשי:
משאב העבודה מוריד את נתוני המודל ואז מבצע כוונון עדין של המודל בכל שמונת המעבדים הגרפיים. ההורדה נמשכת כחמש דקות. אחרי שההורדה מסתיימת, תהליך הכוונון העדין נמשך כשעתיים וחצי.
מעקב אחרי עומס העבודה
אתם יכולים לעקוב אחרי השימוש במעבדי ה-GPU באשכול GKE כדי לוודא שעבודת הכוונון העדין פועלת ביעילות. כדי לעשות זאת, פותחים את הקישור הבא בדפדפן:
כשעוקבים אחרי עומס העבודה, אפשר לראות את הנתונים הבאים:
- השימוש ביחידות GPU: כדי שהאימון יהיה יעיל, השימוש בכל 8 יחידות ה-GPU יעלה ויתייצב ברמה גבוהה לאורך כל האימון.
- משך העבודה: העבודה אמורה להימשך כ-10 דקות באשכול A4 שצוין.
הסרת המשאבים
כדי להימנע מחיובים בחשבון Google Cloud בגלל השימוש במשאבים שנעשה במסגרת המדריך הזה, אפשר למחוק את הפרויקט שמכיל את המשאבים, או להשאיר את הפרויקט ולמחוק את המשאבים בנפרד.
מחיקת המשאבים
כדי למחוק את JobSet, מריצים את הפקודה הבאה:
כדי למחוק את אשכול GKE, מריצים את הפקודה הבאה:
כדי למחוק את המאגר שלכם ב-Artifact Registry, מריצים את הפקודה הבאה:
מחיקת פרויקט
כדי למחוק פרויקט Google Cloud :
gcloud projects delete PROJECT_ID