אינטליגנציה של נתונים גנרטיביים

הגדל את עומסי העבודה שלך למידת מכונה ב- Amazon ECS המופעל על ידי מופעי AWS Trainium | שירותי האינטרנט של אמזון

תאריך:

הפעלת עומסי עבודה של למידת מכונה (ML) עם קונטיינרים הופכת לנוהג נפוץ. קונטיינרים יכולים לקלוט במלואו לא רק את קוד ההדרכה שלך, אלא את כל ערימת התלות עד לספריות החומרה ולמנהלי התקנים. מה שאתה מקבל הוא סביבת פיתוח ML שהיא עקבית וניידת. עם מיכלים, קנה המידה על אשכול הופך להרבה יותר קל.

בסוף 2022, AWS הודיעה על זמינות כללית של מופעי Amazon EC2 Trn1 מופעל על ידי AWS Trainium מאיצים, שנבנו ייעודיים לאימון למידה עמוקה בביצועים גבוהים. מופעי Trn1 מספקים חיסכון של עד 50% בעלויות הדרכה בהשוואה אחרים ענן מחשוב אלסטי של אמזון (Amazon EC2) מופעים. וגם ה AWS נוירון SDK שוחרר כדי לשפר את האצה הזו, ונותן למפתחים כלים ליצירת אינטראקציה עם טכנולוגיה זו כגון קומפילציה, זמן ריצה ופרופיל כדי להשיג הדרכות מודלים בעלות ביצועים גבוהים וחסכוניים.

שירות מיכלים אלסטי של אמזון (Amazon ECS) הוא שירות תזמור קונטיינרים מנוהל במלואו המפשט את הפריסה, הניהול והקנה מידה של יישומים עם מיכל. כל שעליך לעשות הוא לתאר את היישום שלך ואת המשאבים הנדרשים, ואמזון ECS תשיק, תנטר ותרחיב את היישום שלך על פני אפשרויות מחשוב גמישות עם אינטגרציות אוטומטיות לשירותי AWS תומכים אחרים שהיישום שלך צריך.

בפוסט זה, אנו מראים לך כיצד להפעיל את עבודות ההדרכה שלך ב-ML במיכל באמצעות Amazon ECS כדי לפרוס, לנהל ולהרחיב את עומס העבודה שלך ב-ML.

סקירת פתרונות

אנו מדריכים אותך בשלבים הבאים ברמה הגבוהה:

  1. ספק אשכול ECS של מופעי Trn1 עם AWS CloudFormation.
  2. בנו תמונת מיכל מותאמת אישית עם Neuron SDK ודחוף אותה אל מרשם מיכל אלסטי של אמזון (אמזון ECR).
  3. צור הגדרת משימה להגדרת עבודת אימון ML שתופעל על ידי Amazon ECS.
  4. הפעל את משימת ה-ML ב- Amazon ECS.

תנאים מוקדמים

כדי לעקוב אחר כך, משתמעת היכרות עם שירותי ליבה של AWS כגון Amazon EC2 ו- Amazon ECS.

ספק אשכול ECS של מופעי Trn1

כדי להתחיל, הפעל את הגרסה המסופקת תבנית CloudFormation, אשר יספק משאבים נדרשים כגון VPC, Cluster ECS ומופע EC2 Trainium.

אנו משתמשים ב- Neuron SDK כדי להפעיל עומסי עבודה של למידה עמוקה Afer Inferentia ומופעים מבוססי Trainium. זה תומך בך במחזור החיים של פיתוח ML מקצה לקצה כדי ליצור מודלים חדשים, לייעל אותם ואז לפרוס אותם לייצור. כדי לאמן את הדגם שלך עם Trainium, עליך להתקין את Neuron SDK במופעי EC2 שבהם יפעלו משימות ה-ECS כדי למפות את NeuronDevice המשויך לחומרה, כמו גם את תמונת Docker שתידחף לאמזון ECR כדי לגשת לפקודות לאמן את הדגם שלך.

גרסאות סטנדרטיות של Amazon Linux 2 או Ubuntu 20 אינן מגיעות עם מנהלי התקנים של AWS Neuron. לכן, יש לנו שתי אפשרויות שונות.

האפשרות הראשונה היא להשתמש ב-Deep Learning Amazon Machine Image (DLAMI) שבה כבר מותקן Neuron SDK. דוגמה זמינה באתר GitHub ריפו. אתה יכול לבחור DLAMI על בסיס מערכת הפעלה. לאחר מכן הפעל את הפקודה הבאה כדי לקבל את מזהה AMI:

aws ec2 describe-images --region us-east-1 --owners amazon --filters 'Name=name,Values=Deep Learning AMI Neuron PyTorch 1.13.? (Amazon Linux 2) ????????' 'Name=state,Values=available' --query 'reverse(sort_by(Images, &CreationDate))[:1].ImageId' --output text

הפלט יהיה כדלקמן:

ami-06c40dd4f80434809

מזהה AMI זה יכול להשתנות עם הזמן, אז הקפד להשתמש בפקודה כדי לקבל את מזהה AMI הנכון.

כעת תוכל לשנות את מזהה AMI זה בסקריפט של CloudFormation ולהשתמש ב- Neuron SDK המוכן לשימוש. כדי לעשות זאת, חפש EcsAmiId in Parameters:

"EcsAmiId": { "Type": "String", "Description": "AMI ID", "Default": "ami-09def9404c46ac27c" }

האפשרות השנייה היא ליצור מופע הממלא את userdata שדה במהלך יצירת הערימה. אינך צריך להתקין אותו כי CloudFormation יגדיר זאת. למידע נוסף, עיין ב מדריך התקנה של Neuron.

עבור פוסט זה, אנו משתמשים באפשרות 2, למקרה שתצטרך להשתמש בתמונה מותאמת אישית. השלם את השלבים הבאים:

  1. הפעל את תבנית CloudFormation שסופקה.
  2. בעד שם מפתח, הזן שם של זוג המפתחות הרצוי שלך, והוא יטען מראש את הפרמטרים. עבור פוסט זה, אנו משתמשים trainium-key.
  3. הזן שם עבור המחסנית שלך.
  4. אם אתה רץ ב us-east-1 אזור, אתה יכול לשמור את הערכים עבור שם אלב ו AZIDs כברירת מחדל.

כדי לבדוק באיזה אזור זמינות באזור יש Trn1 זמין, הפעל את הפקודה הבאה:

aws ec2 describe-instance-type-offerings --region us-east1 --location-type availability-zone --filter Name=instance-type,Values=trn1.2xlarge

  1. לבחור הַבָּא ולסיים ליצור את הערימה.

כאשר הערימה תושלם, תוכל לעבור לשלב הבא.

הכן ודחוף תמונת ECR עם Neuron SDK

Amazon ECR הוא רישום מיכלים מנוהל במלואו המציע אירוח בעל ביצועים גבוהים, כך שתוכל לפרוס באופן מהימן תמונות אפליקציות וחפצים בכל מקום. אנו משתמשים ב-Amazon ECR כדי לאחסן תמונת Docker מותאמת אישית המכילה את הסקריפטים ואת חבילות ה-Neuron שלנו הדרושים כדי להכשיר מודל עם עבודות ECS הפועלות במופעי Trn1. אתה יכול ליצור מאגר ECR באמצעות ה ממשק שורת הפקודה של AWS (AWS CLI) או קונסולת הניהול של AWS. עבור פוסט זה, אנו משתמשים בקונסולה. השלם את השלבים הבאים:

  1. בקונסולת Amazon ECR, צור מאגר חדש.
  2. בעד הגדרות נראותבחר פְּרָטִי.
  3. בעד שם המאגר, הכנס שם.
  4. לבחור צור מאגר.

עכשיו כשיש לך מאגר, בוא נבנה ונדחוף תמונה, שיכולה להיבנות באופן מקומי (למחשב הנייד שלך) או ב- AWS Cloud9 סביבה. אנו מאמנים מודל פרצפטרון רב שכבתי (MLP). לקוד המקורי, עיין ב מדריך אימון פרספטרונים רב-שכבתי.

  1. העתק train.py ו model.py קבצים לתוך פרויקט.

זה כבר תואם ל- Neuron, כך שאינך צריך לשנות שום קוד.

  1. 5. ליצור דוקרפיל שיש לו את הפקודות להתקנת ה- Neuron SDK ותסריטי אימון:
FROM amazonlinux:2 RUN echo $'[neuron] n
name=Neuron YUM Repository n
baseurl=https://yum.repos.neuron.amazonaws.com n
enabled=1' > /etc/yum.repos.d/neuron.repo RUN rpm --import https://yum.repos.neuron.amazonaws.com/GPG-PUB-KEY-AMAZON-AWS-NEURON.PUB RUN yum install aws-neuronx-collectives-2.* -y
RUN yum install aws-neuronx-runtime-lib-2.* -y
RUN yum install aws-neuronx-tools-2.* -y
RUN yum install -y tar gzip pip
RUN yum install -y python3 python3-pip
RUN yum install -y python3.7-venv gcc-c++
RUN python3.7 -m venv aws_neuron_venv_pytorch # Activate Python venv
ENV PATH="/aws_neuron_venv_pytorch/bin:$PATH"
RUN python -m pip install -U pip
RUN python -m pip install wget
RUN python -m pip install awscli RUN python -m pip config set global.extra-index-url https://pip.repos.neuron.amazonaws.com
RUN python -m pip install torchvision tqdm torch-neuronx neuronx-cc==2.* pillow
RUN mkdir -p /opt/ml/mnist_mlp
COPY model.py /opt/ml/mnist_mlp/model.py
COPY train.py /opt/ml/mnist_mlp/train.py
RUN chmod +x /opt/ml/mnist_mlp/train.py
CMD ["python3", "/opt/ml/mnist_mlp/train.py"]

כדי ליצור Dockerfile משלך באמצעות Neuron, עיין ב פתח במופע מאיץ AWS ML, שבו תוכל למצוא מדריכים עבור מסגרות OS ו-ML אחרות.

  1. 6. בנה תמונה ולאחר מכן דחף אותה לאמזון ECR באמצעות הקוד הבא (ספק האזור, מזהה החשבון ומאגר ה-ECR שלך):
aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin {your-account-id}.dkr.ecr.{your-region}.amazonaws.com docker build -t mlp_trainium . docker tag mlp_trainium:latest {your-account-id}.dkr.ecr.us-east-1.amazonaws.com/mlp_trainium:latest docker push {your-account-id}.dkr.ecr.{your-region}.amazonaws.com/{your-ecr-repo-name}:latest

לאחר מכן, גרסת התמונה שלך אמורה להיות גלויה במאגר ה-ECR שיצרת.

הפעל את עבודת הכשרת ML כמשימת ECS

כדי להפעיל את משימת ההדרכה של ML ב- Amazon ECS, תחילה עליך ליצור א הגדרת משימה. נדרשת הגדרת משימה כדי להפעיל קונטיינרים של Docker באמזון ECS.

  1. בקונסולת Amazon ECS, בחר הגדרות משימה בחלונית הניווט.
  2. על צור הגדרת משימה חדשה בתפריט, בחר צור הגדרת משימה חדשה עם JSON.

אתה יכול להשתמש בפעולות הבאות תבנית הגדרת משימה בתור בסיס. שימו לב שבשדה התמונה תוכלו להשתמש בזו שנוצרה בשלב הקודם. ודא שהוא כולל את מזהה החשבון שלך ושם מאגר ECR.

כדי לוודא כי Neuron מותקן, אתה יכול לבדוק אם עוצמת הקול /dev/neuron0 ממופה בבלוק ההתקנים. זה ממפה לסינגל NeuronDevice פועל על המופע trn1.2xlarge עם שתי ליבות.

  1. צור את הגדרת המשימה שלך באמצעות התבנית הבאה:
{ "family": "mlp_trainium", "containerDefinitions": [ { "name": "mlp_trainium", "image": "{your-account-id}.dkr.ecr.us-east-1.amazonaws.com/{your-ecr-repo-name}", "cpu": 0, "memoryReservation": 1000, "portMappings": [], "essential": true, "environment": [], "mountPoints": [], "volumesFrom": [], "linuxParameters": { "capabilities": { "add": [ "IPC_LOCK" ] }, "devices": [ { "hostPath": "/dev/neuron0", "containerPath": "/dev/neuron0", "permissions": [ "read", "write" ] } ] }, , "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-create-group": "true", "awslogs-group": "/ecs/task-logs", "awslogs-region": "us-east-1", "awslogs-stream-prefix": "ecs" } } } ], "networkMode": "awsvpc", "placementConstraints": [ { "type": "memberOf", "expression": "attribute:ecs.os-type == linux" }, { "type": "memberOf", "expression": "attribute:ecs.instance-type == trn1.2xlarge" } ], "requiresCompatibilities": [ "EC2" ], "cpu": "1024", "memory": "3072"
}

אתה יכול גם להשלים שלב זה ב-AWS CLI באמצעות הפעולות הבאות הגדרת משימה או עם הפקודה הבאה:

aws ecs register-task-definition --family mlp-trainium --container-definitions '[{ "name": "my-container-1", "image": "{your-account-id}.dkr.ecr.us-east-1.amazonaws.com/{your-ecr-repo-name}", "cpu": 0, "memoryReservation": 1000, "portMappings": [], "essential": true, "environment": [], "mountPoints": [], "volumesFrom": [], "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-create-group": "true", "awslogs-group": "/ecs/task-logs", "awslogs-region": "us-east-1", "awslogs-stream-prefix": "ecs" } }, "linuxParameters": { "capabilities": { "add": [ "IPC_LOCK" ] }, "devices": [{ "hostPath": "/dev/neuron0", "containerPath": "/dev/neuron0", "permissions": ["read", "write"] }] }
}]' --requires-compatibilities EC2
--cpu "8192" --memory "16384" --placement-constraints '[{ "type": "memberOf", "expression": "attribute:ecs.instance-type == trn1.2xlarge"
}, { "type": "memberOf", "expression": "attribute:ecs.os-type == linux"
}]'

הפעל את המשימה ב- Amazon ECS

לאחר שיצרנו את אשכול ה-ECS, דחפנו את התמונה לאמזון ECR ויצרנו את הגדרת המשימה, אנו מפעילים את הגדרת המשימה כדי להכשיר מודל ב- Amazon ECS.

  1. בקונסולת Amazon ECS, בחר אשכולות בחלונית הניווט.
  2. פתח את האשכול שלך.
  3. על משימות בחר, בחר הפעל משימה חדשה.

  1. בעד סוג השקה, בחר EC2.

  1. בעד סוג היישום, בחר המשימות.
  2. בעד מִשׁפָּחָה, בחר את הגדרת המשימה שיצרת.

  1. ב רישות בסעיף, ציין את ה-VPC שנוצר על ידי מחסנית CloudFormation, רשת המשנה וקבוצת האבטחה.

  1. לבחור צור.

אתה יכול לעקוב אחר המשימה שלך בקונסולת Amazon ECS.

אתה יכול גם להריץ את המשימה באמצעות AWS CLI:

aws ecs run-task --cluster <your-cluster-name> --task-definition <your-task-name> --count 1 --network-configuration '{"awsvpcConfiguration": {"subnets": ["<your-subnet-name> "], "securityGroups": ["<your-sg-name> "] }}'

התוצאה תיראה כמו צילום המסך הבא.

אתה יכול גם לבדוק את פרטי עבודת ההדרכה דרך ה אמזון CloudWatch קבוצת יומן.

לאחר שתכשיר את הדגמים שלך, תוכל לאחסן אותם שירות אחסון פשוט של אמזון (אמזון S3).

לנקות את

כדי למנוע הוצאות נוספות, אתה יכול לשנות את קבוצת קנה המידה האוטומטי ל קיבולת מינימלית ו יכולת רצויה לאפס, כדי לסגור את מופעי ה-Trainium. כדי לבצע ניקוי מלא, מחק את ערימת CloudFormation כדי להסיר את כל המשאבים שנוצרו על ידי תבנית זו.

סיכום

בפוסט זה, הראינו כיצד להשתמש ב- Amazon ECS כדי לפרוס את משרות ההדרכה שלך ב-ML. יצרנו תבנית CloudFormation ליצירת אשכול ה-ECS של מופעי Trn1, בנינו תמונת Docker מותאמת אישית, דחפנו אותה לאמזון ECR, והרצנו את עבודת ההדרכה של ML באשכול ה-ECS באמצעות מופע של Trainium.

למידע נוסף על Neuron ומה אתה יכול לעשות עם Trainium, עיין במשאבים הבאים:


על הכותבים

גילרמה ריצ'י הוא ארכיטקט פתרונות סטארט-אפ בכיר בשירותי האינטרנט של אמזון, המסייע לסטארט-אפים לבצע מודרניזציה ואופטימיזציה של עלויות היישומים שלהם. עם למעלה מ-10 שנות ניסיון עם חברות במגזר הפיננסי, הוא עובד כיום עם צוות של מומחי AI/ML.

אוונדרו פרנקו הוא ארכיטקט פתרונות מומחה בינה מלאכותית/ML שעובד על שירותי האינטרנט של אמזון. הוא עוזר ללקוחות AWS להתגבר על אתגרים עסקיים הקשורים ל-AI/ML על גבי AWS. יש לו יותר מ-15 שנים בעבודה עם טכנולוגיה, מפיתוח תוכנה, תשתית, ללא שרת ועד למידת מכונה.

מתיו מקלין מוביל את צוות Annapurna ML Solution Architecture שעוזר ללקוחות לאמץ את מוצרי AWS Trainium ו-AWS Inferentia. הוא נלהב מבינה מלאכותית גנרטיבית וסייע ללקוחות לאמץ טכנולוגיות AWS במשך 10 השנים האחרונות.

ספוט_ימג

המודיעין האחרון

ספוט_ימג

דבר איתנו

שלום שם! איך אני יכול לעזור לך?