การปรับขนาด Kubernetes Cluster เดียวให้ใหญ่ถึงขนาดนี้เป็นเรื่องที่ต้องใช้ความระมัดระวังเป็นพิเศษ แต่ข้อดีคือโครงสร้างพื้นฐานที่เรียบง่ายซึ่งช่วยให้ทีมวิจัย Machine Learning ของเราทำงานได้เร็วขึ้นและปรับขนาดได้โดยไม่ต้องเปลี่ยนแปลงโค้ด
ในส่วนของ Networking นั้น การใช้ iptables mangle rules ช่วยให้สามารถตรวจสอบจุดคอขวดที่อาจเกิดขึ้นได้ โดยเฉพาะอย่างยิ่งเมื่อการทดลองมีการสื่อสารที่แตกต่างกันระหว่างอินเทอร์เน็ตและภายใน Pod
สำหรับการจัดการทรัพยากร เราใช้ Passive healthchecks เพื่อตรวจสอบข้อผิดพลาดของ GPU เช่น “Uncorrectable ECC error” และใช้ Team taints เพื่อจำกัดการทำงานของ Pod Scheduler ให้ยืดหยุ่น
นอกจากนี้ ยังมีการใช้ CPU & GPU balloons และ Pod anti-affinity เพื่อให้ Pod กระจายตัวอย่างสม่ำเสมอทั่วทั้งโหนด และมีการนำ Gang scheduling มาใช้เพื่อป้องกัน Deadlock เมื่อมีการร้องขอทรัพยากรสูงเกินไป
Pod network traffic shaping ช่วยให้สามารถควบคุมปริมาณแบนด์วิธอินเทอร์เน็ตขาออกที่อาจส่งผลกระทบต่อทรัพยากรอื่น ๆ บนอินเทอร์เน็ตได้
ศัพท์ที่ควรรู้
- Kubernetes – ระบบจัดการคอนเทนเนอร์ที่ใช้ในการจัดตารางและบริหารจัดการแอปพลิเคชันในระดับ Production
- iptables mangle rules – กฎที่ใช้ในการทำเครื่องหมายแพ็กเก็ตเพื่อตรวจสอบและแก้ไขปัญหาการเชื่อมต่อเครือข่าย
- Passive healthchecks – การตรวจสอบสุขภาพของฮาร์ดแวร์ เช่น GPU โดยไม่รบกวนการทำงานหลัก
- Team taints – กลไกที่ใช้ในการจำกัดและควบคุมการจัดตาราง Pod ใน Kubernetes ให้มีความยืดหยุ่น
- Gang scheduling – กลไกการจัดตารางงานที่ทำให้การทดลองทั้งหมดต้องได้รับการจัดสรรทรัพยากรพร้อมกันเพื่อป้องกันการติดขัด
ที่มา: OpenAI