ลดผลกระทบในการใช้งานจริงของการอัปเดตโมเดล ML ด้วยการทดสอบเงาของ Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

ลดผลกระทบการผลิตของการอัปเดตโมเดล ML ด้วยการทดสอบเงาของ Amazon SageMaker

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

ในโพสต์นี้ เราสาธิตความสามารถใหม่ของ SageMaker สมุดบันทึกตัวอย่างที่เกี่ยวข้องมีอยู่ใน GitHub นี้ กรุ.

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

โครงสร้างพื้นฐานการให้บริการโมเดลของคุณประกอบด้วยโมเดลแมชชีนเลิร์นนิง (ML) คอนเทนเนอร์ที่ให้บริการ หรืออินสแตนซ์การประมวลผล ลองพิจารณาสถานการณ์ต่อไปนี้:

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

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

สำหรับแต่ละสถานการณ์เหล่านี้ ให้เลือกตัวแปรการผลิตที่คุณต้องการทดสอบ และ SageMaker ปรับใช้ตัวแปรใหม่โดยอัตโนมัติในโหมดเงา และกำหนดเส้นทางสำเนาของคำขอการอนุมานไปยังตัวแปรนั้นตามเวลาจริงภายในจุดสิ้นสุดเดียวกัน เฉพาะการตอบสนองของรูปแบบการผลิตเท่านั้นที่จะถูกส่งกลับไปยังแอปพลิเคชันการโทร คุณสามารถเลือกที่จะละทิ้งหรือบันทึกการตอบสนองของตัวแปรเงาสำหรับการเปรียบเทียบแบบออฟไลน์ คุณสามารถเลือกตรวจสอบตัวแปรต่าง ๆ ผ่านแดชบอร์ดในตัวพร้อมการเปรียบเทียบเมตริกประสิทธิภาพแบบเคียงข้างกัน คุณสามารถใช้ความสามารถนี้ผ่าน SageMaker inference update-endpoint API หรือผ่านคอนโซล SageMaker

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

A ตัวแปรเงา (ใหม่) มีส่วนประกอบเหมือนกับรุ่นการผลิต ส่วนของคำขอที่ผู้ใช้ระบุ ซึ่งเรียกว่า เปอร์เซ็นต์การสุ่มตัวอย่างการเข้าชมจะถูกส่งต่อไปยังตัวแปรเงา คุณสามารถเลือกที่จะบันทึกการตอบสนองของตัวแปรเงาใน บริการจัดเก็บข้อมูลอย่างง่ายของ Amazon (Amazon S3) หรือยกเลิก

โปรดทราบว่า SageMaker รองรับตัวแปรเงาสูงสุดหนึ่งรายการต่อจุดสิ้นสุด สำหรับปลายทางที่มีรูปแบบเงา สามารถมีรูปแบบการผลิตได้สูงสุดหนึ่งรูปแบบ

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

คุณสามารถใช้ความสามารถนี้ได้สองวิธี:

  • จัดการการทดสอบเงาโดยใช้ SageMaker Console – คุณสามารถใช้ประโยชน์จากคอนโซลเพื่อรับประสบการณ์แนะนำเพื่อจัดการการเดินทางของการทดสอบเงาแบบ end-to-end ซึ่งช่วยให้คุณตั้งค่าการทดสอบเงาตามระยะเวลาที่กำหนดไว้ล่วงหน้า ติดตามความคืบหน้าผ่านแดชบอร์ดแบบสด ล้างข้อมูลเมื่อเสร็จสิ้น และดำเนินการตามผลลัพธ์
  • การทดสอบเงาแบบบริการตนเองโดยใช้ SageMaker Inference APIs – หากเวิร์กโฟลว์การปรับใช้ของคุณใช้ API ที่สร้าง/อัปเดต/ลบปลายทางแล้ว คุณสามารถใช้ต่อไปเพื่อจัดการ Shadow Variants

ในหัวข้อต่อไปนี้ เราจะแนะนำแต่ละสถานการณ์เหล่านี้

สถานการณ์ที่ 1 – จัดการการทดสอบเงาโดยใช้ SageMaker Console

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

requisites ก่อน

ต้องสร้างแบบจำลองสำหรับการผลิตและเงาบน SageMaker โปรดดูที่ CreateModel API โปรดคลิกที่นี่เพื่ออ่านรายละเอียดเพิ่มเติม.

ขั้นตอนที่ 1 – สร้างการทดสอบเงา

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

การดำเนินการนี้จะนำคุณไปยังหน้าการตั้งค่าการทดสอบเงา คุณสามารถเลือกบทบาท IAM ที่มีอยู่หรือสร้างบทบาทที่มี AmazonSageMakerFullAccess แนบนโยบาย IAM ถัดไป เลือก 'สร้างปลายทางใหม่' และป้อนชื่อ (xgb-prod-shadow-1) คุณสามารถเพิ่มการผลิตหนึ่งรายการและตัวแปรเงาหนึ่งรายการที่เกี่ยวข้องกับจุดสิ้นสุดนี้โดยคลิกที่ 'เพิ่ม' ในส่วนตัวแปร คุณสามารถเลือกแบบจำลองที่คุณสร้างขึ้นใน 'เพิ่มรุ่น' กล่องโต้ตอบ สิ่งนี้จะสร้างการผลิตหรือตัวแปร คุณสามารถเลือกเปลี่ยนประเภทอินสแตนซ์และจำนวนที่เกี่ยวข้องกับแต่ละตัวแปรได้

การรับส่งข้อมูลทั้งหมดไปที่ตัวแปรการผลิตและตอบสนองต่อคำขอการเรียกใช้ คุณสามารถควบคุมส่วนหนึ่งของคำขอที่ส่งไปยังตัวแปรเงาได้โดยการเปลี่ยน Traffic Sampling Percentage.

คุณสามารถควบคุมระยะเวลาของการทดสอบได้ตั้งแต่หนึ่งชั่วโมงถึง 30 วัน หากไม่ระบุ ค่าเริ่มต้นคือ 7 วัน หลังจากช่วงเวลานี้ การทดสอบจะเสร็จสมบูรณ์ หากคุณกำลังเรียกใช้การทดสอบบนจุดสิ้นสุดที่มีอยู่ จุดสิ้นสุดนั้นจะถูกย้อนกลับเป็นสถานะก่อนที่จะเริ่มการทดสอบเมื่อเสร็จสิ้น

คุณสามารถเลือกบันทึกคำขอและการตอบสนองของตัวแปร Shadow โดยใช้ การจับข้อมูล ตัวเลือก. หากไม่ได้ระบุ การตอบสนองของตัวแปรเงาจะถูกยกเลิก

ลดผลกระทบในการใช้งานจริงของการอัปเดตโมเดล ML ด้วยการทดสอบเงาของ Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

ลดผลกระทบในการใช้งานจริงของการอัปเดตโมเดล ML ด้วยการทดสอบเงาของ Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

ขั้นตอนที่ 2 – ตรวจสอบการทดสอบเงา

คุณสามารถดูรายการการทดสอบเงาได้โดยไปที่ Shadow Tests ส่วนภายใต้การอนุมาน คลิกที่การทดสอบเงาที่สร้างขึ้นในขั้นตอนก่อนหน้าเพื่อดูรายละเอียดการทดสอบเงาและตรวจสอบในขณะที่กำลังดำเนินการหรือหลังจากเสร็จสิ้น

ลดผลกระทบในการใช้งานจริงของการอัปเดตโมเดล ML ด้วยการทดสอบเงาของ Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

ส่วนเมตริกแสดงการเปรียบเทียบเมตริกหลักและแสดงกราฟซ้อนทับระหว่างรูปแบบการผลิตและรูปแบบเงา พร้อมด้วยสถิติเชิงพรรณนา คุณสามารถเปรียบเทียบเมตริกการร้องขอ เช่น ModelLatency และ Invocation4xxErrors เช่นเดียวกับเมตริกอินสแตนซ์เช่น CPUUtilization และ DiskUtilization.

ลดผลกระทบในการใช้งานจริงของการอัปเดตโมเดล ML ด้วยการทดสอบเงาของ Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

ขั้นตอนที่ 3 – เลื่อนระดับเวอร์ชัน Shadow เป็นเวอร์ชันการผลิตใหม่

เมื่อทำการเปรียบเทียบ คุณสามารถเลือกที่จะเลื่อนรูปแบบเงาให้เป็นรูปแบบการผลิตใหม่หรือลบรูปแบบเงา สำหรับตัวเลือกทั้งสองนี้ ให้เลือก 'ทำเครื่องหมายเสร็จสิ้น' ที่ด้านบนของหน้า สิ่งนี้นำเสนอตัวเลือกให้คุณเลื่อนระดับหรือลบตัวแปรเงา

หากคุณเลือกที่จะเลื่อนระดับ คุณจะเข้าสู่หน้าการปรับใช้ ซึ่งคุณสามารถยืนยันการตั้งค่าตัวแปรก่อนการปรับใช้ ก่อนปรับใช้ เราขอแนะนำให้ปรับขนาดตัวแปรเงาของคุณเพื่อให้สามารถจัดการการรับส่งข้อมูลการเรียกใช้ได้ 100% หากคุณไม่ได้ใช้การทดสอบเงาเพื่อประเมินประเภทหรือขนาดอินสแตนซ์สำรอง คุณสามารถใช้ตัวเลือก 'รักษาการตั้งค่าตัวแปรการผลิต. มิฉะนั้นคุณสามารถเลือกที่จะ 'รักษาการตั้งค่าตัวแปรเงา. หากคุณเลือกตัวเลือกนี้ โปรดตรวจสอบให้แน่ใจว่าการสุ่มตัวอย่างการเข้าชมของคุณตั้งค่าไว้ที่ 100% หรือคุณสามารถระบุประเภทและจำนวนอินสแตนซ์ได้หากต้องการแทนที่การตั้งค่าเหล่านี้

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

ลดผลกระทบในการใช้งานจริงของการอัปเดตโมเดล ML ด้วยการทดสอบเงาของ Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

ลดผลกระทบในการใช้งานจริงของการอัปเดตโมเดล ML ด้วยการทดสอบเงาของ Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

สถานการณ์ที่ 2: การทดสอบเงาโดยใช้ API การอนุมานของ SageMaker

ส่วนนี้ครอบคลุมถึงวิธีการใช้ SageMaker สร้าง/อัปเดต/ลบจุดสิ้นสุด API ที่มีอยู่เพื่อปรับใช้รูปแบบเงา

สำหรับตัวอย่างนี้ เรามีรุ่น XGBoost สองรุ่นที่เป็นตัวแทนของรุ่นที่ได้รับการฝึกอบรมล่วงหน้าสองรุ่น model.tar.gz เป็นโมเดลที่ใช้งานจริงในปัจจุบัน model2 เป็นรุ่นที่ใหม่กว่า และเราต้องการทดสอบประสิทธิภาพในแง่ของเมตริกการดำเนินงาน เช่น เวลาแฝง ก่อนที่จะตัดสินใจใช้ในการผลิต เราปรับใช้ model2 เป็นตัวแปรเงาของ model.tar.gz. โมเดลที่ผ่านการฝึกอบรมล่วงหน้าทั้งสองรุ่นจะถูกจัดเก็บไว้ในบัคเก็ต S3 สาธารณะ s3://sagemaker-sample-files. ก่อนอื่นเราจะดาวน์โหลดโมเดลอินสแตนซ์การประมวลผลในเครื่องของเรา จากนั้นจึงอัปโหลดไปยัง S3

โมเดลในตัวอย่างนี้ใช้เพื่อคาดการณ์ความน่าจะเป็นที่ลูกค้ามือถือจะออกจากผู้ให้บริการมือถือปัจจุบัน ชุดข้อมูลที่เราใช้นั้นเปิดเผยต่อสาธารณะและถูกกล่าวถึงในหนังสือ การค้นพบความรู้ในข้อมูล โดย แดเนียล ที. ลาโรส โมเดลเหล่านี้ได้รับการฝึกฝนโดยใช้ สมุดบันทึกทำนาย XGB ปั่น ใน SageMaker คุณยังสามารถใช้โมเดลที่ฝึกไว้ล่วงหน้าของคุณเอง ซึ่งในกรณีนี้คุณสามารถข้ามการดาวน์โหลดจาก s3://sagemaker-sample-files และคัดลอกโมเดลของคุณเองไปยังโมเดล/โฟลเดอร์โดยตรง

!aws s3 cp s3://sagemaker-sample-files/models/xgb-churn/xgb-churn-prediction-model.tar.gz model/
!aws s3 cp s3://sagemaker-sample-files/models/xgb-churn/xgb-churn-prediction-model2.tar.gz model/

ขั้นตอนที่ 1 – สร้างแบบจำลอง

เราอัปโหลดไฟล์โมเดลไปยังบัคเก็ต S3 ของเราเอง และสร้างโมเดล SageMaker สองโมเดล ดูรหัสต่อไปนี้:

model_url = S3Uploader.upload(
    local_path="model/xgb-churn-prediction-model.tar.gz",
    desired_s3_uri=f"s3://{bucket}/{prefix}",
)
model_url2 = S3Uploader.upload(
    local_path="model/xgb-churn-prediction-model2.tar.gz",
    desired_s3_uri=f"s3://{bucket}/{prefix}",
from sagemaker import image_uris
image_uri = image_uris.retrieve("xgboost", boto3.Session().region_name, "0.90-1")
image_uri2 = image_uris.retrieve("xgboost", boto3.Session().region_name, "0.90-2")

model_name = f"DEMO-xgb-churn-pred-{datetime.now():%Y-%m-%d-%H-%M-%S}"
model_name2 = f"DEMO-xgb-churn-pred2-{datetime.now():%Y-%m-%d-%H-%M-%S}"

resp = sm.create_model(
    ModelName=model_name,
    ExecutionRoleArn=role,
    Containers=[{"Image": image_uri, "ModelDataUrl": model_url}],
)

resp = sm.create_model(
    ModelName=model_name2,
    ExecutionRoleArn=role,
    Containers=[{"Image": image_uri2, "ModelDataUrl": model_url2}],
)

ขั้นตอนที่ 2 – ปรับใช้ทั้งสองรุ่นเป็นเวอร์ชันการผลิตและเงาไปยังจุดสิ้นสุดการอนุมานตามเวลาจริง

เราสร้างการกำหนดค่าปลายทางด้วยตัวแปรการผลิตและเงา เดอะ ProductionVariants และ ShadowProductionVariants มีความสนใจเป็นพิเศษ ตัวแปรทั้งสองนี้มีอินสแตนซ์ ml.m5.xlarge ที่มี 4 vCPU และหน่วยความจำ 16 GiB และจำนวนอินสแตนซ์เริ่มต้นถูกตั้งค่าเป็น 1 ดูรหัสต่อไปนี้:

ep_config_name = f"Shadow-EpConfig-{datetime.now():%Y-%m-%d-%H-%M-%S}"
production_variant_name = "production"
shadow_variant_name = "shadow"
create_endpoint_config_response = sm.create_endpoint_config(
    EndpointConfigName=ep_config_name,
    ProductionVariants=[
    # Type: Array of ProductionVariant (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ProductionVariant.html) objects
      { 
         "VariantName": shadow_variant_name,
        {
            "VariantName": production_variant_name,
            "ModelName": model_name,
            "InstanceType": "ml.m5.xlarge",
            "InitialInstanceCount": 2,
            "InitialVariantWeight": 1,
        }
    ],
     # Type: Array of ShadowProductionVariants 
    ShadowProductionVariants = [
         "ModelName": model_name2,
         "InitialInstanceCount": 1,
         "InitialVariantWeight": 0.5,
         "InstanceType": "ml.m5.xlarge" 
      }
   ]
)

สุดท้าย เราสร้างรูปแบบการผลิตและเงา:

endpoint_name = f"xgb-prod-shadow-{datetime.now():%Y-%m-%d-%H-%M-%S}"
create_endpoint_api_response = sm.create_endpoint(
                                    EndpointName=endpoint_name,
                                    EndpointConfigName=ep_config_name,
                                )

ขั้นตอนที่ 3 – เรียกใช้จุดสิ้นสุดสำหรับการทดสอบ

หลังจากสร้าง endpoint สำเร็จแล้ว คุณสามารถเริ่มเรียกใช้ได้ เราส่งคำขอประมาณ 3,000 รายการตามลำดับ:

def invoke_endpoint(endpoint_name, wait_interval_sec=0.01, should_raise_exp=False):
    with open("test_data/test-dataset-input-cols.csv", "r") as f:
        for row in f:
            payload = row.rstrip("n")
            try:
                for i in range(10): #send the same payload 10 times for testing purpose
                    response = sm_runtime.invoke_endpoint(
                        EndpointName=endpoint_name, ContentType="text/csv", Body=payload
                    )
            except Exception as e:
                print("E", end="", flush=True)
                if should_raise_exp:
                    raise e

invoke_endpoint(endpoint_name)

ขั้นตอนที่ 4 – เปรียบเทียบเมตริก

ตอนนี้เราได้ปรับใช้ทั้งโมเดลการผลิตและโมเดลเงาแล้ว เรามาเปรียบเทียบเมตริกการเรียกใช้กัน สำหรับรายการเมตริกการเรียกใช้สำหรับการเปรียบเทียบ โปรดดูที่ ตรวจสอบ Amazon SageMaker ด้วย Amazon CloudWatch. เริ่มต้นด้วยการเปรียบเทียบการร้องขอระหว่างการผลิตและรูปแบบเงา

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

ลดผลกระทบในการใช้งานจริงของการอัปเดตโมเดล ML ด้วยการทดสอบเงาของ Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.ลดผลกระทบในการใช้งานจริงของการอัปเดตโมเดล ML ด้วยการทดสอบเงาของ Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

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

ลดผลกระทบในการใช้งานจริงของการอัปเดตโมเดล ML ด้วยการทดสอบเงาของ Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

เราคาดว่าเวลาแฝงโอเวอร์เฮด (OverheadLatency เมตริก) เพื่อเปรียบเทียบระหว่างการผลิตและรูปแบบเงา เวลาแฝงโอเวอร์เฮดคือช่วงเวลาที่วัดจากเวลาที่ SageMaker ได้รับคำขอจนกระทั่งตอบกลับไปยังไคลเอ็นต์ ลบด้วยเวลาแฝงของโมเดล

ลดผลกระทบในการใช้งานจริงของการอัปเดตโมเดล ML ด้วยการทดสอบเงาของ Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

ขั้นตอนที่ 5- โปรโมตตัวแปรเงาของคุณ

หากต้องการเลื่อนโมเดลเงาไปสู่การใช้งานจริง ให้สร้างการกำหนดค่าปลายทางใหม่ด้วยปัจจุบัน ShadowProductionVariant ใหม่ ProductionVariant และลบไฟล์ ShadowProductionVariant. สิ่งนี้จะลบกระแส ProductionVariant และส่งเสริมรุ่นเงาให้เป็นรุ่นการผลิตใหม่ และเช่นเคย การอัปเดตทั้งหมดของ SageMaker ได้รับการจัดเตรียมเป็นการปรับใช้สีน้ำเงิน/สีเขียวภายใต้ประทุน และไม่มีการสูญเสียความพร้อมใช้งานในขณะดำเนินการอัปเดต

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

promote_ep_config_name = f"PromoteShadow-EpConfig-{datetime.now():%Y-%m-%d-%H-%M-%S}"

create_endpoint_config_response = sm.create_endpoint_config(
    EndpointConfigName=promote_ep_config_name,
    ProductionVariants=[
        {
            "VariantName": shadow_variant_name,
            "ModelName": model_name2,
            "InstanceType": "ml.m5.xlarge",
            "InitialInstanceCount": 2,
            "InitialVariantWeight": 1.0,
        }
    ],
)
print(f"Created EndpointConfig: {create_endpoint_config_response['EndpointConfigArn']}")

update_endpoint_api_response = sm.update_endpoint(
    EndpointName=endpoint_name,
    EndpointConfigName=promote_ep_config_name,
)

wait_for_endpoint_in_service(endpoint_name)

sm.describe_endpoint(EndpointName=endpoint_name)

ขั้นตอนที่ 6 – ทำความสะอาด

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

dsm.delete_endpoint(EndpointName=endpoint_name)
sm.delete_endpoint_config(EndpointConfigName=ep_config_name)
sm.delete_endpoint_config(EndpointConfigName=promote_ep_config_name)
sm.delete_model(ModelName=model_name)
sm.delete_model(ModelName=model_name2)

สรุป

ในโพสต์นี้ เราแนะนำความสามารถใหม่ของการอนุมานของ SageMaker เพื่อเปรียบเทียบประสิทธิภาพของรุ่นใหม่ของโมเดลที่ให้บริการสแต็กกับเวอร์ชันที่ใช้งานอยู่ในปัจจุบัน ก่อนที่จะมีการเปิดตัวการผลิตอย่างเต็มรูปแบบ โดยใช้หลักปฏิบัติด้านความปลอดภัยในการปรับใช้ที่เรียกว่าการทดสอบเงา เราแนะนำคุณเกี่ยวกับข้อดีของการใช้ตัวแปรเงาและวิธีการกำหนดค่าตัวแปรด้วย ตัวอย่างแบบ end-to-end. หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับรูปแบบเงา โปรดดูที่การทดสอบเงา เอกสาร.


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

ลดผลกระทบในการใช้งานจริงของการอัปเดตโมเดล ML ด้วยการทดสอบเงาของ Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.ราหู ราเมชา เป็นสถาปนิกโซลูชันการเรียนรู้ของเครื่องกับทีมบริการ Amazon SageMaker เขามุ่งเน้นไปที่การช่วยลูกค้าสร้าง ปรับใช้ และโยกย้ายปริมาณงานการผลิต ML ไปยัง SageMaker ตามขนาด เขาเชี่ยวชาญด้านแมชชีนเลิร์นนิง, AI และคอมพิวเตอร์วิทัศน์ และสำเร็จการศึกษาระดับปริญญาโทสาขาวิทยาการคอมพิวเตอร์จาก UT Dallas เวลาว่างชอบท่องเที่ยวและถ่ายรูป

ลดผลกระทบในการใช้งานจริงของการอัปเดตโมเดล ML ด้วยการทดสอบเงาของ Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.ชิงเหว่ย ลี่ เป็นผู้เชี่ยวชาญด้าน Machine Learning ที่ Amazon Web Services เขาได้รับปริญญาเอกของเขา ใน Operations Research หลังจากที่เขาทำลายบัญชีทุนวิจัยของที่ปรึกษาและล้มเหลวในการมอบรางวัลโนเบลที่เขาสัญญาไว้ ปัจจุบันเขาช่วยลูกค้าในอุตสาหกรรมบริการทางการเงินและประกันภัยสร้างโซลูชันแมชชีนเลิร์นนิงบน AWS เวลาว่างชอบอ่านหนังสือและสอน

ลดผลกระทบในการใช้งานจริงของการอัปเดตโมเดล ML ด้วยการทดสอบเงาของ Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.ฉีหยุน จ้าว เป็นวิศวกรพัฒนาซอฟต์แวร์อาวุโสกับทีม Amazon SageMaker Inference Platform เขาเป็นผู้พัฒนาหลักของ Deployment Guardrails และ Shadow Deployments และเขามุ่งเน้นที่การช่วยเหลือลูกค้าในการจัดการปริมาณงาน ML และการปรับใช้ในระดับที่มีความพร้อมใช้งานสูง เขายังทำงานเกี่ยวกับวิวัฒนาการของสถาปัตยกรรมแพลตฟอร์มเพื่อการปรับใช้งาน ML ที่รวดเร็วและปลอดภัย และดำเนินการทดสอบ ML ออนไลน์ได้อย่างง่ายดาย ในเวลาว่าง เขาชอบอ่านหนังสือ เล่นเกม และท่องเที่ยว

ลดผลกระทบในการใช้งานจริงของการอัปเดตโมเดล ML ด้วยการทดสอบเงาของ Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.ตะวัน สายราม เป็นผู้จัดการผลิตภัณฑ์อาวุโสสำหรับ Amazon SageMaker Inference เขาสนใจที่จะเรียนรู้เกี่ยวกับเทรนด์ล่าสุดของแมชชีนเลิร์นนิงและช่วยลูกค้าใช้ประโยชน์จากสิ่งเหล่านั้น ในเวลาว่าง เขาชอบขี่จักรยาน เล่นสกี และเล่นเทนนิส

ประทับเวลา:

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