Če ste kdaj poskušali pospešiti sklepanje umetne inteligence na običajni strojni opremi in se počutili ujeti med počasnim izvajanjem CPE in zapletenostjo GPE, je morda tisti manjkajoči del. Izdelan je s strani podjetja Intel in spreminja običajne modele globokega učenja v hitre, prenosljive aplikacije, ki se izvajajo na CPE-jih, integriranih GPE-jih in celo NPU-jih – ne da bi morali prepisati celoten sklad.
V tem praktičnem, na rešitve usmerjenem vodniku boste natančno izvedeli, kako uporabljati – od namestitve do pretvorbe modela, optimizacije in uvedbe. Pokrili bomo najpogostejše poteke dela, delili primer kode in poudarili nasvete za učinkovitost delovanja, ki so pomembni.
Kaj boste na kratko izvedeli:
- Namestite v nekaj minutah s pip
- Pretvorite modele (izvoz ) z uporabo programa za optimizacijo modelov
- Izvajajte sklepanje z izvajalnim okoljem v jeziku
- Optimizirajte s kvantizacijo in orodji za merjenje zmogljivosti
- Uvedite v CPE, iGPU in NPU z minimalnimi spremembami kode
Kaj je in zakaj ga uporabljati?
je odprtokodni nabor orodij za optimizacijo in uvajanje modelov umetne inteligence na strojni opremi in drugod. Posebej močan je za produkcijsko sklepanje, ko želite predvidljivo zmogljivost, nizko zakasnitev in prenosljivost – brez težke nastavitve , če je ne potrebujete. Podpira priljubljene formate modelov, kot je , in se lepo integrira z običajnimi ogrodji.
Glavne prednosti:
- Hitrost: Optimizirana jedra in preoblikovanja grafov pospešijo sklepanje na CPE-jih in GPE-jih.
- Prenosljivost: Ista aplikacija lahko cilja na CPE, iGPU, NPU s spremembo naprave v eni vrstici.
- Učinkovitost: Kvantizacija, stiskanje modela in optimizacije izvajalnega okolja zmanjšajo zakasnitev in porabo pomnilnika.
- Enostavnost: Čist in orodja omogočajo enostavno uporabo za začetnike.
1. korak: Namestite
Za večino uporabnikov je najhitrejši način prek pip:
- Zagotovite, da je nameščen 3.9–3.12 (64-bit).
- Ustvarite in aktivirajte virtualno okolje (priporočeno).
- Namestite:
pip install -U openvino openvino-dev
- Preverite:
python -c "import openvino; print(openvino.version)"
Če imate raje uradne podrobne vire ali želite spremljati opombe, specifične za različico, in podporo za platformo, začnite z dokumenti in trenutnim središčem dokumentacije. Za hitro referenco za namestitev s pip in združljivost si oglejte stran .
2. korak: Pripravite svoj model (priporočeno )
najbolje deluje z modeli (Intermediate Representation) (.xml/.bin). Večina uporabnikov najprej izvozi v , nato pa pretvori v z uporabo programa za optimizacijo modelov.
Priljubljene poti:
- : SavedModel → (prek tf2onnx) →
- Obstoječi : Neposredno pretvorite v
Hiter primer ( → ):
- Izvozite svoj model v znotraj :
torch.onnx.export(model, dummy_input, "model.onnx", opset_version=17, do_constant_folding=True)
- Preverite veljavnost z onnx.checker.check_model ali ga enkrat zaženite v onnxruntime.
3. korak: Pretvorite v s programom za optimizacijo modelov
Program za optimizacijo modelov pretvori modele ogrodja v in uporabi optimizacije na ravni grafa. Po namestitvi openvino-dev lahko zaženete:
- mo --input_model model.onnx --output_dir ov_model
To ustvari model.xml in model.bin.
Uporabne zastavice:
- --input_shape: Prisilite vhodne dimenzije, če je vaš model dinamičen.
- --mean_values/--scale_values: Normalizirajte vhode med predhodno obdelavo.
- --compress_to_fp16: Zmanjšajte natančnost in velikost modela za hitrost/pridobitev pomnilnika.
Nasvet: Če ciljate na CPE sklepanje z nizko zakasnitvijo, pogosto prinese odlično ravnovesje med hitrostjo in natančnostjo. Hranite osnovni za testiranje .
4. korak: Izvajajte sklepanje z izvajalnim okoljem ()
Osnovni potek dela izvajalnega okolja je preprost.
Primer (razvrščanje slik):
from openvino.runtime import Core
import numpy as np
import cv2
core = Core
model = core.read_model("ov_model/model.xml")
compiled_model = core.compile_model(model, device_name="CPU") # options: "CPU", "GPU", "AUTO", "NPU" (where supported)
input_layer = compiled_model.inputs. Če želite profilirati aktivne točke CPE in izkoriščenost niti, ima recept posebej za aplikacije .
6. korak: Optimizirajte s kvantizacijo (INT8)
Kvantizacija po usposabljanju () lahko zmanjša velikost modela in poveča hitrost z minimalno izgubo natančnosti:
- Uporabite vgrajeno orodje (Post-Training Optimization Tool), ki je vključeno v openvino-dev.
- Zagotovite majhen nabor podatkov za umerjanje, ki je podoben vašim produkcijskim podatkom.
- Izvozite in ga preizkusite. Če natančnost ni zadostna, poskusite mešano natančnost () ali selektivno kvantizacijo.
Običajni potek kvantizacije:
- Zberite reprezentativne vzorce.
- Konfigurirajte parametre kvantizacije (na tenzor proti na kanal, simetrično proti asimetrično).
- Zaženite umerjanje in preverjanje.
- Primerjajte : zakasnitev, pretočnost, natančnost top-1/top-5 ali meritve, specifične za nalogo.
7. korak: Pravilno obravnavajte predhodno obdelavo
Pričakovanja glede vhoda/izhoda modela se pogosto razlikujejo. Standardizirajte predhodno obdelavo:
- Spremenite velikost/sredinsko obrežite na pričakovano velikost (npr. 224 × 224)
- Vrstni red kanalov ( proti )
- Normalizacija (povprečje/std)
Korake predhodne obdelave lahko vdelate v z uporabo v izvajalnem okolju , tako da koda vaše aplikacije ostane čista in prenosljiva.
Primerček kode:
from openvino.runtime import Core, Layout, Type
from openvino.preprocess import PrePostProcessor
core = Core
model = core.read_model("ov_model/model.xml")
ppp = PrePostProcessor(model)
ppp.input.tensor.set_layout(Layout("NHWC"))
ppp.input.preprocess.convert_element_type(Type.f32)
ppp.output.tensor
model = ppp.build
compiled_model = core.compile_model(model, "AUTO")
8. korak: Povečajte na video in pretočno predvajanje
Za video analitiko lahko združite sklepanje z ali . Uporabite asinhrone zahteve za sklepanje in paketno obdelavo, da ohranite visoko število sličic na sekundo in nizko zakasnitev.
Nasveti:
- Uporabite asinhronski : Več zahtev med izvajanjem izboljša pretočnost na CPE-jih.
- Paketirajte okvirje, če vaš model izkorišča vektorizirano izvajanje.
- Pripnite niti ali prilagodite tokove za predvidljivo zakasnitev v večjedrnih sistemih.
9. korak: Pametno uvajajte v različne naprave
Ena od supermoči je brezhibno ciljanje na naprave:
- : Močna privzeta nastavitev; splošno na voljo; odlična za rob in strežnik.
- (integriran): Dobro pospeševanje brez diskretne ; kakovost gonilnika je pomembna.
- : Naj izvajalno okolje izbere; odlično za prenosljive aplikacije.
- Heterogena izvedba: Razdelite plasti med naprave, kjer je to koristno.
Začnite z za prenosljivost. Če potrebujete večji nadzor, preizkusite CPE proti GPE in se odločite za vsak model posebej.
Praktični primeri po nalogah
- Pretvorite → ; uporabite ; naprava ; asinhrono sklepanje.
- Predhodna obdelava: spremenite velikost, sredinsko obrežite, normalizirajte.
- Kvantizirajte, če potrebujete >2-krat večjo pretočnost z majhnim padcem natančnosti.
- Zagotovite, da so dinamične oblike obravnavane ali popravite velikost vhoda.
- Razčlenite izhode: dekodirajte polja, uporabite odpravo ne-maksimumov na strani odjemalca.
- Uporabite za uvedbe na rob, da dosežete realni čas na CPE-jih.
- Uporabite razdelitev na ploščice za velike slike.
- Optimizirajte naknadno obdelavo (argmax, preslikavo barv) z vektoriziranim .
- Uporabite optimizacije -text, kadar so na voljo.
- Predpomnite cevovode za tokenizacijo; razmislite o za transformatorje.
- Stabilna difuzija / Generativno:
- Ciljajte na ; optimizirajte zanke razporejevalnika/sklepanja.
- Profiliranje pomaga – difuzijski cevovodi so večstopenjski.
Kontrolni seznam za testiranje in preverjanje
- Primerjajte izhode z osnovno različico () za majhen nabor testov.
- Preverite številske razlike po pretvorbah .
- Izmerite zakasnitev p50/p95 in pretočnost pri pričakovani obremenitvi.
- Stresni test: dolge serije za ulov težav s pomnilnikom ali nitmi.
Hitri odgovori za odpravljanje težav
- Napake pri pretvorbi s programom za optimizacijo modelov:
- Posodobite openvino-dev; poskusite z novejšim opset; poenostavite graf (onnxsim).
- Zagotovite --input_shape; potrdite podporo za dinamični vnos.
- Uporabite , asinhronski , nastavite niti/toke; zaženite benchmark_app.
- Posodobite gonilnike; poskusite z device="AUTO"; preverite dokumentacijo za podprte GPE-je.
Viri za učenje in uradna dokumentacija
- Začnite tukaj za praktične vadnice, zvezke in vodnike za nastavitev:
- Celoten portal dokumentacije za , program za optimizacijo modelov, , vzorce:
- Referenca za namestitev s pip za hitre namestitve in združljivost:
- Profiliranje in analiza zmogljivosti za aplikacije : vodnik
Mimogrede, če pripravljate tehnično vsebino, vadnice ali interne priročnike o optimizaciji in uvedbi, vam lahko orodja, kot je pisalni prostor Sider.AIOpenVINO, pomagajo hitro združiti kodo, merila uspešnosti in pripoved – koristno pri dokumentiranju zapletenih poskusov zmogljivosti Sider.AIOpenVINO ali primerjav med več napravami. Praktični naslednji koraki
- Namestite s pip in zaženite benchmark_app na vzorčnem .
- Pretvorite znan dober model (npr. ) in preverite natančnost.
- Poskusite , nato s ; izmerite zakasnitev in pretočnost.
- Preklopite device_name med , in ; izberite najboljšo za vašo ciljno strojno opremo.
- Profilirajte z , če morate iztisniti dodatno zmogljivost.
Ključne ugotovitve
- omogoča hitro, prenosljivo in strojno osveščeno sklepanje umetne inteligence.
- Pretvorba v plus pametna predhodna obdelava prinaša zanesljive pospešitve.
- Kvantizacija in asinhrono izvajanje sta vaša najboljša prijatelja za zmogljivost v realnem času.
- Prilagodljivost naprave () pomeni eno kodno bazo, veliko ciljev.
V1:Kako najlažje namestim ?
Uporabite virtualno okolje in zaženite: pip install -U openvino openvino-dev. Preverite s hitrim preverjanjem uvoza in se posvetujte z uradno dokumentacijo za posebnosti platforme.
V2:Kako pretvorim svoj model v ?
Izvozite svoj model v , nato zaženite program za optimizacijo modelov (mo), da ustvarite datoteke .xml/.bin. Zagotovite vhodne oblike in razmislite o za hitrost in pridobitev pomnilnika.
V3:Ali se lahko izvaja na CPE in integrirani GPE brez sprememb kode?
Da. Prevedite model z device_name="AUTO", "CPU" ali "GPU". Naprave lahko preklapljate z enim samim parametrom, medtem ko preostanek kode ostane nespremenjen.
V4:Kako lahko pospešim sklepanje z ?
Uporabite kvantizacijo ali , asinhronski in benchmark_app za nastavitev niti in tokov. Profilirajte z za globljo analizo ozkih grl.
V5:Ali podpira in generativne modele?
Da. Podpira vrsto in difuzijskih modelov; uporabite in razmislite o za transformatorje. Preverite natančnost po optimizaciji in izmerite zakasnitev pri obremenitvi.