עבור מדעני נתונים, העברת מודלים של למידת מכונה (ML) מהוכחת הרעיון לייצור מהווה לעתים קרובות אתגר משמעותי. אחד האתגרים העיקריים יכול להיות פריסת מודל בעל ביצועים טובים, מאומן מקומית לענן לצורך הסקה ושימוש ביישומים אחרים. זה יכול להיות מסורבל לנהל את התהליך, אבל עם הכלי הנכון, אתה יכול להפחית משמעותית את המאמץ הנדרש.
מסקנות של אמזון SageMaker, שנעשה זמין באופן כללי באפריל 2022, מקל עליך לפרוס מודלים של ML לייצור כדי ליצור תחזיות בקנה מידה, ומספק מבחר רחב של תשתית ML ואפשרויות פריסת מודלים כדי לעזור לענות על כל מיני צורכי מסקנות ML. אתה יכול להשתמש נקודות קצה של SageMaker Serverless Inference לעומסי עבודה שיש להם תקופות סרק בין פרצי תנועה ויכולים לסבול התחלות קרות. נקודות הקצה מתרחבות באופן אוטומטי בהתבסס על תעבורה ומסירות את ההרמה הכבדה הבלתי מובחנת של בחירה וניהול שרתים. בנוסף, אתה יכול להשתמש AWS למבדה ישירות כדי לחשוף את המודלים שלך ולפרוס את יישומי ה-ML שלך באמצעות מסגרת הקוד הפתוח המועדפת עליך, שיכולה להתגלות כגמישה וחסכונית יותר.
FastAPI היא מסגרת אינטרנט מודרנית עם ביצועים גבוהים לבניית ממשקי API עם Python. זה בולט כשמדובר בפיתוח יישומים ללא שרתים עם שירותי מיקרו RESTful ומקרי שימוש הדורשים מסקנות ML בקנה מידה רחב בתעשיות מרובות. הקלות והפונקציונליות המובנית שלו כמו תיעוד ה-API האוטומטי הופכים אותו לבחירה פופולרית בקרב מהנדסי ML לפרוס ממשקי API בעלי ביצועים גבוהים. אתה יכול להגדיר ולארגן את המסלולים שלך באמצעות פונקציונליות מחוץ לקופסה מ-FastAPI כדי להרחיב ולטפל בהיגיון העסקי הצומח לפי הצורך, לבדוק באופן מקומי ולארח אותו ב- Lambda, ואז לחשוף אותו דרך שער API יחיד, המאפשר לך הביאו מסגרת אינטרנט בקוד פתוח ל-Lambda ללא הרמה כבדה או שינוי של הקודים שלכם.
פוסט זה מראה לך כיצד לפרוס ולהפעיל בקלות ML מסקנות ללא שרת על ידי חשיפת מודל ה-ML שלך כנקודת קצה באמצעות FastAPI, Docker, Lambda ו- שער API של אמזון. אנו גם מראים לך כיצד להפוך את הפריסה לאוטומטית באמצעות ה ערכת פיתוח ענן AWS (AWS CDK).
סקירת פתרונות
התרשים הבא מציג את הארכיטקטורה של הפתרון שאנו פורסים בפוסט זה.
תנאים מוקדמים
עליך לעמוד בדרישות הקדם הבאות:
- Python3 מותקן, יחד עם
virtualenv
ליצירה וניהול של סביבות וירטואליות ב- Python - aws-cdk v2 מותקן במערכת שלך על מנת שתוכל להשתמש ב-AWS CDK CLI
- Docker מותקן ופועל במחשב המקומי שלך
בדוק אם כל התוכנה הדרושה מותקנת:
- השמיים ממשק שורת הפקודה של AWS (AWS CLI) יש צורך. היכנס לחשבונך ובחר את האזור שבו תרצה לפרוס את הפתרון.
- השתמש בקוד הבא כדי לבדוק את גרסת Python שלך:
- תבדוק אם
virtualenv
מותקן ליצירה וניהול של סביבות וירטואליות ב- Python. באופן קפדני, זו לא דרישה קשה, אבל היא תקל על החיים שלך ותעזור לעקוב אחר הפוסט הזה ביתר קלות. השתמש בקוד הבא: - בדוק אם cdk מותקן. זה ישמש לפריסת הפתרון שלנו.
- בדוק אם Docker מותקן. הפתרון שלנו יהפוך את הדגם שלך לנגיש באמצעות תמונת Docker ל-Lambda. כדי לבנות את התמונה הזו באופן מקומי, אנחנו צריכים את Docker.
- ודא ש-Docker פועל עם הקוד הבא:
כיצד לבנות את פרויקט FastAPI שלך באמצעות AWS CDK
אנו משתמשים במבנה הספריות הבא עבור הפרויקט שלנו (בהתעלמות מקוד AWS CDK מסויים שאינו מהותי בהקשר של פוסט זה):
הספרייה עוקבת אחר ה מבנה מומלץ של פרויקטי AWS CDK עבור Python.
החלק החשוב ביותר במאגר זה הוא fastapi_model_serving
מַדרִיך. הוא מכיל את הקוד שיגדיר את ערימת CDK של AWS ואת המשאבים שישמשו להגשת מודלים.
השמיים fastapi_model_serving
ספרייה מכילה את model_endpoint
ספריית משנה, המכילה את כל הנכסים הדרושים המרכיבים את נקודת הקצה ללא השרת שלנו, כלומר ה-Dockerfile לבניית תמונת Docker שבה Lambda תשתמש, קוד הפונקציה Lambda שמשתמש ב-FastAPI כדי לטפל בבקשות הסקה ולנתב אותן לנקודת הקצה הנכונה, והמודל חפצים של המודל שאנו רוצים לפרוס. model_endpoint
מכיל גם את הדברים הבאים:
Docker
- ספריית משנה זו מכילה את הדברים הבאים:Dockerfile
- זה משמש לבניית התמונה עבור פונקציית Lambda עם כל החפצים (קוד פונקציית למבדה, חפצי מודל וכן הלאה) במקום הנכון, כך שניתן יהיה להשתמש בהם ללא בעיות.serving.api.tar.gz
– זהו Tarball שמכיל את כל הנכסים מתיקיית זמן הריצה הדרושים לבניית תמונת Docker. אנו דנים כיצד ליצור את.tar.gz
קובץ מאוחר יותר בפוסט זה.runtime
- ספריית משנה זו מכילה את הדברים הבאים:serving_api
– הקוד של פונקציית Lambda והתלות שלה המפורטים בקובץ requirements.txt.custom_lambda_utils
- זה כולל סקריפט מסקנות שטוען את חפצי המודל הדרושים כדי שניתן יהיה להעביר את המודל ל-serving_api
זה יחשוף אותו כנקודת קצה.
בנוסף, יש לנו את ספריית התבניות, שמספקת תבנית של מבני תיקיות וקבצים שבהם אתה יכול להגדיר את הקודים וה-API המותאמים אישית שלך בעקבות הדוגמה שעברנו קודם לכן. ספריית התבניות מכילה קוד דמה שתוכל להשתמש בו כדי ליצור פונקציות חדשות של Lambda:
dummy
– מכיל את הקוד שמיישם את המבנה של פונקציית Lambda רגילה באמצעות זמן הריצה של Pythonapi
- מכיל את הקוד שמיישם פונקציית Lambda העוטפת נקודת קצה FastAPI סביב שער API קיים
פרוס את הפתרון
כברירת מחדל, הקוד פרוס בתוך אזור eu-west-1. אם אתה רוצה לשנות את האזור, אתה יכול לשנות את משתנה ההקשר DEPLOYMENT_REGION ב- cdk.json
קובץ.
זכור, עם זאת, שהפתרון מנסה לפרוס פונקציית Lambda על גבי ארכיטקטורת arm64, וייתכן שתכונה זו לא תהיה זמינה בכל האזורים. במקרה זה, עליך לשנות את פרמטר הארכיטקטורה ב- fastapi_model_serving_stack.py
קובץ, כמו גם השורה הראשונה של Dockerfile בתוך ספריית Docker, כדי לארח פתרון זה בארכיטקטורת x86.
כדי לפרוס את הפתרון, בצע את השלבים הבאים:
- הפעל את הפקודה הבאה כדי לשכפל את מאגר GitHub:
git clone https://github.com/aws-samples/lambda-serverless-inference-fastapi
מכיוון שאנו רוצים להראות שהפתרון יכול לעבוד עם חפצי מודל שאתה מאמן באופן מקומי, אנו מכילים חפץ דגם לדוגמה של חפץ שהוכשר מראש DistilBERT דוגמנית במרכז המודלים של Hugging Face עבור משימת מענה לשאלות ב-serving_api.tar.gz
קוֹבֶץ. זמן ההורדה יכול לקחת כ-3-5 דקות. עכשיו, בואו נגדיר את הסביבה. - הורד את הדגם המאומן מראש שייפרס ממרכז המודלים של Hugging Face לתוך
./model_endpoint/runtime/serving_api/custom_lambda_utils/model_artifacts
מַדרִיך. זה גם יוצר סביבה וירטואלית ומתקין את כל התלות הדרושות. אתה צריך להפעיל את הפקודה הזו פעם אחת בלבד:make prep
. פקודה זו יכולה להימשך כ-5 דקות (תלוי ברוחב הפס של האינטרנט שלך) מכיוון שהיא צריכה להוריד את חפצי הדגם. - ארוז את חפצי הדגם בתוך א
.tar.gz
ארכיון שישמש בתוך תמונת Docker הבנויה בערימת CDK של AWS. אתה צריך להריץ את הקוד הזה בכל פעם שאתה מבצע שינויים בחפצי המודל או ב-API עצמו כדי שתמיד תהיה ארוזה הגרסה המעודכנת ביותר של נקודת הקצה המשרתת שלך:make package_model
. החפצים כולם במקום. כעת אנו יכולים לפרוס את ערימת ה-AWS CDK לחשבון ה-AWS שלך. - הפעל את cdk bootstrap אם זו הפעם הראשונה שאתה פורס אפליקציית AWS CDK בסביבה (שילוב חשבון + אזור):
מחסנית זו כוללת משאבים הדרושים להפעלת ערכת הכלים. לדוגמה, הערימה כוללת דלי של Amazon Simple Storage Service (Amazon S3) המשמש לאחסון תבניות ונכסים במהלך תהליך הפריסה.
מכיוון שאנו בונים תמונות Docker באופן מקומי בפריסת AWS CDK זו, עלינו לוודא שהדמון Docker פועל לפני שנוכל לפרוס מחסנית זו דרך AWS CDK CLI.
- כדי לבדוק אם דמון ה-Docker פועל במערכת שלך או לא, השתמש בפקודה הבאה:
אם אינך מקבל הודעת שגיאה, אתה אמור להיות מוכן לפרוס את הפתרון.
- פרוס את הפתרון עם הפקודה הבאה:
שלב זה יכול להימשך כ-5-10 דקות עקב בנייה ודחיפה של תמונת Docker.
פתרון בעיות
אם אתה משתמש ב-Mac, אתה עלול להיתקל בשגיאה בעת הכניסה מרשם מיכל אלסטי של אמזון (Amazon ECR) עם התחברות Docker, כגון Error saving credentials ... not implemented
. לדוגמה:
לפני שתוכל להשתמש ב-Lambda על גבי מיכלי Docker בתוך AWS CDK, ייתכן שיהיה עליך לשנות את ~/docker/config.json
קוֹבֶץ. ליתר דיוק, ייתכן שיהיה עליך לשנות את הפרמטר credsStore ב ~/.docker/config.json
ל- osxkeychain. זה פותר בעיות התחברות של Amazon ECR ב-Mac.
הפעל מסקנות בזמן אמת
אחרי שלך AWS CloudFormation מחסנית נפרסה בהצלחה, עבור אל יציאות לשונית עבור המחסנית שלך במסוף AWS CloudFormation ופתח את כתובת האתר של נקודת הקצה. כעת המודל שלנו נגיש דרך כתובת האתר של נקודת הקצה ואנחנו מוכנים להפעיל הסקת מסקנות בזמן אמת.
נווט אל כתובת האתר כדי לראות אם אתה יכול לראות את הודעת "שלום עולם" והוסף /docs
לכתובת כדי לראות אם אתה יכול לראות את דף ממשק המשתמש האינטראקטיבי של swagger בהצלחה. ייתכן שתהיה שעת התחלה קרה, אז ייתכן שתצטרך להמתין או לרענן כמה פעמים.
לאחר שתתחבר לדף הנחיתה של דף ממשק המשתמש של FastAPI swagger, תוכל לרוץ דרך השורש /
או באמצעות /question
.
מ /
, אתה יכול להפעיל את ה-API ולקבל את הודעת "שלום עולם".
מ /question
, אתה יכול להריץ את ה-API ולהריץ מסקנות ML על המודל שפרסנו עבור מקרה המענה לשאלות. לדוגמה, אנו משתמשים בשאלה היא מהו צבע המכונית שלי כעת? וההקשר הוא המכונית שלי הייתה פעם כחולה אבל צבעתי באדום.
כשאתה בוחר לבצע, בהתבסס על ההקשר הנתון, המודל יענה על השאלה עם תגובה, כפי שמוצג בצילום המסך הבא.
בגוף התגובה ניתן לראות את התשובה עם ציון הביטחון מהמודל. תוכל גם להתנסות בדוגמאות אחרות או להטמיע את ה-API באפליקציה הקיימת שלך.
לחלופין, אתה יכול להפעיל את ההסקה באמצעות קוד. הנה דוגמה אחת שנכתבה ב-Python, תוך שימוש ב- requests
הספריה:
הקוד מוציא מחרוזת הדומה לזו הבאה:
אם אתה מעוניין לדעת יותר על פריסת AI Generative ומודלים של שפות גדולות ב-AWS, בדוק כאן:
- פרוס AI Generative ללא שרתים ב-AWS Lambda עם OpenLLaMa
- פרוס מודלים של שפה גדולים ב-AWS Inferentia2 באמצעות מיכלי מסקנות מודלים גדולים
לנקות את
בתוך ספריית השורש של המאגר שלך, הפעל את הקוד הבא כדי לנקות את המשאבים שלך:
סיכום
בפוסט זה, הצגנו כיצד אתה יכול להשתמש ב- Lambda כדי לפרוס את מודל ה-ML המיומן שלך באמצעות מסגרת יישום האינטרנט המועדפת עליך, כגון FastAPI. סיפקנו מאגר קוד מפורט שתוכל לפרוס, ואתה שומר על הגמישות של המעבר לכל חפצי מודל מאומנים שאתה מעבד. הביצועים יכולים להיות תלויים באופן שבו אתה מיישם ופריסה של המודל.
אתה מוזמן לנסות את זה בעצמך, ואנו נרגשים לשמוע את המשוב שלך!
על הכותבים
טינגי לי הוא ארכיטקט פתרונות ארגוניים מ-AWS הממוקם בשטוקהולם, שוודיה, התומך בלקוחות הנורדיים. היא נהנית לעזור ללקוחות בארכיטקטורה, עיצוב ופיתוח של פתרונות תשתית מותאמים לענן. היא מתמחה ב-AI ו-Machine Learning והיא מעוניינת להעצים לקוחות עם אינטליגנציה ביישומי AI/ML שלהם. בזמנה הפנוי היא גם מאיירת במשרה חלקית שכותבת רומנים ומנגנת בפסנתר.
דמיר קטוביץ' הוא מהנדס למידת מכונה מ-AWS שבסיסה בציריך, שוויץ. הוא מתקשר עם לקוחות ועוזר להם ליישם יישומי ML ניתנים להרחבה ופונקציונליים מלאים. הוא נלהב מבנייה וייצור של יישומי למידת מכונה עבור לקוחות ותמיד להוט לחקור סביב מגמות חדשות וטכנולוגיות מתקדמות בעולם ה-AI/ML.
- הפצת תוכן ויחסי ציבור מופעל על ידי SEO. קבל הגברה היום.
- PlatoData.Network Vertical Generative Ai. העצים את עצמך. גישה כאן.
- PlatoAiStream. Web3 Intelligence. הידע מוגבר. גישה כאן.
- PlatoESG. רכב / רכבים חשמליים, פחמן, קלינטק, אנרגיה, סביבה, שמש, ניהול פסולת. גישה כאן.
- BlockOffsets. מודרניזציה של בעלות על קיזוז סביבתי. גישה כאן.
- מקור: https://aws.amazon.com/blogs/machine-learning/deploy-a-serverless-ml-inference-endpoint-of-large-language-models-using-fastapi-aws-lambda-and-aws-cdk/
- :הוא
- :לֹא
- :איפה
- $ למעלה
- 1
- 10
- 100
- 13
- 2022
- 7
- 9
- a
- יכול
- אודות
- נגיש
- חֶשְׁבּוֹן
- לרוחב
- להוסיף
- בנוסף
- כתובת
- AI
- AI / ML
- תעשיות
- מאפשר
- לאורך
- גם
- תמיד
- אמזון בעברית
- אמזון שירותי אינטרנט
- בין היתר
- an
- ו
- לענות
- כל
- API
- ממשקי API
- האפליקציה
- בקשה
- יישומים
- אַפּרִיל
- ארכיטקטורה
- ארכיון
- ARE
- סביב
- AS
- נכסים
- At
- אוטומטי
- מכני עם סלילה אוטומטית
- באופן אוטומטי
- זמין
- רָחוֹק
- AWS
- AWS CloudFormation
- AWS למבדה
- קצה אחורי
- רוחב פס
- מבוסס
- BE
- כי
- לפני
- בֵּין
- כָּחוֹל
- גוּף
- אוזן נעל
- להביא
- רחב
- לִבנוֹת
- בִּניָן
- נבנה
- מובנה
- עסקים
- אבל
- by
- CAN
- מכונית
- מקרה
- מקרים
- לאתגר
- האתגרים
- שינוי
- שינויים
- לבדוק
- בחירה
- בחרו
- ענן
- קוד
- קודים
- קר
- צֶבַע
- שילוב
- מגיע
- להשלים
- מושג
- אמון
- לְחַבֵּר
- הקשר
- קונסול
- להכיל
- מכולה
- מכולות
- מכיל
- הקשר
- לתקן
- עלות תועלת
- יכול
- לִיצוֹר
- יוצר
- יוצרים
- אישורים
- לקוחות
- אישית
- שיא הטכנולוגיה
- נתונים
- בְּרִירַת מֶחדָל
- תלוי
- לפרוס
- פרס
- פריסה
- פריסה
- עיצוב
- מְפוֹרָט
- מתפתח
- צעצועי התפתחות
- ישירות
- לדון
- סַוָר
- תיעוד
- לא
- להורדה
- ראוי
- בְּמַהֲלָך
- מוקדם יותר
- להקל
- קל יותר
- בקלות
- קל
- מאמץ
- שבץ
- העצמה
- סוף
- נקודת קצה
- עוסק
- מהנדס
- מהנדסים
- לְהַבטִיחַ
- מִפְעָל
- סביבה
- סביבות
- שגיאה
- דוגמה
- דוגמאות
- נרגש
- לבצע
- קיימים
- יציאה
- לְנַסוֹת
- לחקור
- פָּנִים
- מאפיין
- מעטים
- שלח
- קבצים
- ראשון
- firsttime
- גמישות
- גמיש
- לעקוב
- הבא
- כדלקמן
- בעד
- מסגרת
- החל מ-
- פונקציה
- פונקציות
- פונקציות
- שער כניסה
- בדרך כלל
- גנרטטיבית
- AI Generative
- לקבל
- GitHub
- נתן
- Go
- הולך
- גדל
- לטפל
- קשה
- יש
- he
- לִשְׁמוֹעַ
- כבד
- הרמת כבד
- לעזור
- עזרה
- עוזר
- לה
- כאן
- ביצועים גבוהים
- המארח
- איך
- איך
- אולם
- HTML
- http
- HTTPS
- טבור
- i
- להתבטל
- if
- תמונה
- תמונות
- ליישם
- מיישמים
- חשוב
- in
- באחר
- כולל
- תעשיות
- תשתית
- בתוך
- מותקן
- מוֹדִיעִין
- אינטראקטיבי
- מעוניין
- אינטרנט
- אל תוך
- הציג
- בעיות
- IT
- שֶׁלָה
- עצמו
- ג'סון
- נִלהָב
- יודע
- נחיתה
- שפה
- גָדוֹל
- מאוחר יותר
- למידה
- סִפְרִיָה
- החיים
- רמה
- כמו
- קו
- המון
- מקומי
- באופן מקומי
- היכנס
- רישום
- הגיון
- התחבר
- מק
- מכונה
- למידת מכונה
- עשוי
- ראשי
- לעשות
- עושה
- לנהל
- ניהול
- מאי..
- לִפְגוֹשׁ
- הודעה
- מיקרו
- יכול
- אכפת לי
- דקות
- ML
- מודל
- מודלים
- מודרני
- יותר
- רוב
- נע
- מספר
- צריך
- my
- כלומר
- הכרחי
- צורך
- נחוץ
- צרכי
- חדש
- עַכשָׁיו
- of
- לעתים קרובות
- on
- פעם
- ONE
- רק
- לפתוח
- קוד פתוח
- מבצע
- אפשרויות
- or
- להזמין
- רגיל
- אחר
- שלנו
- הַחוּצָה
- ארוז
- עמוד
- פרמטר
- חלק
- עבר
- לוהט
- ביצועים
- תקופות
- מקום
- אפלטון
- מודיעין אפלטון
- אפלטון נתונים
- משחק
- פופולרי
- הודעה
- התחזיות
- מועדף
- תנאים מוקדמים
- מתנות
- תהליך
- הפקה
- פּרוֹיֶקט
- פרויקטים
- הוכחה
- הוכחה של רעיון או תאוריה
- להוכיח
- ובלבד
- מספק
- מתן
- דוחף
- פיתון
- שאלה
- מוכן
- זמן אמת
- Red
- להפחית
- באזור
- אזורים
- מאגר
- בקשות
- נדרש
- דרישה
- דרישות
- משאבים
- תגובה
- תוצאה
- לִשְׁמוֹר
- תקין
- שורש
- מסלול
- נתיבים
- הפעלה
- ריצה
- בעל חכמים
- חסכת
- להרחבה
- סולם
- מדענים
- היקף
- ציון
- לִרְאוֹת
- בחירה
- מבחר
- ללא שרת
- שרתים
- שרות
- שירותים
- הגשה
- סט
- היא
- צריך
- לְהַצִיג
- ראווה
- הראה
- הופעות
- משמעותי
- באופן משמעותי
- דומה
- פָּשׁוּט
- יחיד
- So
- תוכנה
- פִּתָרוֹן
- פתרונות
- פותר
- כמה
- מדבר
- מיוחד
- במיוחד
- מפורט
- לערום
- עומד
- התחלה
- התחלות
- מצב
- שלב
- צעדים
- אחסון
- חנות
- אחסון
- מחרוזת
- מִבְנֶה
- בהצלחה
- כזה
- מסייע
- שוודיה
- שוויץ
- מערכת
- לקחת
- המשימות
- טכנולוגיות
- תבנית
- תבניות
- מבחן
- זֶה
- השמיים
- שֶׁלָהֶם
- אותם
- אז
- שם.
- הֵם
- זֶה
- דרך
- זמן
- פִּי
- ל
- כלי
- חלק עליון
- תְנוּעָה
- רכבת
- מְאוּמָן
- מגמות
- לנסות
- ui
- יוניקס
- עדכן
- כתובת האתר
- להשתמש
- מְשׁוּמָשׁ
- משתמש
- שימושים
- באמצעות
- גרסה
- באמצעות
- וירטואלי
- לחכות
- רוצה
- היה
- we
- אינטרנט
- אפליקציית רשת
- שירותי אינטרנט
- ברוך הבא
- טוֹב
- הלכתי
- מה
- מה
- מתי
- בכל פעם
- אם
- אשר
- מי
- יצטרך
- עם
- לְלֹא
- תיק עבודות
- עוֹלָם
- כתוב
- אתה
- עצמך
- זפירנט
- ציריך