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

הספרייה המקבילה מדגם SageMaker של אמזון מאיצה כעת את עומסי העבודה של PyTorch FSDP בעד 20% | שירותי האינטרנט של אמזון

תאריך:

אימוני מודל שפה גדולים (LLM) עלו בפופולריות במהלך השנה האחרונה עם יציאתם של מספר דגמים פופולריים כגון Llama 2, Falcon ומיסטראל. לקוחות מבצעים כעת הכשרה מוקדמת ומכווננת עדין של LLMs הנעים בין מיליארד אחד ליותר מ-1 מיליארד פרמטרים כדי לייעל את ביצועי המודל עבור יישומים בתעשיות שונות, משירותי בריאות ועד פיננסים ושיווק.

אימון מודלים ביצועיים בקנה מידה זה יכול להיות אתגר. LLMs מדויקים ביותר יכולים לדרוש טרה-בייט של נתוני אימון ואלפי או אפילו מיליוני שעות של זמן חישוב מאיץ כדי להשיג דיוק יעד. כדי להשלים הדרכה ולהשקת מוצרים בזמן, לקוחות מסתמכים על טכניקות מקבילות כדי לחלק את עומס העבודה העצום הזה על פני עד אלפי מכשירי מאיץ. עם זאת, טכניקות מקביליות אלו עשויות להיות קשות לשימוש: טכניקות וספריות שונות תואמות רק לעומסי עבודה מסוימים או מוגבלות לארכיטקטורות מודל מסוימות, ביצועי האימון יכולים להיות רגישים מאוד לתצורות לא ברורות, ומצב האומנות מתפתח במהירות. כתוצאה מכך, מתרגלי למידת מכונה חייבים להשקיע שבועות של הכנה כדי להגדיל את עומסי העבודה של ה-LLM שלהם לאשכולות גדולים של GPUs.

בפוסט זה, אנו מדגישים תכונות חדשות של אמזון SageMaker ספריית מודל מקבילית (SMP) המפשטת את תהליך ההכשרה של המודלים הגדולים ועוזרת לך לאמן LLMs מהר יותר. בפרט, אנו מכסים את חווית המשתמש הפשוטה החדשה של ספריית SMP, המתבססת על ממשקי API של PyTorch Fully Sharded Data Parallel (FSDP) בקוד פתוח, פונקציונליות מקבילית טנזור מורחבת המאפשרת אימון מודלים עם מאות מיליארדי פרמטרים, ואופטימיזציות של ביצועים המפחיתות את זמן אימון המודל. ועלות עד 20%.

למידע נוסף על ספריית המודל המקבילית של SageMaker, עיין ב ספריית מקביליות מודל SageMaker v2 תיעוד. אתה יכול גם לפנות אלינו מחברות לדוגמה כדי להתחיל בעבודה.

תכונות חדשות המפשטות ומאיצות אימון דגמים גדולים

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

יישור SMP עם PyTorch בקוד פתוח

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

PyTorch מציע מקביליות נתונים מפוצלים לחלוטין (FSDP) כשיטה העיקרית שלה לתמיכה בעומס עבודה גדול באימון על פני התקני מחשוב רבים. כפי שהודגם בקטע הקוד הבא, ממשקי ה-API המעודכנים של SMP לטכניקות כגון מקביליות נתונים מרוסקים משקפים את אלה של PyTorch. אתה יכול פשוט לרוץ import torch.sagemaker ולהשתמש בו במקום torch.

## training_script.py
import torch.sagemaker as tsm
tsm.init() # Set up a PyTorch model
model = ... # Wrap the PyTorch model using the PyTorch FSDP module
model = FSDP(
model,
...
) optimizer = ...
...

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

למידע נוסף על אופן הפעלת SMP עם סקריפטי ההדרכה הקיימים של PyTorch FSDP, עיין ב התחל עם SMP.

שילוב מקביליות טנזור כדי לאפשר אימון על אשכולות מסיביים

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

כדי למתן את הבעיה הזו, SMP v2.0 מציג את היכולת להרכיב מקביליות של נתונים מרוסקים עם מקביליות טנזור. מקביליות טנזור מאפשרת לגודל האשכול להגדיל מבלי לשנות את גודל האצווה העולמי או להשפיע על התכנסות המודל. עם תכונה זו, אתה יכול להגדיל בבטחה את תפוקת האימון על ידי הקצאת אשכולות עם 256 צמתים או יותר.

כיום, מקביליות טנזור עם PyTorch FSDP זמינה רק עם SMP v2. SMP v2 מאפשר לך לאפשר את הטכניקה הזו עם כמה שורות של שינוי קוד ולפתוח אימון יציב גם על אשכולות גדולים. SMP v2 משתלב עם מנוע שנאי על הטמעתו של מקביליות טנזור והופכת אותו לתואם לממשקי ה-API של PyTorch FSDP. אתה יכול להפעיל במקביל PyTorch FSDP ו-SMP tensor בו-זמנית מבלי לבצע שינויים כלשהם במודל PyTorch או בתצורת PyTorch FSDP. קטעי הקוד הבאים מראים כיצד להגדיר את מילון תצורת SMP בפורמט JSON ולהוסיף את מודול האתחול SMP torch.sagemaker.init(), שמקבל את מילון התצורה ב-backend כשאתה מתחיל את עבודת ההדרכה, לסקריפט ההדרכה שלך.

תצורת SMP היא כדלקמן:

{ "tensor_parallel_degree": 8, "tensor_parallel_seed": 0
}

בסקריפט האימון שלך, השתמש בקוד הבא:

import torch.sagemaker as tsm
tsm.init() from transformers import AutoModelForCausalLM
model = AutoModelForCausalLM.from_config(..)
model = tsm.transform(model)

למידע נוסף על שימוש מקביליות טנזור ב-SMP, עיין ב- מקביליות טנזור חלק בתיעוד שלנו.

השתמש בתכונות מתקדמות כדי להאיץ את אימון המודלים עד 20%

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

ריסוק היברידי

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

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

תצורת SMP היא כדלקמן:

{ "hybrid_shard_degree": 16 }

למידע נוסף על היתרונות של מקביליות נתונים מרוסקים היברידיים, עיין ב קנה מידה כמעט ליניארי של אימון מודל ענק ב-AWS. למידע נוסף על הטמעת ריסוק היברידי עם סקריפט ההדרכה הקיים של FSDP, ראה מקביליות נתונים משותפים היברידית בתיעוד שלנו.

השתמש בפעולות התקשורת הקולקטיביות SMDDP המותאמות לתשתית AWS

אתה יכול להשתמש בספריית SMP עם ה SageMaker הפצת ספריית מקביליות נתונים (SMDDP). כדי להאיץ את עומסי האימון המבוזרים שלך. SMDDP כולל אופטימיזציה AllGather פעולת תקשורת קולקטיבית המיועדת לביצועים הטובים ביותר במופעים מואצים של SageMaker p4d ו-p4de. בהדרכה מבוזרת, פעולות תקשורת קולקטיביות משמשות לסנכרון מידע בין עובדי GPU. AllGather היא אחת מפעולות הליבה של התקשורת הקולקטיבית המשמשת בדרך כלל בהקבלה של נתונים מרוסקים כדי לממש את פרמטרי השכבה לפני שלבי חישוב קדימה ואחורה. עבור עבודות הכשרה שהתקשורת פוגעת בהן, פעולות קולקטיביות מהירות יותר יכולות להפחית את זמן ההכשרה ואת העלות ללא תופעות לוואי על ההתכנסות.

כדי להשתמש בספריית SMDDP, אתה רק צריך להוסיף שתי שורות קוד לסקריפט ההדרכה שלך:

import torch.distributed as dist # Initialize with SMDDP
import smdistributed.dataparallel.torch.torch_smddp
dist.init_process_group(backend="smddp") # Replacing "nccl" # Initialize with SMP
import torch.sagemaker as tsm
tsm.init()

בנוסף ל-SMP, SMDDP תומך בקוד פתוח PyTorch FSDP ו-DeepSpeed. למידע נוסף על ספריית SMDDP, ראה הפעל הדרכה מבוזרת עם ספריית מקביליות הנתונים המבוזרים של SageMaker.

הפעלה הורדה

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

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

SMP v2 מציע אלגוריתם הורדת הפעלה אופטימלי שיכול לשפר את ביצועי האימון. היישום של SMP משחזר מראש הפעלות לפני שהן נחוצות ב-GPU, ומצמצם את זמן השבתה.

מכיוון ש-SMP בנויה על גבי ממשקי ה-API של PyTorch, הפעלת הורדת הפעלה אופטימלית דורשת רק כמה שורות של שינוי קוד. פשוט הוסף את התצורות המשויכות (sm_activation_offloading ו activation_loading_horizon פרמטרים) ולכלול אותם בסקריפט ההדרכה שלך.

תצורת SMP היא כדלקמן:

{ "activation_loading_horizon": 2, "sm_activation_offloading": True
}

בסקריפט ההדרכה, השתמש בקוד הבא:

import torch.sagemaker as tsm
tsm.init() # Native PyTorch module for activation offloading
from torch.distributed.algorithms._checkpoint.checkpoint_wrapper import (
apply_activation_checkpointing,
offload_wrapper,
) model = FSDP(...) # Activation offloading requires activation checkpointing.
apply_activation_checkpointing(
model,
check_fn=checkpoint_tformer_layers_policy,
) model = offload_wrapper(model)

למידע נוסף על כלי נקודת המחסום של PyTorch בקוד פתוח להורדת הפעלה, עיין ב checkpoint_wrapper.py סקריפט במאגר PyTorch GitHub ו בדיקת הפעלה בפוסט בבלוג של PyTorch קנה מידה של מודלים של בסיס רב-מודאלי ב-TorchMultimodal עם Pytorch מבוזרת. למידע נוסף על היישום האופטימלי של SMP של הורדת הפעלה, ראה את הורדת הפעלה חלק בתיעוד שלנו.

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

סיכום

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

כדי להתחיל עם SMP v2, עיין שלנו תיעוד ו שלנו מחברות לדוגמה.


על הכותבים

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

לואיס קווינטלה הוא מנהל מפתחי התוכנה של ספריית המודל המקבילית של AWS SageMaker. בזמנו הפנוי, ניתן למצוא אותו רוכב על ההארלי שלו באזור מפרץ SF.

גוטם קומאר הוא מהנדס תוכנה עם AWS AI Deep Learning. הוא נלהב מבניית כלים ומערכות עבור AI. בזמנו הפנוי הוא נהנה לרכוב על אופניים ולקרוא ספרים.

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

ספוט_ימג

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

ספוט_ימג