โมเดลและแพลตฟอร์ม AI
EfficientViT: วิชันทรานส์ฟอร์เมอร์ที่ใช้หน่วยความจำอย่างมีประสิทธิภาพสำหรับคอมพิวเตอร์วิทัศน์ความละเอียดสูง

เนื่องจากมีความสามารถในการสร้างแบบจำลองที่สูง วิชันทรานส์ฟอร์เมอร์ได้รับความนิยมอย่างมากในช่วงไม่กี่ปีที่ผ่านมา แม้ว่าจะมีประสิทธิภาพ แต่แบบจำลองวิชันทรานส์ฟอร์เมอร์มีข้อบกพร่องหลักๆ หนึ่งข้อ คือ ความสามารถในการคำนวณที่น่าประทับใจของมาพร้อมต้นทุนการคำนวณที่สูง และเป็นเหตุผลที่ว่าทำไมวิชันทรานส์ฟอร์เมอร์จึงไม่ใช่ตัวเลือกแรกสำหรับการใช้งานแบบเรียลไทม์ เพื่อแก้ไขปัญหานี้ กลุ่มของนักพัฒนาจึงเปิดตัว EfficientViT ซึ่งเป็นกลุ่มของวิชันทรานส์ฟอร์เมอร์ที่มีความเร็วสูง
เมื่อทำงานกับ EfficientViT นักพัฒนาสังเกตเห็นว่าความเร็วของแบบจำลองทรานส์ฟอร์เมอร์ปัจจุบันมักถูกจำกัดโดยการดำเนินการทางหน่วยความจำที่ไม่มีประสิทธิภาพ โดยเฉพาะฟังก์ชันแบบ element-wise และการเปลี่ยนรูปเทนเซอร์ใน MHSA หรือเครือข่ายเซลฟ์แอตเทนชันแบบหลายหัว เมื่อแก้ไขการดำเนินการทางหน่วยความจำที่ไม่มีประสิทธิภาพเหล่านี้ นักพัฒนาของ EfficientViT ได้ทำงานบนบล็อกการสร้างใหม่ที่ใช้การจัดเรียงแบบแซนด์วิช ซึ่ง EfficientViT ใช้ ชั้น MHSA ที่ถูกจำกัดด้วยการเข้าถึงหน่วยความจำเพียงตัวเดียวระหว่างชั้น FFN ที่มีประสิทธิภาพ ซึ่งช่วยปรับปรุงประสิทธิภาพของหน่วยความจำและเพิ่มการรับส่งข้อมูลระหว่างช่องสัญญาณทั้งหมด นอกจากนี้ แบบจำลองยังพบว่าแผนที่แอตเทนชันมักจะมีความคล้ายคลึงกันสูงระหว่างหัว ซึ่งนำไปสู่การคำนวณที่ซ้ำซ้อน เพื่อแก้ไขปัญหาเรื่องการซ้ำซ้อน EfficientViT เสนอโมดูลแอตเทนชันแบบกลุ่มต่อเนื่อง (CGA) ซึ่งป้อนข้อมูลให้หัวแอตเทนชันด้วยการแบ่งส่วนของคุณลักษณะทั้งหมด วิธีการนี้ไม่เพียงแต่ช่วยประหยัดต้นทุนการคำนวณเท่านั้น แต่ยังปรับปรุงความหลากหลายของแอตเทนชันของแบบจำลองด้วย
การทดลองที่ครอบคลุมที่ดำเนินการบน EfficientViT ทั่วสถานการณ์ที่แตกต่างกันแสดงให้เห็นว่า EfficientViT มีประสิทธิภาพเหนือกว่าแบบจำลองที่มีประสิทธิภาพที่มีอยู่สำหรับคอมพิวเตอร์วิทัศน์ ในขณะเดียวกันก็สร้างความสมดุลที่ดีระหว่างความแม่นยำและความเร็ว ดังนั้น มาทำความเข้าใจเกี่ยวกับ EfficientViT กันอย่างลึกซึ้งยิ่งขึ้น
การแนะนำวิชันทรานส์ฟอร์เมอร์และ EfficientViT
วิชันทรานส์ฟอร์เมอร์ยังคงเป็นหนึ่งในเฟรมเวิร์กที่ได้รับความนิยมมากที่สุดในอุตสาหกรรมการมองเห็นคอมพิวเตอร์ เนื่องจากพวกมันให้ประสิทธิภาพที่เหนือกว่าและความสามารถในการคำนวณสูง อย่างไรก็ตาม ด้วยความแม่นยำและประสิทธิภาพที่ดีขึ้นของแบบจำลองวิชันทรานส์ฟอร์เมอร์ ต้นทุนการดำเนินการและภาระการคำนวณก็เพิ่มขึ้นด้วย ตัวอย่างเช่น แบบจำลองปัจจุบันที่ให้ประสิทธิภาพระดับแนวหน้าบน ImageNet เช่น SwinV2 และ V-MoE ใช้พารามิเตอร์ 3 พันล้านและ 14.7 พันล้านตัวตามลำดับ ขนาดที่มากของแบบจำลองเหล่านี้ร่วมกับต้นทุนการคำนวณและข้อกำหนด ทำให้พวกมันไม่เหมาะสมสำหรับอุปกรณ์และแอปพลิเคชันแบบเรียลไทม์
EfficientViT มุ่งสำรวจวิธีปรับปรุงประสิทธิภาพของแบบจำลองวิชันทรานส์ฟอร์เมอร์ และค้นหาความเชื่อมโยงที่อยู่เบื้องหลังการออกแบบเฟรมเวิร์กทรานส์ฟอร์เมอร์ที่มีประสิทธิภาพและประสิทธิผล EfficientViT มีพื้นฐานมาจากเฟรมเวิร์กวิชันทรานส์ฟอร์เมอร์ที่มีอยู่ เช่น Swin และ DeiT และวิเคราะห์ปัจจัยที่สำคัญสามประการที่ส่งผลต่อความเร็วของการอนุมานแบบจำลอง ได้แก่ การคำนวณซ้ำซ้อน การเข้าถึงหน่วยความจำ และการใช้พารามิเตอร์ ความเร็วถูกจำกัดด้วยหน่วยความจำ กล่าวคือความล่าช้าในการเข้าถึงหน่วยความจำทำให้ใช้กำลัง CPU/GPU ได้ไม่เต็มที่ โดยเฉพาะการดำเนินการรายองค์ประกอบและการเปลี่ยนรูปเทนเซอร์ใน MHSA การปรับสัดส่วนระหว่าง FFN กับ MHSA อย่างเหมาะสมจึงช่วยลดเวลาเข้าถึงหน่วยความจำโดยไม่ลดประสิทธิภาพ นอกจากนี้ หัวแอตเทนชันที่เรียนรู้การฉายเชิงเส้นคล้ายกันยังทำให้เกิดการคำนวณซ้ำซ้อน
แบบจำลองนี้เป็นผลสรุปจากข้อค้นพบระหว่างการวิจัยสำหรับ EfficientViT แบบจำลองนี้มีบล็อกใหม่ที่มีการจัดเรียงแบบแซนด์วิช ซึ่งใช้ ชั้น MHSA ที่ถูกจำกัดด้วยการเข้าถึงหน่วยความจำเพียงตัวเดียวระหว่างชั้น FFN หรือชั้นเครือข่ายส่งต่อแบบฟีดฟอร์เวิร์ด แนวทางนี้ไม่เพียงแต่ลดเวลาในการดำเนินการ ชั้น MHSA ที่ถูกจำกัดด้วยการเข้าถึงหน่วยความจำเท่านั้น แต่ยังทำให้กระบวนการทั้งหมดมีประสิทธิภาพด้านหน่วยความจำมากขึ้นโดยการอนุญาตให้มีชั้น FFN มากขึ้นเพื่ออำนวยความสะดวกในการสื่อสารระหว่างช่องสัญญาณต่างๆ แบบจำลองยังใช้โมดูล CGA เพื่อลดการคำนวณซ้ำซ้อนในหัวแอตเทนชัน และเพิ่มความลึกของเครือข่ายเพื่อเพิ่มความสามารถของแบบจำลอง สุดท้ายจะจัดสรรพารามิเตอร์ใหม่ โดยเพิ่มความกว้างของช่องสัญญาณในส่วนสำคัญ เช่น การฉายค่า และลดส่วนที่สำคัญน้อยกว่า เช่น มิติชั้นซ่อนของ FFN

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

แม้มีวิธีลดความซับซ้อนของเซลฟ์แอตเทนชันแบบ softmax เช่น การประมาณแบบอันดับต่ำและแอตเทนชันแบบเบาบาง แต่มักเร่งความเร็วได้จำกัดและลดความแม่นยำ
ในทางกลับกัน EfficientViT ลดต้นทุนการเข้าถึงหน่วยความจำด้วยการลดชั้นที่ใช้หน่วยความจำไม่คุ้มค่า โดยย่อ DeiT-T และ Swin-T ให้เป็นเครือข่ายย่อยที่มีอัตราประมวลผลการอนุมานสูงขึ้น 1.25 และ 1.5 เท่าตามลำดับ แล้วเปรียบเทียบกับสัดส่วนชั้น MHSA บทความต้นฉบับอธิบายผลในภาพว่าแนวทางนี้เพิ่มความแม่นยำของชั้น MHSA ราว 20–40%

ประสิทธิภาพการคำนวณ
MHSA แปลงลำดับอินพุตไปยังปริภูมิย่อยหรือหัวหลายหัวและคำนวณแผนที่แอตเทนชันแยกกัน แม้ช่วยด้านประสิทธิภาพ แต่มีต้นทุนสูง งานนี้จึงศึกษาการลดแอตเทนชันที่ซ้ำซ้อนใน ViT ขนาดเล็ก โดยฝึก DeiT-T และ Swin-T ที่ลดความกว้างให้อนุมานเร็วขึ้น 1.25 เท่า แล้ววัดความคล้ายคลึงโคไซน์สูงสุดระหว่างแต่ละหัวกับหัวอื่นในแต่ละบล็อก ความคล้ายคลึงสูงบ่งชี้ว่าหลายหัวกำลังเรียนรู้การฉายคุณลักษณะชุดเดียวกันซ้ำๆ

เพื่อให้แต่ละหัวเรียนรู้รูปแบบต่างกัน แบบจำลองจึงป้อนคุณลักษณะทั้งหมดเพียงบางส่วนให้แต่ละหัว คล้ายแนวคิดการคอนโวลูชันแบบกลุ่ม และทดลองฝึกแบบจำลองที่ย่อขนาดโดยปรับชั้น MHSA
ประสิทธิภาพพารามิเตอร์
ViT ทั่วไปสืบทอดการออกแบบจากทรานส์ฟอร์เมอร์ด้านภาษา เช่น ใช้ความกว้างเท่ากันสำหรับการฉาย ตั้งอัตราขยาย FFN เป็น 4 และเพิ่มจำนวนหัวตามลำดับขั้น ส่วนเหล่านี้ควรออกแบบใหม่สำหรับโมดูลขนาดเล็ก EfficientViT ใช้การตัดแต่งเชิงโครงสร้างตามเทย์เลอร์เพื่อหาส่วนสำคัญใน Swin-T และ DeiT-T โดยตัดช่องสัญญาณที่ไม่สำคัญและเก็บส่วนจำเป็นภายใต้ทรัพยากรจำกัด ภาพเปรียบเทียบสัดส่วนช่องสัญญาณต่อมิติอินพุตก่อนและหลังตัดแต่ง โดยความแม่นยำพื้นฐานเท่ากับ 79.1% และหลังตัดแต่งเท่ากับ 76.5%

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

เฟรมเวิร์กประกอบด้วยโมดูลแอตเทนชันแบบกลุ่มต่อเนื่อง (CGA) การจัดเรียงแบบแซนด์วิชที่มีประสิทธิภาพด้านหน่วยความจำ และกลยุทธ์การจัดสรรพารามิเตอร์ที่มุ่งเน้นในการปรับปรุงประสิทธิภาพของแบบจำลองในด้านการคำนวณ หน่วยความจำ และพารามิเตอร์
การจัดเรียงแบบแซนด์วิช
การจัดวางแบบแซนด์วิชใช้ชั้นเซลฟ์แอตเทนชันที่ถูกจำกัดด้วยหน่วยความจำน้อยลง และใช้ FFN ที่ประหยัดหน่วยความจำมากขึ้นเพื่อสื่อสารข้ามช่องสัญญาณ โดยวางเซลฟ์แอตเทนชันหนึ่งชั้นสำหรับผสมข้อมูลเชิงพื้นที่ไว้ระหว่าง FFN นอกจากลดเวลาที่ใช้กับหน่วยความจำแล้ว ยังช่วยสื่อสารระหว่างช่องสัญญาณ ก่อน FFN แต่ละชั้นยังมีการผสมข้อมูลระหว่างโทเคนด้วย DWConv ซึ่งเพิ่มอคติเชิงอุปนัยจากโครงสร้างเฉพาะที่และเพิ่มความสามารถของแบบจำลอง
แอตเทนชันแบบกลุ่มต่อเนื่อง (CGA)
ปัญหาหลักของ MHSA คือหัวแอตเทนชันที่ซ้ำซ้อน CGA ซึ่งได้แนวคิดจากการคอนโวลูชันแบบกลุ่มใน CNN จึงแบ่งคุณลักษณะทั้งหมดแล้วป้อนแต่ละส่วนให้แต่ละหัว แทนการป้อนข้อมูลชุดเต็มซ้ำทุกหัว วิธีนี้แยกการคำนวณระหว่างหัวอย่างชัดเจน ลดต้นทุน และกระตุ้นให้เรียนรู้การฉายคุณลักษณะที่มีข้อมูลหลากหลายขึ้นเพื่อปรับปรุงความแม่นยำและความสามารถ

การกำหนดพารามิเตอร์ใหม่
แบบจำลองจัดสรรพารามิเตอร์ใหม่โดยเพิ่มความกว้างในโมดูลสำคัญและลดในส่วนสำคัญน้อยกว่า ตามการวิเคราะห์เทย์เลอร์ จะใช้มิติช่องสัญญาณขนาดเล็กสำหรับการฉายในแต่ละหัว หรือให้บางการฉายมีมิติเท่ากับอินพุต พร้อมลดอัตราขยาย FFN จาก 4 เหลือ 2 โมดูลสำคัญจึงเรียนรู้ในปริภูมิมิติสูงได้ดีขึ้นและสูญเสียข้อมูลคุณลักษณะน้อยลง อีกทั้งยังตัดพารามิเตอร์ซ้ำซ้อนในโมดูลที่ไม่สำคัญเพื่อเร่งการอนุมาน

ภาพรวมของเฟรมเวิร์ก EfficientViT สามารถอธิบายได้ในภาพด้านบน
- สถาปัตยกรรมของ EfficientViT
- บล็อกการจัดเรียงแบบแซนด์วิช
- แอตเทนชันแบบกลุ่มต่อเนื่อง (CGA)
EfficientViT: สถาปัตยกรรมเครือข่าย

สถาปัตยกรรมใช้การฝังแพตช์แบบซ้อนทับ [20,80] โดยแปลงแพตช์ 16×16 เป็นโทเคนมิติ C1 เพื่อเรียนรู้คุณลักษณะภาพระดับต้น แบ่งเป็นสามขั้นที่ซ้อนบล็อกที่เสนอไว้ ทุกครั้งที่ลดความละเอียดลง 2 เท่า จำนวนโทเคนจะลดลง 4 เท่า บล็อกลดขนาดใช้โครงสร้างแซนด์วิชเช่นกัน แต่แทนชั้นแอตเทนชันด้วยบล็อก residual แบบกลับด้านเพื่อลดการสูญเสียข้อมูล ส่วนการปรับให้เป็นมาตรฐานใช้ BatchNorm แทน LayerNorm เพราะสามารถผนวกรวม BN เข้ากับชั้นเชิงเส้นหรือคอนโวลูชันก่อนหน้าได้ ทำให้ทำงานเร็วขึ้น
แบบจำลอง EfficientViT
ตระกูล EfficientViT มี 6 แบบจำลองที่มีความลึกและความกว้างต่างกัน และกำหนดจำนวนหัวในแต่ละขั้นไว้แน่นอน ขั้นแรกใช้บล็อกน้อยกว่าขั้นท้าย คล้าย MobileNetV3 เพราะการประมวลผลภาพความละเอียดสูงช่วงต้นใช้เวลามาก ความกว้างเพิ่มขึ้นเพียงเล็กน้อยตามขั้นเพื่อลดความซ้ำซ้อนช่วงท้าย ในตาราง C, L และ H หมายถึงความกว้าง ความลึก และจำนวนหัวของแต่ละขั้น

EfficientViT: การนำไปใช้แบบจำลองและผลลัพธ์
EfficientViT ใช้ขนาดแบตช์รวม 2,048 สร้างด้วย Timm และ PyTorch และฝึกจากเริ่มต้น 300 epoch บน GPU Nvidia V100 จำนวน 8 ตัว ใช้ตารางอัตราการเรียนรู้แบบโคไซน์และตัวปรับ AdamW ในการจำแนกภาพ ImageNet-1K โดยสุ่มครอปและปรับภาพเป็น 224×224 สำหรับงานจำแนกภาพปลายทางจะปรับจูน 300 epoch ด้วย AdamW และแบตช์ 256 ส่วนการตรวจจับวัตถุ COCO ใช้ RetineNet ตามชื่อที่ระบุในต้นฉบับและฝึกเพิ่ม 12 epoch ด้วยการตั้งค่าเดียวกัน
ผลลัพธ์บน ImageNet
EfficientViT ถูกเปรียบเทียบกับ ViT และ CNN บน ImageNet โดยภาพแสดงผลว่าแบบจำลองตระกูลนี้ทำได้ดีกว่าในกรณีส่วนใหญ่ และมีสมดุลที่ดีระหว่างความเร็วกับความแม่นยำ

การเปรียบเทียบกับ CNN ที่มีประสิทธิภาพและ ViT ที่มีประสิทธิภาพ
การเปรียบเทียบรวม CNN ที่มีประสิทธิภาพอย่าง EfficientNet และ CNN พื้นฐานอย่าง MobileNets ต้นฉบับระบุว่า EfficientViT ได้ความแม่นยำ top-1 ดีกว่า MobileNet พร้อมทำงานเร็วกว่า 3.0 เท่าบน Intel CPU และ 2.5 เท่าบน V100 GPU

ภาพด้านบนเปรียบเทียบประสิทธิภาพของแบบจำลอง EfficientViT กับแบบจำลอง ViT ขนาดใหญ่ที่มีอยู่บน ImageNet-1K
การจำแนกภาพแบบส่งต่อ
การทดสอบงานปลายทางใช้ศึกษาการถ่ายโอนการเรียนรู้ EfficientViT-M5 ให้ผลดีกว่าหรือใกล้เคียงในทุกชุดข้อมูล พร้อมอัตราการประมวลผลที่สูงกว่ามาก ยกเว้นชุดข้อมูล Cars ซึ่งความแม่นยำยังด้อยกว่า

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

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












