เครื่องมือเพิ่มประสิทธิภาพ ZeRO และ Sharded
ZeRO (Zero Redundancy Optimizer) กำจัดความซ้ำซ้อนของหน่วยความจำที่สิ้นเปลืองของข้อมูลแบบขนานโดยการแบ่งสถานะเครื่องมือเพิ่มประสิทธิภาพ การไล่ระดับสี และน้ำหนักทั่วทั้ง GPU
ภาพรวม
It lets you train enormous models with the simplicity of data parallelism but a fraction of the per-GPU memory.
เจาะลึก
ในระบบการทำงานคู่ขนานของข้อมูลทั่วไป 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
Sharding กำลังกลายเป็นค่าเริ่มต้นสำหรับการฝึกอบรมขนาดใหญ่แทนที่จะเป็นตัวเลือกแปลกใหม่ คาดหวังการบูรณาการที่ลึกยิ่งขึ้นด้วยการออฟโหลด (ส่งสไลซ์ไปยัง CPU หรือ NVMe ผ่าน ZeRO-Infinity) การทับซ้อนกันที่ดีขึ้นของการรวบรวมทั้งหมดและลดการกระจายด้วยการคำนวณเพื่อซ่อนต้นทุน และการรวมกันกับเทนเซอร์และไปป์ไลน์แบบขนาน ในขณะที่โมเดลต่างๆ เติบโตขึ้นเรื่อยๆ เครื่องมือเพิ่มประสิทธิภาพการแบ่งส่วนที่มีประสิทธิภาพหน่วยความจำจึงเป็นศูนย์กลางในการปรับให้เข้ากับงบประมาณฮาร์ดแวร์ที่สมจริง
การใช้งานจริงในโลกแห่งความเป็นจริง
การใช้ DeepSpeed ZeRO Stage 2 เพื่อปรับแต่งโมเดลภาษาที่มีพารามิเตอร์หลายพันล้านพารามิเตอร์ ซึ่งอาจจะทำให้หน่วยความจำ GPU ล้น
การฝึกอบรมด้วย PyTorch FSDP ซึ่งจะแบ่งส่วนพารามิเตอร์ การไล่ระดับสี และสถานะเครื่องมือเพิ่มประสิทธิภาพทั่วทั้ง GPU และรวบรวมตามเลเยอร์ตามความต้องการ
การใช้ ZeRO-Offload เพื่อพุชสถานะตัวเพิ่มประสิทธิภาพไปยังหน่วยความจำ CPU ทำให้ GPU ตัวเดียวฝึกโมเดลที่ใหญ่กว่า VRAM หลายเท่า
ปรับขนาดโมเดลล้านล้านพารามิเตอร์ด้วย ZeRO-Infinity โดยการสตรีมส่วนแบ่งพารามิเตอร์จากที่เก็บข้อมูล NVMe เมื่อหน่วยความจำ GPU และ CPU หมด
ความเสี่ยงและรั้ว
การเพิ่มประสิทธิภาพเกณฑ์มาตรฐานหนึ่งรายการสามารถซ่อนจุดอ่อนของระบบในวงกว้างได้
ต้นทุนโครงสร้างพื้นฐานและการบำรุงรักษามักถูกประเมินต่ำไป
ช่องว่างด้านความปลอดภัยและความสามารถในการสังเกตสามารถเพิ่มขึ้นได้เมื่อระบบมีความซับซ้อนมากขึ้น
แผนงานการดำเนินงาน
กำหนดเป้าหมายเวลาแฝง คุณภาพ และต้นทุนก่อนนำไปใช้งาน
เกณฑ์มาตรฐานภายใต้สภาวะโหลดและข้อมูลจริง
การตรวจสอบเครื่องมือเพื่อหาข้อผิดพลาด การเบี่ยงเบน และผลกระทบต่อผู้ใช้
เตรียมเส้นทางการย้อนกลับและการตอบสนองต่อเหตุการณ์ก่อนปรับขนาด
สำรวจต่อไป
Free newsletter
Get the daily AI briefing
Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.
One email each weekday. Unsubscribe in one click. We never sell or share your address.
Test yourself
Take the ZeRO and Sharded Optimizers quiz
Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.
Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation
คำแนะนำต่อไป
เครื่องมือเพิ่มประสิทธิภาพ Lookahead และ Lion
คำถามที่พบบ่อย
What is ZeRO and Sharded Optimizers?
ZeRO (Zero Redundancy Optimizer) กำจัดความซ้ำซ้อนของหน่วยความจำที่สิ้นเปลืองของข้อมูลแบบขนานโดยการแบ่งสถานะเครื่องมือเพิ่มประสิทธิภาพ การไล่ระดับสี และน้ำหนักทั่วทั้ง GPU ช่วยให้คุณสามารถฝึกฝนโมเดลขนาดใหญ่ด้วยความเรียบง่ายของข้อมูลแบบขนานแต่ใช้หน่วยความจำเพียงเศษเสี้ยวของต่อ GPU
ZeRO กำจัดความซ้ำซ้อนอะไรบ้างเมื่อเปรียบเทียบกับความเท่าเทียมของข้อมูลธรรมดา
ความเท่าเทียมของข้อมูลมาตรฐานจะจัดเก็บสำเนาสถานะเครื่องมือเพิ่มประสิทธิภาพ การไล่ระดับสี และน้ำหนักเต็มรูปแบบบน GPU ทุกตัว ZeRO แบ่งส่วนเหล่านี้เพื่อให้ GPU แต่ละตัวเก็บได้เพียงส่วนเดียว
เหตุใดสถานะเครื่องมือเพิ่มประสิทธิภาพจึงมักเป็นหน่วยความจำที่ใหญ่ที่สุดของอดัม
Adam รักษาการประมาณการที่ทำงานอยู่ เช่น ช่วงเวลาที่หนึ่งและวินาทีต่อพารามิเตอร์ ซึ่งรวมกับน้ำหนักหลัก fp32 อาจทำให้ขนาดของแบบจำลองเล็กลงได้
ชิ้นส่วน ZeRO Stage 3 มีอะไรบ้างที่ Stage 1 และ 2 ไม่มี?
สถานะเครื่องมือเพิ่มประสิทธิภาพชาร์ดขั้นที่ 1, ขั้นที่ 2 จะเพิ่มการไล่ระดับสี และขั้นที่ 3 ดำเนินต่อไปอีกขั้นด้วยการแบ่งส่วนแบ่งพารามิเตอร์โมเดลทั่วทั้ง GPU เช่นกัน
ใน ZeRO Stage 3 GPU จะได้รับพารามิเตอร์ทั้งหมดที่จำเป็นสำหรับการส่งต่อเลเยอร์ได้อย่างไร
ก่อนที่จะประมวลผลเลเยอร์ ผู้รวบรวมทั้งหมดจะรวบรวมพารามิเตอร์ทั้งหมดไว้บน GPU แต่ละตัว เมื่อเสร็จแล้ว สไลซ์ที่ไม่มีเจ้าของจะถูกปล่อยเพื่อเรียกคืนหน่วยความจำ
ฟีเจอร์ PyTorch ใดที่ใช้การแบ่งส่วนสไตล์ ZeRO
Fully Sharded Data Parallel (FSDP) ของ PyTorch จะรวบรวมพารามิเตอร์ส่วนแบ่งข้อมูล การไล่ระดับสี และสถานะเครื่องมือเพิ่มประสิทธิภาพ รวบรวมและแบ่งข้อมูลใหม่ได้ทันที โดยสะท้อน ZeRO