ปรับใช้โซลูชันการบันทึกข้อมูลการอนุมานของแมชชีนเลิร์นนิ่งบน AWS Lambda PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

ปรับใช้โซลูชันการจับข้อมูลการอนุมานของแมชชีนเลิร์นนิงบน AWS Lambda

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

AWS แลมบ์ดา เป็นบริการประมวลผลแบบไร้เซิร์ฟเวอร์ที่สามารถให้การอนุมาน ML แบบเรียลไทม์ตามขนาดได้ ในโพสต์นี้ เราสาธิตคุณลักษณะการดักจับข้อมูลตัวอย่างที่สามารถปรับใช้กับปริมาณงานการอนุมาน Lambda ML

ในเดือนธันวาคม 2020 Lambda ได้แนะนำการรองรับอิมเมจคอนเทนเนอร์เป็นรูปแบบบรรจุภัณฑ์ คุณลักษณะนี้เพิ่มขีดจำกัดขนาดแพ็คเกจการปรับใช้จาก 500 MB เป็น 10 GB ก่อนการเปิดตัวคุณลักษณะนี้ ข้อจำกัดขนาดแพ็กเกจทำให้ปรับใช้เฟรมเวิร์ก ML เช่น TensorFlow หรือ PyTorch กับฟังก์ชัน Lambda ได้ยาก หลังจากการเปิดตัว ขีดจำกัดขนาดแพ็คเกจที่เพิ่มขึ้นทำให้ ML เป็นเวิร์กโหลดที่น่าดึงดูดและใช้งานได้จริงในการปรับใช้กับ Lambda ในปี 2021 การอนุมาน ML เป็นหนึ่งในประเภทภาระงานที่เติบโตเร็วที่สุดในบริการแลมบ์ดา

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

ภาพรวมของโซลูชัน

โปรเจ็กต์นี้มีซอร์สโค้ดและไฟล์สนับสนุนสำหรับแอปพลิเคชันแบบไร้เซิร์ฟเวอร์ที่ให้การอนุมานตามเวลาจริงโดยใช้โมเดลการตอบคำถามที่ได้รับการฝึกฝนล่วงหน้าแบบฐาน distilbert โครงการใช้คำถาม Hugging Face และตอบแบบจำลองการประมวลผลภาษาธรรมชาติ (NLP) ด้วย ไพทอร์ช เพื่อดำเนินการอนุมานภาษาธรรมชาติ โปรเจ็กต์ยังมีโซลูชันเพื่อทำการเก็บข้อมูลอนุมานสำหรับการทำนายแบบจำลอง ตัวเขียนฟังก์ชันแลมบ์ดาสามารถระบุได้อย่างแม่นยำว่าข้อมูลใดจากอินพุตคำขออนุมานและผลการคาดคะเนที่จะส่งไปยังส่วนขยาย ในโซลูชันนี้ เราส่งข้อมูลอินพุตและคำตอบจากโมเดลไปยังส่วนขยาย ส่วนขยายจะส่งข้อมูลไปยัง an . เป็นระยะ บริการจัดเก็บข้อมูลอย่างง่ายของ Amazon (Amazon S3) ถัง เราสร้างส่วนขยายการดักจับข้อมูลเป็นอิมเมจคอนเทนเนอร์โดยใช้a makefile. จากนั้น เราสร้างฟังก์ชันการอนุมานของ Lambda เป็นอิมเมจคอนเทนเนอร์ และเพิ่มอิมเมจคอนเทนเนอร์ส่วนขยายเป็นเลเยอร์อิมเมจคอนเทนเนอร์ แผนภาพต่อไปนี้แสดงภาพรวมของสถาปัตยกรรม

ส่วนขยายแลมบ์ดาเป็นวิธีการเสริมการทำงานของแลมบ์ดา ในโปรเจ็กต์นี้ เราใช้ส่วนขยายแลมบ์ดาภายนอกเพื่อบันทึกคำขอการอนุมานและการคาดการณ์จากการอนุมาน ส่วนขยายภายนอกทำงานเป็นกระบวนการแยกต่างหากในสภาพแวดล้อมรันไทม์ของ Lambda ซึ่งลดผลกระทบต่อฟังก์ชันการอนุมาน อย่างไรก็ตาม ฟังก์ชันนี้ใช้ทรัพยากรร่วมกัน เช่น CPU หน่วยความจำ และพื้นที่เก็บข้อมูลกับฟังก์ชัน Lambda เราแนะนำให้จัดสรรหน่วยความจำให้เพียงพอกับฟังก์ชัน Lambda เพื่อให้มั่นใจว่าทรัพยากรจะพร้อมใช้งานอย่างเหมาะสมที่สุด (ในการทดสอบของเรา เราจัดสรรหน่วยความจำ 5 GB ให้กับฟังก์ชันการอนุมาน Lambda และเห็นความพร้อมใช้งานของทรัพยากรที่เหมาะสมที่สุดและเวลาในการตอบสนองการอนุมาน) เมื่อการอนุมานเสร็จสิ้น บริการ Lambda จะส่งคืนการตอบสนองทันที และไม่รอให้ส่วนขยายเสร็จสิ้นการบันทึกคำขอและตอบสนองต่อบัคเก็ต S3 ด้วยรูปแบบนี้ ส่วนขยายการตรวจสอบจะไม่ส่งผลต่อเวลาแฝงของการอนุมาน หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับส่วนขยายแลมบ์ดา ดูซีรีย์วิดีโอเหล่านี้.

เนื้อหาโครงการ

โครงการนี้ใช้ไฟล์ โมเดลแอปพลิเคชัน AWS Serverless (AWS SAM) อินเตอร์เฟสบรรทัดคำสั่ง (CLI) เครื่องมือบรรทัดคำสั่งนี้ช่วยให้นักพัฒนาสามารถเริ่มต้นและกำหนดค่าแอปพลิเคชันได้ ทำแพ็คเกจ สร้าง และทดสอบในเครื่อง และปรับใช้กับ AWS Cloud

คุณสามารถดาวน์โหลดซอร์สโค้ดสำหรับโครงการนี้ได้จาก ที่เก็บ GitHub.

โครงการนี้ประกอบด้วยไฟล์และโฟลเดอร์ต่อไปนี้:

  • แอพ/app.py – รหัสสำหรับฟังก์ชัน Lambda ของแอปพลิเคชัน รวมถึงรหัสสำหรับการอนุมาน ML
  • แอพ/Dockerfile – Dockerfile เพื่อสร้างอิมเมจคอนเทนเนอร์ที่รวมฟังก์ชันการอนุมาน โมเดลที่ดาวน์โหลดจาก Hugging Face และส่วนขยาย Lambda ที่สร้างเป็นเลเยอร์ ตรงกันข้ามกับฟังก์ชัน .zip เลเยอร์ไม่สามารถแนบกับฟังก์ชัน Lambda ที่บรรจุคอนเทนเนอร์ในเวลาที่สร้างฟังก์ชันได้ แต่เราสร้างเลเยอร์และคัดลอกเนื้อหาลงในอิมเมจคอนเทนเนอร์แทน
  • ส่วนขยาย – ไฟล์นามสกุลการตรวจสอบโมเดล ส่วนขยายแลมบ์ดานี้ใช้เพื่อบันทึกอินพุตไปยังฟังก์ชันการอนุมานและการคาดคะเนที่สอดคล้องกับบัคเก็ต S3
  • แอพ/รุ่น – โมเดลที่ดาวน์โหลดจาก Hugging Face
  • แอพ/requirements.txt – การพึ่งพา Python ที่จะติดตั้งลงในคอนเทนเนอร์
  • เหตุการณ์ – เหตุการณ์การเรียกใช้ที่คุณสามารถใช้เพื่อทดสอบฟังก์ชันได้
  • template.yaml – ไฟล์ตัวอธิบายที่กำหนดทรัพยากร AWS ของแอปพลิเคชัน

แอปพลิเคชันใช้ทรัพยากร AWS หลายอย่าง รวมถึงฟังก์ชันแลมบ์ดาและ Amazon API Gateway Amazon เอพีไอ ทรัพยากรเหล่านี้ถูกกำหนดไว้ใน template.yaml ไฟล์ในโครงการนี้ คุณสามารถอัปเดตเทมเพลตเพื่อเพิ่มทรัพยากร AWS ผ่านกระบวนการปรับใช้เดียวกันกับที่อัปเดตโค้ดแอปพลิเคชันของคุณ

เบื้องต้น

สำหรับคำแนะนำนี้ คุณควรมีข้อกำหนดเบื้องต้นต่อไปนี้:

ปรับใช้แอปพลิเคชันตัวอย่าง

ในการสร้างแอปพลิเคชันของคุณเป็นครั้งแรก ให้ทำตามขั้นตอนต่อไปนี้:

  • เรียกใช้รหัสต่อไปนี้ในเชลล์ของคุณ (สิ่งนี้จะสร้างส่วนขยายด้วย):
  • สร้างอิมเมจ Docker ของแอปพลิเคชันมอนิเตอร์โมเดล เนื้อหาบิลด์อยู่ใน .aws-sam ไดเรกทอรี
docker build -t serverless-ml-model-monitor:latest .

docker tag serverless-ml-model-monitor:latest .dkr.ecr.us-east-1.amazonaws.com/serverless-ml-model-monitor:latest

  • เข้าสู่ระบบ Amazon ECR:
aws ecr get-login-password --region us-east-1 docker login --username AWS --password-stdin .dkr.ecr.us-east-1.amazonaws.com

  • สร้างที่เก็บใน Amazon ECR:

aws ecr create-repositoryrepository-name serverless-ml-model-monitor--image-scanning-configuration scanOnPush=true--region us-east-1

  • พุชอิมเมจคอนเทนเนอร์ไปที่ Amazon ECR:
docker push .dkr.ecr.us-east-1.amazonaws.com/serverless-ml-model-monitor:latest

  • Uncomment บรรทัด #1 ใน แอพ/Dockerfile และแก้ไขให้ชี้ไปที่รูปภาพที่เก็บ ECR ที่ถูกต้อง จากนั้นยกเลิกการใส่เครื่องหมายบรรทัด #6 และ #7 ใน แอพ/Dockerfile:
WORKDIR /opt
COPY --from=layer /opt/ .

  • สร้างแอปพลิเคชันอีกครั้ง:

เราสร้างใหม่อีกครั้งเนื่องจาก Lambda ไม่รองรับเลเยอร์ Lambda โดยตรงสำหรับประเภทบรรจุภัณฑ์อิมเมจคอนเทนเนอร์ ขั้นแรกเราต้องสร้างองค์ประกอบการตรวจสอบโมเดลเป็นอิมเมจคอนเทนเนอร์ อัปโหลดไปยัง Amazon ECR จากนั้นใช้อิมเมจนั้นในแอปพลิเคชันตรวจสอบโมเดลเป็นเลเยอร์คอนเทนเนอร์

  • สุดท้าย ปรับใช้ฟังก์ชัน Lambda, API Gateway และส่วนขยาย:
sam deploy --guided

คำสั่งนี้เป็นแพ็คเกจและปรับใช้แอปพลิเคชันของคุณกับ AWS ด้วยชุดข้อความแจ้ง:

  • ชื่อกอง : ชื่อของปรับใช้ การก่อตัวของ AWS Cloud ซ้อนกัน. สิ่งนี้ควรไม่ซ้ำกันสำหรับบัญชีและภูมิภาคของคุณ และจุดเริ่มต้นที่ดีคือบางสิ่งที่ตรงกับชื่อโครงการของคุณ
  • ภูมิภาค AWS : ภูมิภาค AWS ที่คุณปรับใช้แอปพลิเคชันของคุณ
  • ยืนยันการเปลี่ยนแปลงก่อนปรับใช้ : หากตั้งค่าเป็น yesชุดการเปลี่ยนแปลงใดๆ จะแสดงให้คุณเห็นก่อนดำเนินการตรวจสอบด้วยตนเอง หากตั้งค่าเป็นไม่ AWS SAM CLI จะปรับใช้การเปลี่ยนแปลงแอปพลิเคชันโดยอัตโนมัติ
  • อนุญาตให้สร้างบทบาท AWS SAM CLI IAM : เทมเพลต AWS SAM จำนวนมาก รวมถึงตัวอย่างนี้ create AWS Identity และการจัดการการเข้าถึง บทบาท (IAM) ที่จำเป็นสำหรับฟังก์ชัน Lambda ที่รวมอยู่ในการเข้าถึงบริการของ AWS โดยค่าเริ่มต้น สิ่งเหล่านี้จะถูกจำกัดขอบเขตให้เหลือสิทธิ์ที่จำเป็นขั้นต่ำ ในการปรับใช้กอง CloudFormation ที่สร้างหรือแก้ไขบทบาท IAM นั้น CAPABILITY_IAM คุ้มค่าสำหรับ capabilities จะต้องจัดให้มี หากไม่มีการอนุญาตผ่านพร้อมท์นี้ ในการปรับใช้ตัวอย่างนี้ คุณต้องผ่าน .อย่างชัดแจ้ง --capabilities CAPABILITY_IAM ไป sam deploy คำสั่ง
  • บันทึกอาร์กิวเมนต์ไปที่ samconfig.toml : หากตั้งค่าเป็น yes, ตัวเลือกของคุณจะถูกบันทึกไว้ในไฟล์การกำหนดค่าภายในโปรเจ็กต์ เพื่อให้คุณสามารถรันได้ในอนาคต sam deploy โดยไม่มีพารามิเตอร์เพื่อปรับใช้การเปลี่ยนแปลงกับแอปพลิเคชันของคุณ

คุณสามารถค้นหา URL ปลายทางของ API Gateway ได้ในค่าเอาต์พุตที่แสดงหลังจากการปรับใช้

ทดสอบการใช้งาน

หากต้องการทดสอบแอปพลิเคชัน ให้ใช้บุรุษไปรษณีย์หรือ curl เพื่อส่งคำขอไปยังปลายทาง API Gateway ตัวอย่างเช่น:

curl -X POST -H "Content-Type: text/plain" https://.execute-api.us-east-1.amazonaws.com/Prod/nlp-qa -d '{"question": "Where do you live?", "context": "My name is Clara and I live in Berkeley."}'

คุณควรเห็นผลลัพธ์เช่นรหัสต่อไปนี้ โมเดล ML อนุมานจากบริบทและส่งคืนคำตอบสำหรับคำถามของเรา

{
    "Question": "Where do you live?",
    "Answer": "Berkeley",
    "score": 0.9113729596138
}

หลังจากนั้นไม่กี่นาที คุณควรเห็นไฟล์ในถัง S3 nlp-qamodel-model-monitoring-modelmonitorbucket- ด้วยอินพุตและการอนุมานที่บันทึกไว้

ทำความสะอาด

หากต้องการลบแอปพลิเคชันตัวอย่างที่คุณสร้างขึ้น ให้ใช้ AWS CLI:

aws cloudformation delete-stack --stack-name 

สรุป

ในโพสต์นี้ เราได้ใช้คุณลักษณะการตรวจสอบโมเดลเป็นส่วนขยาย Lambda และปรับใช้กับเวิร์กโหลดการอนุมาน Lambda ML เราแสดงวิธีสร้างและปรับใช้โซลูชันนี้กับบัญชี AWS ของคุณเอง สุดท้าย เราได้แสดงวิธีรันการทดสอบเพื่อตรวจสอบการทำงานของจอภาพ

กรุณาให้ความคิดหรือคำถามใด ๆ ในส่วนความคิดเห็น สำหรับแหล่งข้อมูลการเรียนรู้แบบไร้เซิร์ฟเวอร์เพิ่มเติม โปรดไปที่ ที่ดินไร้เซิร์ฟเวอร์.


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

ปรับใช้โซลูชันการบันทึกข้อมูลการอนุมานของแมชชีนเลิร์นนิ่งบน AWS Lambda PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.แดน ฟอกซ์ เป็นหัวหน้าสถาปนิกโซลูชันผู้เชี่ยวชาญหลักในองค์กรผู้เชี่ยวชาญทั่วโลกสำหรับ Serverless Dan ทำงานร่วมกับลูกค้าเพื่อช่วยให้พวกเขาใช้ประโยชน์จากบริการแบบไร้เซิร์ฟเวอร์เพื่อสร้างแอปพลิเคชันที่ปรับขนาดได้ ทนทานต่อข้อผิดพลาด มีประสิทธิภาพสูง และคุ้มค่า แดนรู้สึกขอบคุณที่สามารถอาศัยและทำงานในโบลเดอร์ที่น่ารัก โคโลราโด

ปรับใช้โซลูชันการบันทึกข้อมูลการอนุมานของแมชชีนเลิร์นนิ่งบน AWS Lambda PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.นิวตัน เชน เป็นผู้จัดการผลิตภัณฑ์อาวุโสที่รับผิดชอบในการสร้างประสบการณ์ใหม่สำหรับการเรียนรู้ของเครื่อง การประมวลผลประสิทธิภาพสูง (HPC) และลูกค้าการประมวลผลสื่อบน AWS Lambda เขาเป็นผู้นำในการพัฒนาความสามารถใหม่ๆ เพื่อเพิ่มประสิทธิภาพ ลดเวลาแฝง ปรับปรุงความสามารถในการปรับขนาด เพิ่มความน่าเชื่อถือ และลดต้นทุน นอกจากนี้ เขายังช่วยลูกค้า AWS ในการกำหนดกลยุทธ์แบบไร้เซิร์ฟเวอร์ที่มีประสิทธิภาพสำหรับแอปพลิเคชันที่ต้องใช้การประมวลผลสูง

ปรับใช้โซลูชันการบันทึกข้อมูลการอนุมานของแมชชีนเลิร์นนิ่งบน AWS Lambda PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.ดิกชา ชาร์มา คือ Solutions Architect และ Machine Learning Specialist ที่ AWS เธอช่วยลูกค้าเร่งการนำระบบคลาวด์ไปใช้ โดยเฉพาะอย่างยิ่งในด้านการเรียนรู้ของเครื่องและเทคโนโลยีไร้เซิร์ฟเวอร์ Diksha ปรับใช้การพิสูจน์แนวคิดแบบกำหนดเองที่แสดงให้ลูกค้าเห็นถึงคุณค่าของ AWS ในการรับมือกับความท้าทายทางธุรกิจและไอทีของพวกเขา เธอช่วยให้ลูกค้ามีความรู้เกี่ยวกับ AWS และทำงานร่วมกับลูกค้าเพื่อสร้างโซลูชันที่ต้องการ

ปรับใช้โซลูชันการบันทึกข้อมูลการอนุมานของแมชชีนเลิร์นนิ่งบน AWS Lambda PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.พระเวท รามัน เป็นสถาปนิกโซลูชันผู้เชี่ยวชาญอาวุโสสำหรับการเรียนรู้ของเครื่องในแมริแลนด์ Veda ทำงานร่วมกับลูกค้าเพื่อช่วยให้พวกเขาออกแบบแอปพลิเคชันแมชชีนเลิร์นนิงที่มีประสิทธิภาพ ปลอดภัย และปรับขนาดได้ พระเวทสนใจที่จะช่วยเหลือลูกค้าในการใช้เทคโนโลยีไร้เซิร์ฟเวอร์สำหรับการเรียนรู้ของเครื่อง

ปรับใช้โซลูชันการบันทึกข้อมูลการอนุมานของแมชชีนเลิร์นนิ่งบน AWS Lambda PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI. จอช คาห์น เป็นผู้นำด้านเทคโนโลยีทั่วโลกสำหรับ Serverless และ Principal Solutions Architect เขาเป็นผู้นำชุมชนผู้เชี่ยวชาญไร้เซิร์ฟเวอร์ระดับโลกที่ AWS ซึ่งช่วยเหลือลูกค้าทุกขนาด ตั้งแต่สตาร์ทอัพไปจนถึงองค์กรที่ใหญ่ที่สุดในโลก ให้ใช้เทคโนโลยีไร้เซิร์ฟเวอร์ของ AWS อย่างมีประสิทธิภาพ

ประทับเวลา:

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