Gemma 3 במסגרת המדריך הזה תלמדו:
יוצרים תמונה בהתאמה אישית.
מגדירים רשת 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
כדי להעריך את ההוצאות בהתאם לתחזית השימוש שלכם, אתם יכולים להיעזר במחשבון העלויות.
לפני שמתחילים
-
התקינו את ה-CLI של Google Cloud.
-
הגדירו שה-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: המזהה של חשבון המשתמש חשבון. דוגמאות מופיעות במאמר ייצוג המשתמשים במאגרי כוח עבודה בכללי מדיניות IAM. -
ROLE: תפקיד ה-IAM שאתם מקצים לחשבון המשתמש.
-
- מפעילים את חשבון השירות שמוגדר כברירת מחדל עבור Google Cloud הפרויקט:
gcloud iam service-accounts enable PROJECT_NUMBER-compute@ \ --project=PROJECT_ID
מחליפים את PROJECT_NUMBER במספר הפרויקט. כדי לבדוק את מספר הפרויקט, אפשר לעיין במאמר איך מקבלים פרויקט קיים.
- מקצים את התפקיד 'עריכה' (
roles/editor) לחשבון השירות שמוגדר כברירת מחדל:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:PROJECT_NUMBER-compute@" \ --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 access. תשתמשו בו בהמשך המדריך הזה.
התקנת Cluster Toolkit
מידע נוסף על שימוש ב-gcluster ועל ניהול אשכולות זמין במאמר סקירה כללית של Cluster Toolkit.
מכינים את הגרסה של Cluster Toolkit:
הורדת הגרסה:
מגדירים את הנתיב
gcluster:
הכנת הסביבה
כדי להכין את הסביבה, פועלים לפי השלבים הבאים:
מגדירים את משתני הסביבה שמוגדרים כברירת מחדל:
מחליפים את מה שכתוב בשדות הבאים:
YOUR_PROJECT_ID: המזהה שלGoogle Cloud הפרויקט שבו רוצים ליצור את קטגוריה של Cloud Storage.
YOUR_ZONE: האזור שבו קיימת ההזמנה.
YOUR_REGION: האזור שבו קיימת ההזמנה.
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:מכינים את קובצי המניפסט:
יוצרים את קובצי המניפסט של 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: כדי שמשימת הכוונון העדין תפעל בצורה תקינה, השימוש בכל 16 יחידות ה-GPU (שמונה יחידות GPU לכל מכונה וירטואלית באשכול) יעלה ויתייצב ברמה מסוימת לאורך האימון.
משך העבודה: העבודה צפויה להימשך כשעה.
הסרת המשאבים
כדי להימנע מחיובים בחשבון Google Cloud בגלל השימוש במשאבים שנעשה במסגרת המדריך הזה, אפשר למחוק את הפרויקט שמכיל את המשאבים, או להשאיר את הפרויקט ולמחוק את המשאבים בנפרד.
מחיקת אשכול Slurm
כדי למחוק את אשכול Slurm:
אם אתם צריכים למחוק את כל רשתות ה-VPC, כללי חומת האש, הנתבים, כתובות ה-IP ורשתות המשנה שמשויכים לפרויקט, אתם צריכים:
מחיקת פרויקט
כדי למחוק פרויקט Google Cloud :
gcloud projects delete PROJECT_ID