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

การแลกเปลี่ยนการคำนวณการเปิดใช้งานใหม่

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

ภาพรวม

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

การแลกเปลี่ยนการคำนวณการเปิดใช้งานใหม่เป็นองค์ประกอบทางเทคนิคที่ส่งผลต่อคุณภาพของโมเดล ต้นทุนโครงสร้างพื้นฐาน เวลาแฝง และความน่าเชื่อถือในวงกว้าง

เจาะลึก

Backpropagation จำเป็นต้องมีการเปิดใช้งาน Forward-Pass เพื่อคำนวณการไล่ระดับสี ดังนั้นตามค่าเริ่มต้นแล้ว ทุกเอาต์พุตของเลเยอร์จะถูกจัดเก็บ — ค่าใช้จ่ายหน่วยความจำมหาศาลที่เพิ่มขึ้นตามขนาดโมเดล ขนาดแบตช์ และความยาวของลำดับ การคำนวณการเปิดใช้งานใหม่จะเก็บเทนเซอร์ 'จุดตรวจสอบ' เพียงไม่กี่ตัว (มักเป็นเพียงขอบเขตของเลเยอร์) และโยนส่วนที่เหลือทิ้งไป ในระหว่างการย้อนกลับ ระบบจะรันการคำนวณไปข้างหน้าระหว่างจุดตรวจสอบอีกครั้งเพื่อสร้างการเปิดใช้งานที่ถูกละทิ้งใหม่ตามความต้องการ ผลลัพธ์แบบคลาสสิกก็คือเมื่อวางจุดตรวจสอบทุกชั้น sqrt(N) หน่วยความจำจะลดลงเหลือประมาณ O(sqrt(N)) ในขณะที่เพิ่มการส่งต่อเพิ่มเติมประมาณหนึ่งรอบ (คำนวณเพิ่มขึ้น ~33%) รูปแบบที่เลือกจะคำนวณใหม่เฉพาะการดำเนินการราคาถูกแต่มีหน่วยความจำหนักมาก (เช่น ความสนใจหรือการหยุดกลางคัน) ในขณะที่แคชสิ่งที่มีราคาแพง ทำให้ประหยัดหน่วยความจำได้มากที่สุดโดยมีค่าใช้จ่ายในการคำนวณใหม่น้อยกว่ามาก

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

ข้อดีข้อเสียพื้นฐานคือหน่วยความจำกับ FLOP การคำนวณใหม่ทั้งหมดจะเพิ่มการส่งต่อเพิ่มเติมหนึ่งครั้งโดยประมาณต่อขั้นตอน (ช้ากว่าประมาณ 30-40%) แต่สามารถลดหน่วยความจำการเปิดใช้งานตามลำดับความสำคัญ การเคลื่อนไหวที่ชาญฉลาดคือจุดตรวจสอบแบบเลือกสรร: ระบุการดำเนินการที่มีหน่วยความจำขนาดใหญ่แต่มีราคาถูกในการประมวลผล (softmax, layernorm, GELU, คะแนนความสนใจ) และคำนวณใหม่เฉพาะสิ่งเหล่านั้น ในขณะเดียวกันก็เก็บผลลัพธ์ของ GEMM ที่มีราคาแพงไว้ในแคช — ช่วยลดการสูญเสียการประมวลผล

ความเชี่ยวชาญในการแลกเปลี่ยนการคำนวณการเปิดใช้งานใหม่

การคำนวณการเปิดใช้งานใหม่ (การไล่ระดับสีหรือจุดตรวจสอบการเปิดใช้งาน) จะบันทึกหน่วยความจำ GPU ในระหว่างการฝึกโดยละทิ้งการเปิดใช้งานระดับกลางในการส่งต่อ และคำนวณใหม่ในระหว่างการย้อนกลับ โดยจะแลกการประมวลผลเพิ่มเติมกับความสามารถในการฝึกฝนโมเดลขนาดใหญ่หรือลำดับที่ยาวกว่าบนฮาร์ดแวร์ตัวเดียวกัน ข้อดีข้อเสียในการคำนวณการเปิดใช้งานใหม่เป็นองค์ประกอบทางเทคนิคที่ส่งผลต่อคุณภาพของโมเดล ต้นทุนโครงสร้างพื้นฐาน เวลาแฝง และความน่าเชื่อถือในวงกว้าง เพื่อสร้างความเข้าใจอย่างลึกซึ้ง ให้ถือว่า Activation Recomputation Tradeoffs เป็นรูปแบบการดำเนินงาน ไม่ใช่คุณลักษณะเดียว: กำหนดผลลัพธ์ที่ต้องการ ชี้แจงสมมติฐาน และแยกสิ่งที่ระบบสามารถทำได้อย่างน่าเชื่อถือจากสิ่งที่ยังต้องใช้วิจารณญาณจากผู้เชี่ยวชาญ

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

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

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

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

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

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

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

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

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

อนาคตของการแลกเปลี่ยนการคำนวณการเปิดใช้งานใหม่

การคำนวณใหม่เป็นแบบอัตโนมัติและเลือกสรรมากขึ้น ตอนนี้เฟรมเวิร์กจะโปรไฟล์หน่วยความจำของแต่ละปฏิบัติการและค่าใช้จ่าย FLOP เพื่อเลือกจุดตรวจสอบที่เหมาะสมที่สุด และรวมการคำนวณใหม่เข้ากับการลดการโหลดการเปิดใช้งานไปยัง CPU/NVMe และกับกลยุทธ์การทำงานแบบขนาน เนื่องจากความยาวบริบทและขนาดโมเดลเพิ่มขึ้นเรื่อยๆ คาดว่านโยบายที่ขับเคลื่อนด้วยคอมไพลเลอร์ (ใน PyTorch, JAX/XLA) จะเลือกการตัดสินใจคำนวณใหม่ตามการดำเนินการโดยอัตโนมัติ บวกกับการทับซ้อนกันที่เข้มงวดมากขึ้นของการคำนวณใหม่กับการสื่อสาร ดังนั้น FLOP เพิ่มเติมจะถูกซ่อนไว้บางส่วน

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

การฝึกอบรมหม้อแปลงไฟฟ้าขนาดใหญ่ที่ไม่พอดีโดยการตรวจสอบแต่ละเลเยอร์บล็อก

การใช้ torch.utils.checkpoint ของ PyTorch เพื่อพันบล็อก Transformer และตัดหน่วยความจำการเปิดใช้งาน

การคำนวณความสนใจ/ซอฟต์แม็กซ์แบบเลือกสรรใน Megatron-LM เพื่อประหยัดหน่วยความจำโดยมีการชะลอตัวน้อยที่สุด

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

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

ข้อดีข้อเสียของการคำนวณการเปิดใช้งานในทางปฏิบัติ

การฝึกอบรมหม้อแปลงไฟฟ้าขนาดใหญ่ที่ไม่พอดีโดยการตรวจสอบแต่ละเลเยอร์บล็อก

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

ข้อดีข้อเสียของการคำนวณการเปิดใช้งานในทางปฏิบัติ

การใช้ torch.utils.checkpoint ของ PyTorch เพื่อพันบล็อก Transformer และตัดหน่วยความจำการเปิดใช้งาน

การใช้ torch.utils.checkpoint ของ PyTorch เพื่อพันบล็อก Transformer และลดหน่วยความจำในการเปิดใช้งาน โดยปกติแล้วทีมจะได้รับผลลัพธ์ที่ดีกว่าเมื่อพวกเขากำหนดเกณฑ์คุณภาพล่วงหน้า รักษาเส้นทางการยกระดับโดยมนุษย์สำหรับ Edge Case และติดตามทั้งประสิทธิภาพการทำงานที่เพิ่มขึ้นและต้นทุนข้อผิดพลาดเมื่อเวลาผ่านไป

ข้อดีข้อเสียของการคำนวณการเปิดใช้งานในทางปฏิบัติ

การคำนวณความสนใจ/ซอฟต์แม็กซ์แบบเลือกสรรใน Megatron-LM เพื่อประหยัดหน่วยความจำโดยมีการชะลอตัวน้อยที่สุด

การคำนวณความสนใจ/ซอฟต์แม็กซ์แบบเลือกสรรใน Megatron-LM เพื่อประหยัดหน่วยความจำโดยมีการชะลอตัวน้อยที่สุด ทีมมักจะได้รับผลลัพธ์ที่ดีกว่าเมื่อพวกเขากำหนดเกณฑ์คุณภาพล่วงหน้า รักษาเส้นทางการยกระดับโดยมนุษย์สำหรับกรณี Edge และติดตามทั้งประสิทธิภาพการทำงานที่เพิ่มขึ้นและต้นทุนข้อผิดพลาดเมื่อเวลาผ่านไป

ข้อดีข้อเสียของการคำนวณการเปิดใช้งานในทางปฏิบัติ

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

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

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

!

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

!

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

!

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

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

1

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

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

2

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

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

3

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

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

4

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

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

สำรวจต่อไป