ระบบ ML เวอร์ชันที่ใช้งานจริง: การทดสอบการติดตั้งใช้งาน

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

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

วิศวกรซอฟต์แวร์จํานวนมากชอบการพัฒนาที่ขับเคลื่อนโดยทดสอบ (TDD) ใน TDD วิศวกรซอฟต์แวร์จะเขียนการทดสอบก่อนเขียนซอร์สโค้ด "จริง" อย่างไรก็ตาม TDD อาจใช้ยากในแมชชีนเลิร์นนิง ตัวอย่างเช่น คุณจะเขียนการทดสอบเพื่อตรวจสอบการสูญเสียไม่ได้ก่อนที่จะฝึกโมเดล แต่คุณต้องค้นหาการสูญเสียที่ทำได้ในระหว่างการพัฒนาโมเดลก่อน แล้วจากนั้นทดสอบโมเดลเวอร์ชันใหม่เทียบกับการสูญเสียที่ทำได้

เกี่ยวกับรูปแบบยูนิคอร์น

ส่วนนี้กล่าวถึงโมเดลยูนิคอร์น สิ่งที่จำเป็นต้องทราบมีดังนี้

คุณกำลังใช้แมชชีนเลิร์นนิงเพื่อสร้างโมเดลการจัดประเภทที่คาดการณ์ลักษณะของยูนิคอร์น ชุดข้อมูลของคุณมีรายละเอียดเกี่ยวกับ Unicorn ที่ปรากฏ 10,000 รายการและ Unicorn ที่ไม่ปรากฏ 10,000 รายการ ชุดข้อมูลประกอบด้วยสถานที่ เวลาของวัน ความสูง อุณหภูมิ ความชื้น ต้นไม้ ปรากฏการณ์รุ้ง และองค์ประกอบอื่นๆ อีกมากมาย

ทดสอบการอัปเดตโมเดลด้วยการฝึกที่ทําซ้ำได้

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

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

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

  • นำค่าเฉลี่ยของการเรียกใช้โมเดลหลายครั้ง

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

แม้ว่าจะปฏิบัติตามหลักเกณฑ์เหล่านี้แล้ว แต่แหล่งที่มาอื่นๆ ของความไม่แน่นอนก็อาจยังคงอยู่

ทดสอบการเรียก API การเรียนรู้ของเครื่อง

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

เขียนการทดสอบการผสานรวมสําหรับคอมโพเนนต์ไปป์ไลน์

ในไปป์ไลน์ ML การเปลี่ยนแปลงในคอมโพเนนต์หนึ่งอาจทำให้เกิดข้อผิดพลาดในคอมโพเนนต์อื่นๆ ตรวจสอบว่าคอมโพเนนต์ทํางานร่วมกันโดยเขียนการทดสอบการผสานรวมที่เรียกใช้ไปป์ไลน์ทั้งหมดตั้งแต่ต้นจนจบ

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

ตรวจสอบคุณภาพโมเดลก่อนแสดง

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

  • คุณภาพลดลงอย่างฉับพลัน ข้อบกพร่องในเวอร์ชันใหม่อาจทำให้คุณภาพลดลงอย่างมาก ตรวจสอบเวอร์ชันใหม่โดยตรวจสอบคุณภาพเทียบกับเวอร์ชันก่อนหน้า

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

ตรวจสอบความเข้ากันได้ของโมเดลกับโครงสร้างพื้นฐานก่อนแสดง

หากโมเดลอัปเดตเร็วกว่าเซิร์ฟเวอร์ โมเดลอาจมีการพึ่งพาซอฟต์แวร์แตกต่างจากเซิร์ฟเวอร์ ซึ่งอาจทําให้ใช้งานร่วมกันไม่ได้ ตรวจสอบว่าการดำเนินการที่โมเดลใช้มีอยู่ในเซิร์ฟเวอร์โดยการจัดเตรียมโมเดลในเซิร์ฟเวอร์เวอร์ชันที่ใช้แซนด์บ็อกซ์