تقليل التكلفة ووقت التطوير باستخدام Amazon SageMaker Pipelines الوضع المحلي PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

تقليل التكلفة ووقت التطوير باستخدام الوضع المحلي لخطوط أنابيب Amazon SageMaker

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

نظرة عامة على دورة حياة ML

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

  1. تنقية البيانات وإعدادها (هندسة الميزات)
  2. تدريب النموذج والضبط
  3. تقييم النموذج
  4. نشر النموذج (أو تحويل دفعة)

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

تشبه عملية التطوير خطوة إعداد البيانات لكل من تدريب النموذج وخطوات تقييم النموذج. يستخدم علماء البيانات ميزة الوضع المحلي من SageMaker Training للتكرار سريعًا مع مجموعات البيانات الأصغر محليًا ، قبل استخدام جميع البيانات الموجودة في مجموعة مُدارة من SageMaker من مثيلات ML المحسّنة. يؤدي ذلك إلى تسريع عملية التطوير وإلغاء تكلفة تشغيل مثيلات ML التي يديرها SageMaker أثناء التجريب.

مع زيادة نضج تعلم الآلة للمؤسسة ، يمكنك استخدام خطوط أنابيب Amazon SageMaker لإنشاء خطوط أنابيب ML التي تجمع هذه الخطوات معًا ، مما يخلق تدفقات عمل ML أكثر تعقيدًا تعالج نماذج ML وتدريبها وتقييمها. SageMaker Pipelines هي خدمة مُدارة بالكامل لأتمتة الخطوات المختلفة لسير عمل ML ، بما في ذلك تحميل البيانات وتحويل البيانات وتدريب النموذج وضبطه ونشر النموذج. حتى وقت قريب ، كان بإمكانك تطوير البرامج النصية واختبارها محليًا ولكن كان عليك اختبار خطوط أنابيب ML الخاصة بك في السحابة. هذا جعل التكرار على تدفق وشكل خطوط أنابيب ML عملية بطيئة ومكلفة. الآن ، مع ميزة الوضع المحلي المضافة لخطوط أنابيب SageMaker ، يمكنك تكرار واختبار خطوط أنابيب ML الخاصة بك بشكل مشابه لكيفية الاختبار والتكرار على البرامج النصية للمعالجة والتدريب. يمكنك تشغيل واختبار خطوط الأنابيب الخاصة بك على جهازك المحلي ، باستخدام مجموعة فرعية صغيرة من البيانات للتحقق من صحة بناء جملة خطوط الأنابيب ووظائفها.

خطوط الأنابيب SageMaker

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

تقدم SageMaker Pipelines تكاملًا مستمرًا وممارسات نشر مستمر (CI / CD) إلى ML ، مثل الحفاظ على التكافؤ بين بيئات التطوير والإنتاج ، والتحكم في الإصدار ، والاختبار عند الطلب ، والأتمتة الشاملة ، مما يساعدك على توسيع نطاق التعلم الآلي في جميع أنحاء منظمة. يعرف ممارسو DevOps أن بعض الفوائد الرئيسية لاستخدام تقنيات CI / CD تشمل زيادة الإنتاجية عبر المكونات القابلة لإعادة الاستخدام وزيادة الجودة من خلال الاختبار الآلي ، مما يؤدي إلى عائد استثمار أسرع لأهداف عملك. هذه الفوائد متاحة الآن لممارسي MLOps باستخدام خطوط أنابيب SageMaker لأتمتة تدريب واختبار ونشر نماذج ML. باستخدام الوضع المحلي ، يمكنك الآن التكرار بسرعة أكبر أثناء تطوير البرامج النصية لاستخدامها في خط الأنابيب. لاحظ أنه لا يمكن عرض مثيلات خط الأنابيب المحلية أو تشغيلها داخل Studio IDE ؛ ومع ذلك ، ستتوفر خيارات عرض إضافية لخطوط الأنابيب المحلية قريبًا.

يوفر SageMaker SDK غرضًا عامًا تكوين الوضع المحلي يسمح للمطورين بتشغيل واختبار المعالجات والمقدرات المدعومة في بيئتهم المحلية. يمكنك استخدام التدريب على الوضع المحلي مع العديد من صور إطار العمل المدعومة من AWS (TensorFlow و MXNet و Chainer و PyTorch و Scikit-Learn) بالإضافة إلى الصور التي توفرها بنفسك.

تدعم خطوط أنابيب SageMaker ، التي تنشئ رسمًا بيانيًا دوريًا موجهًا (DAG) لخطوات سير العمل المنظمة ، العديد من الأنشطة التي تعد جزءًا من دورة حياة ML. في الوضع المحلي ، يتم دعم الخطوات التالية:

  • معالجة خطوات العمل - تجربة مُبسطة ومُدارة على SageMaker لتشغيل أحمال عمل معالجة البيانات ، مثل هندسة الميزات والتحقق من صحة البيانات وتقييم النموذج وتفسير النموذج
  • خطوات عمل التدريب - عملية تكرارية تعلم نموذجًا لعمل تنبؤات من خلال تقديم أمثلة من مجموعة بيانات تدريبية
  • وظائف ضبط Hyperparameter - طريقة آلية لتقييم واختيار المعلمات الفائقة التي تنتج النموذج الأكثر دقة
  • خطوات التشغيل الشرطي - خطوة توفر تشغيلًا مشروطًا للفروع في خط الأنابيب
  • خطوة النموذج - باستخدام وسيطات CreateModel ، يمكن لهذه الخطوة إنشاء نموذج للاستخدام في خطوات التحويل أو النشر اللاحق كنقطة نهاية
  • تحويل خطوات العمل - وظيفة تحويل مجمعة تنشئ تنبؤات من مجموعات بيانات كبيرة ، وتقوم بتشغيل الاستدلال عندما لا تكون هناك حاجة إلى نقطة نهاية ثابتة
  • خطوات الفشل - خطوة توقف تشغيل خط الأنابيب وتضع علامة على التشغيل على أنه فشل

حل نظرة عامة

يوضح الحل الذي نقدمه الخطوات الأساسية لإنشاء خطوط أنابيب SageMaker وتشغيلها في الوضع المحلي ، مما يعني استخدام وحدة المعالجة المركزية المحلية وذاكرة الوصول العشوائي وموارد القرص لتحميل خطوات سير العمل وتشغيلها. يمكن تشغيل بيئتك المحلية على كمبيوتر محمول ، باستخدام IDEs الشائعة مثل VSCode أو PyCharm ، أو يمكن استضافتها بواسطة SageMaker باستخدام مثيلات دفتر الملاحظات الكلاسيكية.

يسمح الوضع المحلي لعلماء البيانات بتجميع الخطوات معًا ، والتي يمكن أن تتضمن وظائف المعالجة والتدريب والتقييم ، وتشغيل سير العمل بالكامل محليًا. عند الانتهاء من الاختبار محليًا ، يمكنك إعادة تشغيل خط الأنابيب في بيئة مُدارة من SageMaker عن طريق استبدال ملف LocalPipelineSession مع الكائن PipelineSession، مما يضفي الاتساق على دورة حياة ML.

بالنسبة لعينة الكمبيوتر الدفتري هذه ، نستخدم مجموعة بيانات قياسية متاحة للجمهور ، وهي UCI آلة التعلم Abalone Dataset. الهدف هو تدريب نموذج ML لتحديد عمر حلزون أذن البحر من قياساته الفيزيائية. في جوهرها ، هذه مشكلة انحدار.

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

  • خطوة المعالجة (هندسة الميزات)
  • خطوة التدريب (تدريب نموذجي)
  • خطوة المعالجة (تقييم النموذج)
  • خطوة الشرط (دقة النموذج)
  • إنشاء نموذج خطوة (نموذج)
  • خطوة التحويل (تحويل دفعة)
  • تسجيل خطوة النموذج (الحزمة النموذجية)
  • خطوة الفشل (فشل التشغيل)

يوضح الرسم البياني التالي خط الأنابيب لدينا.

تقليل التكلفة ووقت التطوير باستخدام Amazon SageMaker Pipelines الوضع المحلي PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

المتطلبات الأساسية المسبقة

للمتابعة في هذا المنشور ، تحتاج إلى ما يلي:

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

بناء خط الأنابيب الخاص بك

في عينة دفتر الملاحظات هذا ، نستخدمها وضع البرنامج النصي SageMaker بالنسبة لمعظم عمليات ML ، مما يعني أننا نقدم كود Python الفعلي (نصوص برمجية) لأداء النشاط وتمرير مرجع إلى هذا الرمز. يوفر وضع البرنامج النصي مرونة كبيرة للتحكم في السلوك داخل معالجة SageMaker من خلال السماح لك بتخصيص التعليمات البرمجية الخاصة بك مع الاستمرار في الاستفادة من حاويات SageMaker سابقة الإنشاء مثل XGBoost أو Scikit-Learn. تتم كتابة الكود المخصص في ملف نصي بلغة Python باستخدام الخلايا التي تبدأ بالأمر السحري %%writefile، مثل ما يلي:

%%writefile code/evaluation.py

عامل التمكين الأساسي للوضع المحلي هو LocalPipelineSession الكائن ، والذي يتم إنشاء مثيل له من Python SDK. توضح مقاطع التعليمات البرمجية التالية كيفية إنشاء خط أنابيب SageMaker في الوضع المحلي. على الرغم من أنه يمكنك تكوين مسار بيانات محلي للعديد من خطوات خطوط الأنابيب المحلية ، فإن Amazon S3 هو الموقع الافتراضي لتخزين إخراج البيانات عن طريق التحويل. الجديد LocalPipelineSession يتم تمرير الكائن إلى Python SDK في العديد من استدعاءات SageMaker workflow API الموضحة في هذا المنشور. لاحظ أنه يمكنك استخدام ملف local_pipeline_session متغير لاسترداد المراجع إلى الحاوية الافتراضية S3 واسم المنطقة الحالي.

from sagemaker.workflow.pipeline_context import LocalPipelineSession

# Create a `LocalPipelineSession` object so that each 
# pipeline step will run locally
# To run this pipeline in the cloud, you must change 
# the `LocalPipelineSession()` to `PipelineSession()`
local_pipeline_session = LocalPipelineSession()
region = local_pipeline_session.boto_region_name

default_bucket = local_pipeline_session.default_bucket()
prefix = "sagemaker-pipelines-local-mode-example"

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

mse_threshold = ParameterFloat(name="MseThreshold", default_value=7.0)

لإنشاء خطوة معالجة البيانات ، والتي تُستخدم هنا لأداء هندسة الميزات ، نستخدم SKLearnProcessor لتحميل مجموعة البيانات وتحويلها. نجتاز ال local_pipeline_session متغيرًا إلى مُنشئ الفئة ، والذي يوجه خطوة سير العمل للتشغيل في الوضع المحلي:

from sagemaker.sklearn.processing import SKLearnProcessor

framework_version = "1.0-1"

sklearn_processor = SKLearnProcessor(
    framework_version=framework_version,
    instance_type=instance_type,
    instance_count=processing_instance_count,
    base_job_name="sklearn-abalone-process",
    role=role,
    sagemaker_session=local_pipeline_session,
)

بعد ذلك ، نقوم بإنشاء أول خطوة فعلية لخط الأنابيب ، أ ProcessingStep كائن ، كما تم استيراده من SageMaker SDK. يتم إرجاع وسيطات المعالج من استدعاء إلى SKLearnProcessor طريقة التشغيل (). يتم دمج خطوة سير العمل هذه مع خطوات أخرى باتجاه نهاية دفتر الملاحظات للإشارة إلى ترتيب العملية داخل خط الأنابيب.

from sagemaker.processing import ProcessingInput, ProcessingOutput
from sagemaker.workflow.steps import ProcessingStep

processor_args = sklearn_processor.run(
    inputs=[
        ProcessingInput(source=input_data, destination="/opt/ml/processing/input"),
    ],
    outputs=[
        ProcessingOutput(output_name="train", source="/opt/ml/processing/train"),
        ProcessingOutput(output_name="validation", source="/opt/ml/processing/validation"),
        ProcessingOutput(output_name="test", source="/opt/ml/processing/test"),
    ],
    code="code/preprocessing.py",
)

step_process = ProcessingStep(name="AbaloneProcess", step_args=processor_args)

بعد ذلك ، نوفر رمزًا لإنشاء خطوة تدريب عن طريق إنشاء مثيل مقدر قياسي باستخدام SageMaker SDK. نجتاز نفس الشيء local_pipeline_session متغير للمقدر ، المسمى xgb_train ، مثل sagemaker_session جدال. نظرًا لأننا نريد تدريب نموذج XGBoost ، يجب علينا إنشاء عنوان URI صالح للصورة من خلال تحديد المعلمات التالية ، بما في ذلك إطار العمل والعديد من معلمات الإصدار:

from sagemaker.estimator import Estimator
from sagemaker.inputs import TrainingInput

model_path = f"s3://{default_bucket}/{prefix}/model"
image_uri = sagemaker.image_uris.retrieve(
    framework="xgboost",
    region=region,
    version="1.5-1",
    py_version="py3",
    instance_type=instance_type,
)

xgb_train = Estimator(
    image_uri=image_uri,
    entry_point="code/abalone.py",
    instance_type=instance_type,
    instance_count=training_instance_count,
    output_path=model_path,
    role=role,
    sagemaker_session=local_pipeline_session,
)

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

from sagemaker.workflow.steps import TrainingStep

step_train = TrainingStep(name="AbaloneTrain", step_args=train_args)

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

from sagemaker.processing import ScriptProcessor

script_eval = ScriptProcessor(
    image_uri=image_uri,
    command=["python3"],
    instance_type=instance_type,
    instance_count=processing_instance_count,
    base_job_name="script-abalone-eval",
    role=role,
    sagemaker_session=local_pipeline_session,
)

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

from sagemaker.model import Model

model = Model(
    image_uri=image_uri,
    model_data=step_train.properties.ModelArtifacts.S3ModelArtifacts,
    source_dir="code",
    entry_point="inference.py",
    role=role,
    sagemaker_session=local_pipeline_session,
)

from sagemaker.workflow.model_step import ModelStep

step_create_model = ModelStep(name="AbaloneCreateModel", 
    step_args=model.create(instance_type=instance_type)
)

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

from sagemaker.transformer import Transformer

transformer = Transformer(
    model_name=step_create_model.properties.ModelName,
    instance_type=instance_type,
    instance_count=transform_instance_count,
    output_path=f"s3://{default_bucket}/{prefix}/transform",
    sagemaker_session=local_pipeline_session,
)

from sagemaker.workflow.steps import TransformStep

transform_args = transformer.transform(transform_data, content_type="text/csv")

step_transform = TransformStep(name="AbaloneTransform", step_args=transform_args)

أخيرًا ، نريد إضافة شرط فرع إلى سير العمل بحيث لا نقوم بتشغيل التحويل الدفعي إلا إذا كانت نتائج تقييم النموذج تفي بمعاييرنا. يمكننا الإشارة إلى هذا الشرطي بإضافة أ ConditionStep بنوع شرط معين ، مثل ConditionLessThanOrEqualTo. ثم نقوم بعد ذلك بتعداد خطوات الفرعين ، وتحديد الفروع if / else أو true / false لخط الأنابيب. خطوات if_steps المتوفرة في ملف ConditionStep (الخطوة_إنشاء_النموذج, الخطوة_تحويل) عندما يتم تقييم الشرط إلى True.

from sagemaker.workflow.conditions import ConditionLessThanOrEqualTo
from sagemaker.workflow.condition_step import ConditionStep
from sagemaker.workflow.functions import JsonGet

cond_lte = ConditionLessThanOrEqualTo(
    left=JsonGet(
        step_name=step_eval.name,
        property_file=evaluation_report,
        json_path="regression_metrics.mse.value",),
    right=mse_threshold,
)

step_cond = ConditionStep(
    name="AbaloneMSECond",
    conditions=[cond_lte],
    if_steps=[step_create_model, step_transform],
    else_steps=[step_fail],
)

يوضح الرسم التخطيطي التالي هذا الفرع الشرطي وخطوات if / else المرتبطة به. يتم تشغيل فرع واحد فقط ، بناءً على نتيجة خطوة تقييم النموذج مقارنة بخطوة الشرط.

تقليل التكلفة ووقت التطوير باستخدام Amazon SageMaker Pipelines الوضع المحلي PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

الآن بعد أن تم تحديد جميع خطواتنا ، وإنشاء مثيلات الفئة الأساسية ، يمكننا دمجها في خط أنابيب. نحن نقدم بعض المعلمات ، ونحدد ترتيب العملية بشكل حاسم عن طريق سرد الخطوات بالترتيب المطلوب. نلاحظ أن TransformStep لا يظهر هنا لأنه هدف الخطوة الشرطية ، وقد تم توفيره كوسيطة خطوة إلى ConditionalStep سابقا.

from sagemaker.workflow.pipeline import Pipeline

pipeline_name = f"LocalModelPipeline"
pipeline = Pipeline(
    name=pipeline_name,
    parameters=[
        input_data,
        mse_threshold,
    ],
    steps=[step_process, step_train, step_eval, step_cond],
    sagemaker_session=local_pipeline_session,
)

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

pipeline.upsert(role_arn=role)
execution = pipeline.start()

من المفترض أن ترى رسالة أسفل إخراج الخلية مشابهة لما يلي:

Pipeline execution d8c3e172-089e-4e7a-ad6d-6d76caf987b7 SUCCEEDED

العودة إلى الموارد المدارة

بعد أن أكدنا أن خط الأنابيب يعمل بدون أخطاء ونحن راضون عن تدفق وشكل خط الأنابيب ، يمكننا إعادة إنشاء خط الأنابيب ولكن باستخدام موارد SageMaker المُدارة وإعادة تشغيله. التغيير الوحيد المطلوب هو استخدام PipelineSession بدلا من LocalPipelineSession:

تبدأ من sagemaker.workflow.pipeline_context استيراد LocalPipelineSession
from sagemaker.workflow.pipeline_context import PipelineSession

local_pipeline_session = LocalPipelineSession ()
pipeline_session = PipelineSession()

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

from sagemaker.sklearn.processing import SKLearnProcessor

framework_version = "1.0-1"

sklearn_processor = SKLearnProcessor(
    framework_version=framework_version,
    instance_type=instance_type,
    instance_count=processing_instance_count,
    base_job_name="sklearn-abalone-process",
    role=role,
    sagemaker_session=pipeline_session,  # non-local session
)

بعد استبدال كائن الجلسة المحلية في كل مكان ، نقوم بإعادة إنشاء خط الأنابيب وتشغيله باستخدام موارد SageMaker المُدارة:

from sagemaker.workflow.pipeline import Pipeline

pipeline_name = f"LocalModelPipeline"
pipeline = Pipeline(
    name=pipeline_name,
    parameters=[
        input_data,
        mse_threshold,
    ],
    steps=[step_process, step_train, step_eval, step_cond],
    sagemaker_session=pipeline_session, # non-local session
)

pipeline.upsert(role_arn=role)
execution = pipeline.start()

تنظيف

إذا كنت ترغب في الحفاظ على بيئة Studio مرتبة ، يمكنك استخدام الطرق التالية لحذف خط أنابيب SageMaker والنموذج. يمكن العثور على الكود الكامل في العينة مفكرة.

# delete models 
sm_client = boto3.client("sagemaker")
model_prefix="AbaloneCreateModel"
delete_models(sm_client, model_prefix)

# delete managed pipeline
pipeline_to_delete = 'SM-Managed-Pipeline'
delete_sagemaker_pipeline(sm_client, pipeline_to_delete)

وفي الختام

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

لمعرفة المزيد، يرجى زيارة خطوط أنابيب Amazon SageMaker or استخدم خطوط أنابيب SageMaker لتشغيل وظائفك محليًا.


عن المؤلفين

تقليل التكلفة ووقت التطوير باستخدام Amazon SageMaker Pipelines الوضع المحلي PlatoBlockchain Data Intelligence. البحث العمودي. عاي.بول هارجيس ركز جهوده على التعلم الآلي في العديد من الشركات ، بما في ذلك AWS و Amazon و Hortonworks. إنه يستمتع ببناء الحلول التكنولوجية وتعليم الناس كيفية تحقيق أقصى استفادة منها. قبل دوره في AWS ، كان مهندسًا رائدًا في Amazon Exports and Expansions ، وساعد موقع amazon.com على تحسين تجربة المتسوقين الدوليين. يحب Paul مساعدة العملاء على توسيع مبادرات التعلم الآلي الخاصة بهم لحل مشاكل العالم الحقيقي.

تقليل التكلفة ووقت التطوير باستخدام Amazon SageMaker Pipelines الوضع المحلي PlatoBlockchain Data Intelligence. البحث العمودي. عاي.نيكلاس بالم هو مهندس حلول في AWS في ستوكهولم ، السويد ، حيث يساعد العملاء عبر دول الشمال على النجاح في السحابة. إنه شغوف بشكل خاص بالتقنيات التي لا تحتاج إلى خادم إلى جانب إنترنت الأشياء والتعلم الآلي. خارج العمل ، Niklas هو متزلج عبر الريف ومتزلج على الجليد بالإضافة إلى غلاية بيض رئيسية.

تقليل التكلفة ووقت التطوير باستخدام Amazon SageMaker Pipelines الوضع المحلي PlatoBlockchain Data Intelligence. البحث العمودي. عاي.كيريت ثاداكا هو مهندس حلول ML يعمل في فريق SageMaker Service SA. قبل انضمامه إلى AWS ، عمل Kirit في شركات ناشئة في مرحلة مبكرة من الذكاء الاصطناعي ، تلتها بعض الوقت في الاستشارات في أدوار مختلفة في أبحاث الذكاء الاصطناعي ، و MLOps ، والقيادة التقنية.

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

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