PyTorch 2.15 ปรับปรุงการสื่อสาร GPU แก้ปัญหา ‘GPU ตัวเดียวมีปัญหา’

ผู้ดูแลระบบ Machine Learning จะยินดีที่ทราบว่า ปัญหา GPU ตัวเดียวที่มีปัญหาอาจไม่จำเป็นต้องทำให้ต้องเริ่มงานฝึกทั้งหมดใหม่ เนื่องจาก PyTorch 2.15 ได้รวมแบ็กเอนด์ที่เขียนใหม่สำหรับ NCCL ซึ่งออกแบบมาเพื่อปรับปรุงการวินิจฉัยและการกู้คืนเมื่อมีการทำงานร่วมกันของ GPU

Tristan Rice นักพัฒนาหลักของ PyTorch และวิศวกรซอฟต์แวร์จาก Meta อธิบายว่า ส่วนต่อประสานกับไลบรารีเครือข่ายใน PyTorch นั้นจำเป็นต้องถูกเขียนใหม่ เนื่องจากมีหนี้ทางเทคนิคสะสมอยู่ ซึ่งช่วยให้ GPU สื่อสารกันได้ทั้งในโหนดเดียวหรือคลัสเตอร์หลายโหนด ซึ่งจำเป็นต่อการอนุมานในโครงข่ายประสาทขนาดใหญ่และการสร้าง LLM

ส่วนต่อประสาน NCCL เดิมมีความวุ่นวายเกินไป

แบ็กเอนด์ NCCL เดิมที่เรียกว่า ProcessGroupNCCL สามารถสร้าง Communicator ได้หลายสิบตัวต่อกลุ่ม ทำให้เกิดภาวะ Deadlock เป็นครั้งคราวและประสิทธิภาพคาดเดาไม่ได้ โดยเวอร์ชันเก่าจะยังคงอยู่ในแพ็กเกจ 2.15 เป็นการ Rollback แต่จะถูกนำออกในเวอร์ชัน 2.16 ที่วางแผนไว้ต้นปีหน้า

ต้นกำเนิดจาก Nvidia

NCCL ใช้เส้นทางการสื่อสารที่ปรับให้เหมาะสมเพื่อย้ายข้อมูลระหว่าง GPU โดยลดภาระของ CPU เนื่องจากสแต็กเครือข่ายแบบ TCP มาตรฐานอาจทำให้เกิดคอขวดในคลัสเตอร์ GPU ขนาดใหญ่

การสนับสนุนเพิ่มเติมสำหรับ Apple และ Nvidia รุ่นต่อไป

คุณสมบัติใหม่ของ PyTorch 2.15 ยังรวมถึง Python transport API ใหม่สำหรับการเคลื่อนย้ายข้อมูลแบบเที่ยวเดียวแบบอะซิงโครนัส ซึ่งเหมาะสำหรับงานฝึกที่ต้องซิงค์น้ำหนักระหว่าง Trainer และ Generator รวมถึงการปรับปรุงการประมวลผลแบบขนานสำหรับอุปกรณ์ Apple และการรองรับ Blackwell GPUs รุ่นต่อไปของ Nvidia

ที่มา: The Register

Leave a Comment