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

จุดตรวจไล่ระดับ

จุดตรวจสอบการไล่ระดับสี (หรือที่เรียกว่าจุดตรวจสอบการเปิดใช้งาน) เป็นเคล็ดลับที่ช่วยประหยัดหน่วยความจำซึ่งจะทิ้งการเปิดใช้งานระดับกลางส่วนใหญ่ออกไปในระหว่างการส่งต่อ และคำนวณใหม่ทันทีในระหว่างการเผยแพร่กลับ

อ่าน 2 นาทีอัปเดตล่าสุด

ภาพรวม

It lets you train deeper, larger networks by trading extra compute for much lower memory use.

เจาะลึก

โดยปกติแล้วโครงข่ายประสาทเทียมสำหรับการฝึกอบรมจะจัดเก็บการเปิดใช้งานของทุกเลเยอร์ในระหว่างการส่งต่อ เนื่องจากการขยายพันธุ์แบบย้อนกลับจำเป็นต้องเปิดใช้งานเพื่อคำนวณการไล่ระดับสี สำหรับโมเดลเชิงลึก การเปิดใช้งานเหล่านี้จะควบคุมหน่วยความจำ การไล่ระดับจุดตรวจสอบจะบันทึกการเปิดใช้งานเฉพาะที่ชุด 'จุดตรวจ' ที่กระจัดกระจายและละทิ้งส่วนที่เหลือ เมื่อ backprop ไปถึงภูมิภาคที่การเปิดใช้งานถูกยกเลิก ระบบจะรันการคำนวณล่วงหน้าอีกครั้งสำหรับเซ็กเมนต์นั้นเพื่อสร้างสิ่งที่ต้องการใหม่ จากนั้นจึงดำเนินการต่อ ด้วยจุดตรวจสอบที่วางอยู่ทุกๆ เลเยอร์สแควร์รูทของ N หน่วยความจำสำหรับการเปิดใช้งานจะลดลงจากลำดับ N ไปเป็นลำดับสแควร์รูทของ N ในขณะที่การคำนวณเพิ่มขึ้นเพียงการส่งต่อพิเศษเพียงครั้งเดียวเท่านั้น (ช้ากว่าประมาณ 20-30%) ทำให้สามารถติดตั้งขนาดแบตช์ที่ใหญ่ขึ้นหรือหม้อแปลงที่ลึกกว่าบน GPU เดียวกันได้

ข้อมูลเชิงลึกทางเทคนิค

เทคนิคนี้ใช้ประโยชน์จากการแลกเปลี่ยนระหว่างเวลากับหน่วยความจำ การจัดเก็บการเปิดใช้งานทั้งหมดทำได้รวดเร็วแต่ต้องใช้หน่วยความจำมาก การคำนวณใหม่นั้นมีราคาถูกสำหรับตัวเร่งความเร็วสมัยใหม่เมื่อเทียบกับต้นทุนหน่วยความจำไม่เพียงพอ เฟรมเวิร์กเช่น PyTorch (torch.utils.checkpoint) ล้อมรอบโมดูล ดังนั้นเอาท์พุตการส่งต่อจะถูกบันทึก แต่ภายในจะถูกคำนวณใหม่ในระหว่างการย้อนกลับ การเลือกตำแหน่งจุดตรวจสอบมีความสำคัญ: ระยะห่างที่เท่ากันของเซ็กเมนต์ sqrt(N) โดยประมาณจะลดขนาดหน่วยความจำทั้งหมดให้เหลือน้อยที่สุด ในขณะเดียวกันก็เพิ่มการส่งต่อพิเศษเพียงครั้งเดียวในการคำนวณโดยรวม

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

ต้นทุนและงบประมาณ

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

การตัดสินใจที่ชัดเจนยิ่งขึ้น

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

การควบคุมคุณภาพ

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

อนาคตของการไล่ระดับจุดตรวจสอบ

ขณะนี้จุดตรวจสอบการไล่ระดับสีกลายเป็นมาตรฐานในการฝึกอบรมโมเดลขนาดใหญ่และเป็นอัตโนมัติมากขึ้น โดยห้องสมุดจะเลือกตำแหน่งจุดตรวจสอบที่เหมาะสมที่สุดสำหรับคุณ โดยจับคู่กับ FSDP ความแม่นยำแบบผสม และการออฟโหลดอย่างเป็นธรรมชาติเพื่อดันขนาดโมเดลให้สูงขึ้น คาดว่าจะมีจุดตรวจสอบ 'แบบเลือกสรร' ที่คำนวณใหม่เฉพาะการดำเนินการราคาถูก ในขณะเดียวกันก็เก็บแคชการดำเนินการราคาแพง (เช่น เมทริกซ์ความสนใจ) ไว้ด้วย บวกกับแนวทางที่ขับเคลื่อนด้วยคอมไพเลอร์ในเครื่องมือ เช่น torch.compile ของ PyTorch ซึ่งจะตัดสินใจโดยอัตโนมัติว่าจะบันทึกอะไรและคำนวณใหม่เพื่อให้ได้ความสมดุลของหน่วยความจำความเร็วที่ดีที่สุด

การใช้งานจริงในโลกแห่งความเป็นจริง

การฝึกอบรมหม้อแปลงไฟฟ้าแบบลึกที่มีขนาดแบทช์ที่ใหญ่กว่าบน GPU ตัวเดียวโดยการละทิ้งและคำนวณการเปิดใช้งานเลเยอร์ใหม่

การปรับแต่งโมเดลการมองเห็นอย่างละเอียดบนภาพที่มีความละเอียดสูง ซึ่งแผนที่การเปิดใช้งานอาจล้นหน่วยความจำ GPU

Hugging Face Transformers เปิดใช้งานการไล่ระดับสี=True เพื่อให้พอดีกับโมเดลพันล้านพารามิเตอร์ในระหว่างการปรับแต่งแบบละเอียด

การรวมจุดตรวจสอบกับ FSDP เพื่อให้ทั้งพารามิเตอร์และการเปิดใช้งานมีขนาดเล็ก ทำให้สามารถฝึกอบรมโมเดลภาษาที่มีขนาดใหญ่มากได้

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

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

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

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

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

1

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

2

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

3

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

4

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

สำรวจต่อไป

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 Checkpointing 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 Checkpointing?

จุดตรวจสอบการไล่ระดับสี (หรือที่เรียกว่าจุดตรวจสอบการเปิดใช้งาน) เป็นเคล็ดลับที่ช่วยประหยัดหน่วยความจำซึ่งจะทิ้งการเปิดใช้งานระดับกลางส่วนใหญ่ออกไปในระหว่างการส่งต่อ และคำนวณใหม่ทันทีในระหว่างการเผยแพร่กลับ ช่วยให้คุณสามารถฝึกฝนเครือข่ายที่ใหญ่ขึ้นและลึกยิ่งขึ้นโดยการแลกเปลี่ยนการประมวลผลเพิ่มเติมเพื่อการใช้หน่วยความจำที่ต่ำกว่ามาก

จุดตรวจสอบการไล่ระดับสีมีการแลกเปลี่ยนอะไรเป็นหลักเพื่อประหยัดหน่วยความจำ

จุดตรวจไล่ระดับจะคำนวณการเปิดใช้งานที่ถูกทิ้งไปใหม่ในระหว่างการย้อนกลับ โดยใช้การคำนวณเพิ่มเติมเพื่อแลกกับหน่วยความจำที่ลดลงอย่างมาก

เหตุใดการเปิดใช้งานปกติจึงถูกจัดเก็บไว้ระหว่างการส่งต่อ?

Backprop คำนวณการไล่ระดับสีโดยใช้การเปิดใช้งานระดับกลางจากการส่งต่อ ดังนั้นจึงต้องพร้อมใช้งานเว้นแต่จะมีการคำนวณใหม่

หน่วยความจำการเปิดใช้งานจะปรับขนาดโดยประมาณอย่างไรหากจุดตรวจสอบถูกวางทุกเลเยอร์ sqrt(N) ในเครือข่าย N-layer

การเว้นระยะห่างจุดตรวจเกี่ยวกับทุก ๆ เลเยอร์สแควร์รูทของ N จะช่วยลดหน่วยความจำการเปิดใช้งานที่เก็บไว้จากลำดับ N ลงไปจนถึงลำดับ sqrt(N)

โดยทั่วไปแล้วจุดตรวจสอบการไล่ระดับสีที่วางไว้อย่างดีจะเพิ่มการคำนวณพิเศษเท่าใด

ด้วยการวางจุดตรวจที่ดี โอเวอร์เฮดคือการจ่ายบอลไปข้างหน้าเพิ่มเติมโดยประมาณเพียงครั้งเดียว ซึ่งมักจะชะลอตัวประมาณ 20-30%

ใน PyTorch ยูทิลิตี้ใดที่มักใช้เพื่อใช้จุดตรวจสอบการไล่ระดับสีกับโมดูล

torch.utils.checkpoint ล้อมรอบโมดูล ดังนั้นการเปิดใช้งานภายในจะถูกคำนวณใหม่ในระหว่างการย้อนกลับแทนที่จะถูกเก็บไว้