Эфектыўнае разгортванне мадэлі штучнага інтэлекту на памежных прыладах праз апаратна-праграмнае сумеснае праектаванне | B4N1

Эфектыўнае разгортванне мадэлі штучнага інтэлекту на памежных прыладах праз апаратна-праграмнае сумеснае праектаванне

7 months ago · b4n1 Read time: 4 min

Эфектыўнае разгортванне мадэлі штучнага інтэлекту на памежных прыладах праз апаратна-праграмнае сумеснае праектаванне

Уводзіны

Распаўсюджванне краявых прылад стварыла новыя магчымасці для разгортвання прыкладанняў штучнага інтэлекту (AI) у рэжыме рэальнага часу, што дазваляе выкарыстоўваць такія праграмы, як разумныя дамы, аўтаномныя транспартныя сродкі і прамысловая аўтаматызацыя. Аднак абмежаваныя вылічальныя рэсурсы і абмежаванні магутнасці краявых прылад ствараюць значныя праблемы для разгортвання мадэлі штучнага інтэлекту. У гэтым артыкуле мы даследуем ўзаемасувязь штучнага інтэлекту, распрацоўкі праграмнага забеспячэння і архітэктуры для аптымізацыі прадукцыйнасці крайніх прылад, выкарыстоўваючы апошнія дасягненні ў эфектыўнасці мадэляў штучнага інтэлекту і метады сумеснага праектавання апаратнага і праграмнага забеспячэння.

Праблемы разгортвання мадэлі AI на краявых прыладах

Прылады Edge характарызуюцца абмежаванымі вылічальнымі рэсурсамі, уключаючы працэсар, памяць і энергаспажыванне. Традыцыйныя мадэлі штучнага інтэлекту, якія часта прызначаны для разгортвання ў воблаку, не аптымізаваны для краявых прылад. У выніку яны могуць прывесці да:

  • Зніжэнне прадукцыйнасці: мадэлі штучнага інтэлекту могуць працаваць неэфектыўна на краявых прыладах, што прыводзіць да павольнага часу водгуку і зніжэння дакладнасці.
  • Энергаспажыванне: Мадэлі са штучным інтэлектам могуць спажываць значную колькасць электраэнергіі, што можа быць праблемай для крайніх прылад з батарэйным харчаваннем.
  • Абмежаванні памяці: Мадэлі штучнага інтэлекту могуць патрабаваць вялікіх аб'ёмаў памяці, што можа стаць праблемай для краявых прылад з абмежаванымі рэсурсамі памяці.

Метады сумеснага праектавання апаратнага і праграмнага забеспячэння

Для вырашэння гэтых праблем у якасці перспектыўнага рашэння з'явіліся метады сумеснага праектавання апаратнага і праграмнага забеспячэння. Гэтыя метады ўключаюць распрацоўку як апаратных, так і праграмных кампанентаў краявой прылады ў тандэме, аптымізуючы іх для разгортвання мадэлі штучнага інтэлекту.

1. Абразанне мадэлі

Скарачэнне мадэлі прадугледжвае выдаленне непатрэбных вагаў і злучэнняў з мадэлі штучнага інтэлекту, памяншэнне яе памеру і патрабаванняў да вылічэнняў. Гэты метад можа быць ужыты як да нейронавых сетак, так і да дрэў рашэнняў.

імпартны факел
імпартаваць torch.nn як nn

клас ModelPruning(nn.Module):
    дэф __init__(сам):
        super(ModelPruning, self).__init__()
        self.fc1 = nn.Linear(784, 128)
        self.fc2 = nn.Linear(128, 10)

    дэф наперад(я, х):
        x = torch.relu(self.fc1(x))
        x = self.fc2(x)
        вярнуць х

мадэль = ModelPruning()
pruned_model = torch.nn.utils.prune_l1_unstructured(мадэль, 'вага', 0,1)

2. Дыстыляцыя ведаў

Дыстыляцыя ведаў прадугледжвае перадачу ведаў з вялікай, складанай мадэлі штучнага інтэлекту ў меншую, больш простую. Гэтую тэхніку можна выкарыстоўваць для памяншэння памеру і патрабаванняў да вылічэнняў мадэлі штучнага інтэлекту.

імпартны факел
імпартаваць torch.nn як nn

клас KnowledgeDistillation(nn.Module):
    дэф __init__(сам):
        супер(KnowledgeDistillation, сам).__init__()
        self.fc1 = nn.Linear(784, 128)
        self.fc2 = nn.Linear(128, 10)

    дэф наперад(я, х):
        x = torch.relu(self.fc1(x))
        x = self.fc2(x)
        вярнуць х

teacher_model = ModelPruning()
student_model = Дыстыляцыя ведаў()

3. Квантаванне

Квантаванне прадугледжвае зніжэнне дакладнасці вагаў і актывацый мадэлі штучнага інтэлекту, зніжэнне патрабаванняў да вылічэнняў мадэлі штучнага інтэлекту.

імпартны факел
імпартаваць torch.nn як nn

клас Quantization (nn.Module):
    дэф __init__(сам):
        супер(квантаванне, самастойна).__init__()
        self.fc1 = nn.Linear(784, 128)
        self.fc2 = nn.Linear(128, 10)

    дэф наперад(я, х):
        x = torch.relu(self.fc1(x))
        x = self.fc2(x)
        вярнуць х

мадэль = 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(мадэль_настаўніка, мадэль_навучэнца) Дыстыляцыя ведаў з выкарыстаннем дывергенцыі KL
torch.nn.utils.weight_norm(model.fc1) Нармалізацыя вагі з дапамогай нормы вагі
torch.nn.utils.clip_grad_norm_(model.parameters(), 1.0) Градыентнае адсячэнне з дапамогай нормы clip grad
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) Зліццё пакетнай нармалізацыі з выкарыстаннем fuse bn eval
torch.nn.utils.fuse_bn_eval(model.fc1) Зліццё пакетнай нармалізацыі з выкарыстаннем fuse bn eval

Візуалізацыя

{
  "тып": "бар",
  "дадзеныя": {
    "ярлыкі": ["Адразанне мадэлі", "Перагонка ведаў", "Квантаванне"],
    "наборы дадзеных": {
      "label": "Дакладнасць",
      "дадзеныя": [0,9, 0,85, 0,8]
    }
  },
  "параметры": {
    "назва": {
      "дысплей": праўда,
      "text": "Параўнанне дакладнасці"
    },
    "легенда": {
      "дысплей": праўда
    }
  }
}

Выснова

Эфектыўнае разгортванне мадэлі штучнага інтэлекту на краявых прыладах патрабуе спалучэння метадаў сумеснага праектавання апаратнага і праграмнага забеспячэння. Скарачэнне мадэлі, перагонка ведаў і квантаванне - гэта некаторыя метады, якія можна выкарыстоўваць для памяншэння памеру і патрабаванняў да вылічэнняў мадэляў штучнага інтэлекту. Выкарыстоўваючы гэтыя метады, распрацоўшчыкі могуць ствараць мадэлі штучнага інтэлекту, якія аптымізаваны для перспектыўных прылад, дазваляючы выкарыстоўваць прыкладанні ў рэжыме рэальнага часу, такія як разумныя дамы, аўтаномныя транспартныя сродкі і прамысловая аўтаматызацыя.

Будучая праца

Будучая праца ў гэтай галіне ўключае:

  • Распрацоўка новых метадаў сумеснага праектавання апаратнага і праграмнага забеспячэння: Даследчыкі і распрацоўшчыкі могуць вывучаць новыя метады аптымізацыі мадэляў штучнага інтэлекту для краявых прылад.
  • Паляпшэнне алгарытмаў абрэзкі мадэлі і перагонкі ведаў: распрацоўка больш эфектыўных алгарытмаў абразання мадэлі і перагонкі ведаў можа прывесці да павышэння прадукцыйнасці і дакладнасці.
  • Даследаванне выкарыстання іншых мадэляў штучнага інтэлекту: іншыя мадэлі штучнага інтэлекту, такія як дрэвы рашэнняў і выпадковыя лясы, могуць быць вывучаны для разгортвання краявых прылад.

Працягваючы развіваць сферу сумеснага праектавання апаратнага і праграмнага забеспячэння, мы можам ствараць больш эфектыўныя і эфектыўныя мадэлі штучнага інтэлекту для краявых прылад, забяспечваючы шырокі спектр прыкладанняў і варыянтаў выкарыстання.


Have Questions?

Let's Talk

Contact me on LinkedIn