การตรวจสอบการคาดการณ์แมชชีนเลิร์นนิง (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
ไดเรกทอรี
- เข้าสู่ระบบ Amazon ECR:
- สร้างที่เก็บใน Amazon ECR:
aws ecr create-repository
repository-name serverless-ml-model-monitor
--image-scanning-configuration scanOnPush=true
--region us-east-1
- พุชอิมเมจคอนเทนเนอร์ไปที่ Amazon ECR:
- Uncomment บรรทัด #1 ใน แอพ/Dockerfile และแก้ไขให้ชี้ไปที่รูปภาพที่เก็บ ECR ที่ถูกต้อง จากนั้นยกเลิกการใส่เครื่องหมายบรรทัด #6 และ #7 ใน แอพ/Dockerfile:
- สร้างแอปพลิเคชันอีกครั้ง:
เราสร้างใหม่อีกครั้งเนื่องจาก Lambda ไม่รองรับเลเยอร์ Lambda โดยตรงสำหรับประเภทบรรจุภัณฑ์อิมเมจคอนเทนเนอร์ ขั้นแรกเราต้องสร้างองค์ประกอบการตรวจสอบโมเดลเป็นอิมเมจคอนเทนเนอร์ อัปโหลดไปยัง Amazon ECR จากนั้นใช้อิมเมจนั้นในแอปพลิเคชันตรวจสอบโมเดลเป็นเลเยอร์คอนเทนเนอร์
- สุดท้าย ปรับใช้ฟังก์ชัน Lambda, API Gateway และส่วนขยาย:
คำสั่งนี้เป็นแพ็คเกจและปรับใช้แอปพลิเคชันของคุณกับ 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 ตัวอย่างเช่น:
คุณควรเห็นผลลัพธ์เช่นรหัสต่อไปนี้ โมเดล ML อนุมานจากบริบทและส่งคืนคำตอบสำหรับคำถามของเรา
หลังจากนั้นไม่กี่นาที คุณควรเห็นไฟล์ในถัง S3 nlp-qamodel-model-monitoring-modelmonitorbucket-
ด้วยอินพุตและการอนุมานที่บันทึกไว้
ทำความสะอาด
หากต้องการลบแอปพลิเคชันตัวอย่างที่คุณสร้างขึ้น ให้ใช้ AWS CLI:
สรุป
ในโพสต์นี้ เราได้ใช้คุณลักษณะการตรวจสอบโมเดลเป็นส่วนขยาย Lambda และปรับใช้กับเวิร์กโหลดการอนุมาน Lambda ML เราแสดงวิธีสร้างและปรับใช้โซลูชันนี้กับบัญชี AWS ของคุณเอง สุดท้าย เราได้แสดงวิธีรันการทดสอบเพื่อตรวจสอบการทำงานของจอภาพ
กรุณาให้ความคิดหรือคำถามใด ๆ ในส่วนความคิดเห็น สำหรับแหล่งข้อมูลการเรียนรู้แบบไร้เซิร์ฟเวอร์เพิ่มเติม โปรดไปที่ ที่ดินไร้เซิร์ฟเวอร์.
เกี่ยวกับผู้เขียน
แดน ฟอกซ์ เป็นหัวหน้าสถาปนิกโซลูชันผู้เชี่ยวชาญหลักในองค์กรผู้เชี่ยวชาญทั่วโลกสำหรับ Serverless Dan ทำงานร่วมกับลูกค้าเพื่อช่วยให้พวกเขาใช้ประโยชน์จากบริการแบบไร้เซิร์ฟเวอร์เพื่อสร้างแอปพลิเคชันที่ปรับขนาดได้ ทนทานต่อข้อผิดพลาด มีประสิทธิภาพสูง และคุ้มค่า แดนรู้สึกขอบคุณที่สามารถอาศัยและทำงานในโบลเดอร์ที่น่ารัก โคโลราโด
นิวตัน เชน เป็นผู้จัดการผลิตภัณฑ์อาวุโสที่รับผิดชอบในการสร้างประสบการณ์ใหม่สำหรับการเรียนรู้ของเครื่อง การประมวลผลประสิทธิภาพสูง (HPC) และลูกค้าการประมวลผลสื่อบน AWS Lambda เขาเป็นผู้นำในการพัฒนาความสามารถใหม่ๆ เพื่อเพิ่มประสิทธิภาพ ลดเวลาแฝง ปรับปรุงความสามารถในการปรับขนาด เพิ่มความน่าเชื่อถือ และลดต้นทุน นอกจากนี้ เขายังช่วยลูกค้า AWS ในการกำหนดกลยุทธ์แบบไร้เซิร์ฟเวอร์ที่มีประสิทธิภาพสำหรับแอปพลิเคชันที่ต้องใช้การประมวลผลสูง
ดิกชา ชาร์มา คือ Solutions Architect และ Machine Learning Specialist ที่ AWS เธอช่วยลูกค้าเร่งการนำระบบคลาวด์ไปใช้ โดยเฉพาะอย่างยิ่งในด้านการเรียนรู้ของเครื่องและเทคโนโลยีไร้เซิร์ฟเวอร์ Diksha ปรับใช้การพิสูจน์แนวคิดแบบกำหนดเองที่แสดงให้ลูกค้าเห็นถึงคุณค่าของ AWS ในการรับมือกับความท้าทายทางธุรกิจและไอทีของพวกเขา เธอช่วยให้ลูกค้ามีความรู้เกี่ยวกับ AWS และทำงานร่วมกับลูกค้าเพื่อสร้างโซลูชันที่ต้องการ
พระเวท รามัน เป็นสถาปนิกโซลูชันผู้เชี่ยวชาญอาวุโสสำหรับการเรียนรู้ของเครื่องในแมริแลนด์ Veda ทำงานร่วมกับลูกค้าเพื่อช่วยให้พวกเขาออกแบบแอปพลิเคชันแมชชีนเลิร์นนิงที่มีประสิทธิภาพ ปลอดภัย และปรับขนาดได้ พระเวทสนใจที่จะช่วยเหลือลูกค้าในการใช้เทคโนโลยีไร้เซิร์ฟเวอร์สำหรับการเรียนรู้ของเครื่อง
จอช คาห์น เป็นผู้นำด้านเทคโนโลยีทั่วโลกสำหรับ Serverless และ Principal Solutions Architect เขาเป็นผู้นำชุมชนผู้เชี่ยวชาญไร้เซิร์ฟเวอร์ระดับโลกที่ AWS ซึ่งช่วยเหลือลูกค้าทุกขนาด ตั้งแต่สตาร์ทอัพไปจนถึงองค์กรที่ใหญ่ที่สุดในโลก ให้ใช้เทคโนโลยีไร้เซิร์ฟเวอร์ของ AWS อย่างมีประสิทธิภาพ
- AI
- ไอ อาร์ต
- เครื่องกำเนิดไออาร์ท
- หุ่นยนต์ไอ
- ปัญญาประดิษฐ์
- ใบรับรองปัญญาประดิษฐ์
- ปัญญาประดิษฐ์ในการธนาคาร
- หุ่นยนต์ปัญญาประดิษฐ์
- หุ่นยนต์ปัญญาประดิษฐ์
- ซอฟต์แวร์ปัญญาประดิษฐ์
- AWS แลมบ์ดา
- AWS Machine Learning AWS
- blockchain
- การประชุม blockchain ai
- เหรียญอัจฉริยะ
- ปัญญาประดิษฐ์สนทนา
- การประชุม crypto ai
- ดัล-อี
- การเรียนรู้ลึก ๆ
- google ai
- เรียนรู้เครื่อง
- เพลโต
- เพลโตไอ
- เพลโตดาต้าอินเทลลิเจนซ์
- เกมเพลโต
- เพลโตดาต้า
- เพลโตเกม
- ขนาดไอ
- วากยสัมพันธ์
- วิธีการทางเทคนิค
- ลมทะเล