การฝึกความแม่นยำแบบผสม
การฝึกความแม่นยำแบบผสมจะเร่งความเร็วการฝึกโครงข่ายประสาทเทียม และลดการใช้หน่วยความจำโดยการคำนวณทางคณิตศาสตร์ส่วนใหญ่ในจุดลอยตัว 16 บิตแทนที่จะเป็น 32 บิต
ภาพรวม
It lets the same GPU train bigger models faster with almost no loss in accuracy.
เจาะลึก
การฝึกอบรมแบบดั้งเดิมจะจัดเก็บน้ำหนักและคำนวณทางคณิตศาสตร์ในรูปแบบทศนิยม 32 บิต (FP32) ความแม่นยำแบบผสมใช้รูปแบบ 16 บิตที่มีความแม่นยำต่ำกว่า (FP16 หรือ bfloat16) สำหรับการคูณเมทริกซ์จำนวนมาก ในขณะที่ยังคงรักษา 'สำเนาหลัก' ของน้ำหนัก 32 บิตไว้เพื่อการอัพเดตที่เสถียร เนื่องจากตัวเลข 16 บิตมีขนาดเล็กลงครึ่งหนึ่ง หน่วยความจำ GPU จึงมีขนาดพอดีกว่า และ Tensor Cores จะประมวลผลได้เร็วขึ้นประมาณ 2-8 เท่า สิ่งที่จับได้คือช่วงที่แคบของ FP16: การไล่ระดับสีเล็กๆ อาจไหลลงจนเหลือศูนย์ การแก้ไขมาตรฐานคือการปรับขนาดการสูญเสีย ซึ่งจะคูณการสูญเสียด้วยปัจจัยขนาดใหญ่ก่อนการแพร่กระจายกลับ เพื่อให้การไล่ระดับสีที่มีขนาดเล็กสามารถแสดงได้ จากนั้นจึงแบ่งกลับออกก่อนที่จะอัปเดตน้ำหนัก Apex ของ NVIDIA และ AMP ในตัว (Automatic Mixed Precision) ใน PyTorch และ TensorFlow จะทำให้สิ่งนี้เป็นไปโดยอัตโนมัติ
ข้อมูลเชิงลึกทางเทคนิค
FP16 มีบิตเอ็กซ์โพเนนต์เพียง 5 บิต ซึ่งให้ช่วงไดนามิกน้อยที่ทำให้เกิดการไล่ระดับสีอันเดอร์โฟลว์ Bfloat16 เก็บบิตเอ็กซ์โพเนนต์ 8 บิต (ตรงกับช่วงของ FP32) แต่มีบิต mantissa น้อยกว่า ดังนั้นจึงแทบไม่จำเป็นต้องมีการปรับขนาดการสูญเสีย — เหตุผลสำคัญ Google TPU และ GPU สมัยใหม่ชอบสิ่งนี้ Tensor Cores เร่งการทำงานโดยการคูณตัวถูกดำเนินการ 16 บิต แต่สะสมผลรวมบางส่วนใน FP32 โดยคงความแม่นยำไว้ ในกรณีที่ข้อผิดพลาดในการรวมอาจรวมกัน
ผลกระทบเชิงกลยุทธ์
ต้นทุนและงบประมาณ
การตัดสินใจด้านสถาปัตยกรรมขับเคลื่อนประสิทธิภาพและต้นทุนการดำเนินงานเป็นเวลาหลายปี
การตัดสินใจที่ชัดเจนยิ่งขึ้น
การศึกษาด้านเทคนิคช่วยให้ทีมเลือกกลุ่มที่เหมาะสม ไม่ใช่แค่กลุ่มใหม่ล่าสุด
การควบคุมคุณภาพ
ตัวเลือกทางวิศวกรรมที่ดีกว่าจะช่วยลดเหตุการณ์ด้านความน่าเชื่อถือในการผลิต
อนาคตของการฝึกอบรมแบบผสมความแม่นยำ
ความแม่นยำลดลงเรื่อยๆ การฝึกอบรม FP8 ซึ่งได้รับการสนับสนุนบน NVIDIA Hopper และ Blackwell GPU กำลังกลายเป็นมาตรฐานสำหรับโมเดลระดับแนวหน้า และการวิจัยเกี่ยวกับ FP4 และรูปแบบไมโครสเกล (MXFP) จะผลักดันต่อไป คาดหวังว่าเฟรมเวิร์กจะเลือกความแม่นยำต่อเลเยอร์โดยอัตโนมัติ ฮาร์ดแวร์เพื่อจัดการรูปแบบที่แคบลงกว่าเดิม และการฝึกอบรมที่คำนึงถึงปริมาณเพื่อลดเส้นแบ่งระหว่างการฝึกอบรมและการอนุมานที่มีความแม่นยำต่ำ ซึ่งจะช่วยลดต้นทุนของการฝึกอบรมแบบจำลองล้านล้านพารามิเตอร์
การใช้งานจริงในโลกแห่งความเป็นจริง
torch.cuda.amp.autocast ของ PyTorch ห่อลูปการฝึกอบรมเพื่อลดหน่วยความจำลงประมาณครึ่งหนึ่งและทรูพุตสองเท่าบน GPU ตัวเดียว
การฝึกอบรมโมเดลภาษาขนาดใหญ่ เช่น หม้อแปลงสไตล์ GPT ใน bfloat16 บน TPU เพื่อหลีกเลี่ยงการปรับลดการสูญเสียขนาด
ปรับขนาดแบตช์ที่ใหญ่ขึ้นบน RTX GPU สำหรับผู้บริโภคโดยเปลี่ยนการฝึกอิมเมจ ResNet จาก FP32 เป็น FP16
ความแม่นยำแบบผสม FP8 บน NVIDIA H100 GPU เพื่อลดต้นทุนในการฝึกโมเดลระดับแนวหน้าล่วงหน้า
ความเสี่ยงและรั้ว
การเพิ่มประสิทธิภาพเกณฑ์มาตรฐานหนึ่งรายการสามารถซ่อนจุดอ่อนของระบบในวงกว้างได้
ต้นทุนโครงสร้างพื้นฐานและการบำรุงรักษามักถูกประเมินต่ำไป
ช่องว่างด้านความปลอดภัยและความสามารถในการสังเกตสามารถเพิ่มขึ้นได้เมื่อระบบมีความซับซ้อนมากขึ้น
แผนงานการดำเนินงาน
กำหนดเป้าหมายเวลาแฝง คุณภาพ และต้นทุนก่อนนำไปใช้งาน
เกณฑ์มาตรฐานภายใต้สภาวะโหลดและข้อมูลจริง
การตรวจสอบเครื่องมือเพื่อหาข้อผิดพลาด การเบี่ยงเบน และผลกระทบต่อผู้ใช้
เตรียมเส้นทางการย้อนกลับและการตอบสนองต่อเหตุการณ์ก่อนปรับขนาด
สำรวจต่อไป
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 Mixed Precision Training 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 Mixed Precision Training?
การฝึกความแม่นยำแบบผสมจะเร่งความเร็วการฝึกโครงข่ายประสาทเทียม และลดการใช้หน่วยความจำโดยการคำนวณทางคณิตศาสตร์ส่วนใหญ่ในจุดลอยตัว 16 บิตแทนที่จะเป็น 32 บิต ช่วยให้ GPU เดียวกันฝึกโมเดลที่ใหญ่กว่าได้เร็วขึ้นโดยแทบไม่สูญเสียความแม่นยำเลย
เหตุใดการฝึกความแม่นยำแบบผสมจึงเก็บตุ้มน้ำหนัก 'ต้นแบบ' ไว้ 32 บิต
การอัปเดตน้ำหนักมักมีขนาดเล็กมาก การสะสมในรูปแบบ 16 บิตจะทำให้ความแม่นยำลดลง ดังนั้นสำเนาหลักที่มีความแม่นยำเต็มรูปแบบช่วยให้การอัปเดตมีความแม่นยำ
การปรับขนาดการสูญเสียแก้ปัญหาอะไรในการฝึกอบรม FP16
FP16 มีช่วงไดนามิกที่จำกัด ดังนั้นการไล่ระดับสีเล็กน้อยจึงสามารถปัดเศษให้เป็นศูนย์ได้ การคูณการสูญเสียก่อน backprop ช่วยให้สามารถแสดงได้
bfloat16 มีข้อได้เปรียบเหนือ FP16 อย่างไร
Bfloat16 เก็บบิตเลขชี้กำลัง 8 บิตเช่น FP32 ดังนั้นช่วงไดนามิกของมันจึงมีขนาดใหญ่และการไล่ระดับสีอันเดอร์โฟลว์นั้นหาได้ยาก
Tensor Cores จะรักษาความแม่นยำในขณะที่ใช้อินพุต 16 บิตได้อย่างไร
Tensor Cores คูณตัวถูกดำเนินการ 16 บิต แต่สะสมเป็น 32 บิต ป้องกันไม่ให้เกิดข้อผิดพลาดในการรวม
ประโยชน์หลักของการใช้ค่า 16 บิตแทนค่า 32 บิตระหว่างการฝึกคืออะไร
ตัวเลขขนาดครึ่งเดียวพอดีกับข้อมูลในหน่วยความจำ GPU มากขึ้นและปล่อยให้การประมวลผลทางคณิตศาสตร์ของฮาร์ดแวร์เฉพาะเร็วขึ้นหลายเท่า