การสร้างโครงสร้างพื้นฐานและการตั้งค่าสคริปต์
บทนำ
- ตลอดหลายเดือนที่ผ่านมา ทีมวิจัยขนาดเล็กและทีมวิศวกรได้ฝึกโมเดลขนาด 70B พารามิเตอร์จากศูนย์บนโครงสร้างพื้นฐานของตนเอง และทำผลงานเหนือกว่า zero-shot GPT-4o ในงานด้าน reasoning
- วันนี้จะแชร์คู่มือแบบครบถ้วนสำหรับการตั้งค่าโครงสร้างพื้นฐานที่จำเป็น ตั้งแต่การตั้งค่าคลัสเตอร์เริ่มต้น การติดตั้งระบบปฏิบัติการ ไปจนถึงการกู้คืนอัตโนมัติจากข้อผิดพลาดที่เกิดขึ้นระหว่างการฝึก
- อธิบายความท้าทายที่พบในแต่ละขั้นตอนและวิธีแก้ไขอย่างละเอียด พร้อมเปิดเผยสคริปต์โครงสร้างพื้นฐานเพื่อให้ทีมอื่นสามารถสร้างโครงสร้างพื้นฐานที่เสถียรได้ง่ายขึ้น
พื้นหลัง: ระบบนี้ทำงานอย่างไร
- ต้องใช้ GPU ที่รวดเร็วเพื่อดำเนินการทดลองโมเดลภาษาขนาดใหญ่ได้อย่างรวดเร็ว
- ใช้คลัสเตอร์ที่ประกอบด้วย GPU H100 จำนวน 4,092 ตัว กระจายอยู่บนคอมพิวเตอร์ 511 เครื่อง
- ทำให้เกิดการสื่อสารความเร็วสูงระหว่าง GPU ผ่านเครือข่าย InfiniBand
กระบวนการ: จากเบร์เมทัลสู่คลัสเตอร์ที่ใช้งานได้เต็มรูปแบบ
การจัดเตรียมเครื่องแต่ละเครื่อง
- ตั้งค่าการเชื่อมต่อ Ethernet เริ่มต้นเข้ากับคลัสเตอร์ผ่านเครือข่ายจัดการ และเข้าถึง BMC (Baseboard Management Controller)
- ใช้ iDRAC ติดตั้ง Ubuntu 22.04 บนเซิร์ฟเวอร์เครื่องแรก และใช้เครื่องนั้นเป็นฐานสำหรับตั้งค่าเซิร์ฟเวอร์ที่เหลือ
การติดตั้ง OS บนทุกเครื่อง
- ใช้ซอฟต์แวร์ MAAS เพื่อจัดเตรียมเซิร์ฟเวอร์ที่เหลือ
- ใช้ PXE boot และเครื่องมือ iDRAC แบบอัตโนมัติเพื่อบูตผ่านเครือข่าย และกำหนดค่าให้ MAAS ตอบสนองต่อคำขอ PXE boot
การวินิจฉัยเครื่องที่มีปัญหา
- ประมาณ 10% ของเครื่องบูตไม่สำเร็จ โดยส่วนใหญ่เกิดจากปัญหาทางกายภาพ
- ใช้การตรวจสอบอัตโนมัติเพื่อค้นหาปัญหา จากนั้นขอให้ Dell ทดสอบซ้ำหรือออกทิกเก็ตให้เจ้าหน้าที่ดาต้าเซ็นเตอร์
การตั้งค่าเมทัลให้สังเกตการณ์ได้ในระดับขั้นต่ำ
- ติดตั้ง Docker, ไดรเวอร์ GPU สำหรับดาต้าเซ็นเตอร์, Prometheus node exporter และอื่น ๆ บนทุกเซิร์ฟเวอร์
- รันการวินิจฉัย GPU ขั้นพื้นฐานเพื่อตรวจสอบว่า GPU ส่วนใหญ่ทำงานได้ตามปกติ
การฝึก GPU บนโหนดเดียว
- ตรวจสอบว่าทุกเครื่องสามารถจัดการงาน GPU ได้ด้วยตัวเอง
- แก้ไขข้อผิดพลาดที่เกี่ยวข้องกับ GPU และแก้ปัญหาการเชื่อมต่อระหว่างบัส PCIe กับการ์ดเครือข่าย
การจัดเตรียม InfiniBand
- ติดตั้ง UFM (Unified Fabric Manager) ตรวจพบสวิตช์เครือข่าย และตั้งชื่อสวิตช์ตามตำแหน่งทางกายภาพ
- แก้ปัญหาการเดินสายเครือข่ายและจัดการปัญหาการแจ้งเตือนอุณหภูมิ
การรับประกันว่าเครื่องทั้งหมดมีสุขภาพสมบูรณ์
- ใช้การตรวจสอบสุขภาพหลายรูปแบบเพื่อยืนยันโฮสต์ที่พร้อมใช้สำหรับการฝึก
- ตรวจสอบ GPU, พื้นที่ดิสก์, Docker, dmesg, iDRAC, ดิสก์, InfiniBand, NVLink, GDR, VBIOS, Flint, PSB และอื่น ๆ
การวินิจฉัยปัญหาการฝึกที่พบบ่อย
- เมื่อฮาร์ดแวร์เริ่มทำงานได้อย่างถูกต้อง ก็เริ่มการฝึก
- แก้ปัญหาเช่นล่มตั้งแต่เริ่มต้น ล่มระหว่างทาง ค้างโดยไม่มีข้อมูล stack trace และความเร็วการฝึกที่ลดลง
การปรับปรุงเครื่องมือโครงสร้างพื้นฐาน
- พัฒนาเครื่องมือและระบบต่าง ๆ เพื่อให้การฝึกดำเนินไปอย่างราบรื่น
- ปิดการใช้งานเครื่องที่เสียและองค์ประกอบเครือข่ายที่มีปัญหาโดยอัตโนมัติ พร้อมทำงานอัตโนมัติสำหรับคำขอซ่อม
- สร้างระบบไฟล์มิเรอร์ในเครื่องและ local distributed Docker registry
- ตั้งค่าเครื่องมือมอนิเตอร์ประสิทธิภาพ และเขียนเครื่องมือเพื่อตรวจจับแบตช์การฝึกที่ช้าและทำความเข้าใจสาเหตุ
ความเห็นของ GN⁺
- บทความนี้มีประโยชน์มาก เพราะให้ทั้งประสบการณ์จริงและแนวทางแก้ปัญหาในการตั้งค่าและดูแลคลัสเตอร์ขนาดใหญ่
- อธิบายความซับซ้อนของการสร้างโครงสร้างพื้นฐานที่จำเป็นสำหรับการฝึกโมเดลภาษาขนาดใหญ่ได้อย่างชัดเจน
- มีสคริปต์และเครื่องมือหลากหลายให้ทีมอื่นนำไปอ้างอิงเมื่อต้องสร้างโครงสร้างพื้นฐานลักษณะเดียวกัน
- อธิบายความสำคัญของเครือข่าย InfiniBand และปัญหาที่อาจเกิดขึ้นระหว่างการตั้งค่าได้ดี
- อธิบายสิ่งที่ควรพิจารณา รวมถึงข้อดีข้อเสีย เมื่อต้องนำเทคโนโลยีใหม่หรือโอเพนซอร์สมาใช้งานได้อย่างดี
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ทีมวิจัยขนาดเล็กฝึกโมเดลขนาด 70B พารามิเตอร์บนอินฟราของตนเอง และทำผลงานเหนือกว่า GPT-4 แบบ zero-shot ในงานด้าน reasoning
ในคลัสเตอร์หนึ่งมี GPU H100 จำนวน 4,092 ตัว กระจายอยู่บนคอมพิวเตอร์ 511 เครื่อง
มีการพูดถึงหัวข้อนี้ในพอดแคสต์ Latent Space เมื่อไม่กี่วันก่อน
มีคนสงสัยว่าทำไมถึงต้องใช้ฮาร์ดแวร์พีซีมากขนาดนี้
น่าสนใจหากลองฝึกซ้ำบนฮาร์ดแวร์ชุดเดิมโดยใช้ Unicode ดิบแทนข้อมูลฝึกที่ผ่านการโทเคไนซ์
GPU H100 จำนวน 4,092 ตัว
มีคนสนใจการใช้พลังงานรวมที่ต้องใช้ในการสร้างโมเดลนี้
มีคนสงสัยว่าต้นทุนรวมทั้งหมดอยู่ที่เท่าไร
Cisco กำลังทำความร่วมมือใหม่กับ NVIDIA ที่ความเร็วระดับ 800G ต่อพอร์ต
มีคนสงสัยว่าหลังจากฝึกโมเดลเสร็จแล้ว ฮาร์ดแวร์และอินฟราจะถูกนำไปใช้อย่างไรต่อ