อ่าน 4 นาที
การบีบอัดโมเดล
การบีบอัดโมเดล เป็น เทคนิค การเรียนรู้ของเครื่อง เพื่อลดขนาดของโมเดลที่ได้รับการฝึกฝน โมเดลขนาดใหญ่สามารถบรรลุความแม่นยำสูง แต่บ่อยครั้งต้องแลกมาด้วยความต้องการทรัพยากรจำนวนมาก...
การบีบอัดโมเดล
การบีบอัดโมเดลเป็น เทคนิค การเรียนรู้ของเครื่องเพื่อลดขนาดของโมเดลที่ได้รับการฝึกฝน โมเดลขนาดใหญ่สามารถบรรลุความแม่นยำสูง แต่บ่อยครั้งต้องแลกมาด้วยความต้องการทรัพยากรจำนวนมาก เทคนิคการบีบอัดมีเป้าหมายเพื่อบีบอัดโมเดลโดยไม่ลดประสิทธิภาพอย่างมีนัยสำคัญ โมเดลขนาดเล็กต้องการพื้นที่จัดเก็บน้อยลง และใช้หน่วยความจำและการคำนวณน้อยลงในระหว่างการอนุมาน[ 1 ]
โมเดลที่บีบอัดช่วยให้สามารถใช้งานบนอุปกรณ์ที่มีทรัพยากรจำกัด เช่นสมาร์ทโฟนระบบฝังตัว อุปกรณ์ ประมวลผลแบบเอดจ์และ คอมพิวเตอร์ อิเล็กทรอนิกส์สำหรับผู้บริโภคการอนุมานที่มีประสิทธิภาพยังเป็นประโยชน์สำหรับองค์กรขนาดใหญ่ที่ให้บริการการอนุมานโมเดลขนาดใหญ่ผ่าน API ซึ่งช่วยให้พวกเขาสามารถลดต้นทุนการคำนวณและปรับปรุงเวลาตอบสนองสำหรับผู้ใช้[ 2 ]
การบีบอัดโมเดลไม่ควรสับสนกับการกลั่นความรู้ซึ่งโมเดล "นักเรียน" ขนาดเล็กกว่าจะถูกฝึกฝนให้เลียนแบบพฤติกรรมอินพุต-เอาต์พุตของโมเดล "ครู" ขนาดใหญ่กว่า (ตรงข้ามกับการใช้พารามิเตอร์ที่ฝึกฝนของ "ครู" หรือเป้าหมายการฝึกฝนของ "ครู") [ 3 ]
เทคนิค
มีการใช้เทคนิคหลายอย่างในการบีบอัดโมเดล
การตัดแต่งกิ่ง
การตัดแต่งกิ่งทำให้โมเดลขนาดใหญ่มีความเบาบางลงโดยการตั้งค่าพารามิเตอร์บางตัวให้เป็นศูนย์อย่างแม่นยำ ซึ่งจะช่วยลดจำนวนพารามิเตอร์ลงได้อย่างมีประสิทธิภาพ ทำให้สามารถใช้การดำเนินการเมทริกซ์แบบเบาบางได้ซึ่งเร็วกว่าการดำเนินการเมทริกซ์แบบหนาแน่น[ 4 ]
เกณฑ์การตัดแต่งกิ่งสามารถอิงตามขนาดของพารามิเตอร์ รูปแบบทางสถิติของการกระตุ้นประสาทค่าเฮสเซียนฯลฯ[ 5 ] [ 6 ]
การหาปริมาณ
การควอนไทเซชันช่วยลดความแม่นยำเชิงตัวเลขของน้ำหนักและการเปิดใช้งาน ตัวอย่างเช่น แทนที่จะจัดเก็บน้ำหนักเป็น ตัวเลข จุดลอยตัว 32 บิต ก็สามารถแสดงได้โดยใช้จำนวนเต็ม 8 บิต พารามิเตอร์ที่มีความแม่นยำต่ำใช้พื้นที่น้อยกว่า และใช้การคำนวณน้อยกว่าในการคำนวณทางคณิตศาสตร์[ 7 ]
นอกจากนี้ยังสามารถกำหนดค่าพารามิเตอร์บางตัวให้เข้มงวดกว่าตัวอื่นได้ เช่น พารามิเตอร์ที่มีความสำคัญน้อยกว่าอาจมีความแม่นยำ 8 บิต ในขณะที่พารามิเตอร์ที่สำคัญกว่าอาจมีความแม่นยำ 16 บิต การอนุมานด้วยโมเดลดังกล่าวต้องใช้การคำนวณเลขคณิตแบบความแม่นยำผสม[ 8 ] [ 9 ]
โมเดลควอนไทซ์สามารถใช้ระหว่างการฝึกอบรมได้เช่นกัน (แทนที่จะใช้หลังจากฝึกอบรม) PyTorchใช้การจำลองความแม่นยำแบบผสมอัตโนมัติ (AMP) ซึ่งทำการแปลงอัตโนมัติ การปรับขนาดเกรเดียนต์ และการปรับขนาดการสูญเสีย[ 10 ] [ 11 ]
การแยกตัวประกอบลำดับต่ำ
เมทริกซ์น้ำหนักสามารถประมาณได้ด้วย เมทริกซ์ที่ มีอันดับ ต่ำ ให้เป็นเมทริกซ์น้ำหนักที่มีรูปร่างการประมาณด้วยเมทริกซ์ที่มีอันดับต่ำคือโดยที่และเป็นเมทริกซ์ที่มีรูปร่างเมื่อมีค่าเล็ก วิธีนี้ช่วยลดจำนวนพารามิเตอร์ที่จำเป็นในการแสดงค่าโดยประมาณ และยังช่วยเร่งความเร็วในการคูณเมทริกซ์ด้วย
สามารถค้นหาการประมาณค่าอันดับต่ำได้โดยการแยกส่วนค่าเอกลักษณ์ (SVD) การเลือกอันดับสำหรับเมทริกซ์น้ำหนักแต่ละเมทริกซ์เป็นพารามิเตอร์เสริม และปรับให้เหมาะสมร่วมกันเป็นปัญหาการปรับให้เหมาะสมแบบผสมผสานระหว่างแบบไม่ต่อเนื่องและแบบต่อเนื่อง[ 12 ]อันดับของเมทริกซ์น้ำหนักอาจถูกตัดแต่งหลังจากการฝึกอบรม โดยคำนึงถึงผลกระทบของฟังก์ชันการกระตุ้น เช่นReLUต่ออันดับโดยนัยของเมทริกซ์น้ำหนัก[ 13 ]
การฝึกอบรม
การบีบอัดโมเดลอาจแยกออกจากการฝึกฝน กล่าวคือ โมเดลจะถูกฝึกฝนก่อนโดยไม่คำนึงถึงวิธีการบีบอัด จากนั้นจึงทำการบีบอัด อย่างไรก็ตาม การบีบอัดอาจรวมเข้ากับการฝึกฝนได้เช่นกัน
วิธี "ฝึกโมเดลขนาดใหญ่แล้วค่อยบีบอัด" จะฝึกโมเดลขนาดใหญ่ด้วยจำนวนขั้นตอนการฝึกเพียงเล็กน้อย (น้อยกว่าจำนวนขั้นตอนการฝึกจนกว่าจะบรรลุการบรรจบกัน) จากนั้นจึงบีบอัดโมเดลอย่างมาก พบว่าด้วยงบประมาณการคำนวณที่เท่ากัน วิธีนี้ส่งผลให้ได้โมเดลที่ดีกว่าโมเดลขนาดเล็กที่บีบอัดเพียงเล็กน้อย[ 14 ]
ในการบีบอัดแบบลึก[ 15 ]การบีบอัดมีสามขั้นตอน
- รอบแรก (การตัดแต่ง): ตัดแต่งน้ำหนักทั้งหมดที่ต่ำกว่าเกณฑ์ที่กำหนด จากนั้นปรับแต่งเครือข่ายให้เหมาะสม แล้วตัดแต่งอีกครั้ง ทำเช่นนี้ไปเรื่อยๆ
- รอบที่สอง (การหาปริมาณ): จัดกลุ่มน้ำหนัก จากนั้นบังคับให้มีการแชร์น้ำหนักระหว่างน้ำหนักทั้งหมดในแต่ละกลุ่ม จากนั้นปรับแต่งเครือข่ายให้เหมาะสม แล้วจัดกลุ่มอีกครั้ง เป็นต้น
- ขั้นตอนที่สาม: ใช้การเข้ารหัส Huffmanเพื่อบีบอัดโมเดลโดยไม่สูญเสียข้อมูล
เอกสารSqueezeNetรายงานว่า Deep Compression บรรลุอัตราส่วนการบีบอัดที่ 35 บน AlexNet และอัตราส่วนประมาณ 10 บน SqueezeNets [ 16 ]
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ การบีบอัดโมเดล
การบีบอัดโมเดล เป็น เทคนิค การเรียนรู้ของเครื่อง เพื่อลดขนาดของโมเดลที่ได้รับการฝึกฝน โมเดลขนาดใหญ่สามารถบรรลุความแม่นยำสูง แต่บ่อยครั้งต้องแลกมาด้วยความต้องการทรัพยากรจำนวนมาก...
การตัดแต่งกิ่ง
การตัดแต่งกิ่งทำให้โมเดลขนาดใหญ่มีความเบาบางลงโดยการตั้งค่าพารามิเตอร์บางตัวให้เป็นศูนย์อย่างแม่นยำ ซึ่งจะช่วยลดจำนวนพารามิเตอร์ลงได้อย่างมีประสิทธิภาพ ทำให้สามารถใช้ การดำเนินการเมทริกซ์แบบเบาบางได้ ซึ่งเร็วกว่าการดำเนินการเมทริกซ์แบบหนาแน่น [ 4 ]
การหาปริมาณ
การควอนไทเซชันช่วยลดความแม่นยำเชิงตัวเลขของน้ำหนักและการเปิดใช้งาน ตัวอย่างเช่น แทนที่จะจัดเก็บน้ำหนักเป็น ตัวเลข จุดลอยตัว 32 บิต ก็สามารถแสดงได้โดยใช้จำนวนเต็ม 8 บิต พารามิเตอร์ที่มีความแม่นยำต่ำใช้พื้นที่น้อยกว่า...
การแยกตัวประกอบลำดับต่ำ
เมทริกซ์น้ำหนักสามารถประมาณได้ด้วย เมทริกซ์ที่ มีอันดับ ต่ำ ให้เป็นเมทริกซ์น้ำหนักที่มีรูปร่างการประมาณด้วยเมทริกซ์ที่มีอันดับต่ำคือโดยที่และเป็นเมทริกซ์ที่มีรูปร่างเมื่อมีค่าเล็ก วิธีนี้ช่วยลดจำนวนพารามิเตอร์ที่จำเป็นในการแสดงค่าโดยประมาณ...