איך Amazon Search הפחית את עלויות ההסקת ML ב-85% עם AWS Inferentia

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

בפוסט זה, אנו מתארים כיצד Amazon Search משתמש Afer Inferentia, מטרת מאיץ בעלת ביצועים גבוהים שנבנתה על ידי AWS כדי להאיץ עומסי עבודה של הסקת למידה עמוקה. הצוות מפעיל הסקת ML עם זמן אחזור נמוך עם דגמי NLP מבוססי שנאי על מבוססי AWS Inferentia ענן מחשוב אלסטי של אמזון (Amazon EC2) מופעי Inf1, וחוסך עד 85% בעלויות תשתית תוך שמירה על תפוקה חזקה וביצועי חביון.

למידה עמוקה לחיזוי כוונות שכפול ושאילתות

חיפוש ב-Amazon Marketplace הוא בעיה מרובת משימות ורב-אופנות, העוסקת במספר קלטים כגון ASINs (מספר זיהוי סטנדרטי של אמזון, מספר אלפאנומרי בן 10 ספרות המזהה מוצרים באופן ייחודי), תמונות מוצרים, תיאורים טקסטואליים ושאילתות. כדי ליצור חווית משתמש מותאמת, חיזויים ממודלים רבים משמשים להיבטים שונים של החיפוש. זהו אתגר מכיוון שלמערכת החיפוש יש אלפי דגמים עם עשרות אלפי עסקאות בשנייה (TPS) בעומס שיא. אנו מתמקדים בשני מרכיבים של חוויה זו:

  • תחזיות כפילות שנתפסות על ידי הלקוח – כדי להציג את הרשימה הרלוונטית ביותר של מוצרים התואמים לשאילתה של משתמש, חשוב לזהות מוצרים שלקוחות מתקשים להבדיל ביניהם
  • שאילתה חיזוי כוונת – כדי להתאים את דף החיפוש ואת פריסת המוצר כך שיתאימו טוב יותר למה שהלקוח מחפש, חשוב לחזות את הכוונה והסוג של השאילתה של המשתמש (לדוגמה, שאילתה הקשורה למדיה, שאילתת עזרה וסוגי שאילתות אחרים)

שתי התחזיות הללו נעשות באמצעות ארכיטקטורות של מודל Transformer, כלומר מודלים מבוססי BERT. למעשה, שניהם חולקים את אותו מודל מבוסס BERT כבסיס, וכל אחד מהם מערם ראש סיווג/רגרסיה על גבי עמוד השדרה הזה.

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

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

AWS Inferentia ו-AWS Neuron SDK

מופעי EC2 Inf1 מופעלים על ידי AWS Inferentia, מטרת מאיץ ה-ML הראשונה שנבנתה על ידי AWS כדי להאיץ עומסי עבודה של הסקת למידה עמוקה. מופעי Inf1 מספקים תפוקה גבוהה פי 2.3 ועלות נמוכה עד 70% להסקת מסקנות בהשוואה למופעי EC2 מבוססי GPU. אתה יכול להמשיך לאמן את המודלים שלך באמצעות המסגרת שתבחר (PyTorch, TensorFlow, MXNet), ולאחר מכן לפרוס אותם בקלות ב-AWS Inferentia כדי להפיק תועלת מהאופטימיזציות המובנות בביצועים. אתה יכול לפרוס מגוון רחב של סוגי מודלים באמצעות מופעי Inf1, החל מזיהוי תמונה, זיהוי אובייקטים, עיבוד שפה טבעית (NLP) ומודלים מודרניים של ממליצים.

AWS נוירון היא ערכת פיתוח תוכנה (SDK) המורכבת מכלי מהדר, זמן ריצה וכלי פרופיל המייעלים את ביצועי הסקת ה-ML של מופעי EC2 Inf1. Neuron משולב באופן מקורי עם מסגרות ML פופולריות כגון TensorFlow ו- PyTorch. לכן, אתה יכול לפרוס מודלים של למידה עמוקה ב-AWS Inferentia עם אותם ממשקי API מוכרים שמסופקים על ידי המסגרת שבחרת, ולהנות מהשיפור בביצועים ומהעלות הנמוכה ביותר להסקה בענן.

מאז השקתו, ה- Neuron SDK המשיכה להגדיל את רוחב הדגמים שבהם הוא תומך תוך המשך שיפור הביצועים והפחתת עלויות ההסקה. זה כולל מודלים של NLP (BERTs), מודלים של סיווג תמונות (ResNet, VGG) ומודלים לזיהוי אובייקטים (OpenPose ו-SSD).

פרוס על מופעי Inf1 עבור זמן אחזור נמוך, תפוקה גבוהה וחיסכון בעלויות

צוות החיפוש של אמזון רצה לחסוך בעלויות תוך עמידה בדרישת התפוקה הגבוהה שלהם בחיזוי שכפול, ובדרישת השהיה הנמוכה בחיזוי כוונת שאילתה. הם בחרו לפרוס על מופעי Inf1 מבוססי AWS Inferentia ולא רק עמדו בדרישות הביצועים הגבוהות, אלא גם חסכו עד 85% בעלויות ההסקה.

תחזיות כפילות שנתפסות על ידי הלקוח

לפני השימוש ב-Inf1, מכשיר ייעודי אמזון EMR האשכול פעל באמצעות מופעים מבוססי מעבד. מבלי להסתמך על האצת חומרה, היה צורך במספר רב של מקרים כדי לעמוד בדרישת התפוקה הגבוהה של 8,800 עסקאות בסך הכל בשנייה. הצוות עבר למופעים מסוג inf1.6xlarge, כל אחד עם 4 מאיצי AWS Inferentia ו-16 NeuronCores (4 ליבות לכל שבב AWS Inferentia). הם עקבו אחר המודל מבוסס Transformer עבור NeuronCore יחיד וטענו מצב אחד לכל NeuronCore כדי למקסם את התפוקה. על ידי ניצול היתרונות של 16 NeuronCores הזמינים, הם הפחיתו את עלויות ההסקה ב-85% (בהתבסס על התמחור הציבורי הנוכחי של Amazon EC2 לפי דרישה).

שאילתה חיזוי כוונת

בהתחשב בדרישת ההשהיה של P99 של 10 מילישניות או פחות, הצוות טען את המודל לכל NeuronCore זמין במופעים inf1.6xlarge. אתה יכול לעשות זאת בקלות עם PyTorch Neuron באמצעות torch.neuron.DataParallel ממשק API. עם פריסת ה-Inf1, זמן האחזור של המודל היה 3 אלפיות שניות, השהיה מקצה לקצה היה כ-10 אלפיות שניות, והתפוקה המקסימלית בעומס שיא הגיעה ל-16,000 TPS.

התחל עם קוד הידור ופריסה לדוגמה

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

ראשית, המודל מורכב עם torch.neuron.trace():

m = torch.jit.load(f="./cpu_model.pt", map_location=torch.device('cpu'))
m.eval()
model_neuron = torch.neuron.trace(
    m,
    inputs,
    compiler_workdir="work_" + str(cores) + "_" + str(batch_size),
    compiler_args=[
        '--fp32-cast=all', '--neuroncore-pipeline-cores=' + str(cores)
    ])
model_neuron.save("m5_batch" + str(batch_size) + "_cores" + str(cores) +
                  "_with_extra_op_and_fp32cast.pt")

לרשימה המלאה של טיעונים אפשריים ל- trace שיטה, עיין PyTorch-Neuron עוקב אחר Python API. כפי שאתה יכול לראות, טיעוני מהדר ניתן להעביר ל torch.neuron ממשק API ישירות. כל מפעילי ה-FP32 מלוהקים BF16 with --fp32-cast=all, מספק את הביצועים הגבוהים ביותר תוך שמירה על טווח דינמי. אפשרויות ליהוק נוספות זמינות כדי לאפשר לך לשלוט בביצועים כדי לדגמן פשרה מדויקת. המודלים המשמשים עבור שני מקרי השימוש הורכבו עבור NeuronCore יחיד (מס צנרת).

לאחר מכן אנו מעמיסים את הדגם על Inferentia עם torch.jit.load, והשתמש בו לצורך חיזוי. ה זמן ריצה של נוירונים טוען אוטומטית את המודל ל- NeuronCores.

cm_cpd_preprocessing_jit = torch.jit.load(f=CM_CPD_PROC,
                                          map_location=torch.device('cpu'))
cm_cpd_preprocessing_jit.eval()
m5_model = torch.jit.load(f=CM_CPD_M5)
m5_model.eval()

input = get_input()
with torch.no_grad():
    batch_cm_cpd = cm_cpd_preprocessing_jit(input)
    input_ids, attention_mask, position_ids, valid_length, token_type_ids = (
        batch_cm_cpd['input_ids'].type(torch.IntTensor),
        batch_cm_cpd['attention_mask'].type(torch.HalfTensor),
        batch_cm_cpd['position_ids'].type(torch.IntTensor),
        batch_cm_cpd['valid_length'].type(torch.IntTensor),
        batch_cm_cpd['token_type_ids'].type(torch.IntTensor))
    model_res = m5_model(input_ids, attention_mask, position_ids, valid_length,
                         token_type_ids)

סיכום

צוות Amazon Search הצליח להפחית את עלויות ההסקה שלהם ב-85% באמצעות מופעי Inf1 מבוססי AWS Inferentia, תחת תעבורה כבדה ודרישות ביצועים תובעניות. AWS Inferentia ו- Neuron SDK סיפקו לצוות את הגמישות לייעל את תהליך הפריסה בנפרד מהאימונים, ולהציג עקומת למידה רדודה באמצעות כלים מעוגלים היטב וממשקי API מוכרים של מסגרת.

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


על המחברים

כיצד אמזון חיפוש הפחית את עלויות הסקת ML ב-85% עם AWS Inferentia PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.ז'ואאו מורה הוא אדריכל פתרונות AI/ML מומחה בשירותי האינטרנט של אמזון. הוא מתמקד בעיקר במקרים של שימוש ב-NLP ובעזרה ללקוחות לייעל אימון ופריסה של מודל למידה עמוקה. הוא גם חסיד פעיל של חומרה מתמחה ב-ML ופתרונות ML בקוד נמוך.

כיצד אמזון חיפוש הפחית את עלויות הסקת ML ב-85% עם AWS Inferentia PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.וויצ'י ג'אנג הוא מנהל הנדסת תוכנה ב-Search M5, שם הוא עובד על ייצור מודלים בקנה מידה גדול עבור יישומי למידת מכונה של אמזון. תחומי העניין שלו כוללים אחזור מידע ותשתית למידת מכונה.

כיצד אמזון חיפוש הפחית את עלויות הסקת ML ב-85% עם AWS Inferentia PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.ג'ייסון קרלסון הוא מהנדס תוכנה לפיתוח צינורות למידת מכונה כדי לעזור להפחית את מספר הופעות החיפוש הגנובות עקב כפילויות שנתפסו על ידי הלקוח. הוא עובד בעיקר עם Apache Spark, AWS ו- PyTorch כדי לעזור בפריסה והזנה/עיבוד נתונים עבור מודלים של ML. בזמנו הפנוי הוא אוהב לקרוא ולצאת לריצות.

כיצד אמזון חיפוש הפחית את עלויות הסקת ML ב-85% עם AWS Inferentia PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.שאוהוי שי הוא SDE בצוות Search Query Understanding Infra. הוא מוביל את המאמץ לבניית שירותי הסקת מסקנות מקוונים של למידה עמוקה בקנה מידה גדול עם חביון נמוך וזמינות גבוהה. מחוץ לעבודה, הוא נהנה לעשות סקי ולחקור מאכלים טובים.

כיצד אמזון חיפוש הפחית את עלויות הסקת ML ב-85% עם AWS Inferentia PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.Zhuoqi Zhang הוא מהנדס פיתוח תוכנה בצוות Search Query Understanding Infra. הוא עובד על בניית מסגרות לשרת מודלים לשיפור ההשהיה והתפוקה עבור שירותי הסקת מסקנות מקוונים של למידה עמוקה. מחוץ לעבודה, הוא אוהב לשחק כדורסל, סנובורד ונהיגה.

כיצד אמזון חיפוש הפחית את עלויות הסקת ML ב-85% עם AWS Inferentia PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.האווויי סאן הוא מהנדס תוכנה בצוות Search Query Understanding Infra. היא עובדת על עיצוב ממשקי API ותשתיות התומכות בשירותי הסקה מקוונים של למידה עמוקה. תחומי העניין שלה כוללים עיצוב API של שירות, הגדרת תשתית ותחזוקה. מחוץ לעבודה, היא נהנית לרוץ, לטייל ולטייל.

כיצד אמזון חיפוש הפחית את עלויות הסקת ML ב-85% עם AWS Inferentia PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.ג'ספרייט סינג הוא מדען יישומי בצוות M5, שם הוא עובד על מודלים בקנה מידה גדול כדי לשפר את חווית הקנייה של הלקוח. תחומי המחקר שלו כוללים למידה מרובה משימות, אחזור מידע ולמידת ייצוג.

כיצד אמזון חיפוש הפחית את עלויות הסקת ML ב-85% עם AWS Inferentia PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.שרוטי קופרקאר הוא מנהל שיווק מוצר בכיר ב-AWS. היא עוזרת ללקוחות לחקור, להעריך ולאמץ תשתית מחשוב מואצת של EC2 לצרכי למידת המכונה שלהם.

בול זמן:

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