ผู้ให้บริการคลาวด์ GPU ที่มี NVLink หรือ InfiniBand
การเชื่อมต่อ GPU ที่มีแบนด์วิดท์สูง เช่น NVLink (สูงสุด 900 GB/s) และ InfiniBand (สูงสุด 400 Gb/s) มีความสำคัญสำหรับการฝึกอบรมแบบหลาย GPU และหลายโหนดอย่างมีประสิทธิภาพ หากไม่มีการเชื่อมต่อที่รวดเร็ว การซิงโครไนซ์เกรเดียนต์จะกลายเป็นคอขวดในการฝึกอบรมแบบกระจาย ซึ่งลดประสิทธิภาพการขยายตัวอย่างมาก คู่มือนี้รวบรวมผู้ให้บริการที่มีการเชื่อมต่อ NVLink หรือ InfiniBand สำหรับอินสแตนซ์ GPU ของพวกเขาไว้ให้แล้ว
United States NVLink และ InfiniBand ทำงานอย่างไรเมื่อคุณเช่าเครื่องคอมพิวเตอร์ที่มี GPU หลายตัว
NVLink และ InfiniBand แก้ปัญหาพื้นฐานเดียวกันจากสองด้านที่แตกต่างกันของเครื่อง: การเคลื่อนย้ายข้อมูลระหว่าง GPU อย่างรวดเร็วพอที่ตัวเร่งความเร็วจะใช้เวลาคำนวณมากกว่ารออยู่ ตัวกรองด้านบนจำกัดรายการให้เหลือเฉพาะอินสแตนซ์คลาวด์ที่เปิดเผยหนึ่งหรือทั้งสองการเชื่อมต่อเหล่านี้ พวกมันไม่สามารถใช้แทนกันได้ — หนึ่งคือ โครงข่ายภายในโหนด ที่เชื่อมต่อ GPU ภายในเซิร์ฟเวอร์เดียวกัน และอีกหนึ่งคือ โครงข่ายระหว่างโหนด ที่เชื่อมต่อเซิร์ฟเวอร์เข้าด้วยกันเป็นคลัสเตอร์ สำหรับงานใดก็ตามที่ข้ามมากกว่าหนึ่ง GPU การเชื่อมต่อมักเป็นตัวแปรที่ทำให้เกิดความแตกต่างระหว่างการสเกลแบบเกือบเส้นตรงกับการตั้งค่าที่เพิ่ม GPU เข้าไปแทบจะไม่ช่วยอะไรเลย
NVLink: ทางด่วนระหว่าง GPU ภายในกล่องเดียว
NVLink คือการเชื่อมต่อโดยตรงระหว่าง GPU ของ NVIDIA แทนที่จะส่งข้อมูลผ่านบัส PCIe ของโฮสต์และ CPU, NVLink เชื่อมต่อ GPU เข้าหากัน (และบนบางแพลตฟอร์มผ่าน NVSwitch crossbar) เพื่อให้ GPU ทุกตัวในโหนดสามารถสื่อสารกันได้ด้วยแบนด์วิดท์สูงและหน่วงเวลาต่ำ ผลลัพธ์ที่เป็นรูปธรรมเมื่อคุณเช่าอินสแตนซ์ที่ติดตั้ง NVLink คือ
- แบนด์วิดท์ระหว่าง GPU สูงกว่ามาก เมื่อเทียบกับโหนดที่ใช้ PCIe เพียงอย่างเดียว ซึ่งสำคัญเมื่อใดก็ตามที่ต้องแลกเปลี่ยนเกรเดียนต์, การกระตุ้น หรือชิ้นส่วนของโมเดลในทุกขั้นตอน
- หน่วยความจำรวมกันระหว่าง GPU ในทางปฏิบัติ — โมเดลที่ใหญ่เกินกว่าหน่วยความจำ VRAM ของ GPU ตัวเดียวสามารถแบ่งออกเป็นส่วนๆ ภายในโดเมน NVLink โดยการรับส่งข้อมูลข้าม GPU จะอยู่บนโครงข่ายความเร็วสูงแทนที่จะต้องผ่าน PCIe
- ลดภาระการซิงโครไนซ์ สำหรับการดำเนินการแบบรวมกลุ่มเช่น all-reduce ซึ่งเป็นส่วนใหญ่ของการฝึกแบบขนานข้อมูล
NVLink อยู่ภายในโหนดเดียว ดังนั้นขอบเขตจึงมักจะเป็น 2, 4 หรือ 8 GPU ขึ้นอยู่กับการออกแบบเซิร์ฟเวอร์ หากผู้ให้บริการในรายการด้านบนโฆษณาโหนด 8 GPU “พร้อม NVLink” หมายความว่าการ์ดทั้งแปดใบนี้เชื่อมต่อกันอย่างแน่นหนา แต่ไม่ได้บอกอะไรเกี่ยวกับการเชื่อมต่อของโหนดนี้กับโหนดอื่นๆ
InfiniBand: โครงข่ายที่เปลี่ยนเซิร์ฟเวอร์หลายเครื่องให้เป็นคลัสเตอร์เดียว
InfiniBand คือเทคโนโลยีเครือข่ายที่ใช้เชื่อมต่อเซิร์ฟเวอร์ GPU แยกกัน เมื่อการฝึกขยายเกินโหนดเดียว คอขวดจะย้ายจากภายในกล่องไปยังระหว่างกล่อง และเครือข่ายอีเธอร์เน็ตทั่วไปอาจทำให้ GPU ชะงัก InfiniBand แก้ปัญหานี้ด้วยอัตราการส่งข้อมูลต่อการเชื่อมต่อที่สูงมาก, หน่วงเวลาต่ำและคาดการณ์ได้ และ RDMA (remote direct memory access) ซึ่งช่วยให้เซิร์ฟเวอร์หนึ่งอ่านหรือเขียนหน่วยความจำของเซิร์ฟเวอร์อีกเครื่องโดยไม่ต้องใช้ CPU ของทั้งสองฝั่ง ร่วมกับ GPUDirect RDMA ข้อมูลสามารถเคลื่อนย้ายจาก GPU ไปยัง GPU ข้ามโหนดโดยข้ามการคัดลอกหน่วยความจำของโฮสต์ได้มาก
สำหรับการฝึกแบบหลายโหนด นี่คือสิ่งที่ทำให้การสเกลมีประสิทธิภาพ เหตุผลที่คลัสเตอร์ของ GPU หลายสิบหรือหลายร้อยตัวสามารถฝึกโมเดลขนาดใหญ่ได้ในเวลาที่เหมาะสมคือโครงข่ายระหว่างโหนดสามารถตามทันการสื่อสารแบบรวมกลุ่มที่อัลกอริทึมต้องการ หากใช้เครือข่ายทั่วไป งานเดียวกันอาจใช้เวลาส่วนใหญ่ของเวลาจริงรอเครือข่าย
งานประเภทใดที่ต้องการสิ่งนี้จริงๆ
การกรองสำหรับ NVLink หรือ InfiniBand มีเหตุผลเมื่อการสื่อสาร ไม่ใช่แค่การคำนวณล้วนๆ เป็นเส้นทางวิกฤติ:
- การฝึกและปรับแต่งโมเดลขนาดใหญ่ ที่แบ่งพารามิเตอร์, สถานะตัวปรับแต่ง หรือเลเยอร์ข้าม GPU (การขนานข้อมูลแบบเทนเซอร์, แบบพายป์ไลน์ หรือแบบแบ่งชิ้นเต็มรูปแบบ) — วิธีการเหล่านี้สร้างการรับส่งข้อมูลข้าม GPU อย่างต่อเนื่องและได้รับประโยชน์สูงสุดจาก NVLink ภายในโหนดและ InfiniBand ข้ามโหนด
- การฝึกแบบกระจายหลายโหนด ที่งานไม่สามารถใส่ในเซิร์ฟเวอร์เดียวได้ — ที่นี่ InfiniBand เป็นตัวกำหนดประสิทธิภาพการสเกล
- HPC และการจำลองทางวิทยาศาสตร์ ที่ต้องการการสื่อสารระหว่างกระบวนการอย่างเข้มงวด ซึ่งพึ่งพา InfiniBand และ RDMA มาหลายปี
- การอนุมานโมเดลขนาดใหญ่หรือบริบทใหญ่ ที่แบ่งโมเดลเดียวข้ามหลาย GPU ซึ่ง NVLink ช่วยลดค่าปรับหน่วงเวลาของการเข้าถึงน้ำหนักและความสนใจข้าม GPU
จริงๆ แล้วเกินความจำเป็นสำหรับงานที่ใช้ GPU ตัวเดียว การปรับแต่งโมเดลเล็กๆ การรันการอนุมานแบบแบตช์ที่พอดีกับการ์ดใบเดียว งานเรนเดอร์ส่วนใหญ่ และการทดลองต่างๆ สามารถทำงานได้ดีบน GPU เดี่ยว การจ่ายเงินเพิ่มสำหรับโหนดที่เชื่อมต่ออย่างแน่นหนาหรือคลัสเตอร์ InfiniBand ไม่มีประโยชน์ถ้างานของคุณไม่ข้ามขอบเขตของ GPU
สิ่งที่ควรตรวจสอบก่อนเช่า
การเชื่อมต่อสองแบบนี้มักถูกสับสนในข้อความการตลาด ดังนั้นควรตรวจสอบรายละเอียดกับการเปรียบเทียบข้างต้น:
- ขอบเขต — ยืนยันว่ารายการหมายถึง NVLink (การเชื่อมต่อ GPU ภายในโหนด) หรือ InfiniBand (เครือข่ายระหว่างโหนด) อินสแตนซ์โหนดเดียวอาจมี NVLink แต่ไม่มี InfiniBand เลย
- โทโพโลยีและความกว้าง — จำนวน GPU ที่แชร์โดเมน NVLink (NVSwitch แบบ all-to-all เต็มรูปแบบเทียบกับสะพานบางส่วน) และอัตราลิงก์ InfiniBand รวมทั้งว่ามีการเปิดใช้ RDMA/GPUDirect หรือไม่
- เจเนอเรชัน — เจเนอเรชัน GPU ใหม่กว่ามี NVLink ที่แบนด์วิดท์สูงกว่า ป้าย “NVLink” เพียงอย่างเดียวไม่บอกความเร็ว
- ความพร้อมใช้งานแบบหลายโหนด — ว่าคุณสามารถจองโหนดหลายโหนดที่เชื่อมต่อกันได้จริงหรือไม่ และโหนดเหล่านั้นอยู่ในโครงข่ายเดียวกันหรือกระจายอยู่ทั่วศูนย์ข้อมูล
- การสนับสนุนซอฟต์แวร์ — ว่า NCCL, MPI และเฟรมเวิร์กของคุณเห็นและใช้โครงข่ายนี้หรือไม่; การตั้งค่าผิดพลาดจะทำให้เงียบๆ กลับไปใช้เส้นทางช้า
ในเรื่องต้นทุนและความพร้อมใช้งาน อินสแตนซ์ที่มีการเชื่อมต่อมากจะอยู่ในช่วงราคาสูงกว่า โหนดหลาย GPU ที่ติดตั้ง NVLink และคลัสเตอร์ที่เชื่อมต่อด้วย InfiniBand ใช้ฮาร์ดแวร์ระดับพรีเมียมและมีความต้องการสูง ดังนั้นความจุแบบ on-demand จึงจำกัด และตัวเลือก spot หรือ interruptible มีน้อยกว่า GPU แบบเดี่ยวทั่วไป โดยเฉพาะการจัดสรร InfiniBand แบบหลายโหนดมักถูกจำกัด, จองล่วงหน้าหรือขายเป็นชุดใหญ่ ให้ใช้ราคาตารางด้านบนเป็นข้อมูลอ้างอิงสด เนื่องจากอัตราเปลี่ยนแปลงและแตกต่างกันตามผู้ให้บริการ
คำถามที่พบบ่อย
ฉันต้องใช้ทั้ง NVLink และ InfiniBand หรือไม่?
ขึ้นอยู่กับขนาดงาน งานที่ใช้ GPU หลายตัวในโหนดเดียวต้องการแค่ NVLink เท่านั้น แต่เมื่อการฝึกข้ามเซิร์ฟเวอร์หลายเครื่อง คุณก็ต้องการ InfiniBand เพื่อเชื่อมต่อโหนดเหล่านั้น — สองอย่างนี้ทำงานในชั้นที่ต่างกัน ดังนั้นคลัสเตอร์ขนาดใหญ่จึงมักใช้ NVLink ภายในแต่ละกล่องและ InfiniBand ระหว่างกล่อง
งานที่ใช้ GPU ตัวเดียวของฉันจะรันเร็วขึ้นบนอินสแตนซ์ที่มี NVLink หรือ InfiniBand หรือไม่?
ไม่ ทั้งสองการเชื่อมต่อนี้มีความสำคัญเฉพาะเมื่อข้อมูลเคลื่อนย้ายระหว่าง GPU หรือระหว่างโหนด งานที่พอดีกับ GPU ตัวเดียวจะไม่แตะต้องโครงข่ายเหล่านี้เลย ดังนั้นคุณจะจ่ายเงินเพิ่มเพื่อความจุที่ไม่สามารถใช้ได้ กรองเฉพาะเมื่อต้องการสเกลเกินหนึ่ง GPU
ทำไมการเชื่อมต่อจึงสำคัญกว่าสเปกต่อ GPU สำหรับงานฝึกขนาดใหญ่?
การฝึกแบบกระจายใช้เวลาส่วนใหญ่ของแต่ละขั้นตอนในการแลกเปลี่ยนเกรเดียนต์และการกระตุ้น หากโครงข่ายตามไม่ทัน GPU จะว่างงานระหว่างรอซิงโครไนซ์ และการเพิ่ม GPU จะให้ผลตอบแทนที่ลดลง การเชื่อมต่อที่รวดเร็วคือสิ่งที่รักษาการสเกลแบบเกือบเส้นตรงเมื่อเพิ่มตัวเร่งความเร็ว
NVLink มีในทุกอินสแตนซ์ที่มี GPU หลายตัวหรือไม่?
ไม่ โหนด GPU หลายตัวบางโหนดเชื่อมต่อการ์ดของพวกเขาเพียงผ่าน PCIe ซึ่งมีแบนด์วิดท์ระหว่าง GPU ต่ำกว่า การมี GPU หลายตัวไม่ได้รับประกันว่า NVLink จะมี ดังนั้นควรยืนยันการเชื่อมต่ออย่างชัดเจนในตารางเปรียบเทียบข้างต้นแทนที่จะสันนิษฐานจากจำนวน GPU