La lokal kunstig intelligens Det er ikke længere noget, der er eksklusivt for store virksomheder med enorme datacentre. I dag kan du køre avancerede AI-modeller direkte på din pc, bærbare computer eller endda indlejrede enheder, udnytte din CPU, GPU eller NPU, uden konstant at være afhængig af skyen, og sikre, at du opfylder kravene. minimum og anbefalede krav for optimal ydeevne.
I denne artikel vil vi roligt undersøge, hvordan ONNX Runtime giver dig mulighed for at køre AI-modeller på din egen hardwareUanset om du integrerer det med .NET og VB.NET, bruger det fra Python, C++ eller C#, eller udnytter native integration med Windows ML, vil du se, hvad ONNX-formatet er, hvordan modeller eksporteres og optimeres, rollen af Execution Providers, og hvorfor alt dette er nøglen til at have hurtig, privat og billig AI i dit daglige arbejde. Vi vil også gennemgå, hvordan... Udnyt lokal AI med Ryzen på kompatible enheder.
Hvad er ONNX, og hvilket problem løser det?
ONNX, akronym for Åbn Neural Network ExchangeDet er en åben standard til repræsentation af maskinlærings- og deep learning-modeller. Dens mål er at give dig mulighed for at træne en model i et framework såsom PyTorch, TensorFlow, Keras, TFLite eller scikit-learn, og derefter køre det i et andet miljø uden at gå amok med specifikke konverteringer.
Dette format definerer en grafbaseret serialisering som beskriver modellens arkitektur (lag, forbindelser, operationer, datatyper osv.) og et sæt standardoperatorer (foldninger, aktiveringer, normaliseringer osv.). Fordi den er baseret på grafer og ikke på lukkede binære formater som Pickle eller Joblib, letter interoperabilitet mellem sprog og frameworks, noget der er særligt nyttigt inden for computer vision og applikationer med lav latenstid.
For AI-teams er ONNX blevet en nøglekomponent fordi Det reducerer afhængigheden af en enkelt leverandør.Du træner hvor du vil, konverterer til ONNX, og vælger derefter den inferensmotor, der passer bedst til dig (ONNX Runtime, TensorRT, OpenVINO osv.) på den hardware, du har til rådighed, uanset om det er en cloud-server, en stationær pc, en FPGA eller en edge-enhed.
Standarden understøttes af store aktører i branchen, såsom Microsoft, NVIDIA, Intel og andre producenterDette har fremmet et meget bredt økosystem af værktøjer: officielle konvertere, biblioteker til konvertering og optimering, modelvisualisering med Netron og den berømte ONNX Model Zoo med præ-trænede modeller, så du kan komme i gang uden at skulle træne fra bunden.

Hvordan passer ONNX Runtime ind i Windows ML og Windows-økosystemet?
På Windows er ONNX Runtime tæt integreret via Windows maskinlæring (Windows ML)Dette lag fungerer som middleware, der grupperer og administrerer din pc's hardwareressourcer (CPU, GPU og NPU) for at køre ONNX-modeller med den bedst mulige ydeevne, uden at du behøver at administrere de små detaljer for hver chip.
Windows ML leverer en delt kopi af ONNX-kørselstiden På systemniveau giver dette applikationer mulighed for at bruge dette fælles miljø i stedet for at pakke deres egen version af ONNX Runtime i installationsprogrammet. Dette reducerer appstørrelsen, forenkler opdateringer og sikrer, at den mest passende version til systemet bruges.
Derudover er operativsystemet i stand til at dynamisk downloade specifikke udførelsesudbydere for den tilgængelige hardware. Det vil sige, at den registrerer, om din computer har en NVIDIA GPU, en Qualcomm NPU eller en integreret Intel- eller AMD GPU, og downloader den tilsvarende EP, så den holdes opdateret, uden at udvikleren behøver at bekymre sig om det.
For C#-, C++- eller Python-programmører tilbyder Windows ML en API, der genbruger koncepterne og mønstrene fra ONNX Runtime, så Du kan migrere eksisterende ONNX Runtime-baserede arbejdsbelastninger til Windows ML-miljøet med få ændringer.Og hvis du arbejder med Windows App SDK (version 1.8.1 eller nyere på Windows 11 24H2 eller nyere), er denne integration allerede klar til brug; dette er især nyttigt på moderne enheder som f.eks. Windows-bærbare computere med Snapdragon X2 Elite.
ONNX-modeller: struktur, typer og praktiske eksempler
En ONNX-formatmodel er i bund og grund en matematisk repræsentation af det lærte system efter træning. Denne repræsentation inkluderer alt, hvad der er nødvendigt for at udføre inferens i et andet miljø, uden at skulle bevare den originale kode fra det framework, hvor det blev trænet.
I en ONNX-fil finder du model arkitektur (lagene, beregningsnoderne, forbindelserne mellem dem og typen af operationer), den trænede vægte (de parametre, som modellen har justeret under træningen) og den formelle definition af input og output, med deres dimensioner, datatyper og navne.
For eksempel kan en billedklassificeringsmodel, der er trænet i PyTorch, eksporteres til ONNX for at acceptere en tensor med et normaliseret billede som input og returnere en vektor med sandsynlighederne for at tilhøre hver klasse som output. Den samme fil kan derefter køres med ONNX Runtime på en Windows-server med en GPU eller på en IoT-enhed uden at ændre modellen. Derudover kan du, hvis du arbejder med avanceret vision, gennemgå vejledninger til detekter objekter i billeder med AI.
ONNX-økosystemet omfatter ONNX Model ZooEt arkiv af brugsklare, præ-trænede modeller: billedklassificeringsnetværk (ResNet, MobileNet og lignende med størrelser i størrelsesordenen 5-10 MB), sprogmodeller som GPT-2 (~500 MB) eller meget tunge arkitekturer til objektdetektion og segmentering (1-2 GB eller mere). Dette giver dig mulighed for at teste modeller af høj kvalitet uden at skulle træne dem fra bunden.
Fordele ved at køre AI på din egen hardware
En af grundene til, at ONNX og ONNX Runtime har vundet så meget frem, er fordi De letter udførelsen af AI lokalt.Det vil sige, på brugerens egen enhed eller på en virksomheds lokale infrastruktur, hvilket reducerer afhængigheden af cloud-tjenester.
Den første fordel er databeskyttelseVed ikke at sende information til tredjepartsservere minimeres risikoen for lækager eller misbrug. Dette er afgørende i sektorer, der håndterer følsomme data (sundhedsvæsen, finans, offentlig administration eller virksomheders juridiske afdelinger), og som ikke ønsker, at deres data skal spredes uden for deres interne netværk.
Det reducerer også betydeligt tilbagevendende omkostningerDet skyldes, at du ikke konstant behøver at betale for cloud computing-instanser for at køre inferensmodeller. Du investerer i din egen hardware (eller udnytter det, du allerede har) og undgår overraskelser på din regning i slutningen af måneden, når API-forbruget stiger voldsomt.
En anden meget klar fordel er lav latenstidVed at køre modellen på selve enheden eliminerer du netværkets rundturstid, hvilket er særligt mærkbart i realtidsapplikationer (industriel maskinsyn, interaktive assistenter, live videobehandling eller videospil med integreret AI).
Endelig giver det dig mulighed for at køre modeller lokalt fuld kontrol over implementeringenDu kan tilpasse pipelinen, anvende kvantisering eller beskæring, begrænse adgangen til bestemte ressourcer, bestemme, hvornår modellen skal opdateres, og tilpasse inferensen til din virksomheds interne regler eller gældende regler.
Grundlæggende krav for at komme i gang med ONNX Runtime i .NET og andre miljøer
Hvis du vil begynde at bruge ONNX Runtime med .NET og VB.NET På din computer er de indledende krav ret rimelige. Du skal bruge et understøttet operativsystem (Windows, macOS eller en populær Linux-distribution) og enten .NET Framework eller .NET Core installeret, afhængigt af dit projekt.
I det specifikke tilfælde af Visual Studio skal du blot åbne din løsning og Tilføj Microsoft.ML.OnnxRuntime NuGet-pakkenDenne pakke indeholder de biblioteker, der er nødvendige for at indlæse en ONNX-model, oprette inferenssessioner og kalde motoren med de relevante inputdata.
Ud over runtime skal du bruge mindst en model i ONNX-formatDu kan træne det selv med PyTorch eller TensorFlow og eksportere resultaterne, eller downloade et fra ONNX Model Zoo til test. Derfra fokuserer du på at forbehandle inputdataene og fortolke modellens output. Hvis du har brug for hjælp til at vælge hardware, kan du se vores guide til at vælge godt.
På maskiner med mere beskeden hardware er ONNX Runtime designet til at være effektiv selv uden en kraftig GPUMen hvis du skal håndtere store, komplekse sprog-, generative eller visionsmodeller, vil en moderne GPU eller, endnu bedre, en dedikeret NPU gøre en forskel i responstiderne.
Sådan bruger du ONNX Runtime trin for trin: sessioner, inferens og kompilering
Den typiske arbejdsgang med ONNX Runtime består af Indlæs en model, opret en inferenssession og kør forudsigelserSelvom den specifikke kode varierer afhængigt af sproget, er filosofien meget ens i dem alle.
Først angiver du stien til .onnx-filen og Du opretter en inferenssession med de ønskede indstillinger (for eksempel konfiguration af hvilke udførelsesudbydere du vil tillade eller justering af optimeringsparametre). I .NET gøres dette via de klasser, der eksponeres af Microsoft.ML.OnnxRuntime; i Python bruger du onnxruntime API'en direkte.
Dernæst konstruerer du sættet af input til modellenTypisk en eller flere tensorer med den form og datatype, som modellen forventer (forbehandlede billeder, tokeniseret tekst, numeriske vektorer osv.). Disse input pakkes i en ordbog eller kortstruktur, der forbinder inputnavnet med dets værdi.
Når inputtet er forberedt, kalder du metoden til sessionsudførelsesom returnerer modellens output også i form af tensorer. Alt, hvad der er tilbage, er at efterbehandle disse resultater for at omdanne dem til noget forståeligt (etiketter, scorer, genereret tekst, afgrænsningsbokse osv.) og bruge dem i din applikation.
Siden version 1.22 af ONNX Runtime er der en mere avanceret tilgang: kompiler modeller til en optimeret repræsentation før de frigives til produktion. Nye API'er, såsom dem der er forbundet med OrtCompileApi-frameworket, indkapsler bedre kompileringstrinnene, så runtime-programmet genererer artefakter specifikke for målhardwaren, hvilket yderligere forbedrer ydeevnen.
Windows ML, hardwareudførelse og udbydere af automatisk administration
I Windows-økosystemet fungerer Windows ML som en intelligent orkestreringslag om ONNX Runtime. Den genbruger ikke kun sin inferensmotor, men styrer også automatisk, hvilken udførelsesudbyder der er bedst egnet til hver maskine og model.
Un Udførelsesudbyder (EP) Det er dybest set en komponent, der ved, hvordan man optimerer bestemte AI-operationer til en specifik backend (CPU, GPU, NPU eller specialiserede acceleratorer), registrerer de nødvendige kerner og deltager i partitioneringen af operationsgrafen, så hver del kører på den mest effektive enhed.
Windows ML tilbyder flere bemærkelsesværdige fordele: Automatisk download og administration af EP'er hardwarespecifikke funktioner, brug af en delt ONNX-runtime på systemniveau (hvilket drastisk reducerer applikationsstørrelsen) og kompatibilitet med en bred vifte af konfigurationer (x64 stationære pc'er, ARM64-systemer, Windows-servere osv.).
Den automatiserede implementeringsproces følger typisk disse trin: Under installationen af en Windows App SDK-baseret app initialiseres Windows ML; runtime-programmet registrerer den tilgængelige hardware; de optimale EP'er downloades (f.eks. TensorRT til en RTX GPU, en specifik EP til Snapdragon X NPU eller OpenVINO-stakken til Intel); og derfra Applikationen kan begynde at køre AI-modeller med det samme..
Takket være denne arkitektur behøver udviklere ikke at pakke specifikke drivere eller biblioteker til hver producent eller vedligeholde separate versioner af applikationen for hver hardware. Windows ML tager sig af det. abstraher backend-detaljerne og sikre, at inferensen udføres med den bedst tilgængelige ydeevne.
Modelkonvertering til ONNX og typisk udviklingsarbejdsgang
For at drage fordel af ONNX Runtime er det første skridt konverter dine modeller til ONNX-formatDen mest almindelige arbejdsgang i computer vision og generelle ML-projekter kombinerer disse faser: træning, eksport, optimering og implementering.
Du træner typisk modellen i dit foretrukne framework (for eksempel et billedklassificeringsnetværk i PyTorch eller et objektdetektionsnetværk i TensorFlow), og når du har opnået den ønskede ydeevne, eksportér det til ONNXI PyTorch bruges funktionen torch.onnx.export, mens man i TensorFlow normalt bruger værktøjet tf2onnx eller andre integreret i biblioteker på højt niveau.
I den eksport anbefales det at indstille en kompatibel opset-version (for eksempel version 15, som er bredt understøttet) for at undgå problemer med ældre inferensmotorer. Efter at have genereret ONNX-filen kan du inspicere den med værktøjer som Netron for at kontrollere, at grafen ser ud som forventet, og at der ikke er nogen eksotiske, ikke-standardiserede operatorer.
Før implementering i produktion anvender mange teams en fase af modeloptimeringKvantisering for at reducere størrelse og forbedre hastighed, vægt og filterbeskæring, parametergruppering eller endda videndestillation, videregivelse af information fra en stor model til en mindre, der er mere håndterbar på enheder med begrænsede ressourcer.
Når modellen er i ONNX og optimeret, integreres den med ONNX Runtime eller med platforme som Windows ML, TensorRT eller OpenVINO og implementeres i målmiljøet: cloud-servere, industrielle pc'er, edge-enheder eller mobil- og desktopapplikationer.
Hardwareacceleration og inferensydelse med ONNX Runtime
El inferenspræstation Dette er en af hovedårsagerne til at vælge ONNX Runtime. I mange praktiske sammenligninger er der observeret betydelige forbedringer ved kørsel af modeller konverteret fra PyTorch eller TensorFlow. svartider og ressourceforbrug.
I use cases med en batchstørrelse på 1 (meget typisk i interaktive grænseflader eller realtidsvision) tilbyder ONNX Runtime normalt initiale inferenshastigheder 20% højere sammenlignet med PyTorch, og ved længerevarende udførelse er der rapporteret accelerationer på op til 5 gange, med bemærkelsesværdige reduktioner i CPU-forbruget uden øget latenstid.
Disse forbedringer skyldes optimeringer som f.eks. Kernefusion, grafforenkling og kvantiseringDette gør det muligt at udføre færre effektive operationer for at opnå det samme resultat. Samtidig maksimerer muligheden for at segmentere grafen og tildele specifikke dele til GPU'er eller NPU'er hardwareudnyttelsen.
ONNX Runtime understøtter en bred vifte af acceleratorer: NVIDIA CUDA og TensorRT til dedikerede GPU'er, Intel OpenVINO og oneDNN til CPU'er og VPU'er, AMD ROCm, Qualcomm QNN, Apple CoreML og Android NNAPI til mobile enheder og DirectML i Windows-miljøer. Dette bred kompatibilitet med EP'er Dette gør det muligt for den samme ONNX-model at køre effektivt på mange forskellige platforme.
Alt dette gør ONNX Runtime til et ideelt valg til applikationer af maskinsyn, indlejrede systemer og edge-enheder der kræver realtidsresponser og et meget lavt forbrug af både RAM og CPU.
I denne sammenhæng har ONNX og ONNX Runtime etableret sig som en solid bro mellem træning i populære frameworks og optimeret udførelse på enhver type hardware, og tilbyder den rette blanding af ydeevne, fleksibilitet og privatliv for at bringe kunstig intelligens-modeller til din egen hardware uden unødvendige komplikationer.

