โมเดลและเอเจนต์ของ OpenAI อาศัยโครงสร้างพื้นฐานข้อมูลที่ปรับขนาดได้เพื่อค้นหาข้อมูลที่เกี่ยวข้องในขณะที่โมเดลกำลังประมวลผลคำถามของผู้ใช้
เมื่อเกิดการขัดข้อง ระบบจะใช้ fatal signal handler เพื่อบันทึก stack trace และอัปโหลด core dumps ไปยัง Azure blob storage สำหรับการวิเคราะห์ในภายหลัง
แม้ว่างานหลายอย่างจะถูกรวมเข้าด้วยกันใน thread pool เดียวกัน แต่การรวมค่าความแตกต่างทั้งหมดทำให้ได้การประมาณเวลา CPU ที่ไม่เอนเอียงสำหรับแต่ละคิวรี
ทีมงานได้ให้ ChatGPT เขียนสคริปต์เพื่อดาวน์โหลดและวิเคราะห์ไฟล์ core โดยพบรูปแบบที่บ่งชี้ว่าอาจเกิดจากฮาร์ดแวร์ที่ไม่ดีของเครื่องกายภาพเครื่องเดียว แม้ว่าจะมีการใช้งานหลาย Azure VMs ก็ตาม
การที่บั๊ก libunwind ปรากฏขึ้นในตอนนี้ อาจเกี่ยวข้องกับการที่เราเพิ่มการเรียกใช้ timer_getoverrun ใน SIGUSR2 handler เพื่อรองรับสัญญาณที่รวมกัน และการใช้ coarse_thread_cputime_clock ในการส่ง SIGUSR2
ศัพท์ที่ควรรู้
- Inference time – ช่วงเวลาที่โมเดลกำลังประมวลผลคำถามของผู้ใช้เพื่อสร้างคำตอบ
- Core dump – ภาพถ่ายสถานะของโปรแกรม ณ ขณะที่เกิดการขัดข้อง ซึ่งใช้ในการวิเคราะห์ปัญหา
- Azure blob storage – บริการจัดเก็บข้อมูลบนคลาวด์ของ Microsoft ที่ใช้เก็บไฟล์วิเคราะห์
- Stack trace – บันทึกการเรียกใช้ฟังก์ชันที่เกิดขึ้นจนนำไปสู่จุดที่โปรแกรมขัดข้อง
- SIGUSR2 – สัญญาณที่ถูกส่งไปยังโปรแกรมเพื่อแจ้งเตือนบางอย่าง โดยในที่นี้ใช้ในการควบคุมการโอเวอร์โหลด
ที่มา: OpenAI