Ai2 เผยเทคนิคจัดลำดับงาน GPU Cluster ให้มีประสิทธิภาพสูงสุด

· By: SirilukP

การสร้างระบบจัดลำดับงานในคลัสเตอร์ (Cluster Scheduler) เพื่อจัดลำดับความสำคัญของงานวิจัยที่มีผลกระทบสูง ในขณะที่ยังคงการใช้งานทรัพยากรได้อย่างเต็มประสิทธิภาพตลอดเวลา

Impactful Scheduling for GPU Clusters - Google Docs-image-1 (1)

ทีม AI Infrastructure ที่ Ai2 รับผิดชอบการจัดสรรขีดความสามารถ GPU สำหรับการเทรนโมเดลแบบกระจายตัวขนาดใหญ่ เรามองการทำงานเป็นพีระมิด 4 ระดับ เริ่มจากฐานคือ Availability (ความพร้อมของฮาร์ดแวร์), Occupancy (อัตราการครองทรัพยากร), Impact (ผลกระทบของงานที่เลือก) และยอดสูงสุดคือ Utilization (การใช้งานจริงตลอดอายุงาน)

Pyramid of GPU compute metrics, from availability at the base through occupancy and impact to utilization at the top.

บทความนี้เน้นเรื่องการปรับปรุง Impact ผ่านการเปลี่ยนตัวจัดลำดับงานแบบ Priority-based มาเป็นระบบที่ใช้การจัดสรรแบบแบ่งปันที่เป็นธรรมตามลำดับชั้น (Hierarchical fair-share allocation) และข้อตกลงการแบ่งส่วนเวลา (Time-slicing contract) ซึ่งเปลี่ยนการตัดสินใจรายกรณีไปสู่ระบบงบประมาณที่โปร่งใส

การจองเกินขนาด (Overcommitting)

ปัจจุบัน Ai2 จัดการ GPU NVIDIA H100, B200 และ B300 หลายพันตัว เพื่อรองรับนักวิจัย 150 คนที่ทำงานหลากหลาย ตั้งแต่โมเดล LLM, VLM ไปจนถึงหุ่นยนต์ ซึ่งความต้องการใช้งานจริงสูงกว่าทรัพยากรที่มีอยู่ถึง 2-3 เท่า ทำให้เกิดการแข่งขันแย่งชิงทรัพยากรในทุกชั่วโมง

ในอดีต ระบบ Priority-based แบบเดิมทำให้เกิดพฤติกรรมผิดปกติ เช่น "การจับจองพื้นที่" (Squatting) โดยผู้ใช้วางงานที่ไม่มีการทำงานจริง (No-op) ทิ้งไว้เพื่อกันที่ รวมถึงเกิดภาวะเงินเฟ้อของลำดับความสำคัญ (Priority inflation) จนงานเกือบทั้งหมดถูกตั้งค่าเป็น HIGH ส่งผลให้งานระดับรองถูกตัดขาดจากระบบโดยสิ้นเชิง

โศกนาฏกรรมของส่วนรวม (Tragedy of the commons)

ปัญหาที่เกิดขึ้นสะท้อนถึง "โศกนาฏกรรมของส่วนรวม" เมื่อทุกคนพยายามรักษาผลประโยชน์ส่วนตนจนทำให้ทรัพยากรส่วนรวมสูญเสียประสิทธิภาพ เช่น การใส่ลูปไม่รู้จบ (Infinite loops) เพื่อรักษาการใช้งานให้สูงตามเกณฑ์ ซึ่งปัญหาพื้นฐานเหล่านี้ยังคงอยู่แม้เทคโนโลยีฮาร์ดแวร์จะเปลี่ยนไป

งบประมาณ ไม่ใช่ตารางเวลา

เราเปลี่ยนวิธีคิดจากการแก้โจทย์ Knapsack problem ที่พยายามยัดงานลงตารางเวลา มาเป็นการมอบสิทธิการเข้าครองในรูปแบบ "ส่วนแบ่งของเวลา GPU" แทนการระบุตัวเครื่อง ซึ่งช่วยลดปัญหาเครื่องว่างในช่วงที่บางทีมไม่มีงานรัน

Hierarchical allocation of GPU time across research programs and projects; project A1 has a 35% share of total capacity.

ค่าในวงเล็บแสดงถึงขีดความสามารถรวมของคลัสเตอร์ที่มอบหมายให้กับโครงการระดับใบ (Leaf project)

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

Fair-share

เราสร้าง Hierarchical fair-share scheduler โดยต่อยอดจากหลักการของ Hadoop และ SLURM อัลกอริทึมจะติดตามการใช้งานย้อนหลัง 7 วัน เพื่อจัดลำดับงานที่ยังใช้โควตาไม่ถึงเกณฑ์ (Under-utilized) ไว้เหนือกลุ่มที่ใช้เกินเกณฑ์ (Over-utilized)

Chris Clark ระบุว่าระบบใหม่ช่วยให้รู้สึกเหมือนมีกำลังประมวลผลเพิ่มขึ้นถึง 30% เพราะงานที่มีลักษณะมาเป็นพักๆ (Bursty) สามารถเรียกคืนกำลังประมวลผลที่เคยเสียเปล่ากลับมาใช้ได้เมื่อต้องการ

ข้อตกลงการจัดลำดับงาน (The scheduling contract) เพื่อแก้ปัญหางานที่รันค้างไว้นานเกินไป เรากำหนด "ระยะเวลารันขั้นต่ำ" (Minimum runtime) เพื่อรับประกันความคืบหน้าของงานวิจัย โดยหลังจากครบกำหนด ระบบสามารถแทรกงาน (Preemption) และนำงานเดิมกลับเข้าคิวใหม่ได้โดยอัตโนมัติ ซึ่งช่วยลดภาระงานซ่อมแซมที่ต้องใช้มนุษย์ได้ถึง 74%

วงจรชีวิตของเวิร์กโหลดจะเป็นไปตามรูปแบบนี้:

  1. ส่งงานพร้อมระบุระยะเวลารันขั้นต่ำและสถานะ Resumable
  2. จัดตารางตาม Fair-share ถ่วงน้ำหนักด้วยประวัติการใช้งานย้อนหลัง
  3. รันตามเวลาขั้นต่ำโดยหักจากงบประมาณ
  4. รันต่อได้หากลำดับความสำคัญยังสูงกว่างานอื่น
  5. อาจถูกแทรกและกลับไปรอในคิวใหม่
  6. ปล่อยทรัพยากรเมื่อเสร็จสิ้น

การจำลองสถานการณ์ (Simulations)

เราใช้การจำลองเพื่อพยากรณ์ผลกระทบก่อนใช้งานจริง ผลการทดสอบพบว่างานขนาดเล็กสำหรับดีบัก (ใช้ GPU น้อย รันไม่เกิน 15 นาที) มีเวลารอคิวลดลงอย่างมากจาก 6 ชั่วโมงเหลือเพียง 5 นาที ซึ่งช่วยให้นักวิจัยทำงานได้รวดเร็วขึ้น

Simulator timelines comparing GPU occupancy under the baseline scheduler and the new allocations scheduler.

การแสดงภาพจำลอง: ด้านซ้ายคือ Baseline เดิม ด้านขวาคือระบบ Allocations ใหม่ ซึ่งมีการหมุนเวียนการเข้าครอง GPU ระหว่างทีมได้ดีกว่า

ผลลัพธ์และอนาคต

หลังใช้งานจริงในเดือนกรกฎาคม พบว่าทีมวิจัยได้รับเวลา GPU ตามจัดสรรถึง 98% ขณะที่อัตราการครองเครื่อง (Occupancy) ยังคงสูงถึง 98% นอกจากนี้ยังลดเวลารอคิวมัธยฐานในคลัสเตอร์ H100 จาก 5 นาทีเหลือเพียง 24 วินาที

Allocation usage over time, showing how delivered GPU time tracks expected allocations.

ตัวอย่างการแสดงภาพการใช้งานการจัดสรรเมื่อเวลาผ่านไป

แม้จะมีความท้าทายเรื่อง Interactive sessions ที่อาจถูกแทรกงานได้ แต่เรากำลังแก้ปัญหาด้วยการสร้างคลัสเตอร์ CPU แยกต่างหากและระบบกู้คืนเซสชัน เป้าหมายถัดไปคือการก้าวไปสู่ยอดพีระมิดเพื่อรีด Utilization จากทุกเวิร์กโหลดให้เกิดมูลค่าสูงสุด หากสนใจร่วมงานด้านนี้ เราขอแนะนำให้คุณสำรวจบทบาททางวิศวกรรมที่เปิดรับที่ Ai2

Source: Hugging Face Blog
ดูแลงานแปลและเรียบเรียงโดย SirilukP

ความคิดเห็น (0)

เข้าสู่ระบบเพื่อร่วมแสดงความเห็น

สมัครสมาชิก

มาเป็นคนแรกที่แสดงความเห็นกันเลยโบร