คู่มือทางเทคนิค

เครื่องมือเพิ่มประสิทธิภาพ ZeRO และ Sharded

ZeRO (Zero Redundancy Optimizer) กำจัดความซ้ำซ้อนของหน่วยความจำที่สิ้นเปลืองของข้อมูลแบบขนานโดยการแบ่งสถานะเครื่องมือเพิ่มประสิทธิภาพ การไล่ระดับสี และน้ำหนักทั่วทั้ง GPU

ภาพรวม

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 จะปรับสถาปัตยกรรม ข้อมูล และตัวเลือกโครงสร้างพื้นฐานให้เหมาะสมโดยเทียบกับความน่าเชื่อถือและต้นทุน โดยจะบันทึกเกณฑ์ความสำเร็จที่ชัดเจน ทดสอบกับข้อมูลและขั้นตอนการทำงานที่สมจริง และทำซ้ำตามรูปแบบความล้มเหลวที่สังเกตได้ แทนที่จะชนะการวัดประสิทธิภาพเพียงครั้งเดียว นี่คือจุดที่ความเข้าใจทางทฤษฎีกลายเป็นความสามารถที่คงทนของผลิตภัณฑ์ นโยบาย และการดำเนินงาน

การตัดสินใจด้านสถาปัตยกรรมขับเคลื่อนประสิทธิภาพและต้นทุนการดำเนินงานเป็นเวลาหลายปี ในเวลาเดียวกัน การเพิ่มประสิทธิภาพเกณฑ์มาตรฐานหนึ่งรายการสามารถซ่อนจุดอ่อนของระบบในวงกว้างได้ แนวทางที่ยืดหยุ่นที่สุดคือการรวมความเร็วของการทดลองเข้ากับวินัยในการกำกับดูแล: ดำเนินการนำร่อง จับหลักฐาน เผยแพร่บันทึกการตัดสินใจ และอัปเดตการป้องกันอย่างต่อเนื่องเมื่อพฤติกรรมของโมเดล ความคาดหวังของผู้ใช้ และข้อกำหนดด้านกฎระเบียบมีการเปลี่ยนแปลง

ผลกระทบเชิงกลยุทธ์

การตัดสินใจด้านสถาปัตยกรรมขับเคลื่อนประสิทธิภาพและต้นทุนการดำเนินงานเป็นเวลาหลายปี

การตัดสินใจด้านสถาปัตยกรรมขับเคลื่อนประสิทธิภาพและต้นทุนการดำเนินงานเป็นเวลาหลายปี ในการปรับใช้คุณภาพสูง สิ่งนี้จะถูกแปลเป็นกฎการปฏิบัติงานที่วัดผลได้ ขอบเขตความเป็นเจ้าของ และขั้นตอนการตรวจสอบที่เกิดซ้ำ เพื่อให้ทีมสามารถปรับขนาดความมั่นใจแทนที่จะปรับขนาดความคลุมเครือ

การศึกษาด้านเทคนิคช่วยให้ทีมเลือกกลุ่มที่เหมาะสม ไม่ใช่แค่กลุ่มใหม่ล่าสุด

การศึกษาด้านเทคนิคช่วยให้ทีมเลือกกลุ่มที่เหมาะสม ไม่ใช่แค่กลุ่มใหม่ล่าสุด ในการปรับใช้คุณภาพสูง สิ่งนี้จะถูกแปลเป็นกฎการปฏิบัติงานที่วัดผลได้ ขอบเขตความเป็นเจ้าของ และขั้นตอนการตรวจสอบที่เกิดซ้ำ เพื่อให้ทีมสามารถปรับขนาดความมั่นใจแทนที่จะปรับขนาดความคลุมเครือ

ตัวเลือกทางวิศวกรรมที่ดีกว่าจะช่วยลดเหตุการณ์ด้านความน่าเชื่อถือในการผลิต

ตัวเลือกทางวิศวกรรมที่ดีกว่าจะช่วยลดเหตุการณ์ด้านความน่าเชื่อถือในการผลิต ในการปรับใช้คุณภาพสูง สิ่งนี้จะถูกแปลเป็นกฎการปฏิบัติงานที่วัดผลได้ ขอบเขตความเป็นเจ้าของ และขั้นตอนการตรวจสอบที่เกิดซ้ำ เพื่อให้ทีมสามารถปรับขนาดความมั่นใจแทนที่จะปรับขนาดความคลุมเครือ

อนาคตของ 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 หมด

รูปแบบการดำเนินงาน

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 และติดตามทั้งประสิทธิภาพการทำงานที่เพิ่มขึ้นและต้นทุนข้อผิดพลาดเมื่อเวลาผ่านไป

ความเสี่ยงและรั้ว

!

การเพิ่มประสิทธิภาพเกณฑ์มาตรฐานหนึ่งรายการสามารถซ่อนจุดอ่อนของระบบในวงกว้างได้

!

ต้นทุนโครงสร้างพื้นฐานและการบำรุงรักษามักถูกประเมินต่ำไป

!

ช่องว่างด้านความปลอดภัยและความสามารถในการสังเกตสามารถเพิ่มขึ้นได้เมื่อระบบมีความซับซ้อนมากขึ้น

แผนงานการดำเนินงาน

1

กำหนดเป้าหมายเวลาแฝง คุณภาพ และต้นทุนก่อนนำไปใช้งาน

กำหนดเป้าหมายเวลาแฝง คุณภาพ และต้นทุนก่อนนำไปใช้งาน ถือว่าแต่ละขั้นตอนเป็นเหมือนประตูหลักฐาน: หากไม่ตรงตามเกณฑ์ ให้หยุดการเปิดตัวชั่วคราว ปิดช่องว่าง จากนั้นจึงขยายการใช้งานเท่านั้น

2

เกณฑ์มาตรฐานภายใต้สภาวะโหลดและข้อมูลจริง

เกณฑ์มาตรฐานภายใต้สภาวะโหลดและข้อมูลจริง ถือว่าแต่ละขั้นตอนเป็นเหมือนประตูหลักฐาน: หากไม่ตรงตามเกณฑ์ ให้หยุดการเปิดตัวชั่วคราว ปิดช่องว่าง จากนั้นจึงขยายการใช้งานเท่านั้น

3

การตรวจสอบเครื่องมือเพื่อหาข้อผิดพลาด การเบี่ยงเบน และผลกระทบต่อผู้ใช้

การตรวจสอบเครื่องมือเพื่อหาข้อผิดพลาด การเบี่ยงเบน และผลกระทบต่อผู้ใช้ ถือว่าแต่ละขั้นตอนเป็นเหมือนประตูหลักฐาน: หากไม่ตรงตามเกณฑ์ ให้หยุดการเปิดตัวชั่วคราว ปิดช่องว่าง จากนั้นจึงขยายการใช้งานเท่านั้น

4

เตรียมเส้นทางการย้อนกลับและการตอบสนองต่อเหตุการณ์ก่อนปรับขนาด

เตรียมเส้นทางการย้อนกลับและการตอบสนองต่อเหตุการณ์ก่อนปรับขนาด ถือว่าแต่ละขั้นตอนเป็นเหมือนประตูหลักฐาน: หากไม่ตรงตามเกณฑ์ ให้หยุดการเปิดตัวชั่วคราว ปิดช่องว่าง จากนั้นจึงขยายการใช้งานเท่านั้น

สำรวจต่อไป