
Quantization AI คืออะไร? บีบอัดสมองกลขนาดยักษ์ให้ใส่ในมือถือและนาฬิกาได้ อธิบายให้เด็กเข้าใจแบบจัดกระเป๋าเดินทาง
“กระเป๋าใบนี้น้ำหนักเกินแน่ๆ” ภรรยาผมพูดพลางนั่งทับฝากระเป๋าเดินทางที่ปิดไม่ลง คืนก่อนบินไปญี่ปุ่นห้าวัน สายการบินราคาประหยัดให้โหลดได้แค่ยี่สิบกิโลกรัม แต่กระเป๋าของสามคนพ่อแม่ลูกหนักเกือบยี่สิบเจ็ด
ลูกชายวัยสิบสามที่นั่งดูอยู่ เสนอวิธีแก้แบบเด็กๆ ว่าให้ทิ้งเสื้อกันหนาวของพ่อไปเลย ผมไม่เห็นด้วย แต่สุดท้ายเราก็ช่วยกันจัดใหม่ทั้งหมด ม้วนเสื้อผ้าแทนพับ ใช้ถุงสุญญากาศดูดลมออก เปลี่ยนขวดแชมพูใหญ่เป็นขวดเล็ก เอาของที่ซ้ำกันออก และใส่ของเล็กๆ ไว้ในรองเท้า กระเป๋าเหลือสิบเก้ากิโลครึ่ง ของที่จำเป็นยังอยู่ครบ
ลูกพูดขึ้นมาว่า “นี่เหมือนที่ครูคอมเล่าเรื่องทำ AI ให้เล็กลงเลย” คืนนั้นเลยกลายเป็นคืนที่เราคุยเรื่อง Model Compression กันบนพื้นห้องนอน ท่ามกลางกองเสื้อผ้า
ของที่ต้องจัดลงกระเป๋าในบทความนี้
- ทำไมโมเดล AI ถึงใหญ่นัก
- Model Compression คืออะไร
- Quantization: ลดทศนิยมจาก FP32 สู่ INT8
- ความสูงชั้นพิมพ์ 3D: ละเอียดน้อยลงแต่ยังสวย
- Pruning: ตัดกิ่งที่ไม่จำเป็น
- Knowledge Distillation: ให้ครูสอนนักเรียนตัวเล็ก
- ประหยัดแบตเตอรี่และพลังงานได้อย่างไร
- ราคาที่ต้องจ่ายเมื่อบีบอัด
ทำไมโมเดล AI ถึงใหญ่นัก
โมเดล AI ประกอบด้วยตัวเลขจำนวนมหาศาลที่เรียกว่าพารามิเตอร์ หรือน้ำหนัก ตัวเลขเหล่านี้คือสิ่งที่โมเดลเรียนรู้มา เหมือนเส้นทางเชื่อมต่อในสมอง โมเดลภาษาขนาดใหญ่มีพารามิเตอร์หลายพันล้านถึงหลายแสนล้านตัว
ในการฝึกโมเดล แต่ละพารามิเตอร์มักถูกเก็บเป็นตัวเลขทศนิยมแบบละเอียด เช่น รูปแบบ FP32 ที่ใช้พื้นที่ 32 บิต หรือ 4 ไบต์ต่อหนึ่งตัวเลข ลองคิดดู โมเดลที่มีเจ็ดพันล้านพารามิเตอร์ ถ้าเก็บแบบ FP32 จะใช้พื้นที่ราว 28 กิกะไบต์ ซึ่งใหญ่กว่าหน่วยความจำของมือถือส่วนใหญ่หลายเท่า
นี่คือเหตุผลที่ AI ส่วนใหญ่ต้องทำงานบนเซิร์ฟเวอร์ในศูนย์ข้อมูล ถ้าอยากให้มันมาอยู่ในมือถือหรือนาฬิกา เราต้องจัดกระเป๋าใหม่
Model Compression คืออะไร
Model Compression หรือการบีบอัดโมเดล คือกลุ่มเทคนิคที่ทำให้โมเดล AI มีขนาดเล็กลง ใช้หน่วยความจำน้อยลง ทำงานเร็วขึ้น และกินพลังงานน้อยลง โดยพยายามรักษาความสามารถของโมเดลไว้ให้ได้มากที่สุด
เทคนิคหลักมีสามแบบ ซึ่งตรงกับวิธีจัดกระเป๋าของบ้านเราพอดี
- Quantization ทำให้ของแต่ละชิ้นเล็กลง เหมือนเปลี่ยนขวดแชมพูใหญ่เป็นขวดเล็ก
- Pruning เอาของที่ไม่จำเป็นออก เหมือนเอาเสื้อที่ซ้ำกันออก
- Knowledge Distillation จัดกระเป๋าใบเล็กใหม่โดยดูจากกระเป๋าใบใหญ่ เลือกเฉพาะสิ่งสำคัญ
Quantization: ลดทศนิยมจาก FP32 สู่ INT8
Quantization คือการลดความละเอียดของตัวเลขที่ใช้เก็บพารามิเตอร์ในโมเดล เช่น เปลี่ยนจากตัวเลขทศนิยมแบบ 32 บิต เป็นจำนวนเต็มแบบ 8 บิต หรือ INT8 ทำให้โมเดลเล็กลงราวสี่เท่า และคำนวณได้เร็วขึ้นบนชิปที่รองรับ
ผมอธิบายให้ลูกฟังด้วยตัวอย่างง่ายๆ สมมติน้ำหนักตัวหนึ่งในโมเดลคือ 0.73829164 ถ้าเราปัดเหลือ 0.74 ตัวเลขก็ยังใกล้เคียงเดิมมาก แต่ใช้ที่เก็บน้อยลงเยอะ เมื่อทำแบบนี้กับตัวเลขหลายพันล้านตัว ขนาดโมเดลก็ลดลงมหาศาล
- FP32 ละเอียดมาก ใช้ 32 บิตต่อตัวเลข
- FP16 ละเอียดน้อยลงครึ่งหนึ่ง เล็กลงสองเท่า
- INT8 เล็กลงราวสี่เท่าจาก FP32
- INT4 เล็กลงราวแปดเท่า นิยมใช้กับโมเดลภาษาที่รันบนคอมพิวเตอร์ส่วนตัว
โมเดลเจ็ดพันล้านพารามิเตอร์ที่เคยใหญ่ 28 กิกะไบต์ เมื่อบีบเป็น INT4 จะเหลือราวสี่กิกะไบต์ ใส่ในคอมพิวเตอร์หรือมือถือรุ่นใหม่ได้แล้ว
ความสูงชั้นพิมพ์ 3D: ละเอียดน้อยลงแต่ยังสวย
เวลาสั่งพิมพ์งาน 3 มิติ มีค่าหนึ่งที่ผมต้องเลือกทุกครั้ง คือความสูงของแต่ละชั้น หรือ Layer Height ถ้าตั้งไว้ 0.1 มิลลิเมตร ผิวงานจะเนียนละเอียดมาก แต่ใช้เวลาพิมพ์นานหลายชั่วโมง ถ้าตั้งไว้ 0.2 หรือ 0.3 มิลลิเมตร งานจะเสร็จเร็วกว่าสองสามเท่า แต่ถ้ามองใกล้ๆ จะเห็นเส้นชั้นชัดขึ้นเล็กน้อย
ผมพิมพ์ตัวหมากรุกให้ลูกดูสองตัว ตัวหนึ่ง 0.1 อีกตัว 0.28 แล้วถามว่าต่างกันไหม ลูกต้องยกขึ้นมาส่องใกล้ๆ ถึงจะเห็นความต่าง สำหรับตัวหมากที่ใช้เล่นจริง แบบ 0.28 ดีพอทุกประการ และพิมพ์เสร็จในหนึ่งในสามของเวลา
Quantization ก็คือการเลือกความสูงชั้นพิมพ์ให้โมเดล AI ลดความละเอียดลงในจุดที่คนแทบไม่รู้สึก แลกกับความเร็วและขนาดที่เล็กลงมาก แต่ถ้าลดมากเกินไป เช่น ตั้งชั้นหนาเกินขนาดหัวพิมพ์ งานก็จะพัง เหมือนโมเดลที่บีบจนตอบผิดเพี้ยน
Pruning: ตัดกิ่งที่ไม่จำเป็น
นักวิจัยค้นพบว่า ในโครงข่ายประสาทเทียมขนาดใหญ่ มีการเชื่อมต่อจำนวนมากที่แทบไม่มีผลต่อคำตอบ ค่าน้ำหนักเกือบเป็นศูนย์ Pruning คือการตัดการเชื่อมต่อเหล่านั้นทิ้ง เหมือนชาวสวนที่ตัดกิ่งที่ไม่ออกผล ให้ต้นไม้เอาพลังไปเลี้ยงกิ่งที่สำคัญ
งานวิจัยชื่อ Deep Compression ที่เผยแพร่ในช่วงปี 2015 ถึง 2016 แสดงให้เห็นว่า เมื่อใช้ Pruning ร่วมกับ Quantization และเทคนิคบีบอัดอื่น โมเดลจดจำภาพที่มีชื่อเสียงในยุคนั้นมีขนาดเล็กลงหลายสิบเท่า โดยความแม่นยำแทบไม่ลดลง
Knowledge Distillation: ให้ครูสอนนักเรียนตัวเล็ก
เทคนิคที่สามคือให้โมเดลใหญ่ที่เก่งเป็นครู แล้วฝึกโมเดลเล็กให้เลียนแบบคำตอบของครู โมเดลเล็กไม่ได้แค่เรียนว่าคำตอบที่ถูกคืออะไร แต่เรียนรู้ว่าครูมั่นใจกับแต่ละคำตอบแค่ไหน ทำให้เรียนได้มีประสิทธิภาพกว่าการเรียนจากข้อมูลดิบอย่างเดียว
เหมือนตอนที่ภรรยาผมจัดกระเป๋าใบเล็กสำหรับวันเดินเที่ยว โดยดูจากกระเป๋าใบใหญ่ว่าอะไรคือของที่ใช้บ่อยที่สุด แล้วหยิบมาเฉพาะสิ่งนั้น
ประหยัดแบตเตอรี่และพลังงานได้อย่างไร
- ย้ายข้อมูลน้อยลง การดึงข้อมูลจากหน่วยความจำเป็นสิ่งที่กินพลังงานมาก ตัวเลขที่เล็กลงแปลว่าย้ายข้อมูลน้อยลง
- คำนวณง่ายขึ้น การคำนวณจำนวนเต็มใช้พลังงานน้อยกว่าทศนิยมละเอียด
- ชิปเฉพาะทาง มือถือรุ่นใหม่มีชิปประมวลผล AI ที่ออกแบบมาให้คำนวณตัวเลขความละเอียดต่ำได้เร็วและประหยัดไฟ
- ไม่ต้องส่งข้อมูลขึ้นคลาวด์ ประหยัดพลังงานของการส่งข้อมูลผ่านเครือข่าย
นี่คือเหตุผลที่นาฬิกาอัจฉริยะทุกวันนี้ตรวจจับการหกล้ม จับคำสั่งเสียง หรือวิเคราะห์การนอนได้ในตัวเครื่อง โดยแบตยังอยู่ได้ทั้งวัน วงการนี้มีชื่อเรียกว่า TinyML หรือ AI บนอุปกรณ์ขนาดจิ๋ว
ราคาที่ต้องจ่ายเมื่อบีบอัด
- ความแม่นยำลดลงบ้าง โดยเฉพาะเมื่อบีบมากๆ หรือกับงานที่ต้องคิดละเอียด
- บางงานไวต่อการบีบอัดมากกว่า เช่น คณิตศาสตร์หลายขั้นตอน หรือภาษาที่มีข้อมูลฝึกน้อย
- ต้องทดสอบทุกครั้ง ไม่มีสูตรเดียวที่ใช้ได้กับทุกโมเดล
เหมือนกระเป๋าที่จัดแน่นเกินไป สุดท้ายอาจลืมอะไรสำคัญไว้ บ้านเราเกือบลืมยาประจำตัวของคุณย่าเพราะมัวแต่ลดน้ำหนักกระเป๋า โชคดีที่ลูกเช็กรายการซ้ำก่อนออกจากบ้าน
สรุปเทคนิคจัดกระเป๋า AI
- โมเดล AI ใหญ่เพราะมีพารามิเตอร์มหาศาลที่เก็บเป็นตัวเลขละเอียด
- Quantization ลดความละเอียดของตัวเลข เช่น FP32 เป็น INT8 เล็กลงราวสี่เท่า
- Pruning ตัดการเชื่อมต่อที่ไม่สำคัญออก
- Knowledge Distillation ให้โมเดลใหญ่สอนโมเดลเล็ก
- ผลลัพธ์คือ AI ที่เล็ก เร็ว ประหยัดไฟ และทำงานบนมือถือหรือนาฬิกาได้
- แลกกับความแม่นยำที่อาจลดลงบ้าง จึงต้องทดสอบเสมอ
คำถามชวนลูกคิดระหว่างจัดกระเป๋า
- ถ้าต้องตัดของออกจากกระเป๋าหนึ่งชิ้น หนูจะเลือกตัดอะไร และรู้ได้ยังไงว่าไม่จำเป็น
- ทำไมการปัดตัวเลขทศนิยมถึงยังทำให้ AI ตอบได้ดีอยู่
- ถ้า AI ในนาฬิกาตอบผิดบ้าง แต่ทำงานได้โดยไม่ต้องใช้เน็ต หนูคิดว่าคุ้มไหม
- มีอะไรอีกในชีวิตประจำวันที่เราลดความละเอียดลงเพื่อแลกกับความสะดวก
สิบเก้ากิโลครึ่งที่ครบทุกอย่าง
เราไปญี่ปุ่นกันห้าวันโดยไม่ต้องจ่ายค่าน้ำหนักเกิน ไม่มีใครขาดเสื้อกันหนาว และลูกชายใช้แอปแปลภาษาแบบออฟไลน์ในมือถือ ซึ่งทำงานด้วยโมเดลที่ถูกบีบอัดมาแล้ว คุยกับคุณลุงขายเกาลัดคั่วข้างทางได้สำเร็จ
ตอนรอขึ้นเครื่องกลับบ้าน เขาบอกผมว่า “AI ในมือถือหนูก็เป็นกระเป๋าที่จัดเก่งๆ นี่แหละ ของไม่ครบเท่าบ้าน แต่มีสิ่งที่ต้องใช้” บางครั้งการเข้าใจเทคโนโลยีที่ซับซ้อนที่สุด ก็เริ่มจากกระเป๋าเดินทางที่ปิดไม่ลงใบเดียว
ทริปครอบครัวครั้งหน้า ลองให้ลูกเป็นคนจัดกระเป๋าให้น้ำหนักพอดีดูครับ แล้วชวนคุยว่าเขาเลือกตัดอะไรออกเพราะอะไร คุณอาจได้นักบีบอัดโมเดลตัวน้อยมาโดยไม่รู้ตัว