Efektyvus AI modelio diegimas kraštiniuose įrenginiuose naudojant bendrą aparatinės ir programinės įrangos projektavimą | B4N1

Efektyvus AI modelio diegimas kraštiniuose įrenginiuose naudojant bendrą aparatinės ir programinės įrangos projektavimą

3 months ago · b4n1 Read time: 3 min

Efektyvus AI modelio diegimas kraštiniuose įrenginiuose naudojant aparatinės ir programinės įrangos bendrą dizainą

Įvadas

Pažangių įrenginių paplitimas suteikė naujų galimybių dirbtinio intelekto (DI) programoms, kurios gali būti įdiegtos realiuoju laiku, o tai leidžia naudoti tokias programas kaip išmanieji namai, autonominės transporto priemonės ir pramoninė automatizacija. Tačiau riboti skaičiavimo ištekliai ir kraštinių įrenginių galios apribojimai kelia didelių iššūkių diegiant AI modelį. Šiame straipsnyje mes ištirsime dirbtinio intelekto, programinės įrangos inžinerijos ir architektūros sankirtą, kad optimizuotume kraštinių įrenginių veikimą, pasinaudodami naujausiais dirbtinio intelekto modelių efektyvumo ir aparatinės ir programinės įrangos bendro projektavimo metodais.

** AI modelio diegimo kraštiniuose įrenginiuose iššūkiai**

Edge įrenginiai pasižymi ribotais skaičiavimo ištekliais, įskaitant procesorių, atmintį ir energijos suvartojimą. Tradiciniai AI modeliai, kurie dažnai yra sukurti debesies pagrindu, nėra optimizuoti kraštiniams įrenginiams. Dėl to jie gali sukelti:

  • Našumo pablogėjimas: AI modeliai gali neveikti efektyviai kraštiniuose įrenginiuose, todėl reakcijos laikas lėtėja ir tikslumas.
  • Energijos sąnaudos: AI modeliai gali sunaudoti daug energijos, o tai gali kelti susirūpinimą baterijomis maitinamiems kraštiniams įrenginiams.
  • Atminties apribojimai: AI modeliams gali prireikti daug atminties, o tai gali būti iššūkis pažangiems įrenginiams su ribotais atminties ištekliais.

Aparatinės ir programinės įrangos bendro projektavimo metodai

Norint išspręsti šiuos iššūkius, aparatinės ir programinės įrangos bendro projektavimo metodai pasirodė kaip perspektyvus sprendimas. Šie metodai apima kraštinio įrenginio aparatinės ir programinės įrangos komponentų projektavimą kartu, optimizuojant juos dirbtinio intelekto modelio diegimui.

1. Modelinis genėjimas

Modelio genėjimas apima nereikalingų svorių ir jungčių pašalinimą iš AI modelio, sumažinant jo dydį ir skaičiavimo reikalavimus. Ši technika gali būti taikoma tiek neuroniniams tinklams, tiek sprendimų medžiams.

importo žibintuvėlis
importuoti žibintuvėlį.nn kaip nn

klasė ModelPruning(nn.Module):
    def __init__(self):
        super(ModelPruning, savarankiškai).__init__()
        self.fc1 = nn.Linear(784, 128)
        self.fc2 = nn.Linear(128, 10)

    def pirmyn (savęs, x):
        x = torch.relu(self.fc1(x))
        x = self.fc2(x)
        grąžinti x

modelis = ModelPruning()
pruned_model = torch.nn.utils.prune_l1_unstructured(modelis, 'svoris', 0,1)

2. Žinių distiliavimas

Žinių distiliavimas apima žinių perkėlimą iš didelio, sudėtingo AI modelio į mažesnį, paprastesnį. Šis metodas gali būti naudojamas norint sumažinti AI modelio dydį ir skaičiavimo reikalavimus.

importo žibintuvėlis
importuoti žibintuvėlį.nn kaip nn

klasė žinių distiliavimas (nn. modulis):
    def __init__(self):
        super(Knowledge Distiliation, self).__init__()
        self.fc1 = nn.Linear(784, 128)
        self.fc2 = nn.Linear(128, 10)

    def pirmyn (savęs, x):
        x = torch.relu(self.fc1(x))
        x = self.fc2(x)
        grąžinti x

mokytojas_modelis = ModelPruning()
student_model = Žinių distiliavimas()

3. Kvantifikavimas

Kvantifikavimas apima AI modelio svorių ir aktyvacijų tikslumo mažinimą, AI modelio skaičiavimo reikalavimų sumažinimą.

importo žibintuvėlis
importuoti žibintuvėlį.nn kaip nn

klasės kvantavimas (nn. modulis):
    def __init__(self):
        super(Kvantifikavimas, savęs).__init__()
        self.fc1 = nn.Linear(784, 128)
        self.fc2 = nn.Linear(128, 10)

    def pirmyn (savęs, x):
        x = torch.relu(self.fc1(x))
        x = self.fc2(x)
        grąžinti x

modelis = ModelPruning()
quantized_model = torch.quantization.quantize_dynamic(modelis, {torch.nn.Linear}, dtype=torch.qint8)

5–10 dažniausiai naudojamų komandų / fragmentų

Komanda/ fragmentas Aprašymas
`torch.nn.utils.prune_l1_unstructured(modelis, 'svoris', 0,1)' Modelinis genėjimas naudojant L1 reguliavimą
`torch.quantization.quantize_dynamic(modelis, {torch.nn.Linear}, dtype=torch.qint8)' Kvantifikavimas naudojant dinaminį kvantavimą
torch.nn.utils.kldistance(mokytojo_modelis, mokinio_modelis) Žinių distiliavimas naudojant KL divergenciją
torch.nn.utils.weight_norm(model.fc1) Svorio normalizavimas naudojant svorio normą
"torch.nn.utils.clip_grad_norm_(model.parameters(), 1.0)" Gradiento kirpimas naudojant klipo grad normą
"torch.nn.utils.clip_grad_value_(model.parameters(), 1.0)" Gradiento iškirpimas naudojant klipo laipsnio reikšmę
torch.nn.utils.remove_weight_norm(model.fc1) Svorio normalizavimo pašalinimas naudojant pašalinti svorio normą
"torch.nn.utils.fuse_conv_bn_eval(model.fc1)" Konvoliucinis sluoksnių suliejimas naudojant saugiklį conv bn eval
torch.nn.utils.fuse_bn_eval(model.fc2) Paketinis normalizavimo lydymas naudojant saugiklį bn eval
torch.nn.utils.fuse_bn_eval(model.fc1) Paketinis normalizavimo lydymas naudojant saugiklį bn eval

Vizualizacija

{
  "tipas": "juosta",
  "duomenys": {
    "etiketės": ["Modelio genėjimas", "Žinių distiliavimas", "Kvantifikavimas"],
    "duomenų rinkiniai": {
      "etiketė": "Tikslumas",
      „duomenys“: [0,9, 0,85, 0,8]
    }
  },
  "parinktys": {
    "pavadinimas": {
      "display": tiesa,
      "text": "Tikslumo palyginimas"
    },
    "legenda": {
      ekranas: tiesa
    }
  }
}

Išvada

Norint efektyviai diegti AI modelį kraštiniuose įrenginiuose, reikia derinti aparatinės ir programinės įrangos bendro projektavimo metodus. Modelių genėjimas, žinių distiliavimas ir kvantavimas yra keletas metodų, kuriuos galima naudoti norint sumažinti AI modelių dydį ir skaičiavimo reikalavimus. Naudodami šiuos metodus, kūrėjai gali sukurti DI modelius, optimizuotus pažangiems įrenginiams, įgalinančius realaus laiko programas, tokias kaip išmanieji namai, autonominės transporto priemonės ir pramoninė automatika.

Ateities darbas

Būsimas darbas šioje srityje apima:

  • Naujų aparatinės ir programinės įrangos bendro projektavimo metodų kūrimas: tyrėjai ir kūrėjai gali ištirti naujus būdus optimizuoti DI modelius pažangiems įrenginiams.
  • Modelių genėjimo ir žinių distiliavimo algoritmų tobulinimas: veiksmingesnių modelių genėjimo ir žinių distiliavimo algoritmų kūrimas gali pagerinti našumą ir tikslumą.
  • Kitų dirbtinio intelekto modelių naudojimo tyrimas: galima ištirti kitus AI modelius, pvz., sprendimų medžius ir atsitiktinius miškus, kad būtų galima įdiegti kraštutinius įrenginius.

Tęsdami pažangą bendro aparatinės ir programinės įrangos projektavimo srityje, galime sukurti efektyvesnius ir efektyvesnius DI modelius pažangiems įrenginiams, suteikiančius platų programų ir naudojimo atvejų spektrą.


Have Questions?

Let's Talk

Contact me on LinkedIn