AWS Inferentia2 מתבסס על AWS Inferentia1 על ידי אספקת תפוקה גבוהה פי 4 והשהייה נמוכה פי 10 | שירותי האינטרנט של אמזון

AWS Inferentia2 מתבסס על AWS Inferentia1 על ידי אספקת תפוקה גבוהה פי 4 והשהייה נמוכה פי 10 | שירותי האינטרנט של אמזון

הגודל של מודלים של למידת מכונה (ML) - מודלים של שפות גדולות (לימודי תואר שני) ודגמי יסוד (FMs)––גדל מהר משנה לשנה, והדגמים האלה צריכים מאיצים מהירים וחזקים יותר, במיוחד עבור AI גנרטיבי. AWS Inferentia2 תוכנן מהיסוד לספק ביצועים גבוהים יותר תוך הפחתת העלות של LLMs והסקת AI יצירתית.

בפוסט זה, אנו מראים כיצד הדור השני של AWS Inferentia מתבסס על היכולות שהוצגו עם AWS Inferentia1 ועונה על הדרישות הייחודיות של פריסה והרצה של LLMs ו-FMs.

הדור הראשון של AWS Inferentia, מאיץ ייעודי שהושק ב-2019, מותאם להאצת הסקת למידה עמוקה. AWS Inferentia סייעה למשתמשי ML להפחית את עלויות ההסקה שלהם ולשפר את תפוקת הניבוי והשהייה שלהם. עם AWS Inferentia1, לקוחות ראו תפוקה גבוהה פי 2.3 ועלות נמוכה עד 70% להסקת מסקנות בהשוואה לאופטימיזציה של הסקה ענן מחשוב אלסטי של אמזון (Amazon EC2) מופעים.

AWS Inferentia2, מוצג בגרסה החדשה מקרים של אמזון EC2 Inf2 ונתמך ב אמזון SageMaker, מותאם להסקת AI יצירתית בקנה מידה גדול והוא המופע הראשון ממוקד ההסקה מ-AWS המותאם להסקת הסקה מבוזרת, עם קישוריות במהירות גבוהה, עם חביון נמוך בין מאיצים.

כעת אתה יכול לפרוס ביעילות מודל של 175 מיליארד פרמטרים להסקת מסקנות על פני מספר מאיצים במופע אחד של Inf2 מבלי להידרש למופעי אימון יקרים. עד עכשיו, לקוחות שהיו להם דגמים גדולים יכלו להשתמש רק במופעים שנבנו לאימון, אבל זה בזבוז של משאבים – בהתחשב בכך שהם יקרים יותר, צורכים יותר אנרגיה ועומס העבודה שלהם לא מנצל את כל משאבים זמינים (כגון רשת ואחסון מהירים יותר). עם AWS Inferentia2, אתה יכול להשיג תפוקה גבוהה פי 4 ועד פי 10 חביון נמוך יותר בהשוואה ל-AWS Inferentia1. כמו כן, הדור השני של AWS Inferentia מוסיף תמיכה משופרת עבור סוגי נתונים נוספים, אופרטורים מותאמים אישית, טנזורים דינמיים ועוד.

ל-AWS Inferentia2 קיבולת זיכרון גדולה פי 4, רוחב פס זיכרון גבוה פי 16.4 מאשר ל-AWS Inferentia1, ותמיכה מקורית לריסוק דגמים גדולים על פני מספר מאיצים. המאיצים משתמשים NeuronLink ו- Neuron Collective Communication כדי למקסם את מהירות העברת הנתונים ביניהם או בין מאיץ למתאם הרשת. AWS Inferentia2 מתאים יותר לדגמים גדולים יותר, הדורשים פיצול על פני מספר מאיצים, אם כי AWS Inferentia1 היא עדיין אופציה מצוינת עבור דגמים קטנים יותר מכיוון שהוא מספק ביצועי מחיר טובים יותר בהשוואה לחלופות.

אבולוציה של אדריכלות

כדי להשוות את שני הדורות של AWS Inferentia, בואו נסקור את ארכיטקטורה של AWS Inferentia1. יש לו ארבעה NeuronCores v1 לכל שבב, המוצג בתרשים הבא.

AWS Inferentia2 מתבסס על AWS Inferentia1 על ידי אספקת תפוקה גבוהה פי 4 והשהייה נמוכה פי 10 | Amazon Web Services PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

מפרטים לכל שבב:

  • לחשב - ארבע ליבות המספקות בסך הכל 128 INT8 TOPS ו-64FP16/BF16 TFLOPS
  • זכרון - 8 GB של DRAM (50 GB/sek של רוחב פס), משותף לכל ארבע הליבות
  • NeuronLink – קישור בין ליבות לריסוק דגמים על פני שתי ליבות או יותר

בואו נסתכל כיצד מאורגן AWS Inferentia2. לכל שבב AWS Inferentia2 יש שתי ליבות משודרגות המבוססות על ארכיטקטורת NeuronCore-v2. כמו AWS Inferentia1, אתה יכול להריץ דגמים שונים על כל NeuronCore או לשלב מספר ליבות כדי לרסיס דגמים גדולים.

AWS Inferentia2 מתבסס על AWS Inferentia1 על ידי אספקת תפוקה גבוהה פי 4 והשהייה נמוכה פי 10 | Amazon Web Services PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

מפרטים לכל שבב:

  • לחשב – שתי ליבות המספקות בסך הכל 380 INT8 TOPS, 190 FP16/BF16/cFP8/TF32 TFLOPS ו-47.5 FP32 TFLOPS
  • זכרון – 32 GB של HBM, משותף לשתי הליבות
  • NeuronLink - קישור בין שבבים (384 ג'יגה-בייט לשנייה למכשיר) לריסוק דגמים על פני שתי ליבות או יותר

ל- NeuronCore-v2 יש א עיצוב מודולרי עם ארבעה מנועים עצמאיים:

  • ScalarEngine (פי 3 מהיר יותר מ-v1) – פועל על מספרי נקודה צפה––1600 (BF16/FP16) FLOPS
  • VectorEngine (מהיר פי 10 מ-v1) - פועל על וקטורים של מספרים עם פעולה אחת עבור חישובים כגון נורמליזציה, איגום ועוד.
  • TensorEngine (פי 6 מהיר יותר מ-v1) - מבצע חישובי טנסור כגון Conv, Reshape, Transpose ואחרים.
  • מנוע GPSIMD - בעל שמונה מעבדים ניתנים לתכנות מלא ברוחב של 512 סיביות לשימוש כללי שתוכל ליצור את שלך מפעילים מותאמים אישית עם סטנדרטי PyTorch מותאם אישית C++ אופרטורים API. זוהי תכונה חדשה, שהוצגה ב- NeuronCore-v2.

AWS Inferentia2 NeuronCore-v2 מהיר יותר ומוטב יותר. כמו כן, הוא מסוגל להאיץ סוגים וגדלים שונים של דגמים, החל מדגמים פשוטים כמו ResNet 50 ועד מודלים של שפות גדולות או מודלים בסיסיים עם מיליארדי פרמטרים כגון GPT-3 (175 מיליארד פרמטרים). ל-AWS Inferentia2 יש גם זיכרון פנימי גדול ומהיר יותר, בהשוואה ל-AWS Inferentia1, כפי שמוצג בטבלה הבאה.

שְׁבָב ליבות נוירון סוג הזיכרון גודל זיכרון רוחב פס של זיכרון
Afer Inferentia x4 (v1) DDR4 8GB 50GB / S
AWS Inferentia 2 x2 (v2) HBM 32GB 820GB / S

הזיכרון שאתה מוצא ב-AWS Inferentia2 הוא מסוג High-Bandwidth Memory (HBM). לכל שבב AWS Inferentia2 יש 32 GB וזה יכול להיות משולב עם שבבים אחרים כדי להפיץ דגמים גדולים מאוד באמצעות NeuronLink (חיבור בין התקן למכשיר). ל-inf2.48xlarge, למשל, יש 12 מאיצי AWS Inferentia2 עם סך של 384 GB של זיכרון מואץ. המהירות של זיכרון AWS Inferentia2 מהירה פי 16.4 מזו של AWS Inferentia1, כפי שמוצג בטבלה הקודמת.

תכונות אחרות

AWS Inferentia2 מציע את התכונות הנוספות הבאות:

  • חומרה נתמכת - cFP8 (חדש, ניתן להגדרה), FP8, BF16, TF16, FP32, INT32, INT8 ו-INT16. למידע נוסף, עיין ב סוגי מידע.
  • מסקנת טנסור עצלנית - אנו דנים מסקנת טנסור עצלנית בהמשך הפוסט הזה.
  • מפעילים מותאמים אישית - מפתחים יכולים להשתמש בממשקי תכנות סטנדרטיים של מפעילים מותאמים אישית של PyTorch כדי להשתמש ב מפעילי C++ מותאמים אישית תכונה. מפעיל מותאם אישית מורכב מפרימיטיבים ברמה נמוכה הזמינים ב- פונקציות מפעל טנסור ומואצת על ידי GPSIMD-Engine.
  • זרימת בקרה (בקרוב) - זה נועד לזרימת בקרת שפת תכנות מקורית בתוך המודל כדי בסופו של דבר לעבד מראש ולאחר עיבוד נתונים משכבה אחת לאחרת.
  • צורות דינמיות (בקרוב) - זה שימושי כאשר המודל שלך משנה את צורת הפלט של כל שכבה פנימית באופן דינמי. לדוגמה: מסנן שמפחית את גודל או צורת הטנזור הפלט בתוך המודל, בהתבסס על נתוני הקלט.

מודלים מאיצים ב-AWS Inferentia1 ו-AWS Inferentia2

השמיים AWS נוירון SDK משמש להידור והרצה של המודל שלך. זה משולב באופן טבעי עם PyTorch ו-TensorFlow. כך, אינך צריך להפעיל כלי נוסף. השתמש בקוד המקורי שלך, שנכתב באחת ממסגרות ה-ML הללו, ועם כמה שורות של שינויים בקוד, אתה טוב ללכת עם AWS Inferentia.

בואו נסתכל כיצד להרכיב ולהפעיל מודל על AWS Inferentia1 ו-AWS Inferentia2 באמצעות PyTorch.

טען דגם מאומן מראש (ResNet 50) מ-torchvision

טען דגם מאומן מראש והפעל אותו פעם אחת כדי לחמם אותו:

import torch
import torchvision model = torchvision.models.resnet50(weights='IMAGENET1K_V1').eval().cpu()
x = torch.rand(1,3,224,224).float().cpu() # dummy input
y = model(x) # warmup model

עקבו אחר המודל המואץ ופרסו אותו ב-Inferentia1

כדי להתחקות אחר המודל ל-AWS Inferentia, ייבא torch_neuron ולהפעיל את פונקציית המעקב. זכור שהדגם צריך להיות ניתן למעקב PyTorch Jit כדי לעבוד.

בסוף תהליך האיתור, שמור את המודל כדגם PyTorch רגיל. הרכיב את הדגם פעם אחת וטען אותו בחזרה כמה פעמים שאתה צריך. זמן הריצה של Neuron SDK כבר משולב ב- PyTorch והוא אחראי על שליחת המפעילים לשבב AWS Inferentia1 באופן אוטומטי כדי להאיץ את הדגם שלך.

בקוד ההסקה שלך, אתה תמיד צריך לייבא torch_neuron כדי להפעיל את זמן הריצה המשולב.

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

import torch_neuron # Tracing the model using AWS NeuronSDK
neuron_model = torch_neuron.trace(model,x) # trace model to Inferentia
# Saving for future use
neuron_model.save('neuron_resnet50.pt') # Next time you don't need to trace the model again
# Just load it and AWS NeuronSDK will send it to Inferentia automatically
neuron_model = torch.jit.load('neuron_resnet50.pt') # accelerated inference on Inferentia
y = neuron_model(x)

מעקב ופריסה של המודל המואץ ב-Inferentia2

עבור AWS Inferentia2, התהליך דומה. ההבדל היחיד הוא שהחבילה שאתה מייבא מסתיימת ב-x: torch_neuronx. ה- Neuron SDK דואגת להידור והרצה של המודל עבורכם בשקיפות. אפשר גם לעבור פרמטרים נוספים למהדר כדי לכוונן את הפעולה או להפעיל פונקציות ספציפיות.

import torch_neuronx # Tracing the model using NeuronSDK
neuron_model = torch_neuronx.trace(model,x) # trace model to Inferentia
# Saving for future use
neuron_model.save('neuron_resnet50.pt') # Next time you don't need to trace the model again
# Just load it and NeuronSDK will send it to Inferentia automatically
neuron_model = torch.jit.load('neuron_resnet50.pt') # accelerated inference on Inferentia
y = neuron_model(x)

AWS Inferentia2 מציעה גם גישה שנייה להפעלת מודל שנקרא מסקנת טנסור עצלנית. במצב זה, אינך מתחקה או מקמפל את המודל קודם לכן; במקום זאת, המהדר פועל תוך כדי תנועה בכל פעם שאתה מפעיל את הקוד שלך. זה לא מומלץ לייצור, בהתחשב בעובדה שיש למצב מעקב יתרונות רבים על הסקת טנסור עצלנית. עם זאת, אם אתה עדיין מפתח את הדגם שלך וצריך לבדוק אותו מהר יותר, מסקנות של Lazy Tensor יכולה להיות חלופה טובה. הנה איך לקמפל ולהפעיל מודל באמצעות Lazy Tensor:

import torch
import torchvision
import torch_neuronx
import torch_xla.core.xla_model as xm device = xm.xla_device() # Create XLA device
model = torchvision.models.resnet50(weights='IMAGENET1K_V1').eval().cpu()
model.to(device) x = torch.rand((1,3,224,224), device=device) # dummy input
with torch.no_grad(): y = model(x) xm.mark_step() # Compilation occurs here

עכשיו כשאתה מכיר את AWS Inferentia2, הצעד הבא הטוב הוא להתחיל עם PyTorch or זרימת מתיחה וללמוד כיצד להגדיר סביבת מפתחים ולהפעיל הדרכות ודוגמאות. כמו כן, בדוק את AWS Neuron דוגמת ריפו של GitHub, שבו תוכל למצוא דוגמאות מרובות כיצד להכין מודלים להפעלה על Inf2, Inf1 ו-Trn1.

סיכום השוואת תכונות בין AWS Inferentia1 ל-AWS Inferentia2

מהדר AWS Inferentia2 הוא מבוסס XLA, ו-AWS הוא חלק מ יוזמת OpenXLA. זהו ההבדל הגדול ביותר ביחס ל-AWS Inferentia1, וזה רלוונטי מכיוון של-PyTorch, TensorFlow ו-JAX יש שילובים מקוריים של XLA. XLA מביא שיפורי ביצועים רבים, בהתחשב בכך שהוא מייעל את הגרף כדי לחשב את התוצאות בהשקת ליבה אחת. הוא ממזג יחד פעולות טנזור עוקבות ומוציא קוד מכונה אופטימלי להאצת ריצות מודל ב-AWS Inferentia2. חלקים אחרים של Neuron SDK שופרו גם הם ב-AWS Inferentia2, תוך שמירה על חווית המשתמש פשוטה ככל האפשר תוך מעקב והרצת דגמים. הטבלה הבאה מציגה את התכונות הזמינות בשתי הגרסאות של המהדר ובזמן הריצה.

מאפיין לפיד-נוירון לפיד-נוירון
לוח מחוונים יש יש
מופעים נתמכים אינפ 1 Inf2 & Trn1
תמיכת מסקנות יש יש
תמיכה באימונים לא יש
אדריכלות NeuronCore-v1 NeuronCore-v2
Trace API torch_neuron.trace() torch_neuronx.trace()
מסקנות מבוזרות NeuronCore Pipeline תקשורת קולקטיבית
IR GraphDef HLO
מהדר neuron-cc neuronx-cc
ניטור מוניטור נוירון / צג-עליון מוניטור נוירון / צג-עליון

להשוואה יותר מפורטת בין torch-neuron (Inf1) ו torch-neuronx (Inf2), עיין ב השוואה של לפיד-נוירון (Inf1) לעומת לפיד-נוירון (Inf2 ו-Trn1) עבור מסקנות.

הגשת דגם

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

AWS Inferentia2 תואם לטכנולוגיות הפריסה הפופולריות ביותר. הנה רשימה של כמה מהאפשרויות שיש לך לפריסת מודלים באמצעות AWS Inferentia2:

  • SageMaker - שירות מנוהל באופן מלא להכנת נתונים ובנייה, אימון ופריסה של מודלים של ML
  • לפידרבס – מנגנון פריסה משולב של PyTorch
  • הגשת TensorFlow – מנגנון פריסה משולב של TensorFlow
  • ספריית ג'אווה עמוקה – מנגנון Java קוד פתוח לפריסה והדרכה של מודלים
  • טריטון - שירות קוד פתוח של NVIDIA לפריסת מודלים

בנצ 'מרק

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

שני מודלים שימשו בתהליך זה - שניהם מודלים של שפה גדולים: ELECTRA גדול discriminator ו-BERT large uncased. שנאי PyTorch (1.13.1) ו- Hugging Face (v4.7.0), הספריות העיקריות בהן נעשה שימוש בניסוי זה, פעלו על פייתון 3.8. לאחר קומפילציה של המודלים עבור גודל אצווה = 1 ו-10 (באמצעות הקוד מהסעיף הקודם כהתייחסות), כל דגם התחמם (הופעל פעם אחת כדי לאתחל את ההקשר) ולאחר מכן הופעל 10 פעמים ברציפות. הטבלה הבאה מציגה מספרים ממוצעים שנאספו במדד פשוט זה.

שם דגם גודל אצווה אורך המשפט זמן אחזור (אלפיות השנייה) שיפורים ב-Inf2 על פני Inf1 (x פעמים) תפוקה (הסקות לשנייה) עלות להסקה (EC2 us-east-1) **
אינפ 1 אינפ 2 אינפ 1 אינפ 2 אינפ 1 אינפ 2
ElectraLarge Discriminator 1 256 35.7 8.31 4.30 28.01 120.34 $0.0000023 $0.0000018
ElectraLarge Discriminator 10 256 343.7 72.9 4.71 2.91 13.72 $0.0000022 $0.0000015
BertLargeUncased 1 128 28.2 3.1 9.10 35.46 322.58 $0.0000018 $0.0000007
BertLargeUncased 10 128 121.1 23.6 5.13 8.26 42.37 $0.0000008 $0.0000005

* c6a.8xlarge עם 32 מעבד AMD Epyc 7313 שימש בנצ'מרק זה.

**תמחור EC2 ציבורי ב-us-east-1 ב-20 באפריל: inf2.xlarge: $0.7582/שעה; inf1.xlarge: $0.228 לשעה. עלות להסקת מסקנות מתייחסת לעלות לרכיב באצווה. (עלות להסקת מסקנות שווה לעלות הכוללת של הפעלת מודל/גודל אצווה.)

למידע נוסף על אימון וביצועי מסקנות, עיין ב ביצועים של Trn1/Trn1n.

סיכום

AWS Inferentia2 היא טכנולוגיה רבת עוצמה המיועדת לשיפור ביצועים והפחתת עלויות של הסקת מודל למידה עמוקה. בעל ביצועים גבוהים יותר מ-AWS Inferentia1, הוא מציע תפוקה גבוהה פי 4, זמן השהייה נמוך עד פי 10, ועד 50% ביצועים/וואט טובים יותר ממופעי EC2 דומים אחרים עם אופטימיזציה של הסקה. בסופו של דבר, אתה משלם פחות, יש לך יישום מהיר יותר, ועומד ביעדי הקיימות שלך.

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

אתה יכול להתחיל על ידי ביצוע ה תיעוד AWS Neuron SDK להקים סביבת פיתוח ולהתחיל את פרויקט הלמידה העמוק המואצת שלך. כדי לעזור לך להתחיל, Hugging Face הוסיפה להם את תמיכת Neuron מיטב הספרייה, אשר מייעלת מודלים לאימון מהיר יותר והסקת מסקנות, ויש להם דוגמאות רבות של משימות מוכנות להפעלה ב-Inf2. כמו כן, בדוק שלנו פרוס מודלים של שפה גדולים ב-AWS Inferentia2 באמצעות מיכלי מסקנות מודלים גדולים כדי ללמוד על פריסת LLMs ל-AWS Inferentia2 באמצעות מיכלי מסקנות מודל. לדוגמאות נוספות, ראה את AWS Neuron דוגמת ריפו של GitHub.


על המחברים

AWS Inferentia2 מתבסס על AWS Inferentia1 על ידי אספקת תפוקה גבוהה פי 4 והשהייה נמוכה פי 10 | Amazon Web Services PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.סמיר אראוג'ו הוא אדריכל פתרונות AI / ML ב- AWS. הוא עוזר ללקוחות ליצור פתרונות AI / ML אשר פותרים את האתגרים העסקיים שלהם באמצעות AWS. הוא עבד על כמה פרויקטים של AI / ML הקשורים בראיית מחשב, עיבוד שפה טבעית, חיזוי, ML בקצה ועוד. הוא אוהב לשחק בפרויקטים של חומרה ואוטומציה בזמנו הפנוי, ויש לו עניין מיוחד ברובוטיקה.

בול זמן:

עוד מ למידת מכונות AWS