การสะสมไล่ระดับ
การสะสมการไล่ระดับสีช่วยให้คุณจำลองขนาดแบทช์ขนาดใหญ่บนหน่วยความจำ GPU ที่จำกัด โดยการสรุปการไล่ระดับสีบนมินิแบทช์เล็กๆ หลายชุดก่อนอัปเดตน้ำหนัก
ภาพรวม
It is the standard workaround for training big models when memory is the bottleneck.
เจาะลึก
โดยปกติแล้ว ขั้นตอนการฝึกจะประมวลผลหนึ่งชุด คำนวณการไล่ระดับสี และอัปเดตพารามิเตอร์ทันที ด้วยการสะสมการไล่ระดับสี คุณจะดำเนินการส่งต่อและย้อนกลับหลายครั้งบนชุดไมโครที่มีขนาดเล็กลง โดยเพิ่มการไล่ระดับสีเข้าด้วยกันในบัฟเฟอร์พารามิเตอร์ และเรียกเฉพาะขั้นตอนของเครื่องมือเพิ่มประสิทธิภาพ (และทำให้การไล่ระดับสีเป็นศูนย์) หลังจากไมโครชุด N ชุด ขนาดแบทช์ที่มีประสิทธิภาพจะกลายเป็นขนาดไมโครแบทช์คูณ N แม้ว่าหน่วยความจำสูงสุดจะเก็บการเปิดใช้งานไมโครแบทช์ได้เพียงหนึ่งชุดเท่านั้น สิ่งนี้สำคัญเนื่องจากสูตรการฝึกอบรมจำนวนมากใช้แบตช์จำนวนมากเพื่อให้ได้สถิติที่เสถียร และเนื่องจากรุ่นเช่นหม้อแปลงขนาดใหญ่ไม่สามารถใส่แบตช์เป้าหมายทั้งหมดบนอุปกรณ์เครื่องเดียวได้ สิ่งที่จับได้: สถิติการทำให้เป็นมาตรฐานแบบแบทช์จะถูกคำนวณต่อไมโครแบทช์ ดังนั้นบรรทัดฐานของเลเยอร์หรือบรรทัดฐานกลุ่มจึงจับคู่กับการสะสมได้ดีขึ้น และคุณต้องปรับขนาดการสูญเสียอย่างถูกต้องเพื่อรักษาอัตราการเรียนรู้ที่มีประสิทธิผลให้เหมาะสม
ข้อมูลเชิงลึกทางเทคนิค
เนื่องจากการไล่ระดับสีของการสูญเสียแบบรวมเป็นการบวก การสะสมการไล่ระดับสีในไมโครแบทช์ N จึงเทียบเท่าทางคณิตศาสตร์กับแบทช์ขนาดใหญ่หนึ่งชุด หากคุณหาค่าเฉลี่ยอย่างเหมาะสม โดยทั่วไปการใช้งานจะแบ่งการสูญเสียไมโครแบทช์แต่ละรายการด้วย N ก่อนย้อนกลับ ดังนั้นการไล่ระดับสีที่สะสมจะเท่ากับค่าเฉลี่ยของแบทช์ที่มีผลเต็มรูปแบบ คุณข้าม Optimizer.step() และ Zero_grad() ไปจนถึงไมโครแบทช์ N โดยแลกเวลาประมวลผลเพิ่มเติมเพื่อลดหน่วยความจำสูงสุด
ผลกระทบเชิงกลยุทธ์
ต้นทุนและงบประมาณ
การตัดสินใจด้านสถาปัตยกรรมขับเคลื่อนประสิทธิภาพและต้นทุนการดำเนินงานเป็นเวลาหลายปี
การตัดสินใจที่ชัดเจนยิ่งขึ้น
การศึกษาด้านเทคนิคช่วยให้ทีมเลือกกลุ่มที่เหมาะสม ไม่ใช่แค่กลุ่มใหม่ล่าสุด
การควบคุมคุณภาพ
ตัวเลือกทางวิศวกรรมที่ดีกว่าจะช่วยลดเหตุการณ์ด้านความน่าเชื่อถือในการผลิต
อนาคตของการสะสมไล่ระดับ
การสะสมแบบไล่ระดับจะยังคงเป็นคันโยกเริ่มต้นเนื่องจากขนาดของโมเดลมีขนาดใหญ่กว่าหน่วยความจำในอุปกรณ์เครื่องเดียว โดยผสมผสานความแม่นยำแบบผสม การตรวจสอบการเปิดใช้งาน การแบ่งส่วน ZeRO และความขนานของไปป์ไลน์ในเฟรมเวิร์ก เช่น DeepSpeed และ FSDP มากขึ้น คาดหวังระบบอัตโนมัติที่เข้มงวดยิ่งขึ้น โดยที่ไลบรารีจะปรับแต่งอัตโนมัติตามขั้นตอนในการจัดสรรงบประมาณหน่วยความจำ และยังคงมีความสำคัญอย่างต่อเนื่องในการปรับแต่งโมเดลขนาดใหญ่บนฮาร์ดแวร์ขนาดเล็ก รวมถึง GPU สำหรับผู้บริโภคซึ่งจะปลดล็อกการฝึกอบรมที่อาจเป็นไปไม่ได้
การใช้งานจริงในโลกแห่งความเป็นจริง
ปรับแต่งโมเดลภาษาขนาดใหญ่บน GPU สำหรับผู้บริโภครายเดียวโดยการสะสมไมโครแบทช์มากกว่า 8 หรือ 16 ชุดเพื่อให้ได้ชุดที่มีประสิทธิภาพหลายร้อยชุด
การฝึกอบรมโมเดลการมองเห็นหรือการแบ่งส่วนที่มีความละเอียดสูง โดยที่แม้แต่ชุด 2 ชุดก็พอดี แต่สูตรต้องใช้ชุดที่มีประสิทธิภาพ 32 ชุด
Hugging Face Trainer และ PyTorch Lightning เปิดเผยการตั้งค่าไล่ระดับ_accumulation_steps ที่ใช้เป็นประจำในการตั้งค่า VRAM แบบจำกัด
การสร้างผลลัพธ์ชุดใหญ่ของกระดาษบนฮาร์ดแวร์ขนาดเล็กโดยจับคู่ขนาดชุดงานที่มีประสิทธิภาพผ่านการสะสม
ความเสี่ยงและรั้ว
การเพิ่มประสิทธิภาพเกณฑ์มาตรฐานหนึ่งรายการสามารถซ่อนจุดอ่อนของระบบในวงกว้างได้
ต้นทุนโครงสร้างพื้นฐานและการบำรุงรักษามักถูกประเมินต่ำไป
ช่องว่างด้านความปลอดภัยและความสามารถในการสังเกตสามารถเพิ่มขึ้นได้เมื่อระบบมีความซับซ้อนมากขึ้น
แผนงานการดำเนินงาน
กำหนดเป้าหมายเวลาแฝง คุณภาพ และต้นทุนก่อนนำไปใช้งาน
เกณฑ์มาตรฐานภายใต้สภาวะโหลดและข้อมูลจริง
การตรวจสอบเครื่องมือเพื่อหาข้อผิดพลาด การเบี่ยงเบน และผลกระทบต่อผู้ใช้
เตรียมเส้นทางการย้อนกลับและการตอบสนองต่อเหตุการณ์ก่อนปรับขนาด
สำรวจต่อไป
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 Gradient Accumulation 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
คำแนะนำต่อไป
การไล่ระดับสีที่หายไปและการระเบิด
คำถามที่พบบ่อย
What is Gradient Accumulation?
การสะสมการไล่ระดับสีช่วยให้คุณจำลองขนาดแบทช์ขนาดใหญ่บนหน่วยความจำ GPU ที่จำกัด โดยการสรุปการไล่ระดับสีบนมินิแบทช์เล็กๆ หลายชุดก่อนอัปเดตน้ำหนัก ซึ่งเป็นวิธีแก้ปัญหามาตรฐานสำหรับการฝึกโมเดลขนาดใหญ่เมื่อหน่วยความจำเป็นจุดคอขวด
การสะสมแบบไล่ระดับช่วยให้คุณทำอะไรได้บ้าง
ด้วยการรวมการไล่ระดับสีบนไมโครแบทช์หลายๆ ชุดก่อนการอัปเดต คุณจะเลียนแบบชุดข้อมูลขนาดใหญ่โดยไม่ต้องเก็บทั้งหมดไว้ในหน่วยความจำในคราวเดียว
ในระหว่างการสะสม คุณจะเรียกขั้นตอนของเครื่องมือเพิ่มประสิทธิภาพและทำให้การไล่ระดับสีเป็นศูนย์เมื่อใด
คุณสะสมการไล่ระดับสีในไมโครแบทช์ N ชุด และอัปเดตเพียงครั้งเดียวเมื่อสิ้นสุดรอบ
เลเยอร์การทำให้เป็นมาตรฐานใดที่จับคู่กับการสะสมไล่ระดับสีได้สะอาดกว่า
Batch-norm คำนวณสถิติต่อไมโครแบทช์ ดังนั้นบรรทัดฐานของเลเยอร์หรือกลุ่มจะหลีกเลี่ยงไม่ตรงกันกับไมโครแบทช์ขนาดเล็ก