אימון Llama2 באמצעות Megatron-LM במכונות וירטואליות מסוג A3 Mega
סקירה כללית
במדריך למתחילים הזה תלמדו איך להריץ עומס עבודה מבוסס-קונטיינר של Megatron-LM PyTorch ב-A3 Mega. הקוד זמין במאגר GitHub הזה: megatron-gke.
לפני שמתחילים
כדי להפעיל את Google Kubernetes Engine (GKE) API, מבצעים את השלבים הבאים:
-
In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance 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 Cloud de Confiance project.
Enable the GKE API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
צריך לוודא שיש לכם בפרויקט את התפקיד או התפקידים הבאים: roles/container.admin, roles/compute.networkAdmin, roles/iam.serviceAccountUser
בדיקת התפקידים
-
נכנסים לדף IAM במסוף Cloud de Confiance .
כניסה לדף IAM - בוחרים את הפרויקט.
-
בעמודה Principal, מחפשים את כל השורות שמזהות אתכם או קבוצה שאתם נכללים בה. כדי לברר באילו קבוצות אתם נכללים, פנו לאדמין.
- בודקים את העמודה Role בכל השורות שבהן מצוין או מופיע השם שלכם, כדי לראות אם רשימת התפקידים כוללת את התפקידים הנדרשים.
מתן התפקידים
-
נכנסים לדף IAM במסוף Cloud de Confiance .
כניסה לדף IAM - בוחרים את הפרויקט.
- לוחצים על Grant access.
-
בשדה New principals, מזינים את מזהה המשתמש. בדרך כלל זה המזהה של משתמש במאגר זהויות של כוח עבודה. למידע נוסף, קראו את המאמר ייצוג המשתמשים במאגרי כוח עבודה בכללי מדיניות IAM או פנו לאדמין שלכם.
- לוחצים על 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: השם של אשכול GKE A3 Mega שבו מופעלים GPUDirect-TCPXO וריבוי רשתות. -
CONTROL_PLANE_LOCATION: המיקום של מישור הבקרה של האשכול ב-Compute Engine. מציינים אזור לאשכולות אזוריים או אזור זמין לאשכולות אזוריים. -
PROJECT_ID: מזהה הפרויקט ב- Cloud de Confiance .
-
מגדירים את Google Cloud CLI כך שישתמש בפרטי הכניסה שלכם לצורך אימות: Cloud de Confiance by S3NS
gcloud auth login
למידע נוסף, אפשר לקרוא את המאמר אימות ל-Google Cloud CLI.
מתקינים את
kubectlואת הפלאגין של ה-CLI של gcloud של GKE:sudo apt-get install kubectl sudo apt-get install google-cloud-sdk-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
מידע נוסף זמין במאמר בנושא Topology scheduler.
מגדירים את חשבון השירות:
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 והעברה בדחיפה אל Cloud de Confiance by S3NS 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.
הסרת המשאבים
כדי לא לצבור חיובים לחשבון Cloud de Confiance על המשאבים שבהם השתמשתם בדף הזה, פועלים לפי השלבים הבאים:
מחיקת אשכול GKE:
עוברים לדף Clusters:
- מסמנים את התיבה של CLUSTER_NAME.
- לוחצים על מחיקה.
- כדי לאשר את המחיקה, מקלידים CLUSTER_NAME ולוחצים על מחיקה.
מחיקת הקטגוריה של Cloud Storage
נכנסים לדף Buckets:
מסמנים את התיבה של קטגוריה של Cloud Storage שיצרתם עבור המדריך למתחילים הזה.
לוחצים על מחיקה.
כדי לאשר את המחיקה, מקלידים
DELETEולוחצים על מחיקה.