การปรับใช้โมเดล AI อย่างมีประสิทธิภาพบนอุปกรณ์ Edge ผ่านการออกแบบร่วมระหว่างฮาร์ดแวร์-ซอฟต์แวร์ | B4N1

การปรับใช้โมเดล AI อย่างมีประสิทธิภาพบนอุปกรณ์ Edge ผ่านการออกแบบร่วมระหว่างฮาร์ดแวร์-ซอฟต์แวร์

7 months ago · b4n1 Tiempo de lectura: 2 min

การปรับใช้โมเดล AI อย่างมีประสิทธิภาพบนอุปกรณ์ Edge ผ่านการออกแบบร่วมระหว่างฮาร์ดแวร์และซอฟต์แวร์

บทนำ

การแพร่กระจายของอุปกรณ์ Edge ได้สร้างโอกาสใหม่สำหรับแอปพลิเคชันปัญญาประดิษฐ์ (AI) ที่จะนำไปใช้แบบเรียลไทม์ ช่วยให้แอปพลิเคชันต่างๆ เช่น บ้านอัจฉริยะ ยานพาหนะที่ขับเคลื่อนอัตโนมัติ และระบบอัตโนมัติทางอุตสาหกรรม อย่างไรก็ตาม ทรัพยากรการคำนวณที่จำกัดและข้อจำกัดด้านพลังงานของอุปกรณ์ Edge ก่อให้เกิดความท้าทายที่สำคัญสำหรับการปรับใช้โมเดล AI ในบทความนี้ เราจะสำรวจจุดตัดกันของ AI วิศวกรรมซอฟต์แวร์ และสถาปัตยกรรมเพื่อเพิ่มประสิทธิภาพประสิทธิภาพของอุปกรณ์ Edge โดยใช้ประโยชน์จากความก้าวหน้าล่าสุดในประสิทธิภาพของโมเดล AI และเทคนิคการออกแบบร่วมระหว่างฮาร์ดแวร์และซอฟต์แวร์

ความท้าทายของการปรับใช้โมเดล AI บนอุปกรณ์ Edge

อุปกรณ์ Edge มีลักษณะเฉพาะด้วยทรัพยากรการคำนวณที่จำกัด รวมถึง CPU หน่วยความจำ และการใช้พลังงาน โมเดล AI แบบดั้งเดิมซึ่งมักได้รับการออกแบบสำหรับการใช้งานบนคลาวด์ ไม่ได้รับการปรับให้เหมาะกับอุปกรณ์ Edge เป็นผลให้พวกเขาสามารถนำไปสู่:

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

เทคนิคการออกแบบร่วมฮาร์ดแวร์-ซอฟต์แวร์

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

1. การตัดแต่งกิ่งแบบจำลอง

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

นำเข้าไฟฉาย
นำเข้า torch.nn เป็น nn

คลาส ModelPruning (nn.Module):
    def __init__(ตนเอง):
        ซุปเปอร์ (การตัดแต่งโมเดลด้วยตนเอง).__init__()
        self.fc1 = nn.เชิงเส้น (784, 128)
        self.fc2 = nn.เชิงเส้น (128, 10)

    def ไปข้างหน้า (ตัวเอง, x):
        x = torch.relu(self.fc1(x))
        x = ตนเอง.fc2(x)
        กลับ x

model = ModelPruning()
pruned_model = torch.nn.utils.prune_l1_unstructured (โมเดล, 'น้ำหนัก', 0.1)

2. การกลั่นกรองความรู้

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

นำเข้าไฟฉาย
นำเข้า torch.nn เป็น nn

คลาส KnowledgeDistillation(nn.Module):
    def __init__(ตนเอง):
        สุดยอด (การกลั่นความรู้ด้วยตนเอง).__init__()
        self.fc1 = nn.เชิงเส้น (784, 128)
        self.fc2 = nn.เชิงเส้น (128, 10)

    def ไปข้างหน้า (ตัวเอง, x):
        x = torch.relu(self.fc1(x))
        x = ตนเอง.fc2(x)
        กลับ x

teacher_model = การตัดแต่งโมเดล ()
Student_model = การกลั่นความรู้ ()

3. การหาปริมาณ

การหาปริมาณเกี่ยวข้องกับการลดความแม่นยำของน้ำหนักโมเดล AI และการเปิดใช้งาน และลดข้อกำหนดด้านการคำนวณของโมเดล AI

นำเข้าไฟฉาย
นำเข้า torch.nn เป็น nn

การหาปริมาณคลาส (nn.Module):
    def __init__(ตนเอง):
        ซุปเปอร์ (การหาปริมาณด้วยตนเอง).__init__()
        self.fc1 = nn.เชิงเส้น (784, 128)
        self.fc2 = nn.เชิงเส้น (128, 10)

    def ไปข้างหน้า (ตัวเอง, x):
        x = torch.relu(self.fc1(x))
        x = ตนเอง.fc2(x)
        กลับ x

model = ModelPruning()
quantized_model = torch.quantization.quantize_dynamic (โมเดล, {torch.nn.Linear}, dtype=torch.qint8)

คำสั่ง/ตัวอย่างที่ใช้มากที่สุด 5-10 อันดับแรก

คำสั่ง/ ตัวอย่าง คำอธิบาย
torch.nn.utils.prune_l1_unstructured(รุ่น, 'น้ำหนัก', 0.1) การตัดแต่งโมเดลโดยใช้การทำให้เป็นมาตรฐาน L1
torch.quantization.quantize_dynamic(โมเดล, {torch.nn.Linear}, dtype=torch.qint8) การหาปริมาณโดยใช้การหาปริมาณแบบไดนามิก
torch.nn.utils.kldistance(teacher_model, Student_model) การกลั่นกรองความรู้โดยใช้ KL Divergence
torch.nn.utils.weight_norm(model.fc1) การทำให้น้ำหนักเป็นมาตรฐานโดยใช้น้ำหนักปกติ
torch.nn.utils.clip_grad_norm_(model.parameters(), 1.0) ` การตัดแบบไล่ระดับสีโดยใช้ Clip Grad Norm
torch.nn.utils.clip_grad_value_(model.parameters(), 1.0) ` การตัดแบบไล่ระดับสีโดยใช้ค่าการไล่ระดับสีของคลิป
torch.nn.utils.remove_weight_norm(model.fc1) การลบการทำให้น้ำหนักเป็นมาตรฐานโดยใช้การลบบรรทัดฐานของน้ำหนัก
torch.nn.utils.fuse_conv_bn_eval(model.fc1) ฟิวชั่นชั้น Convolutional โดยใช้ฟิวส์ conv bn eval
torch.nn.utils.fuse_bn_eval(model.fc2) ฟิวชั่นการทำให้เป็นมาตรฐานแบบแบทช์โดยใช้ฟิวส์ bn eval
torch.nn.utils.fuse_bn_eval(model.fc1) ฟิวชั่นการทำให้เป็นมาตรฐานแบบแบทช์โดยใช้ฟิวส์ bn eval

การแสดงภาพ

{
  "type": "บาร์",
  "ข้อมูล": {
    "labels": ["การตัดแต่งแบบจำลอง", "การกลั่นความรู้", "การกำหนดปริมาณ"],
    "ชุดข้อมูล": {
      "label": "ความแม่นยำ",
      "ข้อมูล": [0.9, 0.85, 0.8]
    }
  },
  "ตัวเลือก": {
    "ชื่อ": {
      "จอแสดงผล": จริง
      "text": "การเปรียบเทียบความแม่นยำ"
    },
    "ตำนาน": {
      "จอแสดงผล": จริง
    }
  }
}

บทสรุป

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

งานในอนาคต

งานในอนาคตในด้านนี้ได้แก่:

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

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


¿Tienes preguntas?

Hablemos

Contáctame en LinkedIn