7.10. CMSIS-NN¶
Popis operatora kroz koji TFLM prolazi uglavnom čini šačica teških operatora: konvolucija koja klizi malom mrežom naučenih težina preko ulaznog tenzora i na svakoj poziciji upisuje ponderiranu sumu; dubinska konvolucija koja čini isto po kanalu; potpuno povezani sloj koji množi matricu vektora ulaza s matricom težina; sažimanje koje smanjuje tenzor uzimanjem maksimuma ili prosjeka preko malih susjedstava; aktivacijske funkcije poput ReLU i sigmoide koje se izvode po pojedinoj vrijednosti kroz svaku vrijednost. Slikovno zaključivanje većinu svojih ciklusa provede unutar tih nekoliko operatora.
Implementirani na izravan način, bili bi spori na mikrokontroleru. CMSIS-NN je Armova biblioteka brzih – ručno ugođenih u asembleru, cjelobrojno kvantiziranih na int8 i uint8 vrijednosti koje opisuje ulaz/izlaz tenzora, i napisanih prema CPU-ovim SIMD instrukcijama. SIMD – Single Instruction, Multiple Data – omogućuje CPU-u da pokrene jednu aritmetičku operaciju nad više vrijednosti u istom ciklusu. Obično skalarno množenje-zbrajanje proizvodi jedan rezultat po ciklusu; SIMD množenje-zbrajanje pakira nekoliko vrijednosti u širok registar i proizvodi ih sve odjednom.
Cortex-M7 na H7 i RT1062 ima Armovo DSP proširenje, koje drži četiri int8 vrijednosti u 32-bitnom registru i izvodi množenje-zbrajanje nad sve četiri u jednom ciklusu. Cortex-M55 na AE3 ima Helium – formalno MVE, vektorsko proširenje M-profila – koje drži šesnaest int8 traka u 128-bitnom registru, četiri puta veću propusnost po ciklusu. Helium je širi skup CPU instrukcija, a ne akcelerator; Ethos-U55 NPU na istom čipu je akcelerator.
Isporučene TFLM gradnje povezane su s CMSIS-NN, a TFLM tijekom izvođenja svaki teški operator usmjerava na ispravnu SIMD inačicu za kameru. Na AE3 je usmjeravanje malo složenije: Vela kompilator je već izvanmrežno prošao model i označio povezane isječke operatora prihvatljivih za NPU – podgrafove – za usmjeravanje na Ethos-U. U trenutku zaključivanja ti se podgrafovi izvode na akceleratoru u jednom bloku, a ostatak se vraća na Helium CMSIS-NN na M55.
Operatori s pomičnim zarezom potpuno zaobilaze CMSIS-NN i izvode se kroz TFLM-ove prenosive referentne jezgre. Razlika u točnosti između int8 i float modela obično je mala; razlika u propusnosti je velika. Modeli isporučeni na kameri zbog toga su kvantizirani na int8.