Аппараттық-бағдарламалық қамтамасыз етудің бірлескен дизайны арқылы шеткі құрылғыларда AI моделін тиімді орналастыру | B4N1

Аппараттық-бағдарламалық қамтамасыз етудің бірлескен дизайны арқылы шеткі құрылғыларда AI моделін тиімді орналастыру

7 months ago · b4n1 Read time: 3 min

Аппараттық-бағдарламалық қамтамасыз етудің бірлескен дизайны арқылы Edge құрылғыларында AI моделін тиімді орналастыру

Кіріспе

Шеткі құрылғылардың көбеюі жасанды интеллект (AI) қосымшаларын нақты уақыт режимінде орналастыруға жаңа мүмкіндіктер туғызды, бұл смарт үйлер, автономды көліктер және өнеркәсіптік автоматтандыру сияқты қолданбаларға мүмкіндік береді. Дегенмен, шектеулі есептеу ресурстары мен шеткі құрылғылардың қуат шектеулері AI моделін орналастыру үшін елеулі қиындықтар тудырады. Бұл мақалада біз AI моделінің тиімділігі мен аппараттық-бағдарламалық құралдарды бірлесіп жобалау әдістеріндегі соңғы жетістіктерді пайдалана отырып, құрылғының шеткі өнімділігін оңтайландыру үшін AI, бағдарламалық жасақтама және архитектураның қиылысын зерттейміз.

Edge құрылғыларында AI моделін қолданудың қиындықтары

Edge құрылғылары шектеулі есептеу ресурстарымен сипатталады, соның ішінде процессор, жад және қуат тұтыну. Көбінесе бұлтқа негізделген орналастыруға арналған дәстүрлі AI үлгілері шеткі құрылғылар үшін оңтайландырылмаған. Нәтижесінде олар мыналарға әкелуі мүмкін:

  • Өнімділіктің төмендеуі: AI үлгілері шеткі құрылғыларда тиімді жұмыс істемеуі мүмкін, бұл жауап беру уақытының баяулауына және дәлдіктің төмендеуіне әкеледі.
  • Қуат тұтыну: AI үлгілері айтарлықтай қуатты тұтынуы мүмкін, бұл батареямен жұмыс істейтін шеткі құрылғылар үшін алаңдаушылық тудыруы мүмкін.
  • Жад шектеулері: AI үлгілері жад ресурстары шектеулі шеткі құрылғылар үшін қиындық тудыруы мүмкін үлкен көлемдегі жадты қажет етуі мүмкін.

Аппараттық-бағдарламалық қамтамасыз етуді бірлесіп жобалау әдістері

Осы қиындықтарды шешу үшін перспективті шешім ретінде аппараттық-бағдарламалық қамтамасыз етуді бірлесіп жобалау әдістері пайда болды. Бұл әдістер AI моделін орналастыру үшін оларды оңтайландыруды, сонымен қатар шеткі құрылғының аппараттық және бағдарламалық құрамдас бөліктерін жобалауды қамтиды.

1. Үлгіні кесу

Модельді кесу AI үлгісінен қажет емес салмақтар мен қосылымдарды алып тастауды, оның өлшемін және есептеу талаптарын азайтуды қамтиды. Бұл әдісті нейрондық желілерге де, шешім ағаштарына да қолдануға болады.

импорттық шам
nn ретінде torch.nn импорттау

сынып үлгісіPruning(nn.Module):
    Def __init__(өзіндік):
        super(ModelPruning, self).__init__()
        self.fc1 = nn.Сызықтық(784, 128)
        self.fc2 = nn.Сызықтық(128, 10)

    Def forward(өзіндік, x):
        x = torch.relu(self.fc1(x))
        x = self.fc2(x)
        x қайтару

үлгі = ModelPruning()
pruned_model = torch.nn.utils.prune_l1_unstructured(үлгі, "салмақ", 0,1)

2. Білімді айдау

Білімді дистилляциялау білімді үлкен, күрделі AI моделінен кішірек, қарапайымға ауыстыруды қамтиды. Бұл әдісті AI моделінің өлшемі мен есептеу талаптарын азайту үшін пайдалануға болады.

импорттық шам
nn ретінде torch.nn импорттау

Class KnowledgeDistillation(nn.Module):
    Def __init__(өзіндік):
        super(KnowledgeDistillation, self).__init__()
        self.fc1 = nn.Сызықтық(784, 128)
        self.fc2 = nn.Сызықтық(128, 10)

    Def forward(өзіндік, x):
        x = torch.relu(self.fc1(x))
        x = self.fc2(x)
        x қайтару

teacher_model = Үлгі кесу()
student_model = Knowledge Distillation()

3. Кванттау

Кванттау AI моделінің салмақтары мен белсендірулерінің дәлдігін азайтуды, AI моделінің есептеу талаптарын азайтуды қамтиды.

импорттық шам
nn ретінде torch.nn импорттау

класс кванттау(nn.Module):
    Def __init__(өзіндік):
        super(кванттау, өздік).__init__()
        self.fc1 = nn.Сызықтық(784, 128)
        self.fc2 = nn.Сызықтық(128, 10)

    Def forward(өзіндік, x):
        x = torch.relu(self.fc1(x))
        x = self.fc2(x)
        x қайтару

үлгі = ModelPruning()
квантталған_модель = 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(мұғалім_үлгі, оқушы_үлгі) KL дивергенциясын қолдану арқылы білімді дистилляциялау
torch.nn.utils.weight_norm(model.fc1) Салмақ нормасын қолдану арқылы салмақты қалыпқа келтіру
torch.nn.utils.clip_grad_norm_(model.parameters(), 1.0) Клип град нормасын пайдаланып градиентті кесу
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) Fuse conv bn eval
torch.nn.utils.fuse_bn_eval(model.fc2) Сақтандырғыш bn eval
torch.nn.utils.fuse_bn_eval(model.fc1) Сақтандырғыш bn eval

визуализация

{
  "түрі": "бар",
  «деректер»: {
    "labels": ["Үлгі кесу", "Білімді айдау", "Кванттау"],
    «деректер жинағы»: {
      "label": "дәлдік",
      "деректер": [0,9, 0,85, 0,8]
    }
  },
  "опциялар": {
    «атауы»: {
      «дисплей»: шын,
      "text": "Дәлдікті салыстыру"
    },
    "легенда": {
      «дисплей»: шын
    }
  }
}

Қорытынды

Шеткі құрылғыларда AI моделін тиімді орналастыру аппараттық және бағдарламалық қамтамасыз етуді бірлесіп жобалау әдістерінің комбинациясын қажет етеді. Модельді кесу, білімді айдау және кванттау - бұл AI үлгілерінің өлшемін және есептеу талаптарын азайту үшін қолдануға болатын әдістердің кейбірі. Осы әдістерді қолдана отырып, әзірлеушілер ақылды үйлер, автономды көліктер және өнеркәсіптік автоматтандыру сияқты нақты уақыттағы қолданбаларға мүмкіндік беретін шеткі құрылғылар үшін оңтайландырылған AI үлгілерін жасай алады.

Болашақ жұмыс

Бұл саладағы алдағы жұмыс мыналарды қамтиды:

  • Жаңа аппараттық-бағдарламалық қамтамасыз етуді бірлесіп жобалау әдістерін әзірлеу: Зерттеушілер мен әзірлеушілер шеткі құрылғылар үшін AI үлгілерін оңтайландырудың жаңа әдістерін зерттей алады.
  • Модельді кесу және білімді айдау алгоритмдерін жақсарту: Үлгіні кесу және білімді айдау үшін тиімдірек алгоритмдерді әзірлеу өнімділік пен дәлдіктің жоғарылауына әкелуі мүмкін.
  • Басқа AI үлгілерін пайдалануды зерттеу: Шешім ағаштары мен кездейсоқ ормандар сияқты басқа AI үлгілерін шеткі құрылғыны орналастыру үшін зерттеуге болады.

Аппараттық-бағдарламалық қамтамасыз етуді бірлесіп жобалау саласын ілгерілетуді жалғастыра отырып, біз қосымшалар мен пайдалану жағдайларының кең ауқымын қамтамасыз ететін шеткі құрылғылар үшін тиімдірек және тиімді AI үлгілерін жасай аламыз.


Have Questions?

Let's Talk

Contact me on LinkedIn