ภาพรวม
ZeRO (Zero Redundancy Optimizer) กำจัดความซ้ำซ้อนของหน่วยความจำที่สิ้นเปลืองของข้อมูลแบบขนานโดยการแบ่งสถานะเครื่องมือเพิ่มประสิทธิภาพ การไล่ระดับสี และน้ำหนักทั่วทั้ง GPU ช่วยให้คุณสามารถฝึกฝนโมเดลขนาดใหญ่ด้วยความเรียบง่ายของข้อมูลแบบขนานแต่ใช้หน่วยความจำเพียงเศษเสี้ยวของต่อ GPU
ZeRO และ Sharded Optimizers เป็นองค์ประกอบทางเทคนิคที่ส่งผลต่อคุณภาพของโมเดล ต้นทุนโครงสร้างพื้นฐาน เวลาแฝง และความน่าเชื่อถือในวงกว้าง
เจาะลึก
ในระบบการทำงานคู่ขนานของข้อมูลทั่วไป GPU ทุกตัวจะจัดเก็บสำเนาเต็มของสถานะเครื่องมือเพิ่มประสิทธิภาพ การไล่ระดับสี และพารามิเตอร์ ซึ่งสิ้นเปลืองอย่างมหาศาล โดยเฉพาะอย่างยิ่งสำหรับ Adam ซึ่งสถานะของเครื่องมือเพิ่มประสิทธิภาพอาจมีขนาดใหญ่กว่าโมเดลหลายเท่า ZeRO ซึ่งเปิดตัวโดย Microsoft ใน DeepSpeed ขจัดความซ้ำซ้อนนี้โดยการแบ่งพาร์ติชันเทนเซอร์เหล่านี้บน GPU เพื่อให้แต่ละอุปกรณ์เป็นเจ้าของเพียงสไลซ์เท่านั้น ZeRO มาในสามขั้นตอนแบบก้าวหน้า: ขั้นที่ 1 สถานะเครื่องมือเพิ่มประสิทธิภาพชาร์ด ขั้นที่ 2 เพิ่มการแบ่งส่วนการไล่ระดับสี และขั้นที่ 3 จะเพิ่มพารามิเตอร์ด้วยตนเอง หากจำเป็น GPU จะรวบรวมส่วนที่ขาดหายไปผ่านการสื่อสาร คำนวณ แล้วปล่อยชิ้นส่วนเหล่านั้น ผลลัพธ์ที่ได้คือหน่วยความจำต่อ GPU ลดลงอย่างมาก ช่วยให้สามารถฝึกฝนพารามิเตอร์ได้นับพันล้านถึงล้านล้านพารามิเตอร์ ขณะเดียวกันก็รักษารูปแบบการเขียนโปรแกรมที่ง่ายดายของข้อมูลแบบขนาน
ข้อมูลเชิงลึกทางเทคนิค
ZeRO แลกเปลี่ยนการสื่อสารเพิ่มเติมเพื่อการประหยัดหน่วยความจำ ในขั้นตอนที่ 3 ก่อนที่จะส่งต่อเลเยอร์ ผู้รวบรวมทั้งหมดจะรวบรวมพารามิเตอร์ทั้งหมดของเลเยอร์นั้นลงบน GPU แต่ละตัว หลังจากนั้นส่วนที่ไม่มีเจ้าของจะถูกละทิ้งเพื่อเรียกคืนหน่วยความจำ การไล่ระดับสีจะถูกลดขนาดลง ดังนั้น GPU แต่ละตัวจะเก็บเฉพาะส่วนการไล่ระดับสีที่ตรงกับพารามิเตอร์ที่ GPU เป็นเจ้าของเท่านั้น FSDP ของ PyTorch (Fully Sharded Data Parallel) ใช้แนวคิดเดียวกันโดยกำเนิด โดยการรวมโมดูลเพื่อแบ่งส่วนและแบ่งย่อยใหม่ได้ทันที
การเรียนรู้ ZeRO และเครื่องมือเพิ่มประสิทธิภาพ Sharded
ZeRO (Zero Redundancy Optimizer) กำจัดความซ้ำซ้อนของหน่วยความจำที่สิ้นเปลืองของข้อมูลแบบขนานโดยการแบ่งสถานะเครื่องมือเพิ่มประสิทธิภาพ การไล่ระดับสี และน้ำหนักทั่วทั้ง GPU ช่วยให้คุณสามารถฝึกฝนโมเดลขนาดใหญ่ด้วยความเรียบง่ายของข้อมูลแบบขนานแต่ใช้หน่วยความจำเพียงเศษเสี้ยวของต่อ GPU ZeRO และ Sharded Optimizers เป็นองค์ประกอบทางเทคนิคที่ส่งผลต่อคุณภาพของโมเดล ต้นทุนโครงสร้างพื้นฐาน เวลาแฝง และความน่าเชื่อถือในวงกว้าง เพื่อสร้างความเข้าใจอย่างลึกซึ้ง ให้ปฏิบัติต่อ ZeRO และ Sharded Optimizers เสมือนเป็นโมเดลการทำงาน ไม่ใช่คุณลักษณะเดียว: กำหนดผลลัพธ์ที่ต้องการ ชี้แจงสมมติฐาน และแยกสิ่งที่ระบบสามารถทำได้อย่างน่าเชื่อถือจากสิ่งที่ยังต้องใช้วิจารณญาณจากผู้เชี่ยวชาญ
ในทางปฏิบัติ ทีมที่แข็งแกร่งที่ใช้ ZeRO และ Sharded Optimizers จะปรับสถาปัตยกรรม ข้อมูล และตัวเลือกโครงสร้างพื้นฐานให้เหมาะสมโดยเทียบกับความน่าเชื่อถือและต้นทุน โดยจะบันทึกเกณฑ์ความสำเร็จที่ชัดเจน ทดสอบกับข้อมูลและขั้นตอนการทำงานที่สมจริง และทำซ้ำตามรูปแบบความล้มเหลวที่สังเกตได้ แทนที่จะชนะการวัดประสิทธิภาพเพียงครั้งเดียว นี่คือจุดที่ความเข้าใจทางทฤษฎีกลายเป็นความสามารถที่คงทนของผลิตภัณฑ์ นโยบาย และการดำเนินงาน
การตัดสินใจด้านสถาปัตยกรรมขับเคลื่อนประสิทธิภาพและต้นทุนการดำเนินงานเป็นเวลาหลายปี ในเวลาเดียวกัน การเพิ่มประสิทธิภาพเกณฑ์มาตรฐานหนึ่งรายการสามารถซ่อนจุดอ่อนของระบบในวงกว้างได้ แนวทางที่ยืดหยุ่นที่สุดคือการรวมความเร็วของการทดลองเข้ากับวินัยในการกำกับดูแล: ดำเนินการนำร่อง จับหลักฐาน เผยแพร่บันทึกการตัดสินใจ และอัปเดตการป้องกันอย่างต่อเนื่องเมื่อพฤติกรรมของโมเดล ความคาดหวังของผู้ใช้ และข้อกำหนดด้านกฎระเบียบมีการเปลี่ยนแปลง
ผลกระทบเชิงกลยุทธ์
การตัดสินใจด้านสถาปัตยกรรมขับเคลื่อนประสิทธิภาพและต้นทุนการดำเนินงานเป็นเวลาหลายปี
การตัดสินใจด้านสถาปัตยกรรมขับเคลื่อนประสิทธิภาพและต้นทุนการดำเนินงานเป็นเวลาหลายปี ในการปรับใช้คุณภาพสูง สิ่งนี้จะถูกแปลเป็นกฎการปฏิบัติงานที่วัดผลได้ ขอบเขตความเป็นเจ้าของ และขั้นตอนการตรวจสอบที่เกิดซ้ำ เพื่อให้ทีมสามารถปรับขนาดความมั่นใจแทนที่จะปรับขนาดความคลุมเครือ
การศึกษาด้านเทคนิคช่วยให้ทีมเลือกกลุ่มที่เหมาะสม ไม่ใช่แค่กลุ่มใหม่ล่าสุด
การศึกษาด้านเทคนิคช่วยให้ทีมเลือกกลุ่มที่เหมาะสม ไม่ใช่แค่กลุ่มใหม่ล่าสุด ในการปรับใช้คุณภาพสูง สิ่งนี้จะถูกแปลเป็นกฎการปฏิบัติงานที่วัดผลได้ ขอบเขตความเป็นเจ้าของ และขั้นตอนการตรวจสอบที่เกิดซ้ำ เพื่อให้ทีมสามารถปรับขนาดความมั่นใจแทนที่จะปรับขนาดความคลุมเครือ
ตัวเลือกทางวิศวกรรมที่ดีกว่าจะช่วยลดเหตุการณ์ด้านความน่าเชื่อถือในการผลิต
ตัวเลือกทางวิศวกรรมที่ดีกว่าจะช่วยลดเหตุการณ์ด้านความน่าเชื่อถือในการผลิต ในการปรับใช้คุณภาพสูง สิ่งนี้จะถูกแปลเป็นกฎการปฏิบัติงานที่วัดผลได้ ขอบเขตความเป็นเจ้าของ และขั้นตอนการตรวจสอบที่เกิดซ้ำ เพื่อให้ทีมสามารถปรับขนาดความมั่นใจแทนที่จะปรับขนาดความคลุมเครือ
การใช้งานจริงในโลกแห่งความเป็นจริง
การใช้ DeepSpeed ZeRO Stage 2 เพื่อปรับแต่งโมเดลภาษาที่มีพารามิเตอร์หลายพันล้านพารามิเตอร์ ซึ่งอาจจะทำให้หน่วยความจำ GPU ล้น
การฝึกอบรมด้วย PyTorch FSDP ซึ่งจะแบ่งส่วนพารามิเตอร์ การไล่ระดับสี และสถานะเครื่องมือเพิ่มประสิทธิภาพทั่วทั้ง GPU และรวบรวมตามเลเยอร์ตามความต้องการ
การใช้ ZeRO-Offload เพื่อพุชสถานะตัวเพิ่มประสิทธิภาพไปยังหน่วยความจำ CPU ทำให้ GPU ตัวเดียวฝึกโมเดลที่ใหญ่กว่า VRAM หลายเท่า
ปรับขนาดโมเดลล้านล้านพารามิเตอร์ด้วย ZeRO-Infinity โดยการสตรีมส่วนแบ่งพารามิเตอร์จากที่เก็บข้อมูล NVMe เมื่อหน่วยความจำ GPU และ CPU หมด
รูปแบบการดำเนินงาน
ZeRO และ Sharded Optimizers ในทางปฏิบัติ
การใช้ DeepSpeed ZeRO Stage 2 เพื่อปรับแต่งโมเดลภาษาที่มีพารามิเตอร์หลายพันล้านพารามิเตอร์ ซึ่งอาจจะทำให้หน่วยความจำ GPU ล้น
การใช้ DeepSpeed ZeRO Stage 2 เพื่อปรับแต่งโมเดลภาษาหลายพันล้านพารามิเตอร์ ซึ่งอาจล้นหน่วยความจำ GPU ทีมมักจะได้รับผลลัพธ์ที่ดีกว่าเมื่อพวกเขากำหนดเกณฑ์คุณภาพล่วงหน้า รักษาเส้นทางการยกระดับโดยมนุษย์สำหรับกรณี Edge และติดตามทั้งประสิทธิภาพการทำงานที่เพิ่มขึ้นและต้นทุนข้อผิดพลาดเมื่อเวลาผ่านไป
ZeRO และ Sharded Optimizers ในทางปฏิบัติ
การฝึกอบรมด้วย PyTorch FSDP ซึ่งจะแบ่งส่วนพารามิเตอร์ การไล่ระดับสี และสถานะเครื่องมือเพิ่มประสิทธิภาพทั่วทั้ง GPU และรวบรวมตามเลเยอร์ตามความต้องการ
การฝึกอบรมด้วย PyTorch FSDP ซึ่งแบ่งส่วนพารามิเตอร์ การไล่ระดับสี และสถานะเครื่องมือเพิ่มประสิทธิภาพใน GPU และรวบรวมตามเลเยอร์ตามความต้องการ ทีมมักจะได้รับผลลัพธ์ที่ดีกว่าเมื่อพวกเขากำหนดเกณฑ์คุณภาพล่วงหน้า รักษาเส้นทางการยกระดับโดยมนุษย์สำหรับกรณี Edge และติดตามทั้งประสิทธิภาพการทำงานที่เพิ่มขึ้นและต้นทุนข้อผิดพลาดเมื่อเวลาผ่านไป
ZeRO และ Sharded Optimizers ในทางปฏิบัติ
การใช้ ZeRO-Offload เพื่อพุชสถานะตัวเพิ่มประสิทธิภาพไปยังหน่วยความจำ CPU ทำให้ GPU ตัวเดียวฝึกโมเดลที่ใหญ่กว่า VRAM หลายเท่า
การใช้ ZeRO-Offload เพื่อพุชสถานะตัวเพิ่มประสิทธิภาพไปยังหน่วยความจำ CPU โดยปล่อยให้ GPU ตัวเดียวฝึกฝนโมเดลที่มีขนาดใหญ่กว่า VRAM หลายเท่า ทีมมักจะได้รับผลลัพธ์ที่ดีกว่าเมื่อพวกเขากำหนดเกณฑ์คุณภาพล่วงหน้า รักษาเส้นทางการยกระดับโดยมนุษย์สำหรับกรณี Edge และติดตามทั้งการเพิ่มผลผลิตและต้นทุนข้อผิดพลาดเมื่อเวลาผ่านไป
ZeRO และ Sharded Optimizers ในทางปฏิบัติ
ปรับขนาดโมเดลล้านล้านพารามิเตอร์ด้วย ZeRO-Infinity โดยการสตรีมส่วนแบ่งพารามิเตอร์จากที่เก็บข้อมูล NVMe เมื่อหน่วยความจำ GPU และ CPU หมด
ปรับขนาดโมเดลล้านล้านพารามิเตอร์ด้วย ZeRO-Infinity โดยการสตรีมส่วนแบ่งพารามิเตอร์จากพื้นที่จัดเก็บ NVMe เมื่อหน่วยความจำ GPU และ CPU หมด โดยปกติแล้วทีมจะได้รับผลลัพธ์ที่ดีขึ้นเมื่อพวกเขากำหนดเกณฑ์คุณภาพล่วงหน้า รักษาเส้นทางการยกระดับโดยมนุษย์สำหรับกรณี Edge และติดตามทั้งประสิทธิภาพการทำงานที่เพิ่มขึ้นและต้นทุนข้อผิดพลาดเมื่อเวลาผ่านไป
ความเสี่ยงและรั้ว
การเพิ่มประสิทธิภาพเกณฑ์มาตรฐานหนึ่งรายการสามารถซ่อนจุดอ่อนของระบบในวงกว้างได้
ต้นทุนโครงสร้างพื้นฐานและการบำรุงรักษามักถูกประเมินต่ำไป
ช่องว่างด้านความปลอดภัยและความสามารถในการสังเกตสามารถเพิ่มขึ้นได้เมื่อระบบมีความซับซ้อนมากขึ้น
แผนงานการดำเนินงาน
กำหนดเป้าหมายเวลาแฝง คุณภาพ และต้นทุนก่อนนำไปใช้งาน
กำหนดเป้าหมายเวลาแฝง คุณภาพ และต้นทุนก่อนนำไปใช้งาน ถือว่าแต่ละขั้นตอนเป็นเหมือนประตูหลักฐาน: หากไม่ตรงตามเกณฑ์ ให้หยุดการเปิดตัวชั่วคราว ปิดช่องว่าง จากนั้นจึงขยายการใช้งานเท่านั้น
เกณฑ์มาตรฐานภายใต้สภาวะโหลดและข้อมูลจริง
เกณฑ์มาตรฐานภายใต้สภาวะโหลดและข้อมูลจริง ถือว่าแต่ละขั้นตอนเป็นเหมือนประตูหลักฐาน: หากไม่ตรงตามเกณฑ์ ให้หยุดการเปิดตัวชั่วคราว ปิดช่องว่าง จากนั้นจึงขยายการใช้งานเท่านั้น
การตรวจสอบเครื่องมือเพื่อหาข้อผิดพลาด การเบี่ยงเบน และผลกระทบต่อผู้ใช้
การตรวจสอบเครื่องมือเพื่อหาข้อผิดพลาด การเบี่ยงเบน และผลกระทบต่อผู้ใช้ ถือว่าแต่ละขั้นตอนเป็นเหมือนประตูหลักฐาน: หากไม่ตรงตามเกณฑ์ ให้หยุดการเปิดตัวชั่วคราว ปิดช่องว่าง จากนั้นจึงขยายการใช้งานเท่านั้น
เตรียมเส้นทางการย้อนกลับและการตอบสนองต่อเหตุการณ์ก่อนปรับขนาด
เตรียมเส้นทางการย้อนกลับและการตอบสนองต่อเหตุการณ์ก่อนปรับขนาด ถือว่าแต่ละขั้นตอนเป็นเหมือนประตูหลักฐาน: หากไม่ตรงตามเกณฑ์ ให้หยุดการเปิดตัวชั่วคราว ปิดช่องว่าง จากนั้นจึงขยายการใช้งานเท่านั้น