La локален изкуствен интелект Това вече не е нещо, което е достъпно само за големи компании с огромни центрове за данни. Днес можете да стартирате усъвършенствани модели с изкуствен интелект директно на вашия компютър, лаптоп или дори вградени устройства, като използвате вашия процесор, графичен процесор или невронна мрежа, без постоянно да разчитате на облака и да гарантирате, че отговаряте на изискванията. минимални и препоръчителни изисквания за оптимална производителност.
В тази статия спокойно ще разгледаме как ONNX Runtime ви позволява да стартирате AI модели на вашия собствен хардуерНезависимо дали го интегрирате с .NET и VB.NET, използвате го от Python, C++ или C#, или използвате вградена интеграция с Windows ML, ще видите какво представлява форматът ONNX, как се експортират и оптимизират моделите, ролята на доставчиците на изпълнение и защо всичко това е ключово за наличието на бърз, частен и евтин изкуствен интелект в ежедневната ви работа. Ще разгледаме и как... Възползвайте се от локалния изкуствен интелект с Ryzen на съвместими устройства.
Какво е ONNX и какъв проблем решава?
ONNX, съкращение от Отворете обмен на невронни мрежиТова е отворен стандарт за представяне на модели за машинно обучение и дълбоко обучение. Целта му е да ви позволи да обучете модел във фреймуърк като PyTorch, TensorFlow, Keras, TFLite или scikit-learn, и след това да го стартирате в различна среда, без да се налага да правите специфични преобразувания.
Този формат определя сериализация, базирана на графи който описва архитектурата на модела (слоеве, връзки, операции, типове данни и др.) и набор от стандартни оператори (конволюции, активации, нормализации и др.). Тъй като е базиран на графи, а не на затворени двоични формати като Pickle или Joblib, улеснява оперативната съвместимост между езици и рамки, нещо особено полезно в компютърното зрение и приложенията с ниска латентност.
За екипите с изкуствен интелект, ONNX се превърна в ключов компонент, защото Това намалява зависимостта от един-единствен доставчик.Обучавате се където пожелаете, конвертирате в ONNX и след това избирате двигателя за инференциален извод, който най-добре ви подхожда (ONNX Runtime, TensorRT, OpenVINO и др.) на наличния хардуер, независимо дали е облачен сървър, настолен компютър, FPGA или периферно устройство.
Стандартът се поддържа от големи играчи в индустрията, като например Microsoft, NVIDIA, Intel и други производителиТова е създало много широка екосистема от инструменти: официални конвертори, библиотеки за конвертиране и оптимизация, визуализация на модели с Netron и известния ONNX Model Zoo с предварително обучени модели, за да започнете, без да е необходимо да тренирате от нулата.

Как ONNX Runtime се вписва в Windows ML и екосистемата на Windows?
В Windows, ONNX Runtime е тясно интегриран чрез Машинно обучение на Windows (Windows ML)Този слой действа като междинен софтуер, който групира и управлява хардуерните ресурси на вашия компютър (CPU, GPU и NPU), за да изпълнява ONNX модели с възможно най-добра производителност, без да се налага да управлявате детайлите на ниското ниво на всеки чип.
Windows ML предоставя споделено копие на ONNX runtime На системно ниво това позволява на приложенията да използват тази обща среда, вместо да пакетират своя собствена версия на ONNX Runtime в инсталатора. Това намалява размера на приложението, опростява актуализациите и гарантира, че се използва най-подходящата версия за системата.
Освен това, операционната система е способна да динамично изтегляне на специфични доставчици на изпълнение за наличния хардуер. Тоест, той открива дали вашият компютър има графичен процесор NVIDIA, невронен процесор Qualcomm или интегриран графичен процесор Intel или AMD и изтегля съответния EP, като го поддържа актуализиран, без разработчикът да се тревожи за това.
За програмисти на C#, C++ или Python, Windows ML предлага API, който използва повторно концепциите и шаблоните на ONNX Runtime, така че Можете да мигрирате съществуващи ONNX Runtime-базирани натоварвания към Windows ML среда с малко промениИ ако работите с Windows App SDK (версия 1.8.1 или по-нова на Windows 11 24H2 или по-нова), тази интеграция вече е готова за употреба; това е особено полезно на съвременни устройства като Лаптопи с Windows и Snapdragon X2 Elite.
ONNX модели: структура, видове и практически примери
Моделът във формат ONNX е по същество a математическо представяне на обучената система след обучение. Това представяне включва всичко необходимо за извършване на извод в друга среда, без да е необходимо да се запазва оригиналният код на рамката, където е обучено.
В ONNX файл ще намерите моделна архитектура (слоевете, изчислителните възли, връзките между тях и вида на операциите), тренирани тежести (параметрите, които моделът е коригирал по време на обучението) и официалното определение на входове и изходи, с техните измерения, типове данни и имена.
Например, модел за класификация на изображения, обучен в PyTorch, може да бъде експортиран в ONNX, за да приема тензор с нормализирано изображение като вход и да връща вектор с вероятностите за принадлежност към всеки клас като изход. Същият този файл може след това да се изпълнява с ONNX Runtime на Windows сървър с графичен процесор или на IoT устройство, без да се променя моделът; освен това, ако работите с разширено зрение, можете да прегледате ръководства за откриване на обекти в изображения с AI.
Екосистемата на ONNX включва Моделна зоологическа градина ONNXХранилище с готови за употреба, предварително обучени модели: мрежи за класификация на изображения (ResNet, MobileNet и подобни, с размери от порядъка на 5–10 MB), езикови модели като GPT-2 (~500 MB) или много тежки архитектури за откриване и сегментиране на обекти (1–2 GB или повече). Това ви позволява да тествате висококачествени модели, без да се налага да ги обучавате от нулата.
Предимства на използването на изкуствен интелект на собствения ви хардуер
Една от причините, поради които ONNX и ONNX Runtime са спечелили толкова голяма популярност, е, че Те улесняват изпълнението на ИИ на местно ниво.Тоест, на собственото устройство на потребителя или на локалната инфраструктура на компанията, намалявайки зависимостта от облачни услуги.
Първото предимство е поверителността на даннитеКато не се изпраща информация към сървъри на трети страни, рискът от изтичане или злоупотреба се свежда до минимум. Това е от решаващо значение в сектори, които обработват чувствителни данни (здравеопазване, финанси, публична администрация или корпоративни правни отдели) и не искат данните им да пътуват извън вътрешната им мрежа.
Това също така значително намалява повтарящи се разходиТова е така, защото не е нужно постоянно да плащате за облачни изчисления, за да изпълнявате модели за извод. Вие инвестирате в собствен хардуер (или използвате това, което вече имате) и избягвате изненади в сметката си в края на месеца, когато използването на API се увеличи драстично.
Друго много очевидно предимство е ниска латентностЧрез стартиране на модела на самото устройство, елиминирате времето за двупосочно предаване в мрежата, което е особено забележимо в приложения в реално време (индустриално машинно зрение, интерактивни асистенти, обработка на видео на живо или видеоигри с интегриран изкуствен интелект).
И накрая, локалното изпълнение на модели ви дава пълен контрол върху внедряванетоМожете да персонализирате конвейера, да приложите квантуване или подрязване, да ограничите достъпа до определени ресурси, да решите кога да актуализирате модела и да адаптирате извода към вътрешните разпоредби на вашата компания или приложимите разпоредби.
Основни изисквания за започване на работа с ONNX Runtime в .NET и други среди
Ако искате да започнете да използвате ONNX Runtime с .NET и VB.NET Първоначалните изисквания на вашия компютър са доста разумни. Ще ви е необходима поддържана операционна система (Windows, macOS или популярна Linux дистрибуция) и инсталиран .NET Framework или .NET Core, в зависимост от вашия проект.
В конкретния случай на Visual Studio, просто отворете вашето решение и Добавете пакета Microsoft.ML.OnnxRuntime NuGetТози пакет включва библиотеките, необходими за зареждане на ONNX модел, създаване на сесии за извод и извикване на двигателя с подходящите входни данни.
В допълнение към времето за изпълнение, ще ви е необходимо поне модел във формат ONNXМожете да го обучите сами с PyTorch или TensorFlow и да експортирате резултатите или да изтеглите такъв от ONNX Model Zoo за тестване. Оттам ще се съсредоточите върху предварителната обработка на входните данни и интерпретирането на изходите на модела; ако имате нужда от помощ при избора на хардуер, вижте нашата ръководство за добър избор.
На машини с по-скромен хардуер, ONNX Runtime е проектиран да бъде ефективен дори без мощен графичен процесорАко обаче ще работите с големи, сложни езикови, генеративни или визуални модели, наличието на модерен графичен процесор или, още по-добре, специален NPU ще окаже влияние върху времето за реакция.
Как да използвате ONNX Runtime стъпка по стъпка: сесии, извод и компилация
Типичният работен процес с ONNX Runtime се състои от зареждане на модел, създаване на сесия за извод и изпълнение на прогнозиВъпреки че специфичният код варира в зависимост от езика, философията е много сходна във всички тях.
Първо, посочвате пътя до .onnx файла и Създавате сесия за извод с желаните опции (например, конфигуриране на доставчиците на изпълнение, които искате да разрешите, или регулиране на параметрите за оптимизация). В .NET това се прави чрез класовете, предоставени от Microsoft.ML.OnnxRuntime; в Python ще използвате директно onnxruntime API.
След това конструирате множеството от входни данни за моделаОбикновено един или повече тензори с формата и типа данни, които моделът очаква (предварително обработени изображения, токенизиран текст, числови вектори и др.). Тези входни данни са пакетирани в речникова или картографска структура, която свързва името на входа с неговата стойност.
След като входните данни са подготвени, извиквате метода на изпълнение на сесиятакоето връща изходите на модела също под формата на тензори. Остава само да обработите тези резултати, за да ги трансформирате в нещо разбираемо (етикети, резултати, генериран текст, ограничаващи рамки и др.) и да ги използвате във вашето приложение.
От версия 1.22 на ONNX Runtime, има по-усъвършенстван подход: компилиране на модели в оптимизирано представяне преди да ги пуснат в производство. Новите API, като например тези, свързани с рамката OrtCompileApi, по-добре капсулират стъпките на компилация, така че средата за изпълнение генерира артефакти, специфични за целевия хардуер, което допълнително подобрява производителността.
Доставчици на Windows ML, хардуерно изпълнение и автоматично управление
В екосистемата на Windows, Windows ML служи като интелигентен оркестрационен слой относно ONNX Runtime. Той не само използва повторно своя механизъм за извод, но и автоматично управлява кой доставчик на изпълнение е най-подходящ за всяка машина и модел.
Un Доставчик на изпълнение (EP) Това е, по същество, компонент, който знае как да оптимизира определени AI операции за специфичен бекенд (CPU, GPU, NPU или специализирани ускорители), регистрирайки необходимите ядра и участвайки в разделянето на графа на операциите, така че всяка част да работи на най-ефективното устройство.
Windows ML предлага няколко забележителни предимства: Автоматично изтегляне и управление на EPs специфични за хардуера функции, използване на споделена ONNX среда за изпълнение на системно ниво (която драстично намалява размера на приложението) и съвместимост с голямо разнообразие от конфигурации (x64 настолни компютри, ARM64 системи, Windows сървъри и др.).
Автоматизираният процес на внедряване обикновено следва следните стъпки: по време на инсталирането на приложение, базирано на SDK за Windows приложение, Windows ML се инициализира; средата за изпълнение открива наличния хардуер; оптималните EP се изтеглят (например TensorRT за RTX GPU, специфичен EP за Snapdragon X NPU или OpenVINO стека за Intel); и оттам Приложението може да започне да изпълнява AI модели веднага..
Благодарение на тази архитектура, разработчиците не е необходимо да пакетират специфични драйвери или библиотеки за всеки производител, нито да поддържат отделни версии на приложението за всеки хардуер. Windows ML се грижи за това. абстрактен анализ на детайлите от бекенда и да се гарантира, че изводът се извършва с най-добрата възможна производителност.
Преобразуване на модел в ONNX и типичен работен процес за разработка
За да се възползвате от ONNX Runtime, първата стъпка е конвертирайте моделите си във формат ONNXНай-често срещаният работен процес в проекти за компютърно зрение и общо машинно обучение комбинира следните фази: обучение, експортиране, оптимизация и внедряване.
Обикновено обучавате модела в предпочитаната от вас рамка (например мрежа за класификация на изображения в PyTorch или мрежа за откриване на обекти в TensorFlow) и след като постигнете желаната производителност, експортирайте го в ONNXВ PyTorch се използва функцията torch.onnx.export, докато в TensorFlow обикновено се използва инструментът tf2onnx или други, интегрирани във високо ниво библиотеки.
При този експорт е препоръчително да се зададе съвместима версия на opset (например версия 15, която е широко поддържана), за да се избегнат проблеми с по-стари механизми за извод. След генериране на ONNX файла, можете да го проверите с инструменти като Netron, за да се уверите, че графиката изглежда както се очаква и че няма екзотични, нестандартни оператори.
Преди внедряването в производство, много екипи прилагат фаза на оптимизация на модела: квантуване за намаляване на размера и подобряване на скоростта, теглото и филтрирането, групиране на параметри или дори дестилация на знания, предаване на информация от голям модел към по-малък, който е по-управляем на устройства с ограничени ресурси.
След като моделът е в ONNX и е оптимизиран, той се интегрира с ONNX Runtime или с платформи като Windows ML, TensorRT или OpenVINO и се внедрява в целевата среда: облачни сървъри, индустриални компютри, периферни устройства или мобилни и настолни приложения.
Хардуерно ускорение и производителност на инференциалния анализ с ONNX Runtime
El производителност на извода Това е една от основните причини да изберете ONNX Runtime. В много практически сравнения са наблюдавани значителни подобрения при изпълнение на модели, конвертирани от PyTorch или TensorFlow. време за реакция и потребление на ресурси.
В случаи на употреба с размер на партидата от 1 (много типично за интерактивни интерфейси или зрение в реално време), ONNX Runtime обикновено предлага началните скорости на извод са с 20% по-високи в сравнение с PyTorch, а при продължителни изпълнения са докладвани ускорения до 5 пъти, със забележително намаляване на използването на процесора без увеличаване на латентността.
Тези подобрения се дължат на оптимизации, като например Сливане на ядрото, опростяване на графи и квантуванеТова позволява извършването на по-малко ефективни операции за постигане на същия резултат. В същото време, възможността за сегментиране на графиката и присвояване на специфични части на графични процесори или невронни процесори (GPU) максимизира използването на хардуера.
ONNX Runtime поддържа голямо разнообразие от ускорители: NVIDIA CUDA и TensorRT за специализирани графични процесори, Intel OpenVINO и oneDNN за процесори и виртуални процесори, AMD ROCm, Qualcomm QNN, Apple CoreML и Android NNAPI за мобилни устройства и DirectML в Windows среди. широка съвместимост с електромагнитни източници Това позволява на един и същ ONNX модел да работи ефективно на много различни платформи.
Всичко това прави ONNX Runtime идеален избор за приложения на машинно зрение, вградени системи и периферни устройства които изискват отговори в реално време и много ниска консумация както на RAM, така и на процесор.
В този контекст, ONNX и ONNX Runtime се утвърдиха като солиден мост между обучението в популярни рамки и оптимизираното изпълнение на всякакъв вид хардуер, предлагайки правилната комбинация от производителност, гъвкавост и поверителност, за да пренесете модели на изкуствен интелект на вашия собствен хардуер без излишни усложнения.

