قم بتعبئة ونشر ML وLLMs الكلاسيكية بسهولة باستخدام Amazon SageMaker، الجزء 1: تحسينات PySDK | خدمات ويب أمازون

قم بتعبئة ونشر ML وLLMs الكلاسيكية بسهولة باستخدام Amazon SageMaker، الجزء 1: تحسينات PySDK | خدمات ويب أمازون

الأمازون SageMaker هي خدمة مُدارة بالكامل تمكن المطورين وعلماء البيانات من إنشاء نماذج التعلم الآلي (ML) وتدريبها ونشرها بسرعة ودون عناء على أي نطاق. يجعل SageMaker من السهل نشر النماذج في الإنتاج مباشرة من خلال استدعاءات واجهة برمجة التطبيقات (API) للخدمة. يتم تجميع النماذج في حاويات لإجراء عمليات نشر قوية وقابلة للتطوير. على الرغم من أنه يوفر نقاط دخول متنوعة مثل SageMaker Python SDK، وAWS SDKs، ووحدة تحكم SageMaker، و أمازون ساجميكر ستوديو أجهزة الكمبيوتر المحمولة لتبسيط عملية التدريب ونشر نماذج التعلم الآلي على نطاق واسع، ولا يزال العملاء يبحثون عن طرق أفضل لنشر نماذجهم لاختبار الملعب وتحسين عمليات نشر الإنتاج.

نحن نطلق طريقتين جديدتين لتبسيط عملية تعبئة النماذج ونشرها باستخدام SageMaker.

في هذا المنشور، نقدم SageMaker Python SDK الجديد ModelBuilder الخبرة، والتي تهدف إلى تقليل منحنى التعلم لمستخدمي SageMaker الجدد مثل علماء البيانات، بينما تساعد أيضًا مهندسي MLOps ذوي الخبرة على تحقيق أقصى استفادة من خدمات استضافة SageMaker. فهو يقلل من تعقيد الإعداد الأولي والنشر، ومن خلال توفير إرشادات حول أفضل الممارسات للاستفادة من الإمكانات الكاملة لـ SageMaker. نحن نقدم معلومات مفصلة وأمثلة على GitHub لقدرة SageMaker الجديدة هذه.

الإطلاق الجديد الآخر هو استخدام تجربة النشر التفاعلية الجديدة في SageMaker Studio. نناقش هذا في الجزء 2.

يستلزم نشر النماذج إلى نقطة نهاية SageMaker سلسلة من الخطوات لتجهيز النموذج للاستضافة على نقطة نهاية SageMaker. يتضمن ذلك الحصول على عناصر النموذج بالتنسيق والبنية الصحيحة، وإنشاء رمز الاستدلال، وتحديد التفاصيل الأساسية مثل عنوان URL لصورة النموذج، خدمة تخزين أمازون البسيطة (Amazon S3) موقع القطع الأثرية النموذجية وخطوات التسلسل وإلغاء التسلسل والضرورية إدارة الهوية والوصول AWS أدوار (IAM) لتسهيل أذونات الوصول المناسبة. بعد ذلك، يتطلب تكوين نقطة النهاية تحديد نوع الاستدلال وتكوين المعلمات المعنية مثل أنواع المثيلات والأعداد وتوزيع حركة المرور بين متغيرات النموذج.

لمساعدة عملائنا بشكل أكبر عند استخدام استضافة SageMaker، قدمنا ​​الجديد ModelBuilder فئة في SageMaker Python SDK، والتي توفر المزايا الرئيسية التالية عند نشر النماذج إلى نقاط نهاية SageMaker:

  • يوحد تجربة النشر عبر الأطر - توفر التجربة الجديدة سير عمل متسقًا لنشر النماذج المصممة باستخدام أطر عمل مختلفة مثل PyTorch وTensorFlow وXGBoost. وهذا يبسط عملية النشر.
  • أتمتة نشر النموذج - تتم أتمتة المهام مثل اختيار الحاويات المناسبة، والتقاط التبعيات، والتعامل مع التسلسل/إلغاء التسلسل، مما يقلل من الجهد اليدوي المطلوب للنشر.
  • يوفر انتقالًا سلسًا من نقطة النهاية المحلية إلى نقطة النهاية المستضافة بواسطة SageMaker - مع الحد الأدنى من تغييرات التعليمات البرمجية، يمكن نقل النماذج بسهولة من الاختبار المحلي إلى النشر على نقطة نهاية SageMaker. تجعل السجلات المباشرة عملية تصحيح الأخطاء سلسة.

عموما، سيج ميكر ModelBuilder يعمل على تبسيط وتبسيط عملية تعبئة النماذج لاستدلال SageMaker من خلال التعامل مع التفاصيل ذات المستوى المنخفض وتوفير أدوات للاختبار والتحقق من الصحة وتحسين نقاط النهاية. يؤدي ذلك إلى تحسين إنتاجية المطور وتقليل الأخطاء.

وفي الأقسام التالية، سنتعمق في تفاصيل هذه الميزة الجديدة. نناقش أيضًا كيفية نشر النماذج على استضافة SageMaker باستخدام ModelBuilder، مما يبسط العملية. ثم نوجهك عبر بعض الأمثلة لأطر عمل مختلفة لنشر كل من نماذج تعلم الآلة التقليدية والنماذج الأساسية التي تدعم حالات استخدام الذكاء الاصطناعي التوليدية.

التعرف على SageMaker ModelBuilder

الجديد ModelBuilder هي فئة Python تركز على أخذ نماذج تعلم الآلة المبنية باستخدام أطر عمل، مثل XGBoost أو PyTorch، وتحويلها إلى نماذج جاهزة للنشر على SageMaker. ModelBuilder ويوفر build() وظيفة، والتي تولد القطع الأثرية وفقا للخادم النموذجي، و أ deploy() وظيفة للنشر محليًا أو إلى نقطة نهاية SageMaker. يؤدي تقديم هذه الميزة إلى تبسيط عملية تكامل النماذج مع بيئة SageMaker، وتحسينها من حيث الأداء وقابلية التوسع. ويوضح الرسم البياني التالي كيف ModelBuilder يعمل على مستوى عال.

قم بتعبئة ونشر ML وLLMs الكلاسيكية بسهولة باستخدام Amazon SageMaker، الجزء 1: تحسينات PySDK | أمازون ويب سيرفيسز PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.

فئة منشئ النماذج

نموذج بناء توفر الفئة خيارات مختلفة للتخصيص. ومع ذلك، لنشر نموذج إطار العمل، يتوقع منشئ النموذج فقط النموذج والمدخلات والمخرجات والدور:

class ModelBuilder( model, # model id or model object role_arn, # IAM role schema_builder, # defines the input and output mode, # select between local deployment and depoy to SageMaker Endpoints ...
)

SchemaBuilder

SchemaBuilder يمكّنك الفصل من تحديد المدخلات والمخرجات لنقطة النهاية الخاصة بك. فهو يسمح لمنشئ المخطط بإنشاء وظائف التنظيم المقابلة لإجراء تسلسل وإلغاء تسلسل المدخلات والمخرجات. يوفر ملف الفئة التالي جميع خيارات التخصيص:

class SchemaBuilder( sample_input: Any, sample_output: Any, input_translator: CustomPayloadTranslator = None, output_translator: CustomPayloadTranslator = None
)

ومع ذلك، في معظم الحالات، فقط عينة المدخلات والمخرجات ستعمل. على سبيل المثال:

input = "How is the demo going?"
output = "Comment la démo va-t-elle?"
schema = SchemaBuilder(input, output)

من خلال توفير عينة المدخلات والمخرجات، SchemaBuilder يمكنه تحديد التحويلات اللازمة تلقائيًا، مما يجعل عملية التكامل أكثر وضوحًا. بالنسبة لحالات الاستخدام الأكثر تقدمًا، هناك مرونة في توفير وظائف ترجمة مخصصة لكل من الإدخال والإخراج، مما يضمن إمكانية التعامل مع هياكل البيانات الأكثر تعقيدًا بكفاءة. سنوضح ذلك في الأقسام التالية من خلال نشر نماذج مختلفة باستخدام أطر عمل مختلفة ModelBuilder.

تجربة الوضع المحلي

في هذا المثال نستخدم ModelBuilder لنشر نموذج XGBoost محليًا. يمكنك استخدام الوضع للتبديل بين الاختبار المحلي والنشر إلى نقطة نهاية SageMaker. نقوم أولاً بتدريب نموذج XGBoost (محليًا أو في SageMaker) ونخزن عناصر النموذج في دليل العمل:

# Train the model
model = XGBClassifier()
model.fit(X_train, y_train)
model.save_model(model_dir + "/my_model.xgb")

ثم نقوم بإنشاء كائن ModelBuilder عن طريق تمرير كائن النموذج الفعلي، SchemaBuilder يستخدم كائنات إدخال وإخراج اختبار العينة (نفس المدخلات والمخرجات التي استخدمناها عند تدريب النموذج واختباره) لاستنتاج التسلسل المطلوب. لاحظ أننا نستخدم Mode.LOCAL_CONTAINER لتحديد النشر المحلي. بعد ذلك نسميه نساعدك في بناء وظيفة لتحديد صورة حاوية إطار العمل المدعومة تلقائيًا بالإضافة إلى البحث عن التبعيات. انظر الكود التالي:

model_builder_local = ModelBuilder( model=model, schema_builder=SchemaBuilder(X_test, y_pred), role_arn=execution_role, mode=Mode.LOCAL_CONTAINER
)
xgb_local_builder = model_builder_local.build()

أخيرًا ، يمكننا استدعاء deploy وظيفة في كائن النموذج، والتي توفر أيضًا تسجيلًا مباشرًا لتسهيل تصحيح الأخطاء. لا تحتاج إلى تحديد نوع المثيل أو عدده لأنه سيتم نشر النموذج محليًا. إذا قمت بتوفير هذه المعلمات، فسيتم تجاهلها. ستعيد هذه الوظيفة كائن التوقع الذي يمكننا استخدامه للتنبؤ ببيانات الاختبار:

# note: all the serialization and deserialization is handled by the model builder.
predictor_local = xgb_local_builder.deploy(
# instance_type='ml.c5.xlarge',
# initial_instance_count=1
) # Make prediction for test data. predictor_local.predict(X_test)

اختياريًا، يمكنك أيضًا التحكم في تحميل النموذج والمعالجة المسبقة والمعالجة اللاحقة باستخدام InferenceSpec. وسنقدم المزيد من التفاصيل لاحقًا في هذه التدوينة. استخدام LOCAL_CONTAINER تعد طريقة رائعة لاختبار البرنامج النصي الخاص بك محليًا قبل النشر إلى نقطة نهاية SageMaker.

الرجوع إلى نموذج منشئ-xgboost.ipynb مثال لاختبار النشر محليًا وإلى نقطة نهاية SageMaker باستخدام ModelBuilder.

انشر النماذج التقليدية إلى نقاط نهاية SageMaker

وفي الأمثلة التالية، نعرض كيفية الاستخدام ModelBuilder لنشر نماذج تعلم الآلة التقليدية.

نماذج XGBoost

كما هو الحال في القسم السابق، يمكنك نشر نموذج XGBoost إلى نقطة نهاية SageMaker عن طريق تغيير mode المعلمة عند إنشاء ModelBuilder موضوع:

model_builder = ModelBuilder( model=model, schema_builder=SchemaBuilder(sample_input=sample_input, sample_output=sample_output), role_arn=execution_role, mode=Mode.SAGEMAKER_ENDPOINT
)
xgb_builder = model_builder.build()
predictor = xgb_builder.deploy( instance_type='ml.c5.xlarge', initial_instance_count=1
)

لاحظ أنه عند النشر إلى نقاط نهاية SageMaker، فإنك تحتاج إلى تحديد نوع المثيل وعدد المثيلات عند استدعاء deploy وظيفة.

الرجوع إلى نموذج منشئ-xgboost.ipynb مثال لنشر نموذج XGBoost.

نماذج تريتون

يمكنك استخدام ModelBuilder لخدمة نماذج PyTorch خادم الاستدلال تريتون. للقيام بذلك، تحتاج إلى تحديد model_server المعلمة مثل ModelServer.TRITON، تمرير نموذج، والحصول على SchemaBuilder كائن، والذي يتطلب عينة من المدخلات والمخرجات من النموذج. سوف يقوم ModelBuilder بالاعتناء بالباقي نيابةً عنك.

model_builder = ModelBuilder( model=model, schema_builder=SchemaBuilder(sample_input=sample_input, sample_output=sample_output), role_arn=execution_role, model_server=ModelServer.TRITON, mode=Mode.SAGEMAKER_ENDPOINT
) triton_builder = model_builder.build() predictor = triton_builder.deploy( instance_type='ml.g4dn.xlarge', initial_instance_count=1
)

الرجوع إلى نموذج منشئ-triton.ipynb لنشر نموذج مع تريتون.

نماذج الوجه المعانقة

في هذا المثال، نعرض لك كيفية نشر نموذج محول تم تدريبه مسبقًا مقدم من Hugging Face إلى SageMaker. نريد استخدام وجه المعانقة pipeline لتحميل النموذج، لذلك نقوم بإنشاء مواصفات استدلال مخصصة له ModelBuilder:

# custom inference spec with hugging face pipeline
class MyInferenceSpec(InferenceSpec): def load(self, model_dir: str): return pipeline("translation_en_to_fr", model="t5-small") def invoke(self, input, model): return model(input) inf_spec = MyInferenceSpec()

نحدد أيضًا مدخلات ومخرجات عبء عمل الاستدلال من خلال تحديد SchemaBuilder الكائن بناءً على مدخلات ومخرجات النموذج:

schema = SchemaBuilder(value,output)

ثم نقوم بإنشاء ModelBuilder الكائن ونشر النموذج على نقطة نهاية SageMaker باتباع نفس المنطق كما هو موضح في المثال الآخر:

builder = ModelBuilder( inference_spec=inf_spec, mode=Mode.SAGEMAKER_ENDPOINT, # you can change it to Mode.LOCAL_CONTAINER for local testing schema_builder=schema, image_uri=image,
)
model = builder.build( role_arn=execution_role, sagemaker_session=sagemaker_session,
)
predictor = model.deploy( initial_instance_count=1, instance_type='ml.g5.2xlarge'
)

الرجوع إلى نموذج منشئ-عانقface.ipynb لنشر نموذج خط أنابيب Hugging Face.

انشر النماذج الأساسية إلى نقاط نهاية SageMaker

وفي الأمثلة التالية، نعرض كيفية الاستخدام ModelBuilder لنشر نماذج الأساس. تمامًا مثل النماذج المذكورة سابقًا، كل ما هو مطلوب هو معرف النموذج.

معانقة الوجه المحور

إذا كنت ترغب في نشر نموذج الأساس من معانقة الوجه المحوركل ما عليك فعله هو تمرير معرف النموذج الذي تم تدريبه مسبقًا. على سبيل المثال، ينشر مقتطف التعليمات البرمجية التالي ميتا اللاما/اللاما-2-7b-hf النموذج محليا. يمكنك تغيير الوضع إلى Mode.SAGEMAKER_ENDPOINT للنشر إلى نقاط نهاية SageMaker.

model_builder = ModelBuilder( model="meta-llama/Llama-2-7b-hf", schema_builder=SchemaBuilder(sample_input, sample_output), model_path="/home/ec2-user/SageMaker/LoadTestResources/meta-llama2-7b", #local path where artifacts will be saved mode=Mode.LOCAL_CONTAINER, env_vars={ # Llama 2 is a gated model and requires a Hugging Face Hub token. "HUGGING_FACE_HUB_TOKEN": "<YourHuggingFaceToken>" }
)
model = model_builder.build()
local_predictor = model.deploy()

بالنسبة للنماذج المسورة على Hugging Face Hub، تحتاج إلى طلب الوصول عبر Hugging Face Hub واستخدام المفتاح المرتبط عن طريق تمريره كمتغير البيئة HUGGING_FACE_HUB_TOKEN. قد تتطلب بعض نماذج Hugging Face الثقة في الرمز البعيد. يمكن تعيينه كمتغير بيئة وكذلك باستخدام HF_TRUST_REMOTE_CODE. بشكل افتراضي، ModelBuilder سيستخدم استدلال إنشاء نص الوجه المعانق (TGI) الحاوية باعتبارها الحاوية الأساسية لنماذج Hugging Face. إذا كنت ترغب في استخدام AWS Large Model Inference (LMI) الحاويات، يمكنك إعداد model_server المعلمة مثل ModelServer.DJL_SERVING عند تكوين ModelBuilder موضوع.

ميزة أنيقة من ModelBuilder هي القدرة على تشغيل الضبط المحلي لمعلمات الحاوية عند الاستخدام LOCAL_CONTAINER وضع. يمكن استخدام هذه الميزة بمجرد التشغيل tuned_model = model.tune().

الرجوع إلى نموذج تجريبي منشئ-عانق الوجه-llama2.ipynb لنشر نموذج Hugging Face Hub.

سيج ميكر جومب ستارت

أمازون سيج ميكر جومب ستارت كما يقدم أيضًا عددًا من نماذج الأساس المدربة مسبقًا. تمامًا مثل عملية نشر نموذج من Hugging Face Hub، فإن معرف النموذج مطلوب. يعد نشر نموذج SageMaker JumpStart إلى نقطة نهاية SageMaker أمرًا بسيطًا مثل تشغيل التعليمات البرمجية التالية:

model_builder = ModelBuilder( model="huggingface-llm-falcon-7b-bf16", schema_builder=SchemaBuilder(sample_input, sample_output), role_arn=execution_role
) sm_ep_model = model_builder.build() predictor = sm_ep_model.deploy()

للتعرف على جميع معرفات نماذج SageMaker JumpStart المتاحة، راجع خوارزميات مدمجة مع نموذج جدول مدرب مسبقًا. تشير إلى نموذج منشئ-jumpstart-falcon.ipynb لنشر نموذج SageMaker JumpStart.

مكون الاستدلال

ModelBulder يسمح لك باستخدام قدرة مكون الاستدلال الجديدة في SageMaker لنشر النماذج. لمزيد من المعلومات حول مكونات الاستدلال، راجع خفض تكاليف نشر النموذج بنسبة 50% في المتوسط ​​باستخدام أحدث ميزات SageMaker. يمكنك استخدام مكونات الاستدلال للنشر باستخدام ModelBuilder من خلال التحديد endpoint_type=EndpointType.INFERENCE_COMPONENT_BASED في ال deploy() طريقة. يمكنك أيضًا استخدام tune() الطريقة، التي تجلب العدد الأمثل من المسرعات، وتعديلها إذا لزم الأمر.

resource_requirements = ResourceRequirements( requests={ "num_accelerators": 4, "memory": 1024, "copies": 1, }, limits={},
) goldfinch_predictor_2 = model_2.deploy( mode=Mode.SAGEMAKER_ENDPOINT, endpoint_type=EndpointType.INFERENCE_COMPONENT_BASED, ... )

الرجوع إلى نموذج منشئ الاستدلال مكون.ipynb لنشر نموذج كمكون الاستدلال.

تخصيص فئة ModelBuilder

ModelBuilder يسمح لك الفصل بتخصيص تحميل النموذج باستخدام InferenceSpec.

بالإضافة إلى ذلك، يمكنك التحكم في تسلسل الحمولة والاستجابة وإلغاء التسلسل وتخصيص المعالجة المسبقة والمعالجة اللاحقة باستخدام CustomPayloadTranslator. بالإضافة إلى ذلك، عندما تحتاج إلى توسيع حاوياتنا المعدة مسبقًا لنشر النموذج على SageMaker، يمكنك استخدام ModelBuilder للتعامل مع عملية التعبئة والتغليف النموذجية. وفي هذا القسم التالي، نقدم المزيد من التفاصيل حول هذه القدرات.

مواصفات الاستدلال

مواصفات الاستدلال يقدم طبقة إضافية من التخصيص. يسمح لك بتحديد كيفية تحميل النموذج وكيف سيتعامل مع طلبات الاستدلال الواردة. خلال InferenceSpec، يمكنك تحديد إجراءات تحميل مخصصة لنماذجك، وتجاوز آليات التحميل الافتراضية. تعتبر هذه المرونة مفيدة بشكل خاص عند العمل مع النماذج غير القياسية أو مسارات الاستدلال المخصصة. يمكن تخصيص طريقة الاستدعاء، مما يوفر لك القدرة على تخصيص كيفية معالجة النموذج للطلبات الواردة (المعالجة المسبقة والمعالجة اللاحقة). يمكن أن يكون هذا التخصيص ضروريًا لضمان توافق عملية الاستدلال مع الاحتياجات المحددة للنموذج. انظر الكود التالي:

class InferenceSpec(abc.ABC): @abc.abstractmethod def load(self, model_dir: str): pass @abc.abstractmethod def invoke(self, input_object: object, model: object): pass

يعرض الكود التالي مثالاً لاستخدام هذه الفئة:

class MyInferenceSpec(InferenceSpec): def load(self, model_dir: str): return // model object def invoke(self, input, model): return model(input)

CustomPayloadTranslator

عند استدعاء نقاط نهاية SageMaker، يتم إرسال البيانات عبر حمولات HTTP بأنواع MIME مختلفة. على سبيل المثال، يجب تحويل الصورة المرسلة إلى نقطة النهاية للاستدلال إلى بايت على جانب العميل وإرسالها عبر حمولة HTTP إلى نقطة النهاية. عندما تتلقى نقطة النهاية الحمولة، فإنها تحتاج إلى إلغاء تسلسل سلسلة البايت مرة أخرى إلى نوع البيانات المتوقع بواسطة النموذج (المعروف أيضًا باسم إلغاء التسلسل من جانب الخادم). بعد انتهاء النموذج من التنبؤ، يجب إجراء تسلسل للنتائج إلى وحدات البايت التي يمكن إرسالها مرة أخرى عبر حمولة HTTP إلى المستخدم أو العميل. عندما يتلقى العميل بيانات بايت الاستجابة، فإنه يحتاج إلى إجراء إلغاء التسلسل من جانب العميل لتحويل بيانات البايت مرة أخرى إلى تنسيق البيانات المتوقع، مثل JSON. كحد أدنى، تحتاج إلى تحويل البيانات لما يلي (كما هو مرقم في الرسم البياني التالي):

  1. تسلسل طلب الاستدلال (يتم التعامل معه من قبل العميل)
  2. إلغاء تسلسل طلب الاستدلال (يتم التعامل معه بواسطة الخادم أو الخوارزمية)
  3. استدعاء النموذج مقابل الحمولة
  4. إرسال حمولة الاستجابة مرة أخرى
  5. تسلسل استجابة الاستدلال (يتم التعامل معه بواسطة الخادم أو الخوارزمية)
  6. إلغاء تسلسل استجابة الاستدلال (يتم التعامل معها من قبل العميل)

يوضح الرسم البياني التالي عملية التسلسل وإلغاء التسلسل أثناء عملية الاستدعاء.

قم بتعبئة ونشر ML وLLMs الكلاسيكية بسهولة باستخدام Amazon SageMaker، الجزء 1: تحسينات PySDK | أمازون ويب سيرفيسز PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.

في مقتطف التعليمات البرمجية التالي، نعرض مثالاً على CustomPayloadTranslator عند الحاجة إلى تخصيص إضافي للتعامل مع كل من التسلسل وإلغاء التسلسل في جانب العميل والخادم، على التوالي:

from sagemaker.serve import CustomPayloadTranslator # request translator
class MyRequestTranslator(CustomPayloadTranslator): # This function converts the payload to bytes - happens on client side def serialize_payload_to_bytes(self, payload: object) -> bytes: # converts the input payload to bytes ... ... return //return object as bytes # This function converts the bytes to payload - happens on server side def deserialize_payload_from_stream(self, stream) -> object: # convert bytes to in-memory object ... ... return //return in-memory object # response translator class MyResponseTranslator(CustomPayloadTranslator): # This function converts the payload to bytes - happens on server side def serialize_payload_to_bytes(self, payload: object) -> bytes: # converts the response payload to bytes ... ... return //return object as bytes # This function converts the bytes to payload - happens on client side def deserialize_payload_from_stream(self, stream) -> object: # convert bytes to in-memory object ... ... return //return in-memory object

في مجلة النموذج التجريبي منشئ pytorch.ipynb دفتر الملاحظات، نوضح كيفية نشر نموذج PyTorch بسهولة إلى نقطة نهاية SageMaker باستخدام ModelBuilder مع الالجائزة CustomPayloadTranslator و InferenceSpec فئة.

نموذج المرحلة للنشر

إذا كنت تريد عرض النموذج للاستدلال أو في سجل النموذج، فيمكنك استخدامه model.create() or model.register(). يتم إنشاء النموذج الممكّن على الخدمة، ومن ثم يمكنك نشره لاحقًا. انظر الكود التالي:

model_builder = ModelBuilder( model=model, schema_builder=SchemaBuilder(X_test, y_pred), role_arn=execution_role, )
deployable_model = model_builder.build() deployable_model.create() # deployable_model.register() for model registry

استخدم حاويات مخصصة

يوفر SageMaker صور Docker المبنية مسبقًا لخوارزمياتها المدمجة وأطر التعلم العميق المدعومة المستخدمة للتدريب والاستدلال. إذا كانت حاوية SageMaker المبنية مسبقًا لا تلبي جميع متطلباتك، فيمكنك توسيع الصورة الحالية لتلائم احتياجاتك. من خلال توسيع صورة تم إنشاؤها مسبقًا، يمكنك استخدام مكتبات وإعدادات التعلم العميق المضمنة دون الحاجة إلى إنشاء صورة من البداية. لمزيد من التفاصيل حول كيفية توسيع الحاويات المعدة مسبقًا، راجع مستند SageMaker. ModelBuilder يدعم حالات الاستخدام عند إحضار الحاويات الخاصة بك والممتدة من حاويات Docker المبنية مسبقًا.

لاستخدام صورة الحاوية الخاصة بك في هذه الحالة، تحتاج إلى تعيين الحقول image_uri و model_server عند تحديد ModelBuilder:

model_builder = ModelBuilder( model=model, # Pass in the actual model object. its "predict" method will be invoked in the endpoint. schema_builder=SchemaBuilder(X_test, y_pred), # Pass in a "SchemaBuilder" which will use the sample test input and output objects to infer the serialization needed. role_arn=execution_role, image_uri=image_uri, # REQUIRED FOR BYOC: Passing in image hosted in personal ECR Repo model_server=ModelServer.TORCHSERVE, # REQUIRED FOR BYOC: Passing in model server of choice mode=Mode.SAGEMAKER_ENDPOINT, dependencies={"auto": True, "custom": ["protobuf==3.20.2"]}
)

هنا، و image_uri ستكون صورة الحاوية ARN المخزنة في حسابك سجل الأمازون المرنة للحاويات مستودع (أمازون ECR). يتم عرض مثال واحد على النحو التالي:

# Pulled the xgboost:1.7-1 DLC and pushed to personal ECR repo
image_uri = "<your_account_id>.dkr.ecr.us-west-2.amazonaws.com/my-byoc:xgb"

عندما image_uri تم تعيينه خلال ModelBuilder أثناء عملية الإنشاء، سيتم تخطي الاكتشاف التلقائي للصورة حيث يتم توفير URI للصورة. لو model_server لم يتم تعيينه في ModelBuilder، ستتلقى رسالة خطأ في التحقق من الصحة، على سبيل المثال:

ValueError: Model_server must be set when image_uri is set. Supported model servers: {<ModelServer.TRITON: 5>, <ModelServer.DJL_SERVING: 4>, <ModelServer.TORCHSERVE: 1>}

اعتبارًا من نشر هذا المنشور، ModelBuilder يدعم إحضار الحاويات الخاصة بك والممتدة من موقعنا صور حاوية DLC المبنية مسبقًا أو حاويات تم إنشاؤها باستخدام خوادم نموذجية مثل مكتبة جافا العميقة (DJL), استنتاج إنشاء النص (TGI), تورش سيرفو خادم الاستدلال تريتون.

التبعيات المخصصة

عند الركض ModelBuilder.build()، افتراضيًا، يقوم تلقائيًا بالتقاط بيئة Python الخاصة بك في ملف requirements.txt file وتثبيت نفس التبعية في الحاوية. ومع ذلك، في بعض الأحيان تتعارض بيئة Python المحلية لديك مع البيئة الموجودة في الحاوية. ModelBuilder يوفر لك طريقة بسيطة لتعديل التبعيات التي تم التقاطها لإصلاح تعارضات التبعيات هذه من خلال السماح لك بتوفير التكوينات المخصصة الخاصة بك في ModelBuilder. لاحظ أن هذا مخصص فقط لـ TorchServe وTriton InferenceSpec. على سبيل المثال، يمكنك تحديد تبعيات معلمات الإدخال، وهي عبارة عن قاموس Python، في ModelBuilder على النحو التالي:

dependency_config = { "auto" = True, "requirements" = "/path/to/your/requirements.txt" "custom" = ["module>=1.2.3,<1.5", "boto3==1.16.*", "some_module@http://some/url"]
} ModelBuilder( # Other params dependencies=dependency_config,
).build()

نحدد المجالات التالية:

  • السيارات - ما إذا كنت تريد محاولة التقاط التبعيات تلقائيًا في بيئتك.
  • المتطلبات – سلسلة من المسار الخاص بك requirements.txt ملف. (هذا اختياري.)
  • على – قائمة بأي تبعيات مخصصة أخرى تريد إضافتها أو تعديلها. (هذا اختياري.)

إذا تم تحديد نفس الوحدة في أماكن متعددة، custom سيكون لها الأولوية القصوى، ثم requirementsو auto سيكون لها الأولوية الدنيا. على سبيل المثال، لنفترض أنه أثناء الاكتشاف التلقائي، ModelBuilder يكشف numpy==1.25، و requirements.txt يتم توفير الملف الذي يحدد numpy>=1.24,<1.26. بالإضافة إلى ذلك، هناك تبعية مخصصة: custom = ["numpy==1.26.1"]. في هذه الحالة، numpy==1.26.1 سيتم اختياره عندما نقوم بتثبيت التبعيات في الحاوية.

تنظيف

عند الانتهاء من اختبار النماذج، كأفضل ممارسة، قم بحذف نقطة النهاية لتوفير التكاليف إذا لم تعد نقطة النهاية مطلوبة. يمكنك متابعة تنظيف قسم في كل من دفاتر الملاحظات التجريبية أو استخدم التعليمات البرمجية التالية لحذف النموذج ونقطة النهاية التي أنشأها العرض التوضيحي:

predictor.delete_model()
predictor.delete_endpoint()

وفي الختام

تعمل قدرة SageMaker ModelBuilder الجديدة على تبسيط عملية نشر نماذج تعلم الآلة في الإنتاج على SageMaker. من خلال التعامل مع العديد من التفاصيل المعقدة خلف الكواليس، يعمل ModelBuilder على تقليل منحنى التعلم للمستخدمين الجدد وزيادة الاستفادة إلى أقصى حد للمستخدمين ذوي الخبرة. باستخدام بضعة أسطر فقط من التعليمات البرمجية، يمكنك نشر نماذج ذات أطر عمل مدمجة مثل XGBoost وPyTorch وTriton وHugging Face، بالإضافة إلى النماذج المقدمة من SageMaker JumpStart في نقاط نهاية قوية وقابلة للتطوير على SageMaker.

نحن نشجع جميع مستخدمي SageMaker على تجربة هذه الإمكانية الجديدة من خلال الرجوع إلى نموذج بناء صفحة التوثيق. يتوفر ModelBuilder الآن لجميع مستخدمي SageMaker دون أي رسوم إضافية. استفد من سير العمل المبسط هذا لنشر نماذجك بشكل أسرع. نحن نتطلع إلى سماع كيف يقوم ModelBuilder بتسريع دورة حياة تطوير النموذج الخاص بك!

شكر خاص لسيريشا أوبادهايالا، وريموند ليو، وغاري وانغ، ودهاوال باتل، وديباك جارج، ورام فيجيراجو.


عن المؤلفين

قم بتعبئة ونشر ML وLLMs الكلاسيكية بسهولة باستخدام Amazon SageMaker، الجزء 1: تحسينات PySDK | أمازون ويب سيرفيسز PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.ميلاني ليحاصل على درجة الدكتوراه ، وهو متخصص أول في الذكاء الاصطناعي / التعلم الآلي TAM في AWS ومقرها في سيدني ، أستراليا. تساعد عملاء المؤسسات على بناء الحلول باستخدام أحدث أدوات الذكاء الاصطناعي / التعلم الآلي على AWS وتقدم إرشادات حول تصميم وتنفيذ حلول التعلم الآلي باستخدام أفضل الممارسات. في أوقات فراغها ، تحب استكشاف الطبيعة وقضاء الوقت مع العائلة والأصدقاء.

قم بتعبئة ونشر ML وLLMs الكلاسيكية بسهولة باستخدام Amazon SageMaker، الجزء 1: تحسينات PySDK | أمازون ويب سيرفيسز PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.مارك كارب هو مهندس ML مع فريق Amazon SageMaker Service. يركز على مساعدة العملاء في تصميم ونشر وإدارة أعباء عمل ML على نطاق واسع. في أوقات فراغه ، يستمتع بالسفر واستكشاف أماكن جديدة.

قم بتعبئة ونشر ML وLLMs الكلاسيكية بسهولة باستخدام Amazon SageMaker، الجزء 1: تحسينات PySDK | أمازون ويب سيرفيسز PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.سام إدواردز، هو مهندس سحابي (AI/ML) في AWS Sydney متخصص في التعلم الآلي وAmazon SageMaker. إنه متحمس لمساعدة العملاء على حل المشكلات المتعلقة بسير عمل التعلم الآلي وإنشاء حلول جديدة لهم. خارج العمل، يستمتع بممارسة رياضة المضرب والسفر.

قم بتعبئة ونشر ML وLLMs الكلاسيكية بسهولة باستخدام Amazon SageMaker، الجزء 1: تحسينات PySDK | أمازون ويب سيرفيسز PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.راغو راميشا هو أحد كبار مهندسي حلول ML مع فريق خدمة Amazon SageMaker. وهو يركز على مساعدة العملاء في إنشاء أعباء عمل إنتاج تعلم الآلة ونشرها وترحيلها إلى SageMaker على نطاق واسع. وهو متخصص في مجالات التعلم الآلي والذكاء الاصطناعي ورؤية الكمبيوتر، ويحمل درجة الماجستير في علوم الكمبيوتر من جامعة تكساس في دالاس. وفي أوقات فراغه، يستمتع بالسفر والتصوير الفوتوغرافي.

قم بتعبئة ونشر ML وLLMs الكلاسيكية بسهولة باستخدام Amazon SageMaker، الجزء 1: تحسينات PySDK | أمازون ويب سيرفيسز PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.شيفا راج كوتينى يعمل كمدير منتج رئيسي في مجموعة منتجات Amazon SageMaker الاستدلالية. وهو يركز على نشر النماذج وضبط الأداء والتحسين في SageMaker للاستدلال.

قم بتعبئة ونشر ML وLLMs الكلاسيكية بسهولة باستخدام Amazon SageMaker، الجزء 1: تحسينات PySDK | أمازون ويب سيرفيسز PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.موهان غاندي هو مهندس برمجيات أول في AWS. لقد عمل مع AWS على مدار السنوات العشر الماضية وعمل على العديد من خدمات AWS مثل EMR و EFA و RDS. يركز حاليًا على تحسين تجربة الاستدلال SageMaker. في أوقات فراغه ، يستمتع برياضة المشي لمسافات طويلة وسباق الماراثون.

الطابع الزمني:

اكثر من التعلم الآلي من AWS