อัตราการผ่าน 91% สถานะ Gate เป็นสีเขียว ส่งงานเรียบร้อย แต่เป็น Regression ที่แย่ที่สุดเท่าที่เคยมีมา
เราทำอัตราการผ่านได้ 91% ในการทดสอบการจำแนกเจตนา (intent-classification) โดยมีเกณฑ์ขั้นต่ำอยู่ที่ 90% เราผ่านเกณฑ์ และเราก็ส่งโค้ดออกไป
มันคือการถดถอย (regression) ที่แย่ที่สุดในไตรมาสนี้ของเรา
ปัญหาอยู่ที่วิธีการคำนวณของเรา คะแนนการประเมินของเราคงอยู่ที่ 96% หรือ 97% มาหลายสัปดาห์แล้ว แต่แล้ว การเปลี่ยนแปลงบางอย่างกลับทำให้ข้อมูลกลุ่มหนึ่ง (slice) พังลง นั่นคือกลุ่มคำขอคืนเงินที่กำกวม (ambiguous refund requests) ซึ่งคะแนนในกลุ่มนี้ลดลงจาก 98% เหลือเพียง 74%
กลุ่มข้อมูลนี้คิดเป็นเพียง 4% ของทราฟฟิกทั้งหมดของเรา และเพราะเราดูแค่ค่าเฉลี่ย คะแนนรวมจึงลดลงเหลือเพียง 91% ทำให้สถานะ Gate ยังคงเป็นสีเขียว
ค่ารวม (Aggregates) มักซ่อนความล้มเหลวไว้ภายใต้สัญญาณรบกวน (noise)
ผู้ใช้งานในกลุ่มนั้นไม่ได้เห็นตัวเลข 91% แต่พวกเขาเห็น 74% เกณฑ์การตัดสินแบบคงที่ (static threshold) จะบอกคุณได้แค่ว่าระบบทั้งหมดกำลังพังทลายลงหรือไม่ แต่มันไม่ได้บอกว่ามีส่วนใดส่วนหนึ่งของระบบกำลังตาย หากข้อมูล 96 กลุ่มยังปกติดี แต่มีกลุ่มหนึ่งพัง ค่าเฉลี่ยที่สูงจะช่วยปกปิดความพังนั้นไว้ และคุณจะพบข้อผิดพลาดผ่านตั๋วแจ้งปัญหา (support tickets) แทนที่จะพบผ่านเครื่องมือทดสอบของคุณ
เราเปลี่ยนกลยุทธ์ใหม่ เราเลิกใช้เกณฑ์ตัดสินจากตัวเลขสัมบูรณ์ (absolute numbers) แต่เปลี่ยนมาใช้การเปรียบเทียบกับผลลัพธ์ที่สำเร็จล่าสุด (last successful run) แทน
เราใช้กฎสองข้อ ซึ่งต้องผ่านทั้งคู่:
- ไม่มีข้อมูลกลุ่มใดกลุ่มหนึ่งที่มีคะแนนลดลงเกิน 3 จุดเมื่อเทียบกับค่ามาตรฐาน (baseline)
- คะแนนรวมทั้งหมดต้องไม่ลดลงเกิน 1.5 จุดเมื่อเทียบกับค่ามาตรฐาน
ในความล้มเหลวครั้งล่าสุด กลุ่มคำขอคืนเงินคะแนนลดลงถึง 24 จุด ซึ่งหากใช้กฎข้อแรก เราจะตรวจพบปัญหานี้ได้ทันที
ระวังกับดักของ Delta Gating หากค่ามาตรฐาน (baseline) ของคุณอัปเดตทุกครั้งที่มีการรัน คุณอาจค่อยๆ ไหลไปสู่ความล้มเหลวได้ การที่คะแนนลดลงวันละ 0.5 จุดอาจผ่านการทดสอบทุกครั้ง แต่คุณกำลังค่อยๆ พัฒนาผลิตภัณฑ์ที่แย่ลงอย่างช้าๆ
ทำตามขั้นตอนเหล่านี้เพื่อปรับปรุงการทดสอบของคุณ:
- อัปเดตค่ามาตรฐานของคุณเฉพาะเมื่อ main branch เป็นสีเขียวเท่านั้น
- กำหนดให้ต้องมีมนุษย์เป็นผู้อนุมัติหากมีการตั้งใจทำให้คะแนนลดลง
- ค่ามาตรฐานของคุณต้องเป็นบันทึกของสิ่งที่ใช้งานได้จริง ไม่ใช่แค่สิ่งที่เกิดขึ้นล่าสุด
- ตรวจสอบความแปรปรวน (variance) ของการรันที่ผ่านเกณฑ์ (green runs) 5 ครั้งล่าสุด หากข้อมูลกลุ่มใดกลุ่มหนึ่งมีความผันผวนมากกว่าเกณฑ์ที่คุณตั้งไว้ แสดงว่าเกณฑ์ของคุณนั้นเป็นเพียงสัญญาณรบกวน (noise)
- ทดสอบกลุ่มข้อมูลที่เล็กที่สุดของคุณ ลองตั้งคำถามว่าคะแนนในกลุ่มนั้นสามารถลดลงได้มากแค่ไหนก่อนที่ค่ารวมจะสังเกตเห็น หากคำตอบคือตัวเลขที่สูงมาก แสดงว่าค่ารวมของคุณกำลังซ่อนข้อผิดพลาดอยู่
Optional learning community: https://t.me/GyaanSetuAi
