قم بنشر وإدارة خطوط أنابيب التعلم الآلي باستخدام Terraform باستخدام Amazon SageMaker PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

قم بنشر وإدارة خطوط أنابيب التعلم الآلي باستخدام Terraform باستخدام Amazon SageMaker

يعتمد عملاء AWS على البنية التحتية كرمز (IaC) لتصميم البنية التحتية السحابية وتطويرها وإدارتها. تضمن IaC أن البنية التحتية للعملاء وخدماتهم متسقة وقابلة للتطوير وقابلة للتكرار ، مع القدرة على اتباع أفضل الممارسات في مجال عمليات التطوير (DevOps).

أحد الأساليب الممكنة لإدارة البنية التحتية والخدمات لـ AWS باستخدام IaC هو Terraform، والذي يسمح للمطورين بتنظيم البنية التحتية الخاصة بهم في وحدات تعليمات برمجية قابلة لإعادة الاستخدام. يكتسب هذا الجانب أهمية متزايدة في مجال التعلم الآلي (ML). يتيح لك تطوير وإدارة خطوط أنابيب ML ، بما في ذلك التدريب والاستدلال باستخدام Terraform مثل IaC ، التوسع بسهولة في حالات أو مناطق استخدام ML المتعددة دون الحاجة إلى تطوير البنية التحتية من البداية. علاوة على ذلك ، فإنه يوفر الاتساق للبنية التحتية (على سبيل المثال ، نوع وحجم المثال) للتدريب والاستدلال عبر التطبيقات المختلفة لخط أنابيب ML. يتيح لك هذا توجيه الطلبات وحركة المرور الواردة إلى جهات مختلفة الأمازون SageMaker نقاط النهاية.

في هذا المنشور ، نوضح لك كيفية نشر وإدارة خطوط أنابيب ML باستخدام Terraform و Amazon SageMaker.

حل نظرة عامة

يوفر هذا المنشور رمزًا ويوجهك عبر الخطوات اللازمة لنشر البنية التحتية لـ AWS لخطوط أنابيب ML مع Terraform للتدريب على النموذج والاستدلال باستخدام Amazon SageMaker. تتم إدارة خط أنابيب ML عبر وظائف خطوة AWS لتنسيق الخطوات المختلفة التي تم تنفيذها في خط أنابيب ML ، كما هو موضح في الشكل التالي.

خطوات وظيفة الخطوة

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

يعتمد الكود المتعلق بـ ML للتدريب والاستدلال باستخدام صورة Docker بشكل أساسي على العمل الحالي في ما يلي مستودع جيثب.

يوضح الرسم البياني التالي بنية الحل:

مخطط العمارة

نوجهك عبر الخطوات عالية المستوى التالية:

  1. انشر بنية AWS الأساسية الخاصة بك مع Terraform.
  2. ادفع صورة Docker الخاصة بك إلى Amazon ECR.
  3. قم بتشغيل خط أنابيب ML.
  4. استدعاء نقطة النهاية الخاصة بك.

هيكل المستودع

يمكنك العثور على المستودع الذي يحتوي على الكود والبيانات المستخدمة لهذا المنشور في ما يلي مستودع جيثب.

يتضمن المستودع الدلائل التالية:

  • /terraform - يتكون من المجلدات الفرعية التالية:
    • ./infrastructure - يحتوي على ملف main.tf الذي يستدعي وحدة خط أنابيب ML ، بالإضافة إلى الإعلانات المتغيرة التي نستخدمها لنشر البنية التحتية
    • ./ml-pipeline-module - يحتوي على وحدة خط أنابيب Terraform ML ، والتي يمكننا إعادة استخدامها
  • /src - يتكون من المجلدات الفرعية التالية:
    • ./container - يحتوي على رمز مثال للتدريب والاستدلال مع تعريفات صورة Docker
    • ./lambda_function - يحتوي على كود Python لتكوينات إنشاء وظيفة Lambda ، مثل معرف الوظيفة الفريد لوظيفة تدريب SageMaker
  • /data - يحتوي على الملف التالي:
    • ./iris.csv - يحتوي على بيانات لتدريب نموذج ML

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

في هذا الدليل ، يجب أن يكون لديك المتطلبات الأساسية التالية:

انشر بنية AWS الأساسية الخاصة بك مع Terraform

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

عند التهيئة لأول مرة ، افتح الملف terraform/infrastructure/terraform.tfvars وضبط المتغير اسم المشروع إلى اسم مشروعك بالإضافة إلى المتغير منطقة إذا كنت تريد النشر في منطقة أخرى. يمكنك أيضًا تغيير متغيرات إضافية مثل أنواع المثيلات للتدريب والاستدلال.

ثم استخدم الأوامر التالية لنشر البنية التحتية مع Terraform:

export AWS_PROFILE=<your_aws_cli_profile_name>
cd terraform/infrastructure
terraform init
terraform plan
terraform apply

تحقق من المخرجات وتأكد من أن الموارد المخططة تظهر بشكل صحيح ، وقم بالتأكيد بنعم في مرحلة التطبيق إذا كان كل شيء صحيحًا. ثم انتقل إلى وحدة تحكم Amazon ECR (أو تحقق من إخراج Terraform في الجهاز) واحصل على عنوان URL لمستودع ECR الذي قمت بإنشائه عبر Terraform.

يجب أن يبدو الناتج مشابهًا للمخرجات المعروضة التالية ، بما في ذلك عنوان URL لمستودع ECR:

Apply complete! Resources: 19 added, 0 changed, 0 destroyed. Outputs: ecr_repository_url = <account_number>.dkr.ecr.eu-west-1.amazonaws.com/ml-pipeline-terraform-demo

ادفع صورة Docker الخاصة بك إلى Amazon ECR

لكي يقوم خط أنابيب ML و SageMaker بتدريب وتوفير نقطة نهاية SageMaker للاستدلال ، تحتاج إلى توفير صورة Docker وتخزينها في Amazon ECR. يمكنك العثور على مثال في الدليل src/container. إذا قمت بالفعل بتطبيق البنية الأساسية لـ AWS من الخطوة السابقة ، فيمكنك دفع صورة Docker كما هو موضح. بعد تطوير صورة Docker الخاصة بك ، يمكنك اتخاذ الإجراءات التالية ودفعها إلى Amazon ECR (اضبط عنوان URL الخاص بـ Amazon ECR وفقًا لاحتياجاتك):

cd src/container
export AWS_PROFILE=<your_aws_cli_profile_name>
aws ecr get-login-password --region eu-west-1 | docker login --username AWS --password-stdin <account_number>.dkr.ecr.eu-west-1.amazonaws.com
docker build -t ml-training .
docker tag ml-training:latest <account_number>.dkr.ecr.eu-west-1.amazonaws.com/<ecr_repository_name>:latest
docker push <account_number>.dkr.ecr.eu-west-1.amazonaws.com/<ecr_repository_name>

إذا قمت بالفعل بتطبيق البنية الأساسية لـ AWS مع Terraform ، فيمكنك دفع التغييرات في التعليمات البرمجية وصورة Docker مباشرةً إلى Amazon ECR دون النشر عبر Terraform مرة أخرى.

قم بتشغيل خط أنابيب ML

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

بدء وظيفة الخطوة

بعد تشغيل جهاز الحالة بنجاح في Step Functions ، يمكنك أن ترى أنه تم إنشاء نقطة نهاية SageMaker. في وحدة تحكم SageMaker ، اختر الإستنباط في جزء التنقل ، ثم النهاية. تأكد من الانتظار حتى تتغير الحالة إلى InService.

حالة نقطة نهاية SageMaker

استدعاء نقطة النهاية الخاصة بك

لاستدعاء نقطة النهاية الخاصة بك (في هذا المثال ، لمجموعة بيانات القزحية) ، يمكنك استخدام نص Python النصي التالي مع AWS SDK لـ Python (Boto3). يمكنك القيام بذلك من دفتر ملاحظات SageMaker ، أو تضمين مقتطف التعليمات البرمجية التالي في وظيفة Lambda:

import boto3
from io import StringIO
import pandas as pd client = boto3.client('sagemaker-runtime') endpoint_name = 'Your endpoint name' # Your endpoint name.
content_type = "text/csv"   # The MIME type of the input data in the request body. payload = pd.DataFrame([[1.5,0.2,4.4,2.6]])
csv_file = StringIO()
payload.to_csv(csv_file, sep=",", header=False, index=False)
payload_as_csv = csv_file.getvalue() response = client.invoke_endpoint(
EndpointName=endpoint_name,
ContentType=content_type,
Body=payload_as_csv
) label = response['Body'].read().decode('utf-8')
print(label)

تنظيف

يمكنك تدمير البنية التحتية التي أنشأتها Terraform باستخدام الأمر تدمير terraform ، لكنك تحتاج إلى حذف البيانات والملفات الموجودة في حاويات S3 أولاً. علاوة على ذلك ، يتم إنشاء نقطة نهاية SageMaker (أو عدة نقاط نهاية SageMaker إذا تم تشغيلها عدة مرات) عبر وظائف الخطوة ولا تتم إدارتها عبر Terraform. هذا يعني أن النشر يحدث عند تشغيل خط أنابيب ML بوظائف الخطوة. لذلك ، تأكد من حذف نقطة نهاية SageMaker أو نقاط النهاية التي تم إنشاؤها عبر خط أنابيب ML لوظائف الخطوة لتجنب التكاليف غير الضرورية. أكمل الخطوات التالية:

  1. في وحدة التحكم Amazon S3 ، احذف مجموعة البيانات في حاوية التدريب S3.
  2. احذف جميع النماذج التي دربتها عبر خط أنابيب ML في حاوية نماذج S3 ، إما عبر وحدة تحكم Amazon S3 أو AWS CLI.
  3. تدمير البنية التحتية التي تم إنشاؤها عبر Terraform:
    cd terraform/infrastructure
    terraform destroy

  4. احذف نقاط نهاية SageMaker ، وتكوين نقطة النهاية ، والنماذج التي تم إنشاؤها عبر وظائف الخطوة ، إما على وحدة تحكم SageMaker أو عبر AWS CLI.

وفي الختام

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

أشجعك على استكشاف إضافة ميزات الأمان واعتماد أفضل ممارسات الأمان وفقًا لاحتياجاتك ومعايير الشركة المحتملة. بالإضافة إلى ذلك ، فإن تضمين هذا الحل في خطوط أنابيب CI / CD الخاص بك سيمنحك المزيد من القدرات في تبني وإنشاء أفضل ممارسات ومعايير DevOps وفقًا لمتطلباتك.


عن المؤلف

قم بنشر وإدارة خطوط أنابيب التعلم الآلي باستخدام Terraform باستخدام Amazon SageMaker PlatoBlockchain Data Intelligence. البحث العمودي. عاي.أوليفر زوليكوفر هو عالم بيانات في Amazon Web Services. إنه يمكّن عملاء المؤسسات العالمية من بناء نماذج التعلم الآلي وتدريبها ونشرها ، فضلاً عن إدارة دورة حياة نموذج ML باستخدام MLOps. علاوة على ذلك ، يقوم ببناء وتصميم الحلول السحابية ذات الصلة.

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

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