استقرار و مدیریت خطوط لوله یادگیری ماشین با Terraform با استفاده از Amazon SageMaker PlatoBlockchain Data Intelligence. جستجوی عمودی Ai.

استقرار و مدیریت خطوط لوله یادگیری ماشین با Terraform با استفاده از Amazon SageMaker

مشتریان AWS برای طراحی، توسعه و مدیریت زیرساخت ابری خود به Infrastructure as Code (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 استفاده می شود. توابع Step همچنین یک مدل، پیکربندی نقطه پایانی و نقطه پایانی را ایجاد می کند که برای استنتاج استفاده می شود. منابع اضافی شامل موارد زیر است:

کد مربوط به ML برای آموزش و استنباط با یک تصویر داکر عمدتاً به کارهای موجود در زیر متکی است مخزن GitHub.

نمودار زیر معماری راه حل را نشان می دهد:

نمودار معماری

ما شما را از طریق مراحل سطح بالا زیر راهنمایی می کنیم:

  1. زیرساخت AWS خود را با Terraform مستقر کنید.
  2. تصویر Docker خود را به Amazon ECR فشار دهید.
  3. خط لوله ML را اجرا کنید.
  4. نقطه پایانی خود را فراخوانی کنید.

ساختار مخزن

می توانید مخزن حاوی کد و داده های استفاده شده برای این پست را در ادامه مطلب بیابید مخزن GitHub.

مخزن شامل دایرکتوری های زیر است:

  • /terraform - شامل زیر پوشه های زیر است:
    • ./infrastructure – حاوی فایل main.tf است که ماژول خط لوله ML را فراخوانی می کند، به اضافه اعلان های متغیری که برای استقرار زیرساخت استفاده می کنیم.
    • ./ml-pipeline-module - حاوی ماژول خط لوله Terraform ML است که می توانیم دوباره از آن استفاده کنیم
  • /src - شامل زیر پوشه های زیر است:
    • ./container - شامل کد نمونه برای آموزش و استنتاج با تعاریف تصویر داکر است
    • ./lambda_function - حاوی کد پایتون برای پیکربندی‌های تولید تابع 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

خروجی را بررسی کنید و مطمئن شوید که منابع برنامه ریزی شده به درستی ظاهر می شوند و اگر همه چیز درست است در مرحله اعمال با بله تایید کنید. سپس به کنسول آمازون 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 آمازون 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 خود را مستقیماً بدون استقرار مجدد از طریق Terraform به Amazon ECR فشار دهید.

خط لوله ML را اجرا کنید

برای آموزش و اجرای خط لوله ML، به کنسول Step Functions رفته و اجرا را شروع کنید. می توانید پیشرفت هر مرحله را در تجسم ماشین حالت بررسی کنید. همچنین می توانید پیشرفت کار آموزش SageMaker و وضعیت نقطه پایانی SageMaker خود را بررسی کنید.

عملکرد مرحله شروع

پس از اجرای موفقیت آمیز ماشین حالت در توابع Step، می توانید ببینید که نقطه پایانی SageMaker ایجاد شده است. در کنسول SageMaker، را انتخاب کنید استنباط سپس در قسمت ناوبری نقاط پایان. مطمئن شوید که منتظر تغییر وضعیت به InService باشید.

وضعیت نقطه پایانی SageMaker

نقطه پایانی خود را فراخوانی کنید

برای فراخوانی نقطه پایانی خود (در این مثال، برای مجموعه داده iris)، می توانید از اسکریپت پایتون زیر با AWS SDK برای پایتون (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 kill نابود کنید، اما ابتدا باید داده ها و فایل های موجود در سطل های S3 را حذف کنید. علاوه بر این، نقطه پایانی SageMaker (یا چندین نقطه پایانی SageMaker اگر چندین بار اجرا شود) از طریق توابع Step ایجاد می شود و از طریق Terraform مدیریت نمی شود. این بدان معنی است که استقرار هنگام اجرای خط لوله ML با توابع Step اتفاق می افتد. بنابراین، مطمئن شوید که نقطه پایانی SageMaker یا نقاط پایانی ایجاد شده از طریق خط لوله Step Functions ML را نیز حذف کرده اید تا از هزینه های غیر ضروری جلوگیری کنید. مراحل زیر را کامل کنید:

  1. در کنسول آمازون S3، مجموعه داده را در سطل آموزشی S3 حذف کنید.
  2. تمام مدل هایی را که از طریق خط لوله ML در سطل مدل های S3 آموزش داده اید، از طریق کنسول آمازون S3 یا AWS CLI حذف کنید.
  3. زیرساخت ایجاد شده از طریق Terraform را نابود کنید:
    cd terraform/infrastructure
    terraform destroy

  4. نقاط پایانی SageMaker، پیکربندی نقطه پایانی و مدل‌های ایجاد شده از طریق توابع Step، یا در کنسول SageMaker یا از طریق AWS CLI را حذف کنید.

نتیجه

تبریک می گویم! شما یک خط لوله ML با استفاده از SageMaker با Terraform مستقر کرده اید. این راه حل مثال نشان می دهد که چگونه می توانید به راحتی زیرساخت و خدمات AWS را برای خطوط لوله ML به روشی قابل استفاده مجدد مستقر کنید. این به شما امکان می دهد برای موارد یا مناطق چندگانه استفاده کنید و آموزش و استقرار مدل های ML را با یک کلیک به روشی ثابت امکان پذیر می کند. علاوه بر این، می توانید خط لوله ML را چندین بار اجرا کنید، به عنوان مثال، زمانی که داده های جدید در دسترس هستند یا می خواهید کد الگوریتم را تغییر دهید. همچنین می‌توانید مسیریابی درخواست‌ها یا ترافیک به نقاط پایانی مختلف SageMaker را انتخاب کنید.

من شما را تشویق می‌کنم تا افزودن ویژگی‌های امنیتی و اتخاذ بهترین شیوه‌های امنیتی را با توجه به نیازهای خود و استانداردهای شرکت بالقوه بررسی کنید. علاوه بر این، تعبیه این راه حل در خطوط لوله CI/CD به شما قابلیت های بیشتری در اتخاذ و ایجاد بهترین شیوه ها و استانداردهای DevOps با توجه به نیازهای شما می دهد.


درباره نویسنده

استقرار و مدیریت خطوط لوله یادگیری ماشین با Terraform با استفاده از Amazon SageMaker PlatoBlockchain Data Intelligence. جستجوی عمودی Ai.الیور زولیکوفر دانشمند داده در خدمات وب آمازون است. او مشتریان سازمانی جهانی را قادر می‌سازد تا مدل‌های یادگیری ماشینی را بسازند، آموزش دهند و به کار گیرند، و همچنین چرخه عمر مدل ML را با MLOs مدیریت کنند. علاوه بر این، او راه حل های ابری مرتبط را می سازد و معمار می کند.

تمبر زمان:

بیشتر از آموزش ماشین AWS