ความแตกต่างที่สำคัญระหว่าง FP16 (จุดลอยตัว 16 บิต) และ INT8 (จำนวนเต็ม 8 บิต) สำหรับโมเดล Deepseek ส่วนใหญ่หมุนรอบความแม่นยำช่วงไดนามิกและประสิทธิภาพการคำนวณ
ความแม่นยำ
FP16 โดยทั่วไปให้ความแม่นยำสูงกว่าเมื่อเทียบกับ INT8 สิ่งนี้มีความสำคัญอย่างยิ่งสำหรับแบบจำลองที่ต้องการการคำนวณที่แม่นยำเนื่องจาก FP16 สามารถแสดงถึงช่วงของค่าที่กว้างขึ้นและความแตกต่างที่ดีขึ้นระหว่างพวกเขาเนื่องจากธรรมชาติของจุดลอยตัว ในทางตรงกันข้ามความแม่นยำที่ต่ำกว่าของ INT8 สามารถนำไปสู่ข้อผิดพลาดเชิงปริมาณมากขึ้นโดยเฉพาะอย่างยิ่งในสถานการณ์ที่พารามิเตอร์หรือการเปิดใช้งานแบบจำลองมีค่าที่เกินช่วงที่ จำกัด ของจำนวนเต็ม 8 บิตที่เซ็นชื่อซึ่งครอบคลุมตั้งแต่ -128 ถึง 127 [1] [4]ช่วงไดนามิก
ช่วงไดนามิกของ FP16 นั้นกว้างกว่า Int8 อย่างมาก FP16 สามารถแสดงค่าผ่านสเปกตรัมที่มีขนาดใหญ่กว่ามากเพราะมันจัดสรรบิตสำหรับทั้งเลขชี้กำลังและ Mantissa ทำให้สามารถจัดการกับจำนวนที่เล็กมากและมีขนาดใหญ่มากได้อย่างมีประสิทธิภาพ ในการเปรียบเทียบช่วงคงที่ของ INT8 จำกัด การบังคับใช้โดยเฉพาะอย่างยิ่งในแบบจำลองที่ซับซ้อนซึ่งค่าเอาต์พุตอาจแตกต่างกันอย่างกว้างขวาง [2] [3] ตัวอย่างเช่นในขณะที่ INT8 มีช่วงไดนามิกของ $$ 2^8 $$, FP16 สามารถแสดงค่าในช่วงที่ช่วยให้การแสดงข้อมูลที่เหมาะสมยิ่งขึ้นได้อย่างมีประสิทธิภาพมากขึ้น [2]ประสิทธิภาพการคำนวณ
INT8 ได้รับการปรับให้เหมาะสมสำหรับประสิทธิภาพการคำนวณโดยเฉพาะอย่างยิ่งในงานการอนุมานบนอุปกรณ์ขอบ การใช้เลขคณิตจำนวนเต็มมักจะต้องใช้พลังงานน้อยลงและสามารถนำไปสู่การคำนวณได้เร็วขึ้นเมื่อเทียบกับการดำเนินการลอย ประสิทธิภาพนี้มีความสำคัญสำหรับการปรับใช้แบบจำลองในแอปพลิเคชันแบบเรียลไทม์ซึ่งการใช้เวลาแฝงและการใช้พลังงานเป็นปัจจัยสำคัญ [1] [4] ยิ่งไปกว่านั้นการหาปริมาณ INT8 ช่วยให้การลดการใช้หน่วยความจำลดลงอย่างมีนัยสำคัญซึ่งสามารถเพิ่มประสิทธิภาพให้กับอุปกรณ์ที่มีทรัพยากรที่ จำกัด [3] [5]โดยสรุปในขณะที่ FP16 มีความแม่นยำที่เหนือกว่าและช่วงไดนามิกที่เหมาะสมสำหรับการฝึกอบรมและการอนุมานของโมเดลที่ซับซ้อน Int8 มีประสิทธิภาพในการดำเนินงานและความเร็วทำให้ดีขึ้นสำหรับการปรับใช้ในสภาพแวดล้อมที่มีทรัพยากร ตัวเลือกระหว่างความแม่นยำเหล่านี้มักขึ้นอยู่กับข้อกำหนดเฉพาะของแอปพลิเคชันเช่นความต้องการความแม่นยำเมื่อเทียบกับความต้องการความเร็วและประสิทธิภาพ
การอ้างอิง:[1] https://arxiv.org/pdf/2303.17951.pdf
[2] https://www.baseten.co/blog/fp8-efficient-model-inference-with-8-bit-bit-floating-point-numbers/
[3] https://itsabout.ai/understanding-data-ypes-in-ai-and-hpc-int8-fp8-fp16-bf16-bf32-fp32-tf32-fp64-and-hardware-celerators/
[4] https://massedCompute.com/faq-answers/?question=wate+are+The+Differences+between+int8+and+FP16+Precision+In+terms+of+accuracy+and+Speed%3F
[5] https://www.baseten.co/blog/introduction-to-quantizing-ml-models/
[6] https://www.reddit.com/r/machinelearning/comments/114fgo8/d_is_fp16_used_in_deep_learning_or_fp32/
[7] https://forums.developer.nvidia.com/t/same-inference-speed-for-int8-and-fp16/66971
[8] https://forums.developer.nvidia.com/t/int8-vs-fp16-results/158139