אימון של Llama2 באמצעות Megatron-LM במכונות וירטואליות מסוג A3 Mega
סקירה כללית
במדריך למתחילים הזה תלמדו איך להריץ עומס עבודה של PyTorch מבוסס-קונטיינר, Megatron-LM, ב-A3 Mega. הקוד זמין במאגר GitHub הזה: megatron-gke.
לפני שמתחילים
כדי להפעיל את Google Kubernetes Engine (GKE) API, פועלים לפי השלבים הבאים:
- נכנסים לחשבון Google Cloud . אנחנו ממליצים למשתמשים חדשים ב- Google Cloud ליצור חשבון כדי שיוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud 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 Google Cloud project.
Enable the GKE 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.-
In the Google Cloud console, on the project selector page, select or create a Google Cloud 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 Google Cloud project.
Enable the GKE 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.-
צריך לוודא שיש לכם בפרויקט את התפקיד או התפקידים הבאים: roles/container.admin, roles/compute.networkAdmin, roles/iam.serviceAccountUser
בדיקת התפקידים
-
נכנסים לדף IAM במסוף Google Cloud .
כניסה לדף IAM - בוחרים את הפרויקט.
-
בעמודה Principal, מחפשים את כל השורות שמזהות אתכם או קבוצה שאתם נכללים בה. כדי לדעת באילו קבוצות אתם נכללים, פנו לאדמין.
- בודקים את העמודה Role בכל השורות שבהן מצוין או מופיע השם שלכם, כדי לראות אם רשימת התפקידים כוללת את התפקידים הנדרשים.
מתן התפקידים
-
נכנסים לדף IAM במסוף Google Cloud .
כניסה לדף IAM - בוחרים את הפרויקט.
- לוחצים על Grant access.
-
בשדה New principals, מזינים את מזהה המשתמש. בדרך כלל מזהה המשתמש הוא כתובת האימייל של חשבון Google.
- לוחצים על Select a role ומחפשים את התפקיד.
- כדי לתת עוד תפקידים, לוחצים על Add another role ומוסיפים אותם.
- לוחצים על Save.
-
יצירת אשכול A3 Mega
יצירת אשכול GKE מסוג A3 Mega עם GPUDirect-TCPXO ורישות מרובה. מידע נוסף זמין במאמר בנושא שיפור רוחב הפס של רשת ה-GPU באמצעות GPUDirect וריבוי רשתות.
מגדירים את הסביבה
יצירת משתני סביבה לכמה פרמטרים נפוצים
export CLUSTER_NAME=CLUSTER_NAME export CONTROL_PLANE_LOCATION=CONTROL_PLANE_LOCATION export PROJECT_ID=PROJECT_ID
מחליפים את מה שכתוב בשדות הבאים:
-
CLUSTER_NAME: השם של אשכול A3 Mega GKE שבו מופעלים GPUDirect-TCPXO וריבוי רשתות. -
CONTROL_PLANE_LOCATION: המיקום של מישור הבקרה של האשכול ב-Compute Engine. מציינים אזור לאשכולות אזוריים או אזור לאשכולות אזוריים. -
PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
-
מגדירים את Google Cloud CLI כך שישתמש בפרטי הכניסה Google Cloud שלכם לצורך אימות:
gcloud auth login
למידע נוסף, אפשר לקרוא את המאמר אימות ל-Google Cloud CLI.
מתקינים את
kubectlואת הפלאגין של ה-CLI של gcloud של GKE:sudo apt-get install kubectl sudo apt-get install google-cloud-cli-gke-gcloud-auth-plugin
מאחזרים את פרטי הכניסה לאשכול GKE:
gcloud container clusters get-credentials ${CLUSTER_NAME} \ --location=${CONTROL_PLANE_LOCATION} \ --project=${PROJECT_ID}אם עדיין לא התקנתם את Helm, אתם צריכים להתקין אותו:
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 chmod 700 get_helm.sh ./get_helm.sh && rm get_helm.sh sudo chmod +x /usr/local/bin/helm
שימוש במתזמן שמודע לטופולוגיה כדי לפרוס את ה-Pods
אתם יכולים להשתמש בכלי לתזמון שמודע לטופולוגיה כדי לפרוס את ה-Pods של GKE לצמתים עם טופולוגיית GPU מוגדרת.
בפקודות kubectl הבאות, תשתמשו בקבצים ישירות ממאגר. לחלופין, אפשר לשכפל את המאגר באופן מקומי, ואז הפקודות kubectl יוכלו להתייחס לקבצים המקומיים.
מידע נוסף זמין במאמר מתזמן הטופולוגיה.
מגדירים את חשבון השירות:
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/gpudirect-tcpxo/topology-scheduler/service-account.yaml
מתקינים את הסקריפטים של מתזמן הטופולוגיה ב-configmap:
curl -OL https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/gpudirect-tcpxo/topology-scheduler/schedule-daemon.py curl -OL https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/gpudirect-tcpxo/topology-scheduler/label-nodes-daemon.py kubectl -n kube-system create configmap topology-scheduler-scripts \ --from-file=schedule-daemon.py=schedule-daemon.py \ --from-file=label-nodes-daemon.py=label-nodes-daemon.pyמתקינים את ה-DaemonSet של התווית של הטופולוגיה ואת ה-Pod של מתזמן הטופולוגיה:
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/gpudirect-tcpxo/topology-scheduler/label-nodes-daemon.yaml $ kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/gpudirect-tcpxo/topology-scheduler/schedule-daemon.yamlבדיקת הפעולות של מתזמן הטופולוגיה:
kubectl -n kube-system logs topology-scheduler-pod
הרצת עומס העבודה
פיתוח קובץ Docker והעברה בדחיפה אל Google Cloud Artifact Registry
יוצרים קטגוריה של Cloud Storage ומאגר Docker. ב-
scripts/setup-and-configure-resources.sh script, מחליפים את שמות הקטגוריה והמאגר בשמות שיצרתם, ואז מריצים את הסקריפט:bash scripts/setup-and-configure-resources.sh
יוצרים את קובץ האימג'
pytorch-megatron:23.11-py3ומעבירים אותו בדחיפה למאגר. מוודאים ששם המאגר ב-Docker בקובץscripts/build-and-push-docker-image.shזהה לשם המאגר שבו השתמשתם בסקריפטscripts/setup-and-configure-resources.sh. אפשר גם לערוך את שם התג של קובץ האימג' של Docker לפני שמעבירים אותו.bash scripts/build-and-push-docker-image.sh
הפעלת הערכת הביצועים של Megatron-LM Llama2
עורכים את הקובץ
helm/values.yamlכדי לציין את הקטגוריה של Cloud Storage ואת קובץ אימג' של Docker שיצרתם בקטעים הקודמים. דוגמאות להגדרות מופיעות במאמר sample-configurations.אופציונלי: אפשר גם לערוך את הקובץ
selected-configuration.shכדי לציין שינויים שביצעתם בהגדרת ברירת המחדל של Helm.helm install HELM_EXPERIMENT_NAME helm/ --values helm/values.yaml
מחליפים את
HELM_EXPERIMENT_NAMEבשם שרוצים לתת לניסוי.
הניסוי כותב מדדים מכלי הפרופיילינג של Nsight Systems לקטגוריה של Cloud Storage שצוינה בספרייה megatron-experiments.
הסרת המשאבים
כדי לא לצבור חיובים לחשבון Google Cloud על המשאבים שבהם השתמשתם בדף הזה:
מוחקים את אשכול GKE:
נכנסים לדף Clusters:
- מסמנים את התיבה של CLUSTER_NAME.
- לוחצים על מחיקה.
- כדי לאשר את המחיקה, מקלידים CLUSTER_NAME ולוחצים על מחיקה.
מחיקת הקטגוריה של Cloud Storage
נכנסים לדף Buckets:
מסמנים את התיבה של קטגוריה של Cloud Storage שיצרתם בשביל המדריך למתחילים הזה.
לוחצים על מחיקה.
כדי לאשר את המחיקה, מקלידים
DELETEולוחצים על מחיקה.