La Windows 11-s lokaalselt töötav tehisintellekt See pole enam ainult laborite või suurkorporatsioonide päralt. Tänapäeval saate täiustatud mudeleid otse oma arvutis käitada, ilma pilveteenuseid kasutamata, kasutades ära protsessori, graafikaprotsessori ja isegi NPU võimalusi, kui teie masin on tipptasemel. Ja selle lihtsa saavutamise võti on... ONNX Runtime on integreeritud Windowsi masinõppe ja .NET-iga.
Järgmistes ridades näeme rahulikult, kuid ilma põõsast ümber pööramata, Kuidas kasutada kohalikku tehisintellekti ONNX Runtime'iga Windows 11-sMis on ONNX ja selle käituskeskkond, kuidas see sobib Windowsi masinõppega, mida on vaja installida, kuidas seadistada reaalseid näiteid .NET/WinUI 3-s, kuidas kasutada DirectML-i ja riistvarakiirendust ning milliseid praktilisi stsenaariume saab katta (piltide klassifitseerimine, kõne tekstiks teisendamine, kohalikud keelemudelid, RAG jne). Näete osa koodist, kuid põhirõhk on sellel, et mõistaksite koodi täielikku voogu. ONNX-mudelite laadimine, ettevalmistamine ja käitamine teie arvutis.
Mis on ONNX ja millist rolli mängib ONNX Runtime Windows 11-s?
Standard ONNX (avatud närvivõrgu vahetus) See on avatud vorming, mis on loodud närvivõrgu mudelite kirjeldamiseks koostalitlusvõimelisel viisil. Lihtsamalt öeldes: saate treenige mudelit PyTorchis või TensorFlow'sEksportige see ONNX-i ja kasutage seda seejärel Windowsis, pilves, veebis või kus iganes soovite, ilma et peaksite kõike nullist ümber kirjutama.
Un ONNX-mudel See hõlmab võrgu struktuuri (kihid, ühendused, operatsioonitüübid), treeningust tulenevaid kaalusid ning sisendite ja väljundite määratlust. Tänu sellele saavad erinevad tööriistad ja käituskeskkonnad sellest täpselt aru. milliseid andmeid nad ootavad, kuidas neid töödelda ja mida nad tagastavadNäiteks piltide klassifitseerimise mudel saab eeltöödeldud pildi ja tagastab iga klassi tõenäosusvektori.
See põhineb sellel standardsel vormingul ONNX-i käitusaegmis on optimeeritud käitusaja mootor nende mudelite käitamiseks mitmel platvormil. See käitusaja pakub ühtset API-t järgmistele:
- Laadi ONNX-mudelid kettalt või mälust.
- Loo järeldusseansse erinevate teostusvõimalustega.
- Ühenda täitmisteenuse pakkujad (Täitmisteenuse pakkujad) protsessorile, graafikakaardile ja võrguprosessorile.
- Sisesta mudelile sisendtensorid ja võtke väljundpingutid tagasi.
Windows 11-s on ONNX Runtime natiivselt integreeritud järgmiste funktsioonide kaudu: WindowsML ja ökosüsteemist Windowsi rakenduste SDK ja DirectMLSee võimaldab teie töölauarakendustel, olgu need siis C#, WinUI 3, WPF või isegi WebNN-iga veebirakendused, ära kasutada Riistvaraline kiirendus ilma tootjapõhiste draiverite ja SDK-de vaevata.
Tehisintellekti lokaalse kasutamise eelised võrreldes pilvega
Töötama koos Kohalikud tehisintellekti mudelid Windows 11-s Sellel on mitu väga selget eelist võrreldes ainult kaugteenustele (nt ChatGPT, Gemini või teised) lootmisega:
Esiteks andmete privaatsus ja konfidentsiaalsus See paraneb märkimisväärselt, kuna töötlemine toimub teie enda seadmes. Kui käitate ONNX-mudelit oma arvutis, ei lahku teie dokumendid, heli, pildid ega meditsiinilised andmed kunagi teie võrgust, mis vähendab oluliselt teabe lekete või väärkasutamise ohtu.
Samuti on olemas tegur kulu ja kontrollKuna te ei sõltu pidevatest päringutest tasulise pilve API kaudu, väldite ootamatuid arveid ja saate juurutada lahendusi, mis toimivad kogu organisatsioonis laiaulatuslikult, ilma tellimuskulusid mitmekordistamata. Investeerite riistvarasse üks kord ja saate sellest maksimumi ONNX Runtime'i ja Windowsi masinõppe abil.
La madal latentsus See on veel üks tugevus. Kui kasutate arvutinägemise järeldusi, kontekstuaalseid assistente või kõnetuvastust, lisab iga edasi-tagasi reis pilve millisekundeid. Mudeli lokaalne käitamine vähendab reageerimisaega ja parandab sujuvuse tunnet, mis on interaktiivsete rakenduste või servaseadmete puhul kriitilise tähtsusega.
Viimaseks, aga mitte vähem tähtsaks, on olemas ka sõltumatus Interneti-ühendusestKui teie rakendus peab töötama lennukis, kaugtehases või mis tahes piiratud võrguühendusega keskkonnas, tagab ONNX-mudelite rakendusse endasse (näiteks MSIX-i sisse) manustamine, et tehisintellekt töötab jätkuvalt laitmatult, täpselt nagu PhotoPrism koos kohaliku tehisintellektiga.
Windowsi masinõpe, ONNX Runtime ja DirectML: kuidas need kõik kokku sobivad
Tänapäevases Windows 11 ökosüsteemis Windowsi masinõpe toimib vahetarkvara kihina See ühendab tehisintellekti mudeli järelduste tegemiseks protsessori, graafikaprotsessori ja protsessoriprosessori (NPU) halduse. Selle ülesanne on koordineerida saadaolevaid riistvararessursse nii, et ONNX-mudeli täitmine oleks võimalikult tõhus, ilma et peaksite iga kiibi üksikasjadega maadlema.
Windowsi masinõpe on tihedalt integreeritud ONNX Runtime'igaSee taaskasutab oma API-sid, tugineb oma täitmisteenuse pakkujatele (EP-dele) ning delegeerib mudeli kompileerimise ja optimeerimise neile. Microsoft tegeleb ka levitada ja hallata nii ONNX Runtime'i kui ka erinevate tootjate EP-sidSee lihtsustab oluliselt teie rakenduste pakendamist ja vähendab väliseid sõltuvusi.
Selle mõistatuse võtmekomponent on DirectMLAbstraktsioonikiht, mis võimaldab teil käitada masinõppemudeleid, kasutades ühtsel viisil graafikaprotsessorit (ja ühilduvate süsteemide puhul NPU-d). ONNX Runtime pakub DirectML-i jaoks spetsiaalset EP-d, et saaksite Loo järeldusseansse, mis kasutavad automaatselt protsessorit, graafikakaarti või võrguprotsessorit, olenevalt arvuti saadaolevatest võimalustest..
Suurtele tootjatele meeldib AMD, Intel, NVIDIA ja Qualcomm Nad teevad Microsoftiga koostööd, et pakkuda optimeeritud EP-sid: AMD integreerib Ryzeni tehisintellekti, Intel ühendab OpenVINO Windowsi masinõppega, NVIDIA pakub TensorRT RTX GPU-dele ja Qualcomm häälestab Snapdragon X NPU-d. Tänu sellele saavad samad ONNX-mudelid ära kasutada väga mitmekesist riistvara ilma, et peaksite oma kõrgetasemelist koodi muutma; kui teil on vaja süsteemi peenhäälestada, õppige, kuidas seda teha. jõudlusprofiilide konfigureerimine.
Kõik see on pakendatud sellesse Windowsi rakenduste SDK (alates versioonist 1.8.1) ja seda toetatakse ametlikult seadmetes, millel on Windows 11 24H2 või uuemSee muudab operatsioonisüsteemi väga tugevaks platvormiks kohalike tehisintellekti kogemuste jaoks tootmises.
Eeltingimused kohaliku tehisintellekti kasutamiseks ONNX Runtime'iga Windows 11-s
Alustuseks Käivita ONNX-mudeleid lokaalselt Windows 11-s Teie .NET-rakenduste puhul on soovitatav üle vaadata mõned põhilised keskkonna- ja tööriistanõuded:
Süsteemi tasandil on teil vaja Windows 11 on uuendatud (ideaalis järk 22621 või uuem) ja kui kavatsete juurutada kaasaegseid rakendusi, siis töötage sellega MSIX-i pakendatud Windowsi rakenduste SDK ja WinUI 3 projektidSee annab teile juurdepääsu Windowsi masinõppe ja DirectML-i API-dele ning uusimatele tehisintellekti integratsioonifunktsioonidele.
Arenduskeskkonna osas on kõige levinum variant kasutada Visual Studio 2022 või uuem .NET töölaua arenduskoormusega, mis on lubatud. Sealt saate luua projekte WinUI 3, WPF, .NET MAUI või isegi konsoolirakendused C#-s või VB.NET-is mis viitavad ONNX Runtime'ile ja Windowsi masinõppele.
Sõltuvuste osas on mitu olulist NuGeti paketti, mida enamikes stsenaariumides korratakse: Microsoft.ML.OnnxRuntime protsessori jaoks Microsoft.ML.OnnxRuntime.DirectML Kui soovite GPU-d DirectML-iga kasutada, Microsoft.AI.MachineLearning töötama Windowsi masinõppega WinUI 3-s ja teekidega nagu SixLabors.ImageSharp või sarnane sisendpiltide eeltöötluseks.
Loomulikult on vaja ka vähemalt ühte ühilduv ONNX-mudelEelnevalt treenitud mudeleid saab alla laadida aadressilt ONNXi mudelloomaaed (näiteks ResNet, SqueezeNet, klassifitseerimismudelid, objektide tuvastamine või NLP) või teisendage oma mudeleid PyTorchist või TensorFlow'st selliste tööriistade abil nagu VS Code'i, tf2onnx-i või onnxruntime-toolsi tehisintellekti tööriistakomplekt.
Riistvara osas, kuigi ONNX Runtime on protsessorile optimeeritud ja töötab suurepäraselt ka ilma graafikaprotsessorita, märkate selle kasutamisel selget paranemist. kohalikud kiirendid, näiteks GPU või NPUeriti suurte mudelite puhul (keelemudelid, stabiilne difusioon, sosin jne). Vaadake meie olulise riistvara kontroll-leht.
Kuidas installida ja kasutada ONNX Runtime'i .NET ja WinUI 3 projektides

Üks otsesemaid viise alustamiseks ONNX Runtime'i kasutamine Windows 11-s See puudutab töölauarakenduse loomist .NET-is. Põhimustrit korratakse nii C# kui ka VB.NET-is: viidatakse paketile, laaditakse mudel, valmistatakse sisendid ette ja käivitatakse järeldusseanss.
Traditsioonilises .NET-projektis (näiteks konsoolirakenduses või klassikalises töölauarakenduses) on tüüpiline töövoog paketi lisamine Microsoft.ML.OnnxRuntime Visual Studio NuGeti paketihaldurist ja seejärel looge InferenceSession alustades teie .onnx-faili teekonnast. Seda seanssi kasutate iga kord, kui soovite ennustust teha.
Taotluse korral WinUI 3 töölaud Windowsi rakenduste SDK puhul on protsess sarnane, kuid tavaliselt kombineerite ONNX Runtime'i teiste toetavate teekidega. Näiteks võib tüüpiline piltide klassifitseerimise demo sisaldada järgmist:
- Microsoft.ML.OnnxRuntime ja Microsoft.ML.OnnxRuntime.Managed mudeli teostamise eest.
- SixLabors.ImageSharp piltide laadimiseks, suuruse muutmiseks ja normaliseerimiseks.
- SharpDX.DXGI kui soovite DirectML-i jaoks selgesõnaliselt graafikaadapteri valida.
Peaakna sees (näiteks MainWindow.xaml.cs) tavaliselt lood mudeli initsialiseerimismeetodi, mis konfigureerib SessioonivalikudTäitmisteenuse pakkuja (CPU või DirectML) ja ONNX-mudeli tee. Sel viisil teie rakendus käivitub, initsialiseerib seansi ainult üks kord ja seejärel kasutab seda seanssi iga järelduskutse jaoks uuesti, maksimeerides jõudlust.
Kui eelistate töötada Windowsi masinõpe otse WinUI 3 projektis lisate paketi Microsoft.AI.MachineLearning ja kopeerite oma ONNX-mudeli (näiteks model_mnist.onnx või pildi klassifitseerimise mudeli) sellisesse kausta nagu Varad/ML ja te konfigureerite selle omadused nii, et need lisataks kompileerimise väljundisse sisuna.
Praktiline näide: piltide klassifitseerimine ONNX Runtime'i ja DirectML-i abil
Klassikaline ja väga illustreeriv näide Kohalik tehisintellekt koos ONNX Runtime'iga Windows 11-s See on piltide klassifitseerimine sellise mudeli abil nagu ResNet50 või SqueezeNetKontseptuaalne voog on alati sama, kuigi kood võib olenevalt kasutatavast raamistikust erineda.
WinUI 3 rakenduses saate kujundada lihtsa liidese, millel on nupp foto valimisekskontroll Valitud pildi kuvamise pilt ja TextBlock ennustuste loetlemiseksKasutaja klõpsab nuppu, avaneb FileOpenPicker, valitakse pilt ja taustal töötleb programm seda ning edastab ONNX-mudelile.
Kujutise eeltöötlus hõlmab tavaliselt laadige see 24-bitises RGB-vormingusMuutke selle suurust mudeli poolt oodatavale suurusele (näiteks 224 × 224 pikslit), vajadusel kärpige ja normaliseerige iga kanali väärtused vastavalt mudeli dokumentatsioonis näidatud keskmistele ja standardhälvetele. ImageSharpi puhul tähendab see pildi suuruse muutmist, pikslite rida-realt läbivaatamist ja täitmist. Tihe tensor normaliseeritud väärtustega.
Pärast pinguti ettevalmistamist a OrtValue tensormälust (ilma ebavajalike koopiateta) luuakse mudelikirjetest sõnastik (tavaliselt üks tensor nimega "andmed" või midagi sarnast) ja kutsutakse välja meetod jooks InferenceSessionist. Väljund on tavaliselt klassi kohta tõenäosustensor, mida saab pehme maksi abil järeltöödelda nii, et väärtused oleksid vahemikus ja summa oleks 1.
Lõpuks järjestate tõenäosused suurimast väikseimani ja teile jääb alles 10 silti suurema enesekindlusega ja kuvada neid ekraanil. Tavaliselt tehakse seda abiklassi (näiteks omadustega „Prediction” koos siltide ja usaldusväärsusega) ja siltide tabeli (LabelMap) abil, mis seob iga väljundindeksi semantilise klassiga (koer, auto, klaviatuur jne).
Selline näide demonstreerib, kuidas ONNX Runtime, DirectML ja WinUI 3 sobivad kokku, et pakkuda Kogege kohalikku tehisintellekti moodsa kasutajaliidese, riistvarakiirenduse ja pideva internetiühenduse vajaduseta..
Töötamine Windowsi masinõppe ja ONNX-mudelitega WinUI 3-s
Lisaks "puhta" ONNX Runtime'i kasutamisele saate loota ka järgmisele: Windowsi masinõpe WinUI 3 projektis ...et saada kasu natiivsest operatsioonisüsteemi integratsioonist. See lähenemisviis on väga kasulik, kui soovite oma rakenduse pakendada MSIX-i, kasutada Windowsi rakenduste SDK-d ja tagada järjepideva käitumise tänapäevastes Windows 11 seadmetes.
Tüüpiline protsess koosneb järgmisest: Lisage pakett Microsoft.AI.MachineLearning projekti jaoks kopeerige oma ONNX-mudel (näiteks model_mnist.onnx või pildi klassifitseerimise mudel) sellisesse kausta nagu Varad/ML ja konfigureerige selle omadused nii, et need lisataks kompileerimise väljundisse sisuna.
C# koodist laadite mudeli Windowsi masinõppe API-de abil, Sa lood seansi ja te valmistate sisendandmed ette oodatud vormingus (näiteks tensor 28×28 halltoonides pildiga MNIST-i jaoks või 224×224 pilt keerukama nägemismudeli jaoks). Seejärel käsitleb seanss järgmist: DirectML ja riistvaraline kiirendus läbipaistvalt, kui seade seda toetab.
Kui järeldus on tehtud, töötate väljunditega, et saada kõige tõenäolisem väärtus (näiteks MNIST-i puhul kõige tõenäolisem number) või tõenäosuste komplekt, mida saate liideses kuvada. Kõik see integreerub sujuvalt WinUI 3 XAML-i kasutajaliides, mis võimaldab teil visuaalseid juhtelemente tehisintellekti tulemustega värskendada.
Windowsi masinõpe haldab ka täitmisteenuse pakkujaid ja koordineerida protsessori, graafikaprotsessori ja protsessoriprosessori kasutamist olenevalt saadaolevast riistvarast, ilma et peaksite oma mudeleid muutma või koodi drastiliselt ümber korraldama.
Kohalikud keelemudelid, RAG-id ja muud täiustatud näited
Kohalik tehisintellekt Windows 11-s ei piirdu ainult arvutinägemisega. ONNX Runtime'i ja DirectML-iga saate käivitada ka Keelemudelid (LLM) teisendatud ONNX-iks, häälest tekstiks teisendamise mudelid nagu Whisper või segmenteerimise ja piltide genereerimise arhitektuurid nagu Stable Diffusion.
Microsoft haldab mitmeid ametlikud näited ja tehisintellekti arendusgaleriiAvatud rakendus enam kui 25 interaktiivse demoga, mis näitavad, kuidas integreerida kohalikke mudeleid päris rakendustesse: tehisintellektil põhinevatest heliredaktoritest, mis indekseerivad tekstipäringu põhjal koodijuppe, kuni nutikate märkmete tegemise rakendusteni, mis kasutavad mudeleid nagu Phi-3 kokkuvõtte, automaatse täitmise ja võrguühenduseta arutluskäigu jaoks.
Väga asjakohane muster on Täiustatud taastamine (RAG)Selle lähenemisviisi puhul kombineerite kohaliku keelemudeli välise teadmusbaasiga. Näiteks saab WPF-i rakendus laadida PDF-faili, selle tükeldada ja kohaliku manustamismudeli abil vektoriseerida, need vektorid salvestada ja päringu ajal kõige asjakohasemad fragmendid hankida, et keelemudel saaks genereerida vastuseid reaalsete andmete põhjal, ilma et peaks mudeli kaalusid muutma.
Need näited näitavad, et saate luua funktsionaalseid kontekstuaalseid assistente, semantilisi otsingusüsteeme, heli transkriptsioone ja spetsiaalseid vestlusroboteid. täiesti lokaalne Windows 11-s, kasutades ONNX Runtime'i ja DirectML-i, et hoida jõudlus kontrolli all.
Lisaks on olemas võrdlusprojektid selliste mudelite käitamiseks nagu Phi-3, Leek 3 või Mistral Optimeeritud DirectML-iga, nii ONNX-vormingus kui ka otse PyTorchist, kasutades kergeid rakendusi (nt Gradio-stiilis veebiliidesega), et testida jõudlust ja kohandada sätteid enne nende integreerimist lõplikku rakendusse.
Riistvarakiirendusega tehisintellekt veebis ONNX Runtime Webi ja WebNN-i abil
Veel üks huvitav kasutusviis Kohalik tehisintellekt koos ONNX Runtime'iga Windows 11-s See on veebikeskkond, mis toetab teid ONNX veebikäitusaeg ja WebNN APISelles kontekstis saab selliseid raskekaalulisi mudeleid nagu Stable Diffusion, Segment Anything või Whisper käivitada otse seadme GPU-l või NPU-l DirectML-i kaudu, aga tänapäevasest veebirakendusest.
Näiteks toimuvad avalikud meeleavaldused, mis näitavad, et Stabiilne difusioonturbo, mis genereerib tekstist pilte vaid mõne sekundiga, kasutades WebNN-i ja DirectML-i täiustatud tehisintellekti võimalustega masinatel. Sama kehtib ka Segmenteerige ükskõik midamis võimaldab teil kasutaja üleslaaditud pildilt või muul viisil objekti kärpida Sosinalus, mis teisendab kõne brauseris lokaalselt tekstiks.
Nendes stsenaariumides tegeleb ONNX Runtime Web Laadi ONNX-mudel brauseri kontekstishallata sisend- ja väljundtensoreid ning suhelda WebNN-iga, et suunata teostus Windows 11 seadmes DirectML-i. Tulemuseks on see, et saate pakkuda rikkalikke tehisintellekti kogemusi ilma heli, pilte või teksti kaugserverisse saatmata.
See kombinatsioon muudab Windows 11 väga võimsaks platvormiks mitte ainult natiivsed töölauarakendused, aga ka jaoks hübriidjäreldusega veebirakendusedkus osa loogikast asub pilves ja osa käivitatakse otse kasutaja arvutis.
Arendajatele, kes juba kasutavad veebitehnoloogiaid (JavaScript, SPA raamistikud jne), on see lähenemisviis mugav viis ilma et oleks vaja kogu avaldust ümber kirjutada Tee hüpe lokaalsele tehisintellektile ilma kogu rakendust .NET-is või C#-s ümber kirjutamata.
Head tavad, ohutus ja vastutustundlik areng
Integreerides Tehisintellekti funktsioonid Windowsi rakendustesMicrosoft soovitab järgida mitmeid vastutustundliku arendamise juhiseid, eriti generatiivsete mudelite ja tundliku sisu töötlemise kontekstis. See ei puuduta ainult jõudlust, vaid ka võimaliku kahju või väärkasutuse minimeerimist.
Windowsi tehisintellekti API-d sisaldavad mehhanisme tekstisisu modereerimine selliste teenuste kaudu nagu Microsoft Foundry, mis aitab potentsiaalselt problemaatilisi tulemusi välja filtreerida. Isegi kohalike mudelitega töötamisel on soovitatav kriitilistes valdkondades (rahandus, tervishoid, ohutus jne) rakendada täiendavaid sisendi valideerimise ja väljundite ülevaatamise kihte.
Rakenduse disaini seisukohast on soovitatav sisendeid enne järelduse alustamist valideerida (piltide suurused, failitüübid, teksti pikkus), hallake GPU krahhe või kiirenduse puudumist alternatiivsete protsessori marsruutide abil ja vältige mudeli korduvat laadimist iga päringu korral. Järeldusseansi elus hoidmine ja taaskasutamine on hea jõudluse võti.
Samuti on oluline arvestada ONNX mudelite optimeerimineSellised meetodid nagu kvantiseerimine, kärpimine ja operatsioonide ühendamine võivad vähendada mudeli suurust ja parandada kiirust ilma täpsust oluliselt ohverdamata. Selle protsessi hõlbustamiseks on loodud sellised tööriistad nagu AI Toolkit for VS Code või ONNX Runtime'i enda ehitustaristu (sealhulgas uuemates versioonides kasutusele võetud uued ehituse API-d).
Lõpuks ärge unustage kontrollida riistvara saadavus ja arendajarežiim seadmes, kuhu te oma rakendusi juurutate, eriti kui kavatsete neid testida lõppkasutajate seadmetes, kioskites, tööstusseadmetes või keskkondades, kus kehtivad ranged turvapoliitikad.
Kui kõik need komponendid on hästi joondatud – ONNX standardvorminguna, ONNX Runtime ja Windows ML täitmismootoritena, DirectML ja AMD, Inteli, NVIDIA ning Qualcommi EP-d protsessori, graafikakaardi ja protsessori võimendamiseks ning tööriistad nagu AI Dev Gallery või AI Toolkit –, saab Windows 11-st väga võimas platvorm rakenduste loomiseks. Kohalikud, privaatsed, kiired ja tootmisvalmis tehisintellekti rakendused, alates lihtsatest pildiklassifikaatoritest kuni keerukate abilisteni, mis põhinevad keelemudelitel ja RAG-il.