בפוסט זה, אנו מציגים כוונון עדין של דגם Llama 2 בשיטת פרמטר יעיל (PEFT) ופורסים את המודל המכוונן על AWS Inferentia2. אנו משתמשים ב- AWS נוירון ערכת פיתוח תוכנה (SDK) כדי לגשת למכשיר AWS Inferentia2 ולהפיק תועלת מהביצועים הגבוהים שלו. לאחר מכן אנו משתמשים במיכל מסקנות מדגם גדול המופעל על ידי ספריית ג'אווה עמוקה (DJLServing) כפתרון הגשה למודל שלנו.
סקירת פתרונות
כוונון עדין יעיל של Llama2 באמצעות QLoRa
משפחת Llama 2 של מודלים של שפה גדולה (LLMs) היא אוסף של מודלים של טקסט יצירתי מאומנים מראש, בקנה מידה של 7 מיליארד עד 70 מיליארד פרמטרים. לאמה 2 הוכשרה מראש על 2 טריליון אסימונים של נתונים ממקורות זמינים לציבור. לקוחות AWS בוחרים לפעמים לכוונן דגמי Llama 2 תוך שימוש בנתונים של הלקוחות עצמם כדי להשיג ביצועים טובים יותר עבור משימות במורד הזרם. עם זאת, בשל מספר הפרמטרים הרב של דגם Llama 2, כוונון עדין מלא עשוי להיות יקר וגוזל זמן רב. גישת כוונון עדין יעיל של פרמטרים (PEFT) יכולה לטפל בבעיה זו על ידי כוונון עדין בלבד של מספר קטן של פרמטרים נוספים של דגם תוך הקפאת רוב הפרמטרים של המודל שהוכשר מראש. למידע נוסף על PEFT, אפשר לקרוא את זה פוסט. בפוסט זה, אנו משתמשים QLoRa לכוונון עדין של דגם Llama 2 7B.
פרוס דגם מכוון ב-Inf2 באמצעות Amazon SageMaker
AWS Inferentia2 הוא מאיץ למידת מכונה (ML) בנוי למטרות המיועד לעומסי עבודה של הסקת מסקנות ומספק ביצועים גבוהים בעלות נמוכה של עד 40% עבור עומסי עבודה של AI ו-LLM מחוללים בהשוואה למופעים אחרים המותאמים להסקה ב-AWS. בפוסט זה, אנו משתמשים ב- Amazon Elastic Compute Cloud (אמזון) מופע Inf2, הכולל את AWS Inferentia2, מאיצי הדור השני של Inferentia2, כל אחד מכיל שניים NeuronCores-v2. כל NeuronCore-v2 הוא יחידת מחשוב עצמאית, הטרוגנית, עם ארבעה מנועים עיקריים: מנועי Tensor, Vector, Scalar ומנועי GPSIMD. הוא כולל זיכרון SRAM על-שבב מנוהל על-ידי תוכנה למקסום מקומיות נתונים. מכיוון שהתפרסמו מספר בלוגים ב-Inf2, הקורא יכול להתייחס לכך פוסט ו שלנו תיעוד למידע נוסף על Inf2.
כדי לפרוס מודלים ב-Inf2, אנו זקוקים ל-AWS Neuron SDK כשכבת התוכנה הפועלת על גבי החומרה של Inf2. AWS Neuron הוא ה-SDK המשמש להפעלת עומסי עבודה של למידה עמוקה ב-AWS Inferentia ו AWS Trainium מקרים מבוססים. זה מאפשר מחזור חיים של פיתוח ML מקצה לקצה כדי לבנות דגמים חדשים, לאמן ולבצע אופטימיזציה של מודלים אלה, ולפרוס אותם לייצור. AWS Neuron כולל למידה עמוקה מַהְדֵר, זמן ריצה, ו כלים המשולבים באופן מקורי עם מסגרות פופולריות כמו TensorFlow ו- PyTorch. בבלוג זה, אנו הולכים להשתמש transformers-neuronx
, המהווה חלק מה-AWS Neuron SDK עבור זרימות עבודה של מפענח שנאים. זה תומך מגוון דגמים פופולריים, כולל Llama 2.
לפרוס דגמים על אמזון SageMaker, בדרך כלל אנו משתמשים במיכל המכיל את הספריות הנדרשות, כגון Neuron SDK ו transformers-neuronx
כמו גם רכיב הגשת הדגם. אמזון SageMaker מתחזק מיכלי למידה עמוקים (DLCs) עם ספריות קוד פתוח פופולריות לאירוח דגמים גדולים. בפוסט זה אנו משתמשים ב- מיכל מסקנות דגם גדול לנוירון. מיכל זה כולל את כל מה שאתה צריך כדי לפרוס את דגם ה-Llama 2 שלך ב-Inf2. למשאבים לתחילת העבודה עם LMI באמזון SageMaker, עיין ברבים מהפוסטים הקיימים שלנו (הבלוג 1, הבלוג 2, הבלוג 3) בנושא זה. בקיצור, אתה יכול להפעיל את הקונטיינר מבלי לכתוב קוד נוסף. אתה יכול להשתמש ב מטפל ברירת מחדל לחוויית משתמש חלקה ולהעביר את אחד משמות הדגמים הנתמכים וכל פרמטר שניתן להגדיר בזמן טעינה. זה מרכיב ומגיש LLM במופע Inf2. למשל, לפרוס OpenAssistant/llama2-13b-orca-8k-3319
, אתה יכול לספק את תצורת המעקב (כמו serving.properties
קוֹבֶץ). ב serving.properties
, אנו מציינים את סוג הדגם בתור llama2-13b-orca-8k-3319
, גודל האצווה כ-4, דרגת הטנזור המקבילה כ-2, וזהו. לרשימה המלאה של פרמטרים הניתנים להגדרה, עיין ב כל אפשרויות התצורה של DJL.
לחלופין, אתה יכול לכתוב קובץ מטפל משלך במודל כפי שמוצג כאן דוגמה, אבל זה דורש יישום שיטות טעינת המודל וההסקה כדי לשמש גשר בין ה-API של DJLServing.
תנאים מוקדמים
הרשימה הבאה מתארת את התנאים המוקדמים לפריסת המודל המתואר בפוסט זה בבלוג. אתה יכול ליישם כל אחד מה- קונסולת הניהול של AWS או באמצעות הגרסה העדכנית ביותר של ממשק שורת הפקודה של AWS (AWS CLI).
Walkthrough
בסעיף הבא, נעבור על הקוד בשני חלקים:
- כוונון עדין של דגם Llama2-7b, והעלה את חפצי הדגם למיקום דלי מסוים של Amazon S3.
- פרוס את המודל לתוך Inferentia2 באמצעות מיכל הגשה של DJL המתארח באמזון SageMaker.
ניתן למצוא כאן את דוגמאות הקוד המלאות עם ההוראות GitHub מאגר.
חלק 1: כוונון עדין של דגם Llama2-7b באמצעות PEFT
אנו הולכים להשתמש בשיטה שהוצגה לאחרונה במאמר QLoRA: כוונון מתאם בדרגה נמוכה המודע לכיוונט ליצירת שפה מאת Tim Dettmers et al. QLoRA היא טכניקה חדשה לצמצום טביעת הרגל של הזיכרון של דגמי שפות גדולים במהלך כוונון עדין, מבלי להקריב את הביצועים.
הערה: הכוונון העדין של מודל llama2-7b המוצג להלן נבדק על אמזון מחברת SageMaker Studio עם Python 2.0 GPU Optimized Kernel באמצעות א ml.g5.2xlarge סוג מופע. כתרגול מומלץ, אנו ממליצים להשתמש ב- סטודיו SageMaker של אמזון סביבת פיתוח משולבת (IDE) הושקה בעצמך ענן וירטואלי פרטי של אמזון (Amazon VPC). זה מאפשר לך לשלוט, לפקח ולבדוק את תעבורת הרשת בתוך ומחוץ ל-VPC שלך באמצעות יכולות רשת ואבטחה סטנדרטיות של AWS. למידע נוסף, ראה אבטחת קישוריות ל- Amazon SageMaker Studio באמצעות VPC פרטי.
לכמת את מודל הבסיס
ראשית, אנו טוענים מודל כמותי עם קוונטיזציה של 4 סיביות באמצעות שנאים של Huggingface הספרייה כדלקמן:
טען מערך אימון
לאחר מכן, אנו טוענים את מערך הנתונים כדי להזין את המודל לשלב כוונון עדין המוצג כדלקמן:
חבר שכבת מתאם
כאן אנו מצרפים שכבת מתאם קטנה ניתנת לאימון, המוגדרת כ LoraConfig מוגדר ב-Handging Face's peft סִפְרִיָה.
לאמן מודל
באמצעות תצורת ה-LoRA המוצגת למעלה, נכוון את דגם ה-Llama2 יחד עם הפרמטרים היפר. קטע קוד לאימון המודל מוצג בקטע הבא:
מיזוג משקל דגם
הדגם המכוונן שהופעל לעיל יצר דגם חדש המכיל את משקולות מתאם LoRA המאומנות. בקטע הקוד הבא, נמזג את המתאם עם דגם הבסיס כדי שנוכל להשתמש במודל המכוונן להסקת מסקנות.
העלה משקל דגם לאמזון S3
בשלב האחרון של חלק 1, נשמור את משקלי הדגם הממוזגים במיקום מסוים של Amazon S3. משקל הדגם ישמש את מיכל הגשה של דגם באמזון SageMaker כדי לארח את הדגם באמצעות מופע Inferentia2.
חלק 2: מארח מודל QLoRA להסקה עם AWS Inf2 באמצעות SageMaker LMI Container
בחלק זה, נעבור על השלבים של פריסת מודל QLoRA מכוונן עדין בסביבת אירוח של Amazon SageMaker. נשתמש ב- a הגשת DJL מיכל מבית SageMaker DLC, אשר משתלב עם שנאים-נוירון ספרייה לארח דגם זה. ההגדרה מקלה על טעינת מודלים על מאיצי AWS Inferentia2, מקבילה את המודל על פני NeuronCores מרובות ומאפשרת הגשה באמצעות נקודות קצה HTTP.
הכן חפצי מודל
DJL תומך בספריות רבות של מיטוב למידה עמוקה, כולל DeepSpeed, FasterTransformer ועוד. עבור תצורות ספציפיות לדגם, אנו מספקים א serving.properties
עם פרמטרים מרכזיים, כגון tensor_parallel_degree
ו model_id
כדי להגדיר את אפשרויות טעינת הדגם. ה model_id
יכול להיות מזהה דגם Hugging Face, או נתיב Amazon S3 שבו מאוחסנים משקלי הדגם. בדוגמה שלנו, אנו מספקים את מיקום Amazon S3 של הדגם המכוונן שלנו. קטע הקוד הבא מציג את המאפיינים המשמשים להגשת המודל:
אנא עיין בזה תיעוד למידע נוסף על האפשרויות הניתנות להגדרה הזמינות דרך serving.properties
. שימו לב שאנו משתמשים option.n_position=512
בבלוג זה להידור מהיר יותר של AWS Neuron. אם ברצונך לנסות אורך אסימון קלט גדול יותר, אנו ממליצים לקורא להרכיב מראש את המודל מבעוד מועד (ראה AOT Pre-Compile Model ב-EC2). אחרת, אתה עלול להיתקל בשגיאת פסק זמן אם זמן ההידור ארוך מדי.
לאחר serving.properties
הקובץ מוגדר, נארוז את הקובץ ל-a tar.gz
פורמט, כדלקמן:
לאחר מכן, נעלה את ה-tar.gz למיקום דלי של אמזון S3:
צור נקודת קצה של דגם אמזון SageMaker
כדי להשתמש במופע Inf2 להגשה, אנו משתמשים באמזון מיכל SageMaker LMI עם תמיכת DJL neuronX. נא להתייחס לזה פוסט למידע נוסף על שימוש במיכל של DJL NeuronX להסקת מסקנות. הקוד הבא מראה כיצד לפרוס מודל באמצעות Amazon SageMaker Python SDK:
נקודת קצה של מודל בדיקה
לאחר פריסת המודל בהצלחה, נוכל לאמת את נקודת הקצה על ידי שליחת בקשה לדוגמה למנבא:
הפלט לדוגמה מוצג כדלקמן:
בהקשר של ניתוח נתונים, Machine Learning (ML) מתייחס לטכניקה סטטיסטית המסוגלת לחלץ כוח חיזוי ממערך נתונים עם מורכבות ודיוק הולכים וגדלים על ידי צמצום איטרטיבי של היקף הנתון.
למידת מכונה אינה טכניקה סטטיסטית חדשה, אלא שילוב של טכניקות קיימות. יתר על כן, הוא לא תוכנן לשימוש עם מערך נתונים ספציפי או כדי לייצר תוצאה ספציפית. במקום זאת, הוא תוכנן להיות גמיש מספיק כדי להתאים לכל מערך נתונים וליצור תחזיות לגבי כל תוצאה.
לנקות את
אם תחליט שאתה כבר לא רוצה להשאיר את נקודת הקצה של SageMaker פועלת, תוכל למחוק אותה באמצעות AWS SDK עבור Python (boto3), AWS CLI או Amazon SageMaker Console. בנוסף, אתה יכול גם כיבוי משאבי Amazon SageMaker Studio שכבר לא נדרשים.
סיכום
בפוסט זה, הראינו לכם כיצד לכוונן דגם Llama2-7b באמצעות מתאם LoRA עם קוונטיזציה של 4 סיביות באמצעות מופע GPU יחיד. לאחר מכן פרסנו את המודל למופע Inf2 המתארח באמזון SageMaker באמצעות מיכל הגשה של DJL. לבסוף, אימתנו את נקודת הקצה של מודל אמזון SageMaker עם חיזוי יצירת טקסט באמצעות SageMaker Python SDK. קדימה, נסה את זה, אנחנו אוהבים לשמוע את המשוב שלך. הישאר מעודכן לקבלת עדכונים על יכולות נוספות וחידושים חדשים עם AWS Inferentia.
לדוגמאות נוספות על AWS Neuron, ראה aws-נוירון-דגימות.
על הכותבים
ווי טה הוא ארכיטקט פתרונות מומחה בינה מלאכותית/ML בכיר ב-AWS. הוא נלהב לעזור ללקוחות לקדם את מסע ה-AWS שלהם, תוך התמקדות בשירותי למידת מכונה של אמזון ובפתרונות מבוססי למידת מכונה. מחוץ לעבודה, הוא נהנה מפעילויות חוצות כמו קמפינג, דיג וטיולים עם משפחתו.
צ'ינגווהאני לי הוא מומחה למידת מכונה בשירותי האינטרנט של אמזון. הוא קיבל את הדוקטורט. במחקר מבצעים לאחר ששבר את חשבון מענקי המחקר של יועצו ולא הצליח להעניק את פרס נובל שהבטיח. נכון לעכשיו הוא מסייע ללקוחות בענף השירותים הפיננסיים וביטוח לבנות פתרונות למידת מכונה ב- AWS. בזמנו הפנוי הוא אוהב לקרוא ולהוריד.
- הפצת תוכן ויחסי ציבור מופעל על ידי SEO. קבל הגברה היום.
- PlatoData.Network Vertical Generative Ai. העצים את עצמך. גישה כאן.
- PlatoAiStream. Web3 Intelligence. הידע מוגבר. גישה כאן.
- PlatoESG. פחמן, קלינטק, אנרגיה, סביבה, שמש, ניהול פסולת. גישה כאן.
- PlatoHealth. מודיעין ביוטכנולוגיה וניסויים קליניים. גישה כאן.
- מקור: https://aws.amazon.com/blogs/machine-learning/fine-tune-llama-2-using-qlora-and-deploy-it-on-amazon-sagemaker-with-aws-inferentia2/
- :יש ל
- :הוא
- :לֹא
- :איפה
- $ למעלה
- 1
- 10
- 100
- 11
- 15%
- 16
- 19
- 24
- 300
- 7
- 70
- 8
- a
- אודות
- מֵעַל
- מאיץ
- מאיצים
- גישה
- חֶשְׁבּוֹן
- דיוק
- להשיג
- לרוחב
- פעילויות
- להסתגל
- נוסף
- בנוסף
- כתובת
- לקדם
- לאחר
- קדימה
- AI
- AI / ML
- AL
- מאפשר
- לאורך
- אלפא
- גם
- אמזון בעברית
- למידת מכונת אמזון
- אמזון SageMaker
- סטודיו SageMaker של אמזון
- אמזון שירותי אינטרנט
- an
- אנליזה
- ו
- כל
- ממשקי API
- החל
- גישה
- ARE
- AS
- At
- לצרף
- המכונית
- זמין
- AWS
- Afer Inferentia
- כדור
- בסיס
- מבוסס
- אצווה
- BE
- היה
- תועלת
- הטוב ביותר
- מוטב
- בֵּין
- B
- בלוג
- בלוגים
- לְגַשֵׁר
- חסר פרוטה
- לִבנוֹת
- אבל
- by
- CAN
- יכולות
- מסוגל
- בחרו
- ענן
- קוד
- אוסף
- שילוב
- להשלים
- מורכבות
- רְכִיב
- לחשב
- תְצוּרָה
- מוגדר
- קישוריות
- קונסול
- רב
- מכולה
- מכיל
- הקשר
- לִשְׁלוֹט
- עלות
- יכול
- נוצר
- כיום
- לקוחות
- נתונים
- ניתוח נתונים
- להחליט
- עמוק
- למידה עמוקה
- בְּרִירַת מֶחדָל
- לְהַגדִיר
- מוגדר
- תואר
- למסור
- מספק
- לפרוס
- פרס
- פריסה
- מְתוּאָר
- מעוצב
- צעצועי התפתחות
- מכשיר
- סַוָר
- מטה
- ראוי
- בְּמַהֲלָך
- דינמי
- E&T
- כל אחד
- או
- מאפשר
- מקצה לקצה
- נקודת קצה
- מנוע
- מנועים
- מספיק
- סביבה
- שגיאה
- וכו '
- הכל
- דוגמה
- דוגמאות
- יצא לפועל
- קיימים
- יקר
- ניסיון
- נוסף
- פָּנִים
- מקל
- נכשל
- שקר
- משפחה
- מהר יותר
- משתתפים
- מָשׁוֹב
- שלח
- סופי
- בסופו של דבר
- כספי
- שירות כלכלי
- ראשון
- דיג
- גמיש
- התמקדות
- לעקוב
- בעקבות
- הבא
- כדלקמן
- עָקֵב
- בעד
- פוּרמָט
- מצא
- ארבע
- מסגרות
- הקפאת
- החל מ-
- מלא
- יתר על כן
- דור
- גנרטטיבית
- AI Generative
- לקבל
- לתת
- Go
- הולך
- GPU
- להעניק
- חומרה
- he
- לִשְׁמוֹעַ
- עזרה
- עוזר
- כאן
- גָבוֹהַ
- ביצועים גבוהים
- שֶׁלוֹ
- המארח
- אירח
- אירוח
- בית
- איך
- איך
- אולם
- HTML
- http
- HTTPS
- ID
- if
- תמונה
- ליישם
- יישום
- in
- לכלול
- כולל
- כולל
- גדל
- עצמאי
- תעשייה
- מידע
- חידושים
- קלט
- תשומות
- למשל
- הוראות
- ביטוח
- משולב
- משלב
- אל תוך
- הציג
- IT
- איטרציה
- שֶׁלָה
- Java
- מסע
- jpg
- ג'סון
- שמור
- מפתח
- ערכה (SDK)
- שפה
- גָדוֹל
- גדול יותר
- האחרון
- הושק
- שכבה
- שכבות
- למידה
- אורך
- רמה
- ספריות
- סִפְרִיָה
- מעגל החיים
- כמו
- אוהב
- קו
- רשימה
- לאמה
- LLM
- לִטעוֹן
- טוען
- מיקום
- עוד
- אהבה
- להוריד
- מכונה
- למידת מכונה
- ראשי
- שומר
- לעשות
- ניהול
- רב
- מקסום
- זכרון
- למזג
- שיטה
- שיטות
- יכול
- ML
- מודל
- מודלים
- מודולים
- צג
- יותר
- רוב
- הרבה
- מספר
- שמות
- ב
- צורך
- רשת
- תנועת רשת
- רשתות
- חדש
- לא
- פרס נובל
- ללא חתימה
- הערות
- מספר
- of
- on
- ONE
- רק
- עַל גַבֵּי
- לפתוח
- קוד פתוח
- תפעול
- אופטימיזציה
- מטב
- אופטימיזציה
- אפשרות
- אפשרויות
- or
- אחר
- אַחֶרֶת
- שלנו
- תוֹצָאָה
- קווי מתאר
- תפוקה
- בחוץ
- יותר
- שֶׁלוֹ
- חבילה
- מאמר
- מקביל
- פרמטר
- פרמטרים
- חלק
- חלקים
- לעבור
- לוהט
- נתיב
- ביצועים
- ביצעתי
- תכנית
- אפלטון
- מודיעין אפלטון
- אפלטון נתונים
- אנא
- פופולרי
- הודעה
- הודעות
- כּוֹחַ
- מופעל
- תרגול
- דיוק
- נבואה
- התחזיות
- חיזוי
- תנאים מוקדמים
- פְּרָטִי
- הפרס
- בעיה
- תהליך
- לייצר
- הפקה
- מוּבטָח
- נכסים
- לספק
- בפומבי
- לאור
- פיתון
- פיטורך
- רכס
- טִוּוּחַ
- במקום
- חומר עיוני
- קורא
- קריאה
- קיבלו
- לאחרונה
- להמליץ
- להפחית
- להתייחס
- מתייחס
- מאגר
- לבקש
- בקשות
- נדרש
- דורש
- מחקר
- משאבים
- תגובה
- תגובות
- תקין
- הפעלה
- ריצה
- מקריב
- בעל חכמים
- שמור
- סולם
- דרוג
- היקף
- Sdk
- בצורה חלקה
- שְׁנִיָה
- דור שני
- סעיף
- אבטחה
- לִרְאוֹת
- שליחה
- לחצני מצוקה לפנסיונרים
- רצף
- לשרת
- שרות
- שירותים
- הגשה
- סט
- הצבה
- התקנה
- כמה
- קצר
- ראווה
- הראה
- הראה
- הופעות
- since
- יחיד
- מידה
- קטן
- קטע
- So
- תוכנה
- פיתוח תוכנה
- ערכת פיתוח תוכנה
- פִּתָרוֹן
- פתרונות
- לפעמים
- מָקוֹר
- מקורות
- מומחה
- ספציפי
- מפורט
- תֶקֶן
- החל
- סטטיסטי
- להשאר
- שלב
- צעדים
- מאוחסן
- סטודיו
- בהצלחה
- כזה
- תמיכה
- נתמך
- תומך
- משימות
- הוראה
- טכניקה
- טכניקות
- tensorflow
- נבדק
- טֶקסט
- זֶה
- השמיים
- שֶׁלָהֶם
- אותם
- אז
- אלה
- זֶה
- דרך
- טים
- זמן
- ל
- אסימון
- מטבעות
- גַם
- חלק עליון
- נושא
- לפיד
- תְנוּעָה
- רכבת
- מְאוּמָן
- הדרכה
- שנאי
- טרִילִיוֹן
- נָכוֹן
- לנסות
- מכוון
- כונון
- שתיים
- סוג
- עדכונים
- נטען
- כתובת האתר
- להשתמש
- מְשׁוּמָשׁ
- משתמש
- חוויית משתמש
- באמצעות
- בְּדֶרֶך כְּלַל
- לְאַמֵת
- תוקף
- גרסה
- באמצעות
- וירטואלי
- ללכת
- בהדרכה
- רוצה
- היה
- we
- אינטרנט
- שירותי אינטרנט
- מִשׁקָל
- טוֹב
- מה
- מה
- אשר
- בזמן
- יצטרך
- עם
- בתוך
- לְלֹא
- תיק עבודות
- עובד
- זרימות עבודה
- לכתוב
- כתיבה
- אתה
- זפירנט