ปรับใช้และจัดการไปป์ไลน์การเรียนรู้ของเครื่องด้วย Terraform โดยใช้ Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

ปรับใช้และจัดการไปป์ไลน์การเรียนรู้ของเครื่องด้วย 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 ดังแสดงในรูปต่อไปนี้

ขั้นตอน ฟังก์ชั่น ขั้นตอน

Step Functions เริ่มต้น AWS แลมบ์ดา สร้างรหัสงานเฉพาะ ซึ่งจะใช้เมื่อเริ่มงานฝึกอบรม SageMaker Step Functions ยังสร้างแบบจำลอง การกำหนดค่าจุดสิ้นสุด และจุดสิ้นสุดที่ใช้สำหรับการอนุมาน ทรัพยากรเพิ่มเติมรวมถึงต่อไปนี้:

โค้ดที่เกี่ยวข้องกับ ML สำหรับการฝึกอบรมและการอนุมานด้วยอิมเมจ Docker อาศัยงานที่มีอยู่เป็นหลักดังต่อไปนี้ พื้นที่เก็บข้อมูล GitHub.

ไดอะแกรมต่อไปนี้แสดงสถาปัตยกรรมโซลูชัน:

แผนภาพสถาปัตยกรรม

เราแนะนำคุณผ่านขั้นตอนระดับสูงดังต่อไปนี้:

  1. ปรับใช้โครงสร้างพื้นฐาน AWS ของคุณด้วย Terraform
  2. ส่งอิมเมจ Docker ของคุณไปที่ Amazon ECR
  3. เรียกใช้ไปป์ไลน์ ML
  4. เรียกใช้จุดสิ้นสุดของคุณ

โครงสร้างที่เก็บ

คุณสามารถค้นหาที่เก็บที่มีรหัสและข้อมูลที่ใช้สำหรับโพสต์นี้ในต่อไปนี้ พื้นที่เก็บข้อมูล GitHub.

ที่เก็บประกอบด้วยไดเร็กทอรีต่อไปนี้:

  • /terraform – ประกอบด้วยโฟลเดอร์ย่อยดังต่อไปนี้:
    • ./infrastructure – มีไฟล์ main.tf ที่เรียกโมดูลไปป์ไลน์ ML นอกเหนือจากการประกาศตัวแปรที่เราใช้ในการปรับใช้โครงสร้างพื้นฐาน
    • ./ml-pipeline-module – มีโมดูลไปป์ไลน์ Terraform ML ซึ่งเราสามารถนำมาใช้ซ้ำได้
  • /src – ประกอบด้วยโฟลเดอร์ย่อยดังต่อไปนี้:
    • ./container – มีโค้ดตัวอย่างสำหรับการฝึกอบรมและการอนุมานพร้อมคำจำกัดความสำหรับอิมเมจ Docker
    • ./lambda_function – มีรหัส Python สำหรับการสร้างการกำหนดค่าฟังก์ชัน Lambda เช่น ID งานเฉพาะสำหรับงานฝึกอบรม 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

หากต้องการฝึกและรันไปป์ไลน์ ML ให้ไปที่คอนโซล Step Functions และเริ่มการใช้งาน คุณสามารถตรวจสอบความคืบหน้าของแต่ละขั้นตอนในการแสดงภาพของเครื่องสถานะ คุณยังสามารถตรวจสอบความคืบหน้าของงานฝึกอบรม SageMaker และสถานะของตำแหน่งข้อมูล SageMaker ของคุณได้

เริ่มขั้นตอนการทำงาน

หลังจากที่คุณรันเครื่องสถานะใน Step Functions สำเร็จแล้ว คุณจะเห็นว่าตำแหน่งข้อมูล SageMaker ถูกสร้างขึ้นแล้ว บนคอนโซล SageMaker เลือก การอนุมาน ในบานหน้าต่างนำทาง จากนั้น ปลายทาง. อย่าลืมรอให้สถานะเปลี่ยนเป็น InService

สถานะปลายทางของ SageMaker

เรียกใช้จุดสิ้นสุดของคุณ

ในการเรียกใช้จุดสิ้นสุดของคุณ (ในตัวอย่างนี้ สำหรับชุดข้อมูล iris) คุณสามารถใช้สคริปต์ 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 destroy แต่คุณต้องลบข้อมูลและไฟล์ในบัคเก็ต S3 ก่อน นอกจากนี้ จุดสิ้นสุดของ SageMaker (หรือจุดสิ้นสุดของ SageMaker หลายจุดหากรันหลายครั้ง) จะถูกสร้างขึ้นผ่าน Step Functions และไม่ได้รับการจัดการผ่าน Terraform ซึ่งหมายความว่าการปรับใช้เกิดขึ้นเมื่อรันไปป์ไลน์ ML ด้วย Step Functions ดังนั้น ตรวจสอบให้แน่ใจว่าคุณได้ลบจุดสิ้นสุดของ SageMaker หรือจุดสิ้นสุดที่สร้างผ่านไปป์ไลน์ Step Functions ML ด้วยเพื่อหลีกเลี่ยงค่าใช้จ่ายที่ไม่จำเป็น ทำตามขั้นตอนต่อไปนี้:

  1. บนคอนโซล Amazon S3 ให้ลบชุดข้อมูลในบัคเก็ตการฝึกอบรม S3
  2. ลบโมเดลทั้งหมดที่คุณฝึกผ่าน ML ไปป์ไลน์ในบัคเก็ตโมเดล S3 ไม่ว่าจะผ่านคอนโซล Amazon S3 หรือ AWS CLI
  3. ทำลายโครงสร้างพื้นฐานที่สร้างผ่าน Terraform:
    cd terraform/infrastructure
    terraform destroy

  4. ลบตำแหน่งข้อมูล SageMaker การกำหนดค่าตำแหน่งข้อมูล และโมเดลที่สร้างผ่าน Step Functions บนคอนโซล SageMaker หรือผ่าน AWS CLI

สรุป

ยินดีด้วย! คุณได้ปรับใช้ไปป์ไลน์ ML โดยใช้ SageMaker กับ Terraform โซลูชันตัวอย่างนี้แสดงวิธีที่คุณสามารถปรับใช้โครงสร้างพื้นฐานและบริการของ AWS สำหรับไปป์ไลน์ ML ในแบบที่ใช้ซ้ำได้ สิ่งนี้ทำให้คุณสามารถปรับขนาดสำหรับกรณีการใช้งานหรือภูมิภาคต่างๆ และเปิดใช้งานการฝึกอบรมและการปรับใช้โมเดล ML ได้ด้วยคลิกเดียวในลักษณะที่สอดคล้องกัน นอกจากนี้ คุณสามารถเรียกใช้ ML ไปป์ไลน์ได้หลายครั้ง เช่น เมื่อมีข้อมูลใหม่หรือคุณต้องการเปลี่ยนรหัสอัลกอริทึม คุณยังสามารถเลือกที่จะกำหนดเส้นทางคำขอหรือทราฟฟิกไปยังจุดสิ้นสุด SageMaker ต่างๆ

ฉันขอแนะนำให้คุณสำรวจการเพิ่มคุณลักษณะด้านความปลอดภัยและนำแนวทางปฏิบัติด้านความปลอดภัยที่ดีที่สุดมาใช้ตามความต้องการของคุณและมาตรฐานของบริษัทที่เป็นไปได้ นอกจากนี้ การฝังโซลูชันนี้ลงในไปป์ไลน์ CI/CD ของคุณจะช่วยให้คุณมีความสามารถเพิ่มเติมในการปรับใช้และสร้างแนวทางปฏิบัติและมาตรฐานที่ดีที่สุดของ DevOps ตามความต้องการของคุณ


เกี่ยวกับผู้เขียน

ปรับใช้และจัดการไปป์ไลน์การเรียนรู้ของเครื่องด้วย Terraform โดยใช้ Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.โอลิเวอร์ โซลลิโคเฟอร์ เป็นนักวิทยาศาสตร์ข้อมูลที่ Amazon Web Services เขาช่วยให้ลูกค้าองค์กรทั่วโลกสามารถสร้าง ฝึกฝน และปรับใช้โมเดลแมชชีนเลิร์นนิง ตลอดจนจัดการวงจรชีวิตของโมเดล ML ด้วย MLOps นอกจากนี้ เขายังสร้างและออกแบบโซลูชันระบบคลาวด์ที่เกี่ยวข้อง

ประทับเวลา:

เพิ่มเติมจาก AWS Machine Learning AWS