במדריך הזה נסביר איך לכוונן את מודל שפת Gemma 3 הגדול (LLM) ב אשכול Slurm מרובה צמתים שמשתמש בשתי מכונות וירטואליות (VM) מסוג A4. במסגרת המדריך הזה תלמדו:
יוצרים תמונה בהתאמה אישית.
הגדרת רשת RDMA.
מריצים משימת כוונון עדין מבוזרת. כדי לבצע אימון יעיל של כמה צמתים, משתמשים בספרייה Hugging Face Accelerate עם Fully Sharded Data Parallel (FSDP).
המדריך הזה מיועד למהנדסי למידת מכונה (ML), לאדמינים ולאופרטורים של פלטפורמות ולמומחי נתונים ו-AI שרוצים להשתמש ביכולות של Slurm לתזמון משימות כדי לטפל בעומסי עבודה של שיפור מודלים.
מטרות
אפשר לגשת ל-Gemma 3 באמצעות Hugging Face.
מכינים את הסביבה.
יוצרים אשכול Slurm בגודל A4.
מכינים את עומס העבודה.
מריצים משימת כוונון עדין.
עוקבים אחרי העבודה.
לפנות.
עלויות
במסמך הזה משתמשים ברכיבים הבאים של Google Cloud, והשימוש בהם כרוך בתשלום:
- Compute Engine
- Google Kubernetes Engine (GKE) Enterprise edition
- Filestore
- Cloud Storage
- Cloud Logging
כדי ליצור הערכת עלויות בהתאם לשימוש החזוי, אתם יכולים להשתמש במחשבון התמחור.
לפני שמתחילים
- נכנסים לחשבון 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 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 file.googleapis.com logging.googleapis.com cloudresourcemanager.googleapis.com servicenetworking.googleapis.com
-
מעניקים תפקידים לחשבון המשתמש. מריצים את הפקודה הבאה לכל אחד מהתפקידים הבאים ב-IAM:
roles/compute.admin, roles/iam.serviceAccountUser, roles/file.editor, 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 הפרויקט:
gcloud iam service-accounts enable PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --project=PROJECT_ID
מחליפים את PROJECT_NUMBER במספר הפרויקט. כדי לבדוק את מספר הפרויקט, אפשר לעיין במאמר קבלת פרויקט קיים.
- מקצים את התפקיד 'עריכה' (
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
read. לוחצים על הפרופיל שלך > הגדרות > טוקנים לגישה > +יצירת טוקן חדש.מעתיקים ושומרים את הערך של
readאסימון הגישה. תשתמשו בו בהמשך המדריך הזה.
התקנת Cluster Toolkit
מידע נוסף על השימוש ב-gcluster CLI ועל ניהול אשכולות זמין במאמר סקירה כללית של Cluster Toolkit.
הכנת הגרסה של Cluster Toolkit:
הורדת הגרסה:
מגדירים את הנתיב
gcluster:
הכנת הסביבה
כדי להכין את הסביבה:
מגדירים את משתני הסביבה שמוגדרים כברירת מחדל:
מחליפים את מה שכתוב בשדות הבאים:
YOUR_PROJECT_ID: המזהה שלGoogle Cloud הפרויקט שבו רוצים ליצור את קטגוריה של Cloud Storage.
YOUR_ZONE: האזור שבו קיימת ההזמנה.
YOUR_REGION: האזור שבו קיימת ההזמנה.
YOUR_RESERVATION_NAME: כתובת ה-URL או השם של ההזמנה שבה רוצים להשתמש כדי ליצור את אשכול Slurm.
YOUR_CLUSTER_NAME: השם של אשכול Slurm שרוצים ליצור.
YOUR_GCS_BUCKET: שם לקטגוריה שלכם ב-Cloud Storage שעומד בקריטריונים לשמות של קטגוריות.
YOUR_HF_TOKEN: טוקן הגישה ל-Hugging Face שיצרתם בקטע הקודם.
יוצרים קטגוריה של Cloud Storage:
יצירת אשכול Slurm בגודל A4
כדי ליצור אשכול Slurm בגודל A4:
יוצרים את הקובץ
a4high-slurm-deployment.yaml:מכינים את קובצי המניפסט:
משתמשים בפקודה
gcluster createכדי ליצור את קובצי המניפסט של Terraform:תיקון המניפסטים:
פורסים את האשכול:
הפקודה
gcluster deployהיא תהליך דו-שלבי, שמתבצע כך:בשלב הראשון נוצרת תמונה מותאמת אישית עם כל התוכנות שמותקנות מראש, והתהליך הזה יכול להימשך עד 45 דקות.
בשלב השני, המערכת פורסת את האשכול באמצעות התמונה המותאמת אישית. התהליך הזה בדרך כלל נמשך פחות זמן מהשלב הראשון.
אם השלב הראשון מצליח אבל השלב השני נכשל, אפשר לנסות לפרוס מחדש את אשכול Slurm על ידי דילוג על השלב הראשון:
הכנת עומס העבודה
כדי להכין את עומס העבודה, פועלים לפי השלבים הבאים:
יצירת סקריפטים של עומסי עבודה
כדי ליצור את הסקריפטים שבהם ישתמש עומס העבודה של הכוונון העדין, פועלים לפי השלבים הבאים:
כדי להגדיר את הסביבה הווירטואלית של Python, יוצרים את הקובץ
install_environment.shעם התוכן הבא:כדי לציין את ההגדרות של משימת הכוונון העדין, יוצרים את קובץ
accelerate_config.yamlעם התוכן הבא:כדי לציין את המשימות שהעבודות יפעילו באשכול Slurm, יוצרים את הקובץ
submit.slurmעם התוכן הבא:כדי לציין את יחסי התלות של משימת הכוונון העדין, יוצרים את הקובץ
requirements.txtעם התוכן הבא:כדי לציין את ההוראות למשימה, יוצרים את קובץ
train.pyעם התוכן הבא:
העלאת סקריפטים לאשכול Slurm
כדי להעלות את הסקריפטים שיצרתם בקטע הקודם לאשכול Slurm, פועלים לפי השלבים הבאים:
מגדירים את המשתנה
LOGIN_NODEעל ידי אחזור השם של צומת הכניסה לאשכול:המשתנה
LOGIN_NODEמאחסן ערך דומה ל-${CLUSTER_NAME}-login-001.מעלים את הסקריפטים לספריית הבית של צומת הכניסה:
חיבור לאשכול Slurm
מתחברים לצומת הכניסה ומעבירים את האסימון של Hugging Face לסשן החדש:
התקנת frameworks וכלים
אחרי שמתחברים לצומת הכניסה, מגדירים סביבה וירטואלית של Python עם התלויות הנדרשות:
התחלת עומס העבודה של הכוונון העדין
כדי להתחיל את עומס העבודה של הכוונון העדין, פועלים לפי השלבים הבאים:
שולחים את העבודה למתזמן Slurm ואוספים את מזהה העבודה:
בצומת הכניסה באשכול Slurm, אפשר לעקוב אחרי התקדמות העבודה על ידי בדיקת קובצי הפלט שנוצרו בספרייה
home:אם העבודה מתחילה בהצלחה, בקובץ
.errמוצג סרגל התקדמות שמתעדכן ככל שהעבודה מתקדמת.
מעקב אחר עומס העבודה
אתם יכולים לעקוב אחרי השימוש במעבדי ה-GPU באשכול Slurm כדי לוודא שעבודת הכוונון העדין פועלת ביעילות. כדי לעשות זאת, פותחים את הקישור הבא בדפדפן:
https://console.cloud.google.com/monitoring/metrics-explorer?project=PROJECT_ID&pageState=%7B%22xyChart%22%3A%7B%22dataSets%22%3A%5B%7B%22timeSeriesFilter%22%3A%7B%22filter%22%3A%22metric.type%3D%5C%22agent.googleapis.com%2Fgpu%2Futilization%5C%22%20resource.type%3D%5C%22gce_instance%5C%22%22%2C%22perSeriesAligner%22%3A%22ALIGN_MEAN%22%7D%2C%22plotType%22%3A%22LINE%22%7D%5D%7D%7D
כשעוקבים אחרי עומס העבודה, אפשר לראות את הנתונים הבאים:
שימוש ב-GPU: כדי שמשימת ה-Fine-tuning תפעל בצורה תקינה, אתם אמורים לראות את השימוש בכל 16 יחידות ה-GPU (שמונה יחידות GPU לכל מכונה וירטואלית באשכול) עולה ומתייצב ברמה מסוימת לאורך האימון.
משך העבודה: העבודה צפויה להימשך כשעה.
הסרת המשאבים
כדי להימנע מחיובים בחשבון Google Cloud בגלל השימוש במשאבים שנעשה במסגרת המדריך הזה, אפשר למחוק את הפרויקט שמכיל את המשאבים או להשאיר את הפרויקט ולמחוק את המשאבים בנפרד.
מחיקת אשכול Slurm
כדי למחוק את אשכול Slurm, מריצים את הפקודה gcluster destroy:
אם אתם צריכים למחוק את כל רשתות ה-VPC, כללי חומת האש, הנתבים, כתובות ה-IP ורשתות המשנה שמשויכים לפרויקט, אתם יכולים לעשות זאת כך:
מחיקת הפרויקט
כדי למחוק Google Cloud פרויקט:
gcloud projects delete PROJECT_ID