كانت بذور نماذج التعلم الآلي (ML) موجودة منذ عقود ، ولكن مع توافر الجاهزة لقدرة حساب لا حصر لها تقريبًا ، وانتشار هائل للبيانات ، والتقدم السريع لتقنيات ML ، يقوم العملاء عبر الصناعات بالتبني بسرعة واستخدام تقنيات ML لتحويل أعمالهم.
في الآونة الأخيرة ، استحوذت تطبيقات الذكاء الاصطناعي التوليدي على انتباه الجميع وخيالهم. نحن حقًا في نقطة انعطاف مثيرة في اعتماد ML على نطاق واسع ، ونعتقد أن كل تجربة وتطبيق العملاء سيتم إعادة اختراعها مع الذكاء الاصطناعي.
AI Generation هو نوع من الذكاء الاصطناعي الذي يمكنه إنشاء محتوى وأفكار جديدة ، بما في ذلك المحادثات والقصص والصور ومقاطع الفيديو والموسيقى. مثل كل الذكاء الاصطناعى ، يتم تشغيل الذكاء الاصطناعى من خلال نماذج ML-النماذج الكبيرة التي يتم تدريبها مسبقًا على شركة واسعة من البيانات ويشار إليها عادة باسم نماذج الأساس (FMS).
يجعلها الحجم والطبيعة للأغراض العامة لـ FMS مختلفًا عن نماذج ML التقليدية ، والتي عادة ما تؤدي مهام محددة ، مثل تحليل النص للشعور وتصنيف الصور واتجاهات التنبؤ.

مع نماذج ML التقليدية ، من أجل تحقيق كل مهمة محددة ، تحتاج إلى جمع البيانات المسمى ، وتدريب نموذج ، ونشر هذا النموذج. مع نماذج الأساس ، بدلاً من جمع البيانات المسمى لكل نموذج وتدريب نماذج متعددة ، يمكنك استخدام نفس FM تم تدريبه مسبقًا لتكييف المهام المختلفة. يمكنك أيضًا تخصيص FMS لتنفيذ وظائف خاصة بالمجال والتي تميز أعمالك ، باستخدام جزء صغير فقط من البيانات وحسابها لتدريب نموذج من نقطة الصفر.
الذكاء الاصطناعى التوليدي لديه القدرة على تعطيل العديد من الصناعات من خلال إحداث ثورة في طريقة إنشاء المحتوى واستهلاكه. يعد إنتاج المحتوى الأصلي ، وتوليد الرموز ، وتحسين خدمة العملاء ، وتلخيص المستندات ، حالات الاستخدام النموذجي لـ AI التوليدي.
توفر Amazon Sagemaker JumpStart نماذج مفتوحة المدربين مسبقًا لمجموعة واسعة من أنواع المشكلات لمساعدتك في البدء في ML. يمكنك تدريب هذه النماذج وضبطها قبل النشر. يوفر JumpStart أيضًا قوالب حلول تقوم بإعداد البنية التحتية لحالات الاستخدام المشتركة ، ومغاتور مثال قابلة للتنفيذ لـ ML مع Amazon Sagemaker.
مع توفر أكثر من 600 نموذج تم تدريبه مسبقًا وتنمو كل يوم ، يمكّن JumpStart المطورين من دمج تقنيات ML المتطورة بسرعة وسهولة في سير عمل الإنتاج. يمكنك الوصول إلى النماذج التي تم تدريبها مسبقًا وقوالب الحلول والأمثلة من خلال صفحة JumpStart Landing في Amazon Sagemaker Studio. يمكنك أيضًا الوصول إلى نماذج JumpStart باستخدام Sagemaker Python SDK. للحصول على معلومات حول كيفية استخدام نماذج JumpStart برمجياً ، راجع استخدام خوارزميات Sagemaker JumpStart مع نماذج مسبقة.
في أبريل عام 2023 ، كشفت AWS النقاب عن الأساس Amazon ، والتي توفر وسيلة لبناء تطبيقات مدعومة من الذكاء الاصطناعى عبر نماذج تدرب مسبقًا من الشركات الناشئة بما في ذلك مختبرات AI21 ، والأنثروبور ، والثبات. يوفر Amazon Bedrock أيضًا إمكانية الوصول إلى طرازات Titan Foundation ، وهي عائلة من النماذج المدربة في المنزل من قبل AWS. من خلال تجربة الخادم الخاصة بـ Amazon Bedrock ، يمكنك بسهولة العثور على النموذج المناسب لاحتياجاتك ، والبدء بسرعة ، وتخصيص FMS الخاص مع بياناتك الخاصة ، ودمجها بسهولة ونشرها في تطبيقاتك باستخدام أدوات AWS وقدراتك على دراية بها (بما في ذلك التكامل مع ميزات SageMaker ML مثل تجارب Amazon Sagements واختبار نماذج مختلفة من سعة Amazon.
في هذا المنشور ، نوضح كيفية نشر نماذج AI للصور والنص من JumpStart باستخدام مجموعة AWS Cloud Development (AWS CDK). AWS CDK هو إطار تطوير البرمجيات مفتوح المصدر لتحديد موارد التطبيق السحابية الخاصة بك باستخدام لغات البرمجة المألوفة مثل Python.
نستخدم نموذج الانتشار المستقر لتوليد الصور ونموذج FLAN-T5-XL لفهم اللغة الطبيعية (NLU) وتوليد النص من الوجه المعانقة في Jumpstart.
تم بناء تطبيق الويب على STERMELIT ، وهي مكتبة Python مفتوحة المصدر تجعل من السهل إنشاء ومشاركة تطبيقات الويب الجميلة والمخصصة لعلوم ML وعلوم البيانات. نستضيف تطبيق الويب باستخدام خدمة Amazon Flastic Container (Amazon ECS) مع AWS Fargate ويتم الوصول إليه عبر موازن تحميل التطبيق. Fargate هي تقنية يمكنك استخدامها مع Amazon ECS لتشغيل الحاويات دون الحاجة إلى إدارة الخوادم أو المجموعات أو الأجهزة الافتراضية. يتم إطلاق نقاط نهاية نموذج الذكاء الاصطناعي من صور JumpStart في سجل حاوية Amazon المرن (Amazon ECR). يتم تخزين بيانات النموذج على Amazon Simple Storage Service (Amazon S3) في حساب JumpStart. يتفاعل تطبيق الويب مع النماذج عبر بوابة Amazon API و AWS Lambda كما هو موضح في الرسم البياني التالي.

توفر API Gateway تطبيق الويب والعملاء الآخرين واجهة مريحة قياسية ، مع حماية وظائف Lambda التي تتفاعل مع النموذج. هذا يبسط رمز تطبيق العميل الذي يستهلك النماذج. يمكن الوصول إلى نقاط نهاية بوابة API في هذا المثال ، مما يتيح إمكانية تمديد هذه البنية لتنفيذ عناصر تحكم وصول API المختلفة والتكامل مع التطبيقات الأخرى.
في هذا المنشور ، نسير لك خلال الخطوات التالية:
نحن نقدم نظرة عامة على الرمز في هذا المشروع في التذييل في نهاية هذا المنشور.
يجب أن يكون لديك المتطلبات الأساسية التالية:
يمكنك نشر البنية التحتية في هذا البرنامج التعليمي من جهاز الكمبيوتر المحلي الخاص بك أو يمكنك استخدام AWS Cloud9 كمحطة عمل للنشر. يأتي AWS Cloud9 محملاً مسبقًا باستخدام AWS CLI و AWS CDK و Docker. إذا اخترت AWS Cloud9 ، فقم بإنشاء البيئة من وحدة التحكم AWS.
التكلفة المقدرة لإكمال هذا المنشور هي 50 دولارًا ، على افتراض أنك تترك الموارد التي تعمل لمدة 8 ساعات. تأكد من حذف الموارد التي تنشئها في هذا المنشور لتجنب الرسوم المستمرة.
إذا لم يكن لديك بالفعل AWS CLI على جهازك المحلي ، راجع تثبيت أو تحديث أحدث إصدار من AWS CLI وتكوين AWS CLI.
قم بتثبيت مجموعة أدوات AWS CDK على مستوى العالم باستخدام أمر MANGER NODE التالي:
npm install -g aws-cdk-lib@latest
قم بتشغيل الأمر التالي للتحقق من التثبيت الصحيح وطباعة رقم الإصدار من AWS CDK:
cdk --version
تأكد من تثبيت Docker على جهازك المحلي. إصدار الأمر التالي للتحقق من الإصدار:
docker --version
على جهازك المحلي ، استنساخ تطبيق AWS CDK مع الأمر التالي:
git clone https://github.com/aws-samples/generative-ai-sagemaker-cdk-demo.git
انتقل إلى مجلد المشروع:
cd generative-ai-sagemaker-cdk-demo
قبل نشر الطلب ، دعنا نراجع بنية الدليل:
.
├── LICENSE
├── README.md
├── app.py
├── cdk.json
├── code
│ ├── lambda_txt2img
│ │ └── txt2img.py
│ └── lambda_txt2nlu
│ └── txt2nlu.py
├── construct
│ └── sagemaker_endpoint_construct.py
├── images
│ ├── architecture.png
│ ├── ...
├── requirements-dev.txt
├── requirements.txt
├── source.bat
├── stack
│ ├── __init__.py
│ ├── generative_ai_demo_web_stack.py
│ ├── generative_ai_txt2img_sagemaker_stack.py
│ ├── generative_ai_txt2nlu_sagemaker_stack.py
│ └── generative_ai_vpc_network_stack.py
├── tests
│ ├── __init__.py
│ └── ...
└── web-app
├── Dockerfile
├── Home.py
├── configs.py
├── img
│ └── sagemaker.png
├── pages
│ ├── 2_Image_Generation.py
│ └── 3_Text_Generation.py
└── requirements.txt يحتوي مجلد stack على الرمز لكل مكدس في تطبيق AWS CDK. يحتوي مجلد code على رمز وظائف Amazon Lambda. يحتوي المستودع أيضًا على تطبيق الويب الموجود أسفل web-app المجلد.
يخبر ملف cdk.json مجموعة أدوات AWS CDK كيفية تشغيل التطبيق الخاص بك.
تم اختبار هذا التطبيق في منطقة us-east-1 ولكن يجب أن يعمل في أي منطقة لديها الخدمات المطلوبة ونوع مثيل الاستدلال ml.g4dn.4xlarge المحدد في App.py.
تم إعداد هذا المشروع مثل مشروع بيثون قياسي. قم بإنشاء بيئة افتراضية Python باستخدام الكود التالي:
python3 -m venv .venv
استخدم الأمر التالي لتفعيل البيئة الافتراضية:
source .venv/bin/activate
إذا كنت على منصة Windows ، فقم بتنشيط البيئة الافتراضية على النحو التالي:
.venvScriptsactivate.bat
بعد تنشيط البيئة الافتراضية ، ترقية PIP إلى أحدث إصدار:
python3 -m pip install --upgrade pip
تثبيت التبعيات المطلوبة:
pip install -r requirements.txt
قبل نشر أي تطبيق AWS CDK ، تحتاج إلى الحصول على مساحة في حسابك والمنطقة التي تنشرها. للتمهيد في منطقتك الافتراضية ، قم بإصدار الأمر التالي:
cdk bootstrap
إذا كنت ترغب في النشر في حساب ومنطقة محددة ، فأصدر الأمر التالي:
cdk bootstrap aws://ACCOUNT-NUMBER/REGION
لمزيد من المعلومات حول هذا الإعداد ، تفضل بزيارة البدء مع AWS CDK.
يحتوي تطبيق AWS CDK على مكدسات متعددة كما هو موضح في الرسم البياني التالي.

يمكنك سرد المكدس في تطبيق CDK الخاص بك مع الأمر التالي:
cdk listيجب أن تحصل على الإخراج التالي:
GenerativeAiTxt2imgSagemakerStack
GenerativeAiTxt2nluSagemakerStack
GenerativeAiVpcNetworkStack
GenerativeAiDemoWebStack
أوامر AWS CDK مفيدة أخرى:
cdk ls - يسرد جميع المداخن في التطبيقcdk synth - ينبعث من قالب AWS Cloudformation المركبcdk deploy - ينشر هذا المكدس على حساب AWS الافتراضي الخاص بكcdk diff - يقارن المكدس المنشور مع الحالة الحاليةcdk docs - يفتح وثائق AWS CDKيوضح لك القسم التالي كيفية نشر تطبيق AWS CDK.
سيتم نشر تطبيق AWS CDK في المنطقة الافتراضية بناءً على تكوين محطة العمل الخاصة بك. إذا كنت ترغب في إجبار النشر في منطقة معينة ، فقم بتعيين متغير بيئة AWS_DEFAULT_REGION وفقًا لذلك.
في هذه المرحلة ، يمكنك نشر تطبيق AWS CDK. تقوم أولاً بتشغيل مكدس شبكة VPC:
cdk deploy GenerativeAiVpcNetworkStack
إذا تمت مطالبتك ، أدخل y للمضي قدمًا في النشر. يجب أن ترى قائمة من موارد AWS التي يتم توفيرها في المكدس. هذه الخطوة تستغرق حوالي 3 دقائق لإكمالها.
ثم تقوم بتشغيل مكدس تطبيق الويب:
cdk deploy GenerativeAiDemoWebStack
بعد تحليل المكدس ، ستعرض AWS CDK قائمة الموارد في المكدس. أدخل y للمضي قدما في النشر. هذه الخطوة تستغرق حوالي 5 دقائق.

لاحظ أسفل WebApplicationServiceURL من الإخراج حيث ستستخدمه لاحقًا. يمكنك أيضًا استرداده لاحقًا في وحدة التحكم السحابية ، تحت مخرجات مكدس GenerativeAiDemoWebStack .
الآن ، قم بتشغيل مكدس نقطة نهاية طراز AI لتوليد الصور:
cdk deploy GenerativeAiTxt2imgSagemakerStack
هذه الخطوة تستغرق حوالي 8 دقائق. يتم نشر نقطة نهاية نموذج توليد الصور ، ويمكننا الآن استخدامها.
يوضح المثال الأول كيفية استخدام الانتشار المستقر ، وهي تقنية نمذجة قوية تتيح إنشاء صور عالية الجودة من مطالبات النص.
WebApplicationServiceURL من إخراج GenerativeAiDemoWebStack في متصفحك. 
في جزء التنقل ، اختر توليد الصور .
سيتم محظوظ مسبقًا لاسم نقطة نهاية Sagemaker وحقول URL API GW ، ولكن يمكنك تغيير المطالبة لوصف الصورة إذا كنت ترغب في ذلك.
اختر إنشاء الصورة .

سيقوم التطبيق بإجراء مكالمة إلى نقطة نهاية Sagemaker. يستغرق بضع ثوان. سيتم عرض صورة مع charasteristics في وصف صورتك.

يركز المثال الثاني على استخدام نموذج FLAN-T5-XL ، وهو نموذج أساسي أو نموذج لغوي كبير (LLM) ، لتحقيق التعلم داخل السياق لتوليد النص مع معالجة مجموعة واسعة من مهام فهم اللغة الطبيعية (NLU) ومهام توليد اللغة الطبيعية (NLG).
قد تحد بعض البيئات من عدد نقاط النهاية التي يمكنك تشغيلها في وقت واحد. إذا كان هذا هو الحال ، فيمكنك تشغيل نقطة نهاية واحدة في وقت واحد. لإيقاف نقطة نهاية Sagemaker في تطبيق AWS CDK ، يجب عليك تدمير مكدس نقطة النهاية المنتشرة وقبل إطلاق مكدس نقطة النهاية الأخرى. لخفض نقطة نهاية نموذج نموذج الذكاء الاصطناعي ، قم بإصدار الأمر التالي:
cdk destroy GenerativeAiTxt2imgSagemakerStack
ثم قم بتشغيل مكدس نقطة نهاية طراز AI لنموذج النص:
cdk deploy GenerativeAiTxt2nluSagemakerStack
أدخل y في المطالبات.
بعد بدء تشغيل مكدس نقطة نهاية نموذج توليد النص ، أكمل الخطوات التالية:

أسفل السياق ، ستجد بعض الاستعلامات التي يتم تحريكها في خيارات القائمة المنسدلة.

يمكنك أيضًا إدخال استعلامك الخاص في حقل الاستعلام عن الإدخال واختيار إنشاء استجابة .

على وحدة التحكم في AWS CloudFormation ، اختر المكدس في جزء التنقل لعرض المداخن التي تم نشرها.

على وحدة التحكم في Amazon ECS ، يمكنك رؤية المجموعات على صفحة المجموعات .

على وحدة التحكم AWS Lambda ، يمكنك رؤية الوظائف في صفحة الوظائف .

على وحدة تحكم API Gateway ، يمكنك رؤية نقاط نهاية API Gateway على صفحة واجهات برمجة التطبيقات .

على وحدة التحكم في Sagemaker ، يمكنك رؤية نقاط نهاية النموذج المنشورة على صفحة نقاط النهاية .

عند إطلاق المداخن ، يتم إنشاء بعض المعلمات. يتم تخزين هذه في متجر AWS Systems Manager. لمشاهدتها ، اختر معلمة متجر في جزء التنقل على وحدة التحكم في Systems Manager.

لتجنب التكلفة غير الضرورية ، قم بتنظيف جميع البنية التحتية التي تم إنشاؤها مع الأمر التالي على محطة العمل الخاصة بك:
cdk destroy --all
أدخل y في المطالبة. هذه الخطوة تستغرق حوالي 10 دقائق. تحقق مما إذا تم حذف جميع الموارد على وحدة التحكم. قم أيضًا بحذف أصول دلاء S3 التي أنشأتها AWS CDK على وحدة التحكم Amazon S3 بالإضافة إلى مستودعات الأصول على Amazon ECR.
كما هو موضح في هذا المنشور ، يمكنك استخدام AWS CDK لنشر نماذج الذكاء الاصطناعي في JumpStart. لقد أظهرنا مثالًا لتوليد الصور ومثال لتوليد النص باستخدام واجهة المستخدم التي تعمل بواسطة SPEREMLIT و LAMBDA و API Gateway.
يمكنك الآن إنشاء مشاريع الذكاء الاصطناعى التوليدي باستخدام نماذج الذكاء الاصطناعى المدربين مسبقًا في JumpStart. يمكنك أيضًا تمديد هذا المشروع لضبط نماذج الأساس لحالة الاستخدام والتحكم في الوصول إلى نقاط نهاية بوابة API.
ندعوك لاختبار الحل والمساهمة في المشروع على جيثب.
يتم توفير رمز العينة هذا تحت رخصة معهد ماساتشوستس للتكنولوجيا المعدل. انظر ملف الترخيص لمزيد من المعلومات. أيضا ، راجع التراخيص المعنية لنماذج الانتشار المستقر ونماذج Flan-T5-XL على وجه المعانقة.
Hantzley Tauckoor هو قائد هندسة APJ Solutions Solutions في سنغافورة. يتمتع بخبرة 20 عامًا في صناعة تكنولوجيا المعلومات والاتصالات التي تمتد إلى مجالات وظيفية متعددة ، بما في ذلك الهندسة المعمارية ، وتطوير الأعمال ، واستراتيجية المبيعات ، والاستشارات ، والقيادة. يقود فريقًا من كبار المهندسين المعماريين الذين يمكّنون الشركاء من تطوير حلول مشتركة ، وبناء القدرات الفنية ، وتوجيههم خلال مرحلة التنفيذ حيث يقوم العملاء بترحيل تطبيقاتهم وتحديثها إلى AWS. خارج العمل ، يستمتع بقضاء الوقت مع عائلته ومشاهدة الأفلام والمشي لمسافات طويلة.
Kwonyul Choi هي CTO في Babitalk ، شركة ناشئة من منصة رعاية التجميل الكورية ، ومقرها في سيول. قبل هذا الدور ، عملت Kownyul كمهندس لتطوير البرمجيات في AWS مع التركيز على AWS CDK و Amazon Sagemaker.
Arunprasath Shankar هو مهندس حلول متخصص في AI/ML مع AWS ، مما يساعد العملاء العالميين على توسيع نطاق حلول الذكاء الاصطناعى الخاصة بهم بفعالية وكفاءة في السحابة. في وقت فراغه ، يستمتع آرون بمشاهدة أفلام الخيال العلمي والاستماع إلى الموسيقى الكلاسيكية.
Satish Upreti هو PSA الرصاص المتأثى في الهجرة والشركات الصغيرة والمتوسطة الأمنية في المنظمة الشريكة في APJ. يتمتع Satish بخبرة 20 عامًا من الخبرة التي تمتد إلى تقنيات السحابة الخاصة والخلاصة العامة. منذ انضمامه إلى AWS في أغسطس 2020 كأخصائي للهجرة ، يقدم نصيحة فنية مكثفة ودعم لشركاء AWS لتخطيط وتنفيذ الهجرات المعقدة.
في هذا القسم ، نقدم نظرة عامة على الرمز في هذا المشروع.
تطبيق AWS CDK
يوجد تطبيق AWS CDK الرئيسي في ملف app.py في دليل الجذر. يتكون المشروع من مداخن متعددة ، لذلك يتعين علينا استيراد المداخن:
#!/usr/bin/env python3
import aws_cdk as cdk
from stack . generative_ai_vpc_network_stack import GenerativeAiVpcNetworkStack
from stack . generative_ai_demo_web_stack import GenerativeAiDemoWebStack
from stack . generative_ai_txt2nlu_sagemaker_stack import GenerativeAiTxt2nluSagemakerStack
from stack . generative_ai_txt2img_sagemaker_stack import GenerativeAiTxt2imgSagemakerStackنحدد نماذج الذكاء الاصطناعى لدينا ونحصل على URIs ذات الصلة من Sagemaker:
from script . sagemaker_uri import *
import boto3
region_name = boto3 . Session (). region_name
env = { "region" : region_name }
#Text to Image model parameters
TXT2IMG_MODEL_ID = "model-txt2img-stabilityai-stable-diffusion-v2-1-base"
TXT2IMG_INFERENCE_INSTANCE_TYPE = "ml.g4dn.4xlarge"
TXT2IMG_MODEL_TASK_TYPE = "txt2img"
TXT2IMG_MODEL_INFO = get_sagemaker_uris ( model_id = TXT2IMG_MODEL_ID ,
model_task_type = TXT2IMG_MODEL_TASK_TYPE ,
instance_type = TXT2IMG_INFERENCE_INSTANCE_TYPE ,
region_name = region_name )
#Text to NLU image model parameters
TXT2NLU_MODEL_ID = "huggingface-text2text-flan-t5-xl"
TXT2NLU_INFERENCE_INSTANCE_TYPE = "ml.g4dn.4xlarge"
TXT2NLU_MODEL_TASK_TYPE = "text2text"
TXT2NLU_MODEL_INFO = get_sagemaker_uris ( model_id = TXT2NLU_MODEL_ID ,
model_task_type = TXT2NLU_MODEL_TASK_TYPE ,
instance_type = TXT2NLU_INFERENCE_INSTANCE_TYPE ,
region_name = region_name ) تسترجع الدالة get_sagemaker_uris جميع معلومات النموذج من Amazon JumpStart. انظر البرنامج النصي/sagemaker_uri.py.
ثم ، نستند إلى المداخن:
app = cdk . App ()
network_stack = GenerativeAiVpcNetworkStack ( app , "GenerativeAiVpcNetworkStack" , env = env )
GenerativeAiDemoWebStack ( app , "GenerativeAiDemoWebStack" , vpc = network_stack . vpc , env = env )
GenerativeAiTxt2nluSagemakerStack ( app , "GenerativeAiTxt2nluSagemakerStack" , env = env , model_info = TXT2NLU_MODEL_INFO )
GenerativeAiTxt2imgSagemakerStack ( app , "GenerativeAiTxt2imgSagemakerStack" , env = env , model_info = TXT2IMG_MODEL_INFO )
app . synth () أول مكدس يتم إطلاقه هو مكدس VPC ، GenerativeAiVpcNetworkStack . تعتمد مكدس تطبيق الويب ، GenerativeAiDemoWebStack ، على مكدس VPC. يتم التبعية من خلال معلمة تمرير vpc=network_stack.vpc .
انظر app.py للحصول على الرمز الكامل.
مكدس شبكة VPC
في مجموعة GenerativeAiVpcNetworkStack ، نقوم بإنشاء VPC مع شبكة فرعية عامة وشبكة فرعية خاصة تمتد عبر منطقتين توافر (AZS):
self . output_vpc = ec2 . Vpc ( self , "VPC" ,
nat_gateways = 1 ,
ip_addresses = ec2 . IpAddresses . cidr ( "10.0.0.0/16" ),
max_azs = 2 ,
subnet_configuration = [
ec2 . SubnetConfiguration ( name = "public" , subnet_type = ec2 . SubnetType . PUBLIC , cidr_mask = 24 ),
ec2 . SubnetConfiguration ( name = "private" , subnet_type = ec2 . SubnetType . PRIVATE_WITH_EGRESS , cidr_mask = 24 )
]
)انظر /stack/generative_ai_vpc_network_stack.py للحصول على الكود الكامل.
مكدس تطبيق الويب التجريبي
في مجموعة GenerativeAiDemoWebStack نطلق وظائف Lambda ونقاط نهاية Amazon API Gateway ذات الصلة التي يتفاعل من خلالها تطبيق الويب مع نقاط نهاية طراز Sagemaker. انظر مقتطف الرمز التالي:
# Defines an AWS Lambda function for Image Generation service
lambda_txt2img = _lambda . Function (
self , "lambda_txt2img" ,
runtime = _lambda . Runtime . PYTHON_3_9 ,
code = _lambda . Code . from_asset ( "code/lambda_txt2img" ),
handler = "txt2img.lambda_handler" ,
role = role ,
timeout = Duration . seconds ( 180 ),
memory_size = 512 ,
vpc_subnets = ec2 . SubnetSelection (
subnet_type = ec2 . SubnetType . PRIVATE_WITH_EGRESS
),
vpc = vpc
)
# Defines an Amazon API Gateway endpoint for Image Generation service
txt2img_apigw_endpoint = apigw . LambdaRestApi (
self , "txt2img_apigw_endpoint" ,
handler = lambda_txt2img
)يتم تحريك تطبيق الويب واستضافته على Amazon ECS مع Fargate. انظر مقتطف الرمز التالي:
# Create Fargate service
fargate_service = ecs_patterns . ApplicationLoadBalancedFargateService (
self , "WebApplication" ,
cluster = cluster , # Required
cpu = 2048 , # Default is 256 (512 is 0.5 vCPU, 2048 is 2 vCPU)
desired_count = 1 , # Default is 1
task_image_options = ecs_patterns . ApplicationLoadBalancedTaskImageOptions (
image = image ,
container_port = 8501 ,
),
#load_balancer_name="gen-ai-demo",
memory_limit_mib = 4096 , # Default is 512
public_load_balancer = True ) # Default is TrueSee /stack/generative_ai_demo_web_stack.py للحصول على الكود الكامل.
توليد الصور طراز Sagemaker Model Cack
تقوم مجموعة GenerativeAiTxt2imgSagemakerStack Stack بإنشاء نقطة نهاية نموذج توليد الصور من Sagemaker JumpStart وتخزن اسم نقطة النهاية في متجر AWS Systems Manager. سيتم استخدام هذه المعلمة بواسطة تطبيق الويب. انظر الرمز التالي:
endpoint = SageMakerEndpointConstruct ( self , "TXT2IMG" ,
project_prefix = "GenerativeAiDemo" ,
role_arn = role . role_arn ,
model_name = "StableDiffusionText2Img" ,
model_bucket_name = model_info [ "model_bucket_name" ],
model_bucket_key = model_info [ "model_bucket_key" ],
model_docker_image = model_info [ "model_docker_image" ],
variant_name = "AllTraffic" ,
variant_weight = 1 ,
instance_count = 1 ,
instance_type = model_info [ "instance_type" ],
environment = {
"MMS_MAX_RESPONSE_SIZE" : "20000000" ,
"SAGEMAKER_CONTAINER_LOG_LEVEL" : "20" ,
"SAGEMAKER_PROGRAM" : "inference.py" ,
"SAGEMAKER_REGION" : model_info [ "region_name" ],
"SAGEMAKER_SUBMIT_DIRECTORY" : "/opt/ml/model/code" ,
},
deploy_enable = True
)
ssm . StringParameter ( self , "txt2img_sm_endpoint" , parameter_name = "txt2img_sm_endpoint" , string_value = endpoint . endpoint_name )انظر /stack/generative_ai_txt2img_sagemaker_stack.py للحصول على الكود الكامل.
NLU و Generation Sagemaker Model Model Stack
تقوم مجموعة GenerativeAiTxt2nluSagemakerStack Stack بإنشاء نقطة نهاية NLU ونموذج توليد النص من JumpStart وتخزن اسم نقطة النهاية في متجر المعلمة Manager. سيتم أيضًا استخدام هذه المعلمة بواسطة تطبيق الويب. انظر الرمز التالي:
endpoint = SageMakerEndpointConstruct ( self , "TXT2NLU" ,
project_prefix = "GenerativeAiDemo" ,
role_arn = role . role_arn ,
model_name = "HuggingfaceText2TextFlan" ,
model_bucket_name = model_info [ "model_bucket_name" ],
model_bucket_key = model_info [ "model_bucket_key" ],
model_docker_image = model_info [ "model_docker_image" ],
variant_name = "AllTraffic" ,
variant_weight = 1 ,
instance_count = 1 ,
instance_type = model_info [ "instance_type" ],
environment = {
"MODEL_CACHE_ROOT" : "/opt/ml/model" ,
"SAGEMAKER_ENV" : "1" ,
"SAGEMAKER_MODEL_SERVER_TIMEOUT" : "3600" ,
"SAGEMAKER_MODEL_SERVER_WORKERS" : "1" ,
"SAGEMAKER_PROGRAM" : "inference.py" ,
"SAGEMAKER_SUBMIT_DIRECTORY" : "/opt/ml/model/code/" ,
"TS_DEFAULT_WORKERS_PER_MODEL" : "1"
},
deploy_enable = True
)
ssm . StringParameter ( self , "txt2nlu_sm_endpoint" , parameter_name = "txt2nlu_sm_endpoint" , string_value = endpoint . endpoint_name )see /stack/generative_ai_txt2nlu_sagemaker_stack.py للحصول على الكود الكامل.
تطبيق الويب
يوجد تطبيق الويب في دليل /تطبيق الويب. إنه تطبيق بديل يتم تحريكه وفقًا لـ Dockerfile:
FROM --platform=linux/x86_64 python:3.9
EXPOSE 8501
WORKDIR /app
COPY requirements.txt ./requirements.txt
RUN pip3 install -r requirements.txt
COPY . .
CMD streamlit run Home.py
--server.headless true
--browser.serverAddress= "0.0.0.0"
--server.enableCORS false
--browser.gatherUsageStats falseلمعرفة المزيد حول STREMLIT ، راجع وثائق STREMLIT.