הפעל את PyTorch Lightning ו-PyTorch DDP מקורי ב-Amazon SageMaker Training, הכולל Amazon Search PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

הפעל את PyTorch Lightning ו-PyTorch DDP מקורי ב-Amazon SageMaker Training, הכולל את Amazon Search

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

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

  1. כעת ניתן לשלב את PyTorch Lightning ספריית הנתונים המקבילים של SageMaker עם רק שורה אחת של שינוי קוד.
  2. אימון דגמי SageMaker כעת יש תמיכה ב-PyTorch Distributed Data Parallel עם NCCL backend מקורי, המאפשר למפתחים לעבור אל SageMaker בקלות רבה יותר מאי פעם.

בפוסט זה, אנו דנים בתכונות החדשות הללו, וגם לומדים כיצד אמזון חיפוש הריצה את PyTorch Lightning עם קצה האימון המבוזר האופטימלי ב- SageMaker כדי להאיץ את זמן אימון המודל.

לפני שצולל למחקר המקרה של Amazon Search, למי שלא מכיר ברצוננו לתת קצת רקע על ספריית הנתונים המקבילים של SageMaker. בשנת 2020, פיתחנו והשקנו תצורת אשכול מותאמת אישית להורדת שיפוע מבוזרת בקנה מידה המגדילה את יעילות האשכול הכוללת, שהוצגה ב-Amazon Science כמו הרינג. תוך שימוש במיטב משרתי פרמטרים וגם בטופולוגיות מבוססות טבעת, SageMaker Distributed Data Parallel (SMDDP) מותאם עבור ענן מחשוב אלסטי של אמזון (Amazon EC2) טופולוגיית רשת, כולל EFA. עבור גדלי אשכולות גדולים יותר, SMDDP מסוגל לספק שיפורי תפוקה של 20-40% ביחס ל- Horovod (TensorFlow) ו-PyTorch Distributed Data Parallel. עבור גדלי אשכולות קטנים יותר ודגמים נתמכים, אנו ממליצים על מהדר הדרכה של SageMaker, המסוגל להפחית את זמן העבודה הכולל בעד 50%.

זרקור הלקוח: PyTorch Lightning על ה-backend המותאם של SageMaker עם Amazon Search

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

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

תוצאות ההשוואה המוקדמות של הצוות מראות זמן אימון מהיר פי 7.3 עבור מודל לדוגמה כאשר הוא מאומן על שמונה צמתים בהשוואה לבסיס אימון של צומת בודד. המודל הבסיסי המשמש בהשוואה זו הוא רשת עצבית פרצפטרון רב-שכבתית עם שבע שכבות צפופות המחוברות במלואן ולמעלה מ-200 פרמטרים. הטבלה הבאה מסכמת את תוצאת ההשוואה ב-ml.p3.16xlarge של SageMaker.

מספר מופעים זמן אימון (דקות) הַשׁבָּחָה
1 99 Baseline
2 55 1.8x
4 27 3.7x
8 13.5 7.3x

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

הפעל את PyTorch Lightning עם ספריית ההדרכה המבוזרת של SageMaker

אנו שמחים לבשר כי SageMaker Data Parallel משתלב כעת בצורה חלקה עם PyTorch Lightning בתוך הכשרת SageMaker.

PyTorch Lightning היא מסגרת קוד פתוח המספקת פישוט לכתיבת מודלים מותאמים אישית ב- PyTorch. במובנים מסוימים הדומים למה ש-Keras עשתה עבור TensorFlow, או אפילו ללא ספק Hugging Face, PyTorch Lightning מספקת API ברמה גבוהה עם הפשטות עבור חלק גדול מהפונקציונליות ברמה נמוכה יותר של PyTorch עצמה. זה כולל הגדרת המודל, יצירת פרופילים, הערכה, גיזום, מקביליות מודל, תצורות היפרפרמטר, למידת העברה ועוד.

בעבר, מפתחי PyTorch Lightning לא היו בטוחים כיצד להעביר בצורה חלקה את קוד האימון שלהם לאשכולות SageMaker GPU בעלי ביצועים גבוהים. בנוסף, לא הייתה להם דרך לנצל את יתרונות היעילות שהציגה SageMaker Data Parallel.

עבור PyTorch Lightning, באופן כללי, אמורים להיות מעט שינויים בקוד כדי להפעיל את ממשקי ה-API האלה ב- SageMaker Training. במחברות לדוגמה אנו משתמשים ב- אסטרטגיה DDP ו DDPPplugin שיטות.

ישנם שלושה שלבים לשימוש ב-PyTorch Lightning עם SageMaker Data Parallel כקצה אחורי אופטימלי:

  1. השתמש ב- נתמך מיכל AWS Deep Learning (DLC) כתמונת הבסיס שלך, או אופציונלי ליצור מיכל משלך ו התקן את ה-SageMaker Data Parallel בעצמך. ודא ש- PyTorch Lightning כלול בחבילות הדרושות שלך, כגון עם א requirements.txt קובץ.
  2. בצע כמה שינויים קלים בקוד בסקריפט האימון שלך המאפשרים את הקצה האחורי הממוטב. אלו כוללים:
    1. ייבא את ספריית SM DDP:
      import smdistributed.dataparallel.torch.torch_smddp
      

    2. הגדר את סביבת PyTorch Lightning עבור SageMaker:
      from pytorch_lightning.plugins.environments.lightning_environment 
        import LightningEnvironment
      
      env = LightningEnvironment()
      env.world_size = lambda: int(os.environ["WORLD_SIZE"])
      env.global_rank = lambda: int(os.environ["RANK"])

    3. אם אתה משתמש בגרסה של PyTorch Lightning ישנה מ-1.5.10, תצטרך להוסיף עוד כמה שלבים.
      1. ראשית, הוסף את משתנה הסביבה:
        os.environ["PL_TORCH_DISTRIBUTED_BACKEND"] = "smddp"

      2. שנית, ודא שאתה משתמש DDPPlugin, ולא DDPStrategy. אם אתה משתמש בגרסה עדכנית יותר, אותה תוכל להגדיר בקלות על ידי הצבת ה requirements.txt ב source_dir עבור העבודה שלך, אז זה לא הכרחי. ראה את הקוד הבא:
        ddp = DDPPlugin(parallel_devices=[torch.device("cuda", d) for d in range(num_gpus)], cluster_environment=env)

    4. לחלופין, הגדר את הקצה האחורי של קבוצת התהליך שלך כ "smddp" ב DDPSTrategy לְהִתְנַגֵד. עם זאת, אם אתה משתמש ב-PyTorch Lightning עם PyTorch DDP backend, שגם הוא נתמך, פשוט הסר את זה `process_group_backend` פרמטר. ראה את הקוד הבא:
      ddp = DDPStrategy(
        cluster_environment=env, 
        process_group_backend="smddp", 
        accelerator="gpu")

  3. ודא שיש לך שיטת הפצה שצוינה באומד, כגון distribution={"smdistributed":{"dataparallel":{"enabled":True} אם אתה משתמש ב-Hering backend, או distribution={"pytorchddp":{"enabled":True}.
  • לרשימה מלאה של פרמטרים מתאימים ב distribution פרמטר, עיין בתיעוד שלנו כאן.

עכשיו אתה יכול להשיק את עבודת ההדרכה שלך ב- SageMaker! אתה יכול להפעיל את עבודת ההדרכה שלך דרך Python SDK, Boto3, קונסולת SageMaker, ה ממשק שורת הפקודה של AWS (AWS CLI), ועוד אינספור שיטות. מנקודת מבט של AWS, זהו פקודת API בודדת: create-training-job. בין אם אתה מפעיל את הפקודה הזו מהמסוף המקומי שלך, א AWS למבדה פונקציה, an סטודיו SageMaker של אמזון מחברת, צינור KubeFlow או כל סביבת מחשוב אחרת תלויה לחלוטין בכם.

שימו לב שהשילוב בין PyTorch Lightning ל-SageMaker Data Parallel נתמך כרגע רק בגרסאות חדשות יותר של PyTorch, החל מ-1.11. בנוסף, מהדורה זו זמינה רק ב-AWS DLCs עבור SageMaker החל מ- PyTorch 1.12. ודא שאתה מצביע על תמונה זו כבסיס שלך. ב us-east-1, כתובת זו היא כדלקמן:

ecr_image = '763104351884.dkr.ecr.us-east-1.amazonaws.com/pytorch-training:1.12.0-gpu-py38-cu113-ubuntu20.04-sagemaker'

אז אתה יכול להרחיב את מיכל ה-Docker שלך באמצעות זה כתמונת הבסיס שלך, או שאתה יכול להעביר את זה כמשתנה לתוך image_uri טיעון של מעריך הדרכה של SageMaker.

כתוצאה מכך, תוכל להריץ את קוד PyTorch Lightning שלך במעבדי ה-GPU המותאמים של SageMaker Training, עם הביצועים הטובים ביותר הזמינים ב-AWS.

הפעל את PyTorch Distributed Data Parallel ב- SageMaker

הבעיה הכי גדולה PyTorch Distributed Data Parallel (DDP) פותר פשוט בצורה מטעה: מהירות. מסגרת אימון מבוזרת טובה אמורה לספק יציבות, אמינות, והכי חשוב, ביצועים מצוינים בקנה מידה. PyTorch DDP מספק את זה באמצעות מתן למפתחי לפיד ממשקי API כדי לשכפל את הדגמים שלהם על פני התקני GPU מרובים, הן בהגדרות של צמתים בודדים והן בהגדרות מרובות צמתים. לאחר מכן, המסגרת מנהלת ריסוק אובייקטים שונים ממערך האימון לכל עותק של מודל, תוך ממוצע של שיפועים עבור כל אחד מהעותקי המודל כדי לסנכרן אותם בכל שלב. זה מייצר דגם אחד בסיום מלא של ריצת האימון המלאה. התרשים הבא ממחיש תהליך זה.

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

בעבר, לקוחות שהשתמשו ב-PyTorch DDP להדרכה מבוזרת במקום או בסביבות מחשוב אחרות, חסרה מסגרת להעברה בקלות של הפרויקטים שלהם אל SageMaker Training כדי לנצל את היתרונות של GPUs בעלי ביצועים גבוהים עם מישור בקרה חלק. באופן ספציפי, הם היו צריכים להעביר את מסגרת הנתונים המקבילה שלהם ל-SMDDP, או לפתח ולבדוק את היכולות של PyTorch DDP ב- SageMaker Training באופן ידני. כיום, SageMaker Training שמחה לספק חוויה חלקה ללקוחות המצטרפים לקוד PyTorch DDP שלהם.

כדי להשתמש בזה ביעילות, אינך צריך לבצע שינויים כלשהם בתסריטי האימון שלך.

אתה יכול לראות את הפרמטר החדש הזה בקוד הבא. בתוך ה distribution פרמטר, פשוט הוסף pytorchddp והגדר מופעל כ true.

estimator = PyTorch(
    base_job_name="pytorch-dataparallel-mnist",
    source_dir="code",
    entry_point = "my_model.py",
    ... 
    # Training using SMDataParallel Distributed Training Framework
    distribution = {"pytorchddp": {"enabled": "true"}}
)

תצורה חדשה זו מתחילה ב- SageMaker Python SDK גרסאות 2.102.0 ו- PyTorch DLC 1.11.

למפתחי PyTorch DDP שמכירים את הפופולרי לפיד מסגרת, זה מועיל לדעת שזה לא הכרחי בסביבת האימונים של SageMaker, שכבר מספקת סבילות תקלות חזקה. עם זאת, כדי למזער את שכתוב הקוד, אתה יכול להביא סקריפט משגר אחר המריץ פקודה זו כנקודת הכניסה שלך.

כעת מפתחי PyTorch יכולים להעביר בקלות את הסקריפטים שלהם אל SageMaker, ולהבטיח שהסקריפטים והמיכלים שלהם יכולים לפעול בצורה חלקה על פני מספר סביבות מחשוב.

זה מכין אותם, בעתיד, לנצל ספריות ההדרכה המבוזרות של SageMaker המספקים טופולוגיות אימון מותאמות ל-AWS כדי לספק שיפורי מהירות של עד 40%. עבור מפתחי PyTorch, זוהי שורת קוד אחת! עבור קוד PyTorch DDP, אתה יכול פשוט להגדיר את הקצה האחורי ל smddp באתחול (ראה שנה סקריפט אימון של PyTorch), כפי שמוצג בקוד הבא:

import smdistributed.dataparallel.torch.torch_smddp
import torch.distributed as dist
dist.init_process_group(backend='smddp')

כפי שראינו לעיל, אתה יכול גם להגדיר את הקצה האחורי של DDPStrategy ל smddp בעת שימוש ב- Lightning. זה יכול להוביל עד 40% מהירות כללית לאשכולות גדולים! למידע נוסף על הכשרה מבוזרת ב- SageMaker ראה הסמינר המקוון שלנו לפי דרישה, תומך מחשבים ניידים, רלוונטי תיעוד, ו ניירות.

סיכום

בפוסט זה, הצגנו שתי תכונות חדשות במשפחת SageMaker Training. אלה מקלים בהרבה על מפתחי PyTorch להשתמש בקוד הקיים שלהם ב- SageMaker, הן PyTorch DDP והן PyTorch Lightning.

הראינו גם כיצד Amazon Search משתמשת ב- SageMaker Training להכשרת מודלים של למידה עמוקה שלהם, ובמיוחד PyTorch Lightning עם הספרייה הקולקטיבית המאופטימלית של SageMaker Data Parallel בתור קצה עורפי. המעבר לאימון מבוזר בסך הכל עזר לאמזון חיפוש להשיג זמני רכבת מהירים פי 7.3.


על המחברים

הפעל את PyTorch Lightning ו-PyTorch DDP מקורי ב-Amazon SageMaker Training, הכולל Amazon Search PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.אמילי וובר הצטרף ל-AWS מיד לאחר השקת SageMaker, ומאז הוא מנסה לספר על כך לעולם! מלבד בניית חוויות ML חדשות ללקוחות, אמילי נהנית לעשות מדיטציה וללמוד בודהיזם טיבטי.

הפעל את PyTorch Lightning ו-PyTorch DDP מקורי ב-Amazon SageMaker Training, הכולל Amazon Search PlatoBlockchain Data Intelligence. חיפוש אנכי. איי. קארן דימן הוא מהנדס פיתוח תוכנה ב-AWS, שבסיסו בטורונטו, קנדה. הוא נלהב מאוד ממרחב למידת מכונה ובניית פתרונות להאצת עומסי עבודה מחשוב מבוזרים.

הפעל את PyTorch Lightning ו-PyTorch DDP מקורי ב-Amazon SageMaker Training, הכולל Amazon Search PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.וישווה קאריה הוא מהנדס פיתוח תוכנה ב-AWS Deep Engine. תחומי העניין שלה נמצאים בצומת של למידת מכונה ומערכות מבוזרות והיא גם נלהבת להעצים נשים בטכנולוגיה ובינה מלאכותית.

הפעל את PyTorch Lightning ו-PyTorch DDP מקורי ב-Amazon SageMaker Training, הכולל Amazon Search PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.אימן אלנהראווי הוא מהנדס תוכנה ראשי ב-Amazon Search המוביל את המאמצים בנושא האצה, קנה מידה ואוטומציה של למידת מכונה. המומחיות שלה משתרעת על תחומים רבים, כולל למידת מכונה, מערכות מבוזרות והתאמה אישית.

בול זמן:

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