โมเดลและแพลตฟอร์ม AI

EfficientViT: วิชันทรานส์ฟอร์เมอร์ที่มีประสิทธิภาพสูงสำหรับการมองเห็นคอมพิวเตอร์ความละเอียดสูง

mm
เพิ่ม Unite.AI ลงในแหล่งข้อมูลที่คุณต้องการบน Google

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

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

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

การแนะนำวิชันทรานส์ฟอร์เมอร์และ EfficientViT

วิชันทรานส์ฟอร์เมอร์ยังคงเป็นหนึ่งในเฟรมเวิร์กที่ได้รับความนิยมมากที่สุดในอุตสาหกรรมการมองเห็นคอมพิวเตอร์ เนื่องจากพวกมันให้ประสิทธิภาพที่เหนือกว่าและความสามารถในการคำนวณสูง อย่างไรก็ตาม ด้วยความแม่นยำและประสิทธิภาพที่ดีขึ้นของแบบจำลองวิชันทรานส์ฟอร์เมอร์ ต้นทุนการดำเนินการและภาระการคำนวณก็เพิ่มขึ้นด้วย ตัวอย่างเช่น แบบจำลองปัจจุบันที่ให้ประสิทธิภาพระดับแนวหน้าบน ImageNet เช่น SwinV2 และ V-MoE ใช้พารามิเตอร์ 3B และ 14.7B ตามลำดับ ขนาดที่มากของแบบจำลองเหล่านี้ร่วมกับต้นทุนการคำนวณและข้อกำหนด ทำให้พวกมันไม่เหมาะสมสำหรับอุปกรณ์และแอปพลิเคชันแบบเรียลไทม์

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

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

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

EfficientViT: การปรับปรุงประสิทธิภาพของวิชันทรานส์ฟอร์เมอร์

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

  1. การคำนวณที่ซ้ำซ้อน
  2. การเข้าถึงหน่วยความจำ
  3. การใช้พารามิเตอร์

แบบจำลองนี้มุ่งหวังที่จะค้นหาว่าปัจจัยเหล่านี้ส่งผลต่อประสิทธิภาพของแบบจำลองวิชันทรานส์ฟอร์เมอร์อย่างไร และวิธีการแก้ไขปัญหาเหล่านี้เพื่อให้ได้ผลลัพธ์ที่ดีกว่าด้วยประสิทธิภาพที่ดีกว่า

การเข้าถึงหน่วยความจำและประสิทธิภาพ

หนึ่งในปัจจัยที่ส่งผลต่อความเร็วของแบบจำลองคือการเข้าถึงหน่วยความจำที่มีประสิทธิภาพต่ำ หรือ MAO

แม้ว่าจะมีวิธีการที่มีอยู่เพื่อทำให้การคำนวณการดูแลตนเองแบบหลายหัวง่ายขึ้น แต่การเข้าใกล้เหล่านี้มักจะให้การเร่งความเร็วที่จำกัดและลดความแม่นยำ

ในทางกลับกัน เฟรมเวิร์ก EfficientViT มุ่งหวังที่จะลดต้นทุนการเข้าถึงหน่วยความจำโดยการลดจำนวนชั้นที่มีประสิทธิภาพต่ำในเฟรมเวิร์ก

ประสิทธิภาพการคำนวณ

ชั้น MHSA มีแนวโน้มที่จะฝังตัวลำดับอินพุตลงในพื้นที่ย่อยหรือหัวหลายหัว และคำนวณแผนที่การดูแลตนเองแต่ละหัว ซึ่งเป็นวิธีการที่ทราบกันว่าสามารถเพิ่มประสิทธิภาพได้

เพื่อกระตุ้นให้หัวเหล่านี้เรียนรู้รูปแบบที่แตกต่างกัน แบบจำลองนี้ใช้การแก้ไขแบบ直觉ที่ให้อาหารแต่ละหัวเพียงส่วนหนึ่งของคุณลักษณะทั้งหมดเท่านั้น

ประสิทธิภาพพารามิเตอร์

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

แบบจำลองนี้ใช้การทำซ้ำแบบเทย์เลอร์เพื่อค้นหาส่วนประกอบที่สำคัญใน Swim-T และ DeiT-T อัตโนมัติ และสำรวจหลักการในการจัดสรรพารามิเตอร์

วิชันทรานส์ฟอร์เมอร์ที่มีประสิทธิภาพ: สถาปัตยกรรม

บนพื้นฐานของการเรียนรู้ที่ได้รับระหว่างการวิเคราะห์ นักพัฒนาจึงทำงานในการสร้างแบบจำลองเชิง階層ใหม่ที่ให้ความเร็วในการแทรกแซงที่เร็ว

บล็อกการสร้างของเฟรมเวิร์ก EfficientViT

บล็อกการสร้างสำหรับเครือข่ายวิชันทรานส์ฟอร์เมอร์ที่มีประสิทธิภาพมากขึ้นแสดงไว้ในรูปด้านล่าง

เฟรมเวิร์กประกอบด้วยโมดูลการดูแลตนเองแบบกลุ่มที่ต่อเนื่องกัน การวางซендวิชที่มีประสิทธิภาพด้านหน่วยความจำ และกลยุทธ์การจัดสรรพารามิเตอร์ที่มุ่งเน้นในการปรับปรุงประสิทธิภาพของแบบจำลองในด้านการคำนวณ หน่วยความจำ และพารามิเตอร์

การวางซендวิช

แบบจำลองนี้ใช้การวางซендวิชใหม่เพื่อสร้างบล็อกหน่วยความจำที่มีประสิทธิภาพมากขึ้นสำหรับเฟรมเวิร์ก

การดูแลตนเองแบบกลุ่มที่ต่อเนื่องกัน

หนึ่งในปัญหาหลักของชั้น MHSA คือการซ้ำซ้อนของหัวการดูแลตนเอง ซึ่งทำให้การคำนวณไม่มีประสิทธิภาพ

การกำหนดพารามิเตอร์ใหม่

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

ภาพรวมของเฟรมเวิร์ก EfficientViT สามารถอธิบายได้ในภาพด้านบน

  1. สถาปัตยกรรมของ EfficientViT
  2. บล็อกการวางซендวิช
  3. การดูแลตนเองแบบกลุ่มที่ต่อเนื่องกัน

 

EfficientViT: สถาปัตยกรรมเครือข่าย

ภาพด้านบนสรุปสถาปัตยกรรมเครือข่ายของเฟรมเวิร์ก EfficientViT

แบบจำลอง EfficientViT

ครอบครัวแบบจำลอง EfficientViT ประกอบด้วยแบบจำลอง 6 แบบที่มีขนาดความลึกและความกว้างที่แตกต่างกัน

EfficientViT: การนำไปใช้แบบจำลองและผลลัพธ์

แบบจำลอง EfficientViT มีขนาดชุดข้อมูลทั้งหมด 2,048 สร้างขึ้นด้วย Timm และ PyTorch และฝึกฝนจากต้นสำหรับ 300 เอพพอกโดยใช้ 8 GPU Nvidia V100

ผลลัพธ์บน ImageNet

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

การเปรียบเทียบกับ CNN ที่มีประสิทธิภาพและ ViT ที่มีประสิทธิภาพ

แบบจำลองนี้เปรียบเทียบกับ CNN ที่มีประสิทธิภาพ เช่น EfficientNet และแบบจำลอง CNN พื้นฐาน เช่น MobileNets

ภาพด้านบนเปรียบเทียบประสิทธิภาพของแบบจำลอง EfficientViT กับแบบจำลอง ViT ขนาดใหญ่ที่มีอยู่บน ImageNet-1K

การจำแนกภาพแบบส่งต่อ

แบบจำลอง EfficientViT ถูกนำไปใช้กับงานแบบส่งต่อเพื่อศึกษาความสามารถในการเรียนรู้แบบส่งต่อของแบบจำลอง

การตรวจจับวัตถุ

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

ความคิดสุดท้าย

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

Kunal Kejriwal เป็นวิศวกรแบ็กเอนด์ที่เชี่ยวชาญด้าน Python, PostgreSQL, Redis และโครงสร้างพื้นฐานคลาวด์บน GCP และ AWS. ด้วยประสบการณ์สามปีในการสร้างและขยายระบบการผลิต เขาเขียนเกี่ยวกับโครงสร้างพื้นฐาน AI, ระบบกระจาย, และสถาปัตยกรรมที่อยู่เบื้องหลังการปรับใช้งานแมชชีนเลิร์นนิง