Lernen mit ONNX für den Handel - Seite 5

 

ONNX: Vergangenheit, Gegenwart und Zukunft – Jim Spohrer, IBM & Prasanth Pulavarthi, Microsoft



ONNX: Vergangenheit, Gegenwart und Zukunft – Jim Spohrer, IBM & Prasanth Pulavarthi, Microsoft

Im Video „ONNX: Past, Present, and Future“ diskutieren Jim Spohrer von IBM und Prasanth Pulavarthi von Microsoft über das Wachstum und die Zukunft des Open-Source-KI-Frameworks ONNX. Sie betonen die Bedeutung der Standardisierung der Bereitstellung von KI-Modellen durch das von ONNX bereitgestellte Austauschformat, das eine nahtlose Optimierung über verschiedene Deep-Learning-Frameworks hinweg ermöglicht. Darüber hinaus diskutieren sie die jüngsten Entwicklungen in der Fähigkeit der ONNX-Laufzeit, mit verschiedenen Hardwarebeschleunigern zu arbeiten, und bieten Tipps und Ressourcen für den Einstieg in ONNX. Die Referenten beantworten Fragen des Publikums zu den Fähigkeiten von ONNX, der kommerziellen Bereitstellung und den bevorstehenden Zertifizierungsplänen und fordern die Zuschauer auf, sich an der ONNX-Community zu beteiligen.

  • 00:00:00 In diesem Abschnitt stellen sich Jim Spohrer von IBM und Prasanth Pulavarthi von Microsoft vor und geben einen Überblick über die Vergangenheit, Gegenwart und Zukunft von ONNX, einem Open-Source-KI-Framework. ONNX dient als standardisiertes Austauschformat, das es verschiedenen Tools ermöglicht, die Inferenz über verschiedene Deep-Learning-Frameworks hinweg zu interagieren und zu optimieren. Die Redner fordern die Zuschauer auf, sich in der ONNX-Community zu engagieren, indem sie sich die Neuigkeiten und Informationen zu den ersten Schritten auf der ONNX-Website ansehen und der Community auf GitHub und Gitter beitreten. Sie heben auch die jüngsten virtuellen Community-Meetings hervor, bei denen ONNX-Partner ihre Projekte diskutierten und wie sie ONNX auf innovative Weise nutzen.

  • 00:05:00 In diesem Abschnitt diskutieren die Referenten das Wachstum der ONNX-Community und ihre Bedeutung als Austauschformat inmitten zahlreicher Open-Source-Projekte im Bereich der künstlichen Intelligenz und des maschinellen Lernens. Sie heben den Fortschritt der ONNX-Community in Bezug auf Pull-Requests, Mitwirkende, Stars, Forks, veröffentlichte Artikel und den Modellzoo hervor und ermutigen mehr Organisationen und Einzelpersonen, sich zu beteiligen. Die Referenten stellen auch ONNX bei Microsoft und seine Verwendung in verschiedenen Produkten vor und betonen die Notwendigkeit eines standardisierten Formats wie ONNX in der vielfältigen Landschaft von KI- und ML-Lösungen. Sie bieten Tipps zur Verwendung von ONNX und begrüßen Fragen aus dem Publikum.

  • 00:10:00 In diesem Abschnitt diskutieren die Referenten häufige Probleme, mit denen Entwickler konfrontiert sind, wenn sie versuchen, ML-Modelle in der Produktion bereitzustellen, wie z Hardware und Betriebssysteme. Um diese Probleme zu lösen, stellen die Referenten das ONNX-Format und die ONNX-Laufzeit vor, die es Entwicklern ermöglichen, Modelle aus verschiedenen Frameworks in einem gemeinsamen Format darzustellen und sie effizient auf verschiedenen Plattformen und Beschleunigern auszuführen. Der Sprachdienst von Microsoft wird als Beispiel dafür angeführt, wie ONNX die Agilität und Leistung in der Produktion verbessert hat.

  • 00:15:00 In diesem Abschnitt erörtern die Referenten, wie die Verwendung der ONNX-Laufzeit zu Vorteilen in Bezug auf Agilität, Leistung und Genauigkeit führen kann. Sie erwähnen Beispiele für die kognitiven Dienste von Microsoft, wie Speech-to-Text und Computer Vision, sowie Azure Connect, ein Gerät mit Körperverfolgungsfunktionen. Der Portabilitätsaspekt von ONNX wird ebenfalls hervorgehoben, da er die Verwendung desselben Modells und Anwendungscodes auf verschiedenen Plattformen und Hardwarebeschleunigern ermöglicht, was Zeit und Anpassungsaufwand spart. Darüber hinaus gehen die Referenten auf Windows ML ein, das die ONNX-Laufzeit als gemeinsames Format für Modelle verwendet, wodurch es einfach ist, Machine-Learning-Inferenzen im Windows-Betriebssystem durchzuführen.

  • 00:20:00 In diesem Abschnitt erörtern Jim Spohrer und Prasanth Pulavarthi einige der jüngsten Entwicklungen und Errungenschaften der ONNX-Laufzeit. Eines der wichtigsten Merkmale ist die Fähigkeit, mit verschiedenen Arten von Hardwarebeschleunigern wie GPUs oder VPUs zu arbeiten. Es bietet auch sprachübergreifende Unterstützung, sodass Benutzer in Python-Umgebungen trainierte Modelle in C# konvertieren können. Ein Beispiel für ein Unternehmen, das die ONNX-Laufzeit verwendet, ist ein ISV, der seine Finanzmodelle in Python mit scikit-learn trainiert, aber die ONNX-Laufzeit für die Produktion in C# verwendet. Darüber hinaus hat die ONNX-Laufzeit kürzlich die Inferenz und das Training von Transformatormodellen wie BERT und GPT2 optimiert, was zu erheblichen Beschleunigungen und Kosteneinsparungen für Benutzer führt.

  • 00:25:00 In diesem Abschnitt geben die Referenten Informationen zu den ersten Schritten mit ONNX und ONNX Runtime. Der Modellzoo, auf den über eine URL zugegriffen werden kann, bietet eine Vielzahl von vortrainierten Modellen, die heruntergeladen und mit der ONNX-Laufzeit für Visions-, Sprach- und kommende Sprachmodelle verwendet werden können. Darüber hinaus ermutigen die Referenten den Beitrag von Modellen zum Modellzoo. Bestehende Modelle aus anderen Frameworks können ebenfalls in das ONNX-Format konvertiert oder exportiert werden. Frameworks wie PyTorch, Keras, TensorFlow und Scikit-Learn verfügen über ONNX-Exportfunktionen, und die ONNX-Laufzeit kann unter Windows, Linux und Mac mit Unterstützung für mehrere Programmiersprachen installiert werden.

  • 00:30:00 In diesem Abschnitt erörtern die Referenten die Hardwarebeschleunigung und wie verschiedene Hardwarebeschleuniger über die als Ausführungsanbieter bezeichnete API integriert werden können. Die ONNX-Laufzeit verfügt über eine hochgradig optimierte CPU-Implementierung sowie eine CUDA-Implementierung, und Hardwareanbieter wie Nvidia und Intel haben sich mit ONNX zusammengetan, um ihre Optimierungen in die ONNX-Laufzeit zu integrieren. Dadurch wird sichergestellt, dass jedes ONNX-Modell mit voller Unterstützung für die gesamte ONNX-Spezifikation ausgeführt werden kann, selbst wenn eine bestimmte Operation nicht von einem bestimmten Beschleuniger unterstützt wird. Die Referenten ermutigen die Zuschauer, ONNX auszuprobieren und Ressourcen zu teilen, die in der ONNX-Community verfügbar sind, einschließlich Open Governance, SIGs und Arbeitsgruppen.

  • 00:35:00 In diesem Abschnitt erörtern die Referenten die Open-Governance-Struktur des ONNX-Projekts, die aus verschiedenen Interessengruppen (SIGs) und Arbeitsgruppen besteht. Sie erklären, dass sich SIGs und Arbeitsgruppen regelmäßig treffen und dass alles offen ist und die Treffen alle im Kalender des KI-Kalenders veröffentlicht werden. Darüber hinaus beschreibt die offene Governance-Struktur, wie Mitwirkende und Genehmigende ausgewählt werden, die jeweils Stimmrechte für verschiedene Entscheidungen erhalten oder Zusammenführungsberechtigungen haben. Letztendlich ermutigen die Referenten die Menschen, sich am ONNX-Projekt zu beteiligen, indem sie den verschiedenen Kanälen und Gruppen beitreten, sich für die Mailingliste anmelden und an Diskussionen teilnehmen.

  • 00:40:00 In diesem Abschnitt beantworten die Referenten verschiedene Publikumsfragen zu Themen wie potenziellen Buchveröffentlichungen zum Thema ONNX, den Protokollierungsfunktionen der ONNX-Laufzeit und den Methoden zur Verkürzung der Schulungszeit für maschinelles Lernen. Sie erwähnen auch einige kommerzielle Bereitstellungen von ONNX-basierten Modellen in verschiedenen Szenarien wie Azure Cognitive Services, Büromodellen und der Bing-Suchmaschine.

  • 00:45:00 In diesem Abschnitt diskutierten die Redner die kommerzielle Bereitstellung von ONNX-Modellen außerhalb von Microsoft und erwähnten, dass es eine Reihe von Modellen in Produktionsqualität gibt, die von Finanzunternehmen und anderen Organisationen auf Azure verwendet werden. Sie beantworteten auch Publikumsfragen zu ONNX, darunter ob es CNTK unterstützt (ja, sie haben einen ONNX-Export) und ob Sie Kenntnisse über Hardwarebeschleunigungstools benötigen (nein, da die ONNX-Laufzeit eine Abstraktionsschicht bereitstellt). Sie sprachen auch die Vorteile der Verwendung von ONNX im Training gegenüber der Umstellung auf ONNX nach dem Training an und erklärten, dass die ONNX-Laufzeit den Trainingsprozess beschleunigen kann, was zu schnelleren Transformatormodellen führt. Abschließend bekundeten sie ihre Bereitschaft, etwas über potenzielle Zertifizierungspläne und verschiedene Arten der Nutzung von ONNX zu hören.

  • 00:50:00 In diesem Abschnitt beantworten die Referenten eine Frage zur Fähigkeit von ONNX, alle Pipelinetypen zu unterstützen. Obwohl es aufgrund einiger vorhandener Lücken nicht 100 % ist, werden gängige Modelltypen in der Regel unterstützt, und Benutzer können auf dem ONNX Converter GitHub nachsehen, um eine Liste der unterstützten Pipelines zu erhalten, oder es selbst ausprobieren, um zu sehen, ob ihre Pipeline vollständig konvertiert werden kann. Die Redner schließen die Sitzung ab, indem sie den Teilnehmern danken und sie ermutigen, der ONNX-Community beizutreten.
ONNX: Past, Present, and Future - Jim Spohrer, IBM & Prasanth Pulavarthi, Microsoft
ONNX: Past, Present, and Future - Jim Spohrer, IBM & Prasanth Pulavarthi, Microsoft
  • 2020.09.11
  • www.youtube.com
ONNX: Past, Present, and Future - Jim Spohrer, IBM & Prasanth Pulavarthi, Microsoft
 

Onnx-mlir: ein MLIR-basierter Compiler für ONNX-Modelle – der neueste Status



Onnx-mlir: ein MLIR-basierter Compiler für ONNX-Modelle – der neueste Status

Onnx-mlir ist ein Compiler für ONNX-Modelle, der MLIR und LLVM zur Optimierung und Codegenerierung verwendet und CPUs und benutzerdefinierte Beschleuniger unterstützt. Dong Lin von IBM Research betont die Bedeutung gründlicher Tests und hebt die Verwendung des Frameworks in Online-Scoring-Services und Model-Serving-Frameworks hervor. Onnx-mlir verfügt über mehrere Dialekte für CPU und Beschleuniger mit Optimierungen auf verschiedenen Ebenen und hat gezeigt, dass es ein Modell zur Erkennung von Kreditkartenbetrug mit einem IBM-Beschleuniger um das 11-fache beschleunigt. Das Projekt begrüßt Community-Beiträge zur Optimierung wichtiger Betreiber und zur Unterstützung von Nischen-ML-Betreibern und anderen Beschleunigern wie GPUs.

  • 00:00:00 In diesem Abschnitt erläutert Dong Lin von IBM Research ONNX-MLIR, einen Compiler für ONNX-Modelle, der MLIR und LLVM für die High-Level-Optimierung und Low-Level-Codegenerierung verwendet. Der Compiler soll eine Referenz für den ONNX-Dialekt in MLIR bereitstellen und die Optimierung nicht nur für CPUs, sondern auch für benutzerdefinierte Beschleuniger bequem machen. Es ist einfach in andere MLIR-basierte Compiler zu integrieren und unterstützt verschiedene Programmiersprachen wie Python, C++ und Java. Dong Lin betont auch, wie wichtig es ist, den Compiler sorgfältig zu testen, und er erwähnt, dass er für Online-Scoring-Dienste und Model-Serving-Frameworks verwendet wurde, mit neu eingeführter Unterstützung für benutzerdefinierte Beschleuniger.

  • 00:05:00 In diesem Abschnitt geht der Referent auf den ONNX-MLIR-Compiler ein, der neue Beschleuniger optimieren und unterstützen kann. Der Compiler verfügt über mehrere Dialekte für CPU und Beschleuniger mit Optimierungen auf verschiedenen Ebenen. Der Referent demonstrierte die Fähigkeit des Frameworks, ein Modell zur Erkennung von Kreditkartenbetrug mit einem IBM-Beschleuniger um das 11-fache zu beschleunigen, konnte jedoch keine weiteren Details preisgeben. Sie betonten ihr Interesse an Beiträgen aus der Community zum Ausbau des Open-Source-Projekts, da sie darauf abzielen, wichtige Operatoren zu optimieren, Nischenoperatoren für maschinelles Lernen und andere Beschleuniger wie GPUs zu unterstützen.
Onnx-mlir: an MLIR-based Compiler for ONNX Models - The Latest Status
Onnx-mlir: an MLIR-based Compiler for ONNX Models - The Latest Status
  • 2022.07.13
  • www.youtube.com
Onnx-mlir is an open source compiler implemented using the Multi-Level Intermediate Representation (MLIR) infrastructure recently integrated in the LLVM proj...
 

PFVM – Ein Neural Network Compiler, der ONNX als Zwischendarstellung verwendet



PFVM – Ein Neural Network Compiler, der ONNX als Zwischendarstellung verwendet

In diesem Video stellt Zijian Xu von Preferred Networks PFVM vor, einen Compiler für neuronale Netzwerke, der ONNX als Zwischendarstellung für die Moduloptimierung verwendet. Er erläutert, wie PFVM exportiertes ONNX als Eingabe verwendet, optimiert und das Modell mit angegebenen Backends unter Verwendung von APIs von Drittanbietern ausführt. Genji beschreibt die Bedeutung der Optimierung, einschließlich der Erweiterung von ONNX mit Kundenbetreibern, Formrückschlüssen und Graphenvereinfachung. Er geht auch auf die Einschränkungen aktueller ONNX-Compiler ein, einschließlich der Notwendigkeit für mehr Unterstützung im dynamischen Fall, und schlägt vor, mehr Inferenzfunktionen zu implementieren. Zijian Xu betont, wie wichtig es ist, den Overhead des Kernel-Bereichs und die Speichernutzung für schnellere Berechnungen zu reduzieren, und schlägt vor, statische Informationen zu verwenden, die auf Maschinen verfügbar sind, um die Inferenz zu planen und zu gestalten.

  • 00:00:00 In diesem Abschnitt erläutert Zijian Xu von Preferred Networks PFVM, einen Compiler für neuronale Netzwerke, der ONNX als Zwischendarstellung verwendet. Er stellt das Unternehmen vor und erklärt, wie es Deep Learning zur Lösung realer Probleme einsetzt. Er konzentriert sich dann eher auf ONNX für die Moduloptimierung als auf die Modulbereitstellung. Er erklärt, dass PFVM als Compiler und Laufzeit arbeitet, exportiertes ONNX als Eingabe nimmt, es optimiert und das Modell mit angegebenen Backends unter Verwendung von APIs von Drittanbietern ausführt. Genji beschreibt den Optimierungsprozess und erörtert, wie sie ONNX mit Kundenbetreibern zur Geräte- und Speicheroptimierung erweitern. Er diskutiert auch die Bedeutung der Forminferenz bei der Moduloptimierung und stellt drei Falloptimierungen vor. Der erste Fall ist die elementweise Fusion.

  • 00:05:00 In diesem Abschnitt des Videos erörtert der Sprecher die Bedeutung der Reduzierung des Kernel-Bereichs-Overheads für eine schnellere Berechnung bei der Ausführung von Berechnungsgraphen auf CUDA. Sie schlagen vor, elementweise Operatoren zu einem einzigen Fusionsgruppenoperator zu fusionieren, um den Kernelbereich zu reduzieren, weisen jedoch darauf hin, dass nicht alle Operatoren erfolgreich miteinander fusioniert werden können. Es ist zu prüfen, ob Operatoren vor einer Gradientenfusionsgruppe sendefähig sein können oder nicht. Der Referent betont auch die Bedeutung der Forminferenz und der Graphenvereinfachung für die Optimierung neuronaler Netzwerkmodelle. Schließlich gehen sie auf die Frage ein, ob Modelle unnötige Operatoren enthalten, und antworten, dass einige Optimierungen für eine schnellere Berechnung notwendig sind.

  • 00:10:00 In diesem Abschnitt erörtert der Redner, wie Modelle, die von Programmen wie der ersten Generation oder neuronalen Netzwerk- und neuronalen Architektursuche generiert wurden, unnötige Operatoren enthalten können. Sie demonstrieren die Bedeutung von Optimierungen anhand eines Beispiels, bei dem ein linker Berechnungsgraph viel Speicher benötigt, um Knoten fünf zu berechnen. Durch Modifizieren des Berechnungsgraphen kann die gleiche Ausgabe mit einer reduzierten Speichernutzung erreicht werden. PFVM kann automatisches Checkpointing durchführen, um die Speicherauslastung zu reduzieren, aber es erfordert Kenntnisse über Tensorgrößen, um die Speicherauslastung genau abzuschätzen. Der Referent betont die Bedeutung der Formreferenz und wie unbekannte Abmessungen die Optimierungsmöglichkeiten bei den meisten formgebenden Fassungen einschränken.

  • 00:15:00 In diesem Abschnitt erörtert der Referent die Einschränkungen des aktuellen State-of-the-Art-ONNX-Compilers, einschließlich der Unfähigkeit, bestimmte Aufgaben wie Elementtransfusion und automatisches Checkpointing auszuführen, sowie die Notwendigkeit einer stärkeren Unterstützung in der dynamische Fall. Der Sprecher schlägt vor, mehr Inferenzfunktionen für den dynamischen Fall zu implementieren, und erbittet Feedback von Benutzern, um zu bestimmen, ob Fälle wie das Verknüpfen von zwei Tensoren unterstützt werden sollen oder nicht. Der Referent erörtert auch die Vorteile der Nutzung der statischen Informationen, die auf Maschinen wie Elements Core und mn4 verfügbar sind, um die Inferenz zu planen und zu gestalten.
PFVM - A Neural Network Compiler that uses ONNX as its intermediate representation
PFVM - A Neural Network Compiler that uses ONNX as its intermediate representation
  • 2022.07.13
  • www.youtube.com
PFVM is a neural network compiler developed by Preferred Networks, which relies on ONNX as the Intermediate Representation format. PFVM is used in production...
 

YVR18-332 TVM-Compiler-Stack und ONNX-Unterstützung



YVR18-332 TVM-Compiler-Stack und ONNX-Unterstützung

Das Video YVR18-332 behandelt den TVM-Compiler-Stack, einen von der Community geführten Deep-Learning-Stack, der eine Reihe von Hardware und Front-Ends unterstützt, einschließlich ONNX. Der Redner erörtert, wie TVM Modelle auf Stereoebene optimieren kann, sodass Entwickler den Suchraum erkunden und die beste Konfiguration finden können. Sie diskutieren auch die automatischen Optimierungen, die TVM bietet, einschließlich Loop-Transformationen und GPU-Beschleunigung. Der Referent spricht über die TVM-Roadmap, die die Aktivierung der 8-Bit-Unterstützung und die automatische Optimierung auf Diagrammebene umfasst. Darüber hinaus diskutieren sie die ONNX-TV-Schnittstelle und die Notwendigkeit, die Standardschnittstelle für alle Ökosysteme zu vereinheitlichen. Schließlich pausiert das Video zum Mittagessen.

  • 00:00:00 In diesem Abschnitt stellt der Referent den TVM-Compiler-Stack vor und wie er ONNX über GBM unterstützt. TVM ist ein Deep-Learning-Stack von der Klassenebene bis zur Krebsebene und ein Gemeinschaftsprojekt, das von Forschern der University of Washington mit Beiträgen mehrerer Unternehmen und Organisationen geleitet wird. Der TVM-Compiler-Stack unterstützt eine Vielzahl von Hardware, einschließlich CPU, GPU, FPGA, und plant, die ASIC-Unterstützung mit einem Simulator für die Überprüfung des Hardwaredesigns zu aktivieren. Der Stack unterstützt auch verschiedene Front-Ends, darunter MXNet, ONNX und TensorFlow, und verfügt über eine IR-Implementierung der Rechenklasse, die als NVM bezeichnet wird, mit einer Reihe von Optimierungsoptionen.

  • 00:05:00 In diesem Abschnitt geht der Referent auf den TVM-Compiler-Stack und die ONNX-Unterstützung ein. Sie erklären, dass der TVM-Compiler-Stack viele Optimierungen auf Stereoebene vornehmen kann, wie z. B. Schleifentransformationen und GPU-Beschleunigung, und dass ONNX eine neue Funktion ist, die dem automatischen TVM hinzugefügt wurde. Der Redner erläutert auch das Diplom Canadian Miss, das von TVM als Remote-Bereitstellungsmechanismus begrüßt wird, der es Benutzern ermöglicht, ein Modell auf ihrem Hostgerät zu kompilieren und es remote auf dem Zielgerät bereitzustellen. Darüber hinaus diskutieren sie die von TVM eingeführten automatischen Optimierungen, die die mühsame Arbeit für Entwickler reduzieren können und sind
    entwickelt, um den Suchraum zu erkunden und die beste Konfiguration zu finden.

  • 00:10:00 In diesem Abschnitt erörtert der Referent den TVM-Compiler-Stack und die Unterstützung für ONNX. Sie erwähnen, dass der TVM-Compiler-Stack die fortschrittlichsten Tuning-Algorithmen enthält, einschließlich isolierter extremer Gradienten-Boosting-Algorithmen, um eine bessere Leistung zu erzielen. Sie heben auch das Open-Source-Projekt hervor, das eine automatisierte Optimierung ermöglicht und frühere Arbeiten nutzen kann, um den Suchraum zu optimieren. Der Referent spricht dann darüber, wie TVM für den Vita Open Accelerator und seine drei Hauptteile verwendet werden kann. Sie erklären, wie TVM zur Zeitplanoptimierung verwendet und mithilfe von VPS RPC remote bereitgestellt werden kann. Schließlich stellen sie eine Roadmap für TVM bereit, die die Aktivierung von 8-Bit-Unterstützung und automatisiertem Tuning auf Grafikebene umfasst und gleichzeitig die Verwendung auf den Ultra-9-Sticks von Xilinx und der F1-Instanz von Amazon plant.

  • 00:15:00 In diesem Abschnitt erörtert der Redner den TVM-Compiler-Stack und wie er plant, auf NVM v2, genannt Relay, aufzurüsten. Die Implementierung von Relay erfordert die Auswahl eines Pod-Steuerungsflusses, um das Typsystem zu verbessern und zu steuern, wie das Kompilierungsserversystem verbessert werden kann. Der Referent erklärt, wie sich Relay bei der Unterstützung von ONNX in den TVM-Compiler-Stack einfügt. ONNX definiert drei Hauptteile, nämlich das Berechnungsgraphenmodell und Gebäudeoperatoren sowie eine Standarddatenbank. Zur Unterstützung von ONNX ml-Erweiterungen hat das TVM-Front-End ein Front-End in DVM implementiert. Die Konvertierung von ONNX in das symbolische NM-VM-Diagramm kann jedoch zu Problemen mit der Nichtübereinstimmung führen. Darüber hinaus diskutiert die Community, ob ONNX oder Relay als Graph-IR in der TVM-Community verwendet werden soll, und der einzige Weg, um Fortschritte zu erzielen, besteht darin, zusammenzuarbeiten, um Relay für die zukünftige Modellkonvertierung zusammenzuführen.

  • 00:20:00 In diesem Abschnitt erörtert der Referent die ONNX-TV-Schnittstelle für die Framework-Integration, die eine Standardschnittstelle für neuronale Netzwerkinferenz auf verschiedenen Beschleunigern ist. Die Schnittstelle umfasst Pod-Laufzeiterkennung, Auswahl von Ausführungs-Backends und langfristige Erkennung von ONNX-Operatoren. Der Referent schlägt vor, dass die Community diskutieren sollte, wie die Standardschnittstelle für alle Ökosysteme vereinheitlicht werden kann. Darüber hinaus spricht der Redner über den TVM-Compiler-Stack und wie er eine handcodierte Implementierung als Teil seines Suchraums integrieren könnte. Es gibt jedoch noch keine gute Idee zu diesem Mechanismus, daher begrüßt der Referent Ideen und Diskussionen.

  • 00:25:00 In diesem Abschnitt ist das Diskussionsthema der TVM-Compiler-Stack und seine Unterstützung für ONNX. Es wird klargestellt, dass ONNX sowohl ein Beschreibungsformat als auch eine Laufzeit-API hat und das ONNX-Equal-System über das reine offene Austauschformat hinausgeht. Das Ziel besteht darin, die API zu vereinheitlichen, sodass übergeordnete Anwendungen eine einzelne Standard-API für die Laufzeitinferenz aufrufen können, was es Entwicklern in diesem Bereich erleichtert. Es gibt keine weiteren Fragen, und das Video pausiert zum Mittagessen.
YVR18-332 TVM compiler stack and ONNX support
YVR18-332 TVM compiler stack and ONNX support
  • 2018.09.28
  • www.youtube.com
As an open source deep learning compiler driven by the community, TVM is evolving quickly and well received by the industry. In this session, the architectur...
 

.NET MAUI Community Standup – ONNX Runtime mit Mike Parker



.NET MAUI Community Standup – ONNX Runtime mit Mike Parker

In diesem Video stellt der Gastredner Mike Parker die ONNX-Laufzeitumgebung vor, ein Open-Source- und plattformübergreifendes Tool, das die Optimierung und Beschleunigung des maschinellen Lernens über mehrere Hardwareplattformen hinweg ermöglicht. Parker erklärt die Bedeutung der Verwendung der ONNX-Laufzeit und zeigt, wie sie in .NET-MAUI-Projekten verwendet werden kann, um Bilder mithilfe des MobileNet-Objektklassifizierungsmodells zu klassifizieren. Die Gastgeber und Parker erörtern die Vorteile der Ausführung von Modellen für maschinelles Lernen auf einem Gerät und die Möglichkeit, Backend-Infrastrukturkosten zu vermeiden. Darüber hinaus teilt das Team hilfreiche Ressourcen, darunter Parkers Blog zu diesem Thema und ihre Partnerschaft mit Al Blount für .NET MAUI- und Xamarin-Support.

  • 00:00:00 In diesem Abschnitt des Community-Standups für .NET MAUI stellt das Team Mike Parker vor, ein Mitglied des Kundenberatungsteams für moderne Client-Apps, der sein Wissen über ONNX Runtime, ein Tool für maschinelles Lernen zur Optimierung, weitergibt und Beschleunigung von Modellen über mehrere Hardwareplattformen hinweg. Er erklärt, warum ONNX Runtime quelloffen und plattformübergreifend ist und es Entwicklern ermöglicht, verschiedene Frameworks und Hardware für maschinelle Lernanwendungen zu verwenden. Er zeigt auch, wie die .NET-Community ONNX Runtime in ihren Projekten nutzen kann.

  • 00:05:00 In diesem Abschnitt stellen sich die Hosts und ihr Gast Mike vor, der sich dazugesellt, um mit ihnen über die Onnx-Laufzeit zu diskutieren. Die Gastgeber erwähnen, dass sie sich zunächst einige Blogs von Microsoft und der Community ansehen werden, bevor sie mit der Diskussion einiger PRs von .NET MAUI und angrenzenden Repositories fortfahren, auf die sie sich freuen. Schließlich werden sie die Diskussion an Mike Park übergeben, um über die Onnx-Laufzeitbibliotheken zu sprechen, wie er sie in Xamarin verwendet hat, und seine Texte und Podcasts zu diesem Thema. Die Gastgeber erwähnen auch, dass es das 20-jährige Jubiläum von .NET ist und dass .NET MAUI Preview 12 ausgeliefert wurde. Sie warnen die Benutzer auch vor einer bahnbrechenden Änderung und erwähnen, dass Dave mit Betreuern der Community-Bibliothek daran gearbeitet hat.

  • 00:10:00 In diesem Abschnitt erörtern die Referenten die Vereinheitlichungsbemühungen von .NET und die Notwendigkeit der Neukompilierung und Updates für iOS-Bibliotheken und -Abhängigkeiten, wenn Xamarin in MAUI übergeht. Das Team arbeitet derzeit an einer Möglichkeit, diese Änderungen für alle Bindungsprojekte an native Bibliotheken und NuGet-Pakete zu übernehmen, und versichert den Benutzern, dass eine Anleitung bereitgestellt wird. Darüber hinaus diskutiert das Team den Mangel an MAUI-Unterstützung in VS Mac 2022 Vorschau 5 und erklärt, dass sie daran arbeiten, aber zuerst die Wiederherstellung aller Xamarin-Arbeiten auf der .NET 6-Laufzeit mit einem neuen UI-SAC priorisieren mussten. Schließlich kündigt das Team die Aktualisierung der Facebook-SDK-Bindung an und erwähnt den Aufwand, andere Bibliotheken von Drittanbietern wie Google-Bibliotheken zu aktualisieren und zu warten.

  • 00:15:00 In diesem Abschnitt spricht das Xamarin-Team über die Komponenten, die es verwaltet, die früher ein Hauptaugenmerk waren, jetzt aber auf die wichtigsten für den Support eingegrenzt werden. Das Team ermutigt Benutzer, sich zu melden, wenn sie während des Übergangs zu .NET 6 Abhängigkeiten von diesen Komponenten haben. Sie diskutieren auch ein Maui Hello World-Tutorial und eine .NET Maui-Quellcode-Sezierungs-Blogserie. Darüber hinaus wird Andreas' Blog über Z Index und UI-Anpassung hervorgehoben, der das Stapeln von Elementen übereinander mit Z Index zeigt.

  • 00:20:00 In diesem Abschnitt stellt der Moderator einige Blogbeiträge und Designs vor, die Benutzer mit .NET MAUI neu erstellt haben. Die Blogs umfassen die Neuerstellung eines Bordkartenentwurfs in Xamarin Forms, die Erörterung der Zustandsmaschinenentwicklung mit Xamarin Forms, die Organisation Ihrer .NET-MAUI-Startdatei, einen tiefen Einblick in die Architektur von Handlern und einen Blog zur bidirektionalen Kommunikation zwischen Xamarin Forms und JavaScript ein WebView dafür. Die Präsentationen zeigen, wie viel Fokus heutzutage auf Design liegt, Xamarin Forms/MAUI erweiterbarer und nützlicher macht und wie sowohl JavaScript als auch Bindungen effektiver verwendet werden können.

  • 00:25:00 In diesem Abschnitt des Transkripts diskutieren die Hosts die neuesten Communitybeiträge zu .NET MAUI, einschließlich einer Version des 5.0-Xamarin-Forumdiensts und neuer Dokumentation. Sie ermutigen die Mitwirkenden, Feedback zur Repo-Teilnahme zu geben und die Verfügbarkeit einer Chip-Kontrolle im Community-Toolkit zu erwähnen, obwohl sie nicht direkt in der Box enthalten ist. Die Hosts erwähnen auch die kürzlich hinzugefügten Schatten, die ein neues Feature von MAUI sind, und schlagen vor, ihren Bot durch Mods aufzupeppen.

  • 00:30:00 In diesem Abschnitt stellt Mike Parker ein Update zum Status der .NET MAUI Preview-Versionen bereit und hebt die Fortschritte hervor, die mit Preview 13 erzielt wurden. und Spanngesten, die alle die Lücken in der Plattform ausfüllen. Die Community hat auch eine neue angefügte Eigenschaft namens „Galadriel“ freigegeben, die das einfache Hinzufügen von Badges zu Registerkarten und Menüelementen in der Xamarin Forms-Shell ermöglicht. Darüber hinaus hat das .NET MAUI-Team daran gearbeitet, die Startleistung der Plattform zu verbessern, und die Ergebnisse sind vielversprechend, da die App in 576 Millisekunden auf einem Pixel 5 mit profiliertem AOT startet.

  • 00:35:00 In diesem Abschnitt erörtert der .NET MAUI Community Standup die Verfügbarkeit von C#-Markuperweiterungen für die UI-Erstellung auf Xamarin Forms und .NET MAUI, die eine flüssigere Syntax für die UI-Entwicklung bieten. Sie sprechen auch über die onnx-Laufzeitumgebung, ein tragbares Modell, das mit einem einzigen API-Set Inferenzen über verschiedene Plattformen hinweg ausführen kann, mit Beispielen wie Gesichtserkennung und Foto-Tagging. Die onnx-Laufzeit ist auf GitHub verfügbar und kann in Xamarin und mobilen Apps verwendet werden. Der Prozess zur Verwendung der onnx-Laufzeit umfasst das Laden des Modells, das Vorbereiten der Eingabe, das Ausführen der Inferenz und das Verarbeiten der Ausgabe in ein verwendbares Format.

  • 00:40:00 In diesem Abschnitt des Videos erklärt Mike Parker, wie sie die ONNX-Laufzeit in einer Xamarin Forms-App verwendet haben, um Bilder mithilfe des Objektklassifizierungsmodells von MobileNet zu klassifizieren. Er betont, wie wichtig es ist, die Modelldokumentation zu befolgen und die RGB-Werte zu normalisieren. Parker erwähnt auch eine nützliche App namens Netron, die es ermöglicht, Ein- und Ausgangsgrößen, Formen und Namen der Ein- und Ausgänge zu visualisieren. Die App ist nur eine einzige Schaltfläche, die das Modell lädt und ausführt und die oberste Beschriftung in einer Warnung anzeigt. Parker merkt an, dass es cool ist, dass all dies auf dem Gerät geschieht, ohne die Cloud einzubeziehen.

  • 00:45:00 In diesem Abschnitt erörtern die Referenten die Vorteile der Ausführung von Modellen für maschinelles Lernen auf Geräten, einschließlich der Fähigkeit, ohne Konnektivität zu funktionieren und Backend-Infrastrukturkosten zu vermeiden. Sie gehen auch auf ihre Erfahrungen mit den cloudbasierten Microsoft Azure Vision-APIs ein und wie sie mit der ONNX-Laufzeit schnellere Verarbeitungszeiten erreichen konnten. Darüber hinaus erläutern sie, wie sie die Erfahrung einer Team-Onboarding-App vereinfacht haben, indem sie plattformspezifischen und modellspezifischen Code durch ein einziges ONNX-Modell ersetzt haben. Abschließend besprechen sie den Prozess der Vorbereitung eines Modells mit dem Azure Custom Vision Service und der Erstellung eines Nougat-Pakets, das es ONNX ermöglicht, mit Xamarin zu arbeiten.

  • 00:50:00 In diesem Abschnitt des Videos erläutert Mike Parker ihre Arbeit mit der ONNX-Laufzeitumgebung und die Anpassung ihres nativen Interoperabilitätscodes zur Unterstützung von Plattformen mit AOT wie iOS. Er beschreibt auch die realen Szenarien, in denen diese Technologie eingesetzt werden kann, einschließlich der Rationalisierung von Arbeitsabläufen und der Verbesserung der Zugänglichkeit in Apps. Er merkt jedoch an, dass die Arbeit mit vorgefertigten Modellen für diejenigen ohne einen traditionellen datenwissenschaftlichen Hintergrund überwältigend sein kann, und schlägt vor, bei der Auswahl der zu integrierenden Modelle selektiv vorzugehen. Schließlich werden einige hilfreiche Ressourcen, einschließlich Mikes Blog zu diesem Thema, geteilt.

  • 00:55:00 In diesem Abschnitt sprechen die Gastgeber über die Verfügbarkeit von Mike Parker und stellen Al Blount vor, der Unternehmen unterstützen kann, die Hilfe bei Xamarin Forms und .NET Maui benötigen. Sie besprechen auch kurz die aktuelle Arbeit von Mikes Team am Upgrade auf Maui, können aber noch keine Details mitteilen. Die Moderatoren beenden das Video, indem sie den Zuschauern für ihre Teilnahme danken und die bevorstehende Geburtstagsfeier zum 20-jährigen Jubiläum von .NET ankündigen.
.NET MAUI Community Standup - ONNX Runtime with Mike Parker
.NET MAUI Community Standup - ONNX Runtime with Mike Parker
  • 2022.02.03
  • www.youtube.com
Join Maddy Montaquila, David Ortinau, and special guest Mike Parker to learn about using the ONNX Runtime in your Xamarin app for Machine Learning!Community ...
 

[Virtuelles Treffen] Interoperable KI: ONNX und ONNXRuntime in C++ (M. Arena, M. Verasani)



[Virtuelles Treffen] Interoperable KI: ONNX und ONNXRuntime in C++ (M. Arena, M. Verasani)

Das Video erörtert die Herausforderungen bei der Verwendung verschiedener Frameworks zum Trainieren von Algorithmen für maschinelles Lernen, die zu mangelnder Interoperabilität führen, und stellt ONNX und ONNXRuntime vor, die darauf abzielen, ein universelles Format für Deep-Learning-Modelle zu schaffen. ONNX wandelt neuronale Netze in statische Rechengraphen um und ermöglicht so eine optimierte Leistung während der Inferenz. ONNXRuntime ermöglicht die Konvertierung jedes Frameworks in das ONNX-Format und stellt Beschleunigungsbibliotheken bereit, die für jede Hardwareplattform verwendet werden können. Das Video zeigt Beispiele für die Verwendung von ONNX und ONNXRuntime, diskutiert deren Verwendung in C++ und gibt Ratschläge zum besseren Verständnis des Projekts und seiner Dokumentation.

Marco Arena und Matteo Verasani erörtern auch die Vorteile der Verwendung von ONNX und ONNXRuntime in C++ für maschinelle Lernmodelle und heben die Flexibilität des Frameworks und seine Fähigkeit hervor, Modelle aus verschiedenen Frameworks ohne Leistungseinbußen einfach zu konvertieren. Sie bieten Beispiele für die Konvertierung von Modellen in das ONNX-Format und demonstrieren die Verwendung von ONNXRuntime für den Inferenzmodus, wobei sie Leistungsverbesserungen mit einem klassischen Python-Modell demonstrieren. Darüber hinaus erörtern sie ihre Arbeit mit eingebetteten Systemen und die potenziellen Vorteile des Benchmarkings von ONNXRuntime auf GPUs. Die Redner erwähnen auch zukünftige virtuelle Meetups und drücken die Hoffnung aus, mehr Networking-Möglichkeiten für die Teilnehmer einzubeziehen.

  • 00:00:00 In diesem Abschnitt des Videos diskutieren die Referenten die Probleme, die entstehen, wenn unterschiedliche Frameworks verwendet werden, um maschinelle Lernalgorithmen für verschiedene Anwendungsfälle zu trainieren, was zu mangelnder Interoperabilität führt. Dies kann eine Herausforderung sein, wenn Sie in einem Team arbeiten, in dem die Mitglieder möglicherweise über unterschiedliche Fachkenntnisse mit unterschiedlichen Frameworks verfügen. Um dieses Problem zu lösen, stellen die Referenten ONNX und ONNXRuntime vor, die die Interoperabilität zwischen Frameworks ermöglichen, indem sie Netzwerke in ein gemeinsames Format konvertieren. ONNXRuntime ermöglicht dann die Bereitstellung der konvertierten Modelle auf jeder Zielhardware, einschließlich CPUs, GPUs und FPUs.

  • 00:05:00 In diesem Abschnitt diskutieren die Referenten das ONNX-Projekt (Open Neural Network Exchange), das darauf abzielt, ein universelles Format für Deep-Learning-Modelle zu sein, das die Interoperabilität zwischen verschiedenen Frameworks ermöglicht. Das Projekt wird von der Community betrieben und von zahlreichen Unternehmen unterstützt, wobei der Schwerpunkt auf der Konvertierung verschiedener Modelltypen und Frameworks in ein einziges Format für die Produktion liegt. ONNX wandelt neuronale Netze in statische Rechengraphen um, die sich von dynamischen Graphen dadurch unterscheiden, dass sie vor dem Training vorinitialisiert werden. Während statische Diagramme recheneffizienter sind, bieten dynamische Diagramme eine größere Flexibilität für unterschiedliche Eingabegrößen.

  • 00:10:00 In diesem Abschnitt erörtern die Referenten, wie ONNX einen statischen Berechnungsgraphen bereitstellt, der im Inferenzprozess sehr nützlich ist. Während andere Frameworks wie Python über dynamische Berechnungsgraphen verfügen, bietet ONNX einen statischen Graphen, der bereits während der Trainings- und Entwicklungsphase kontrolliert wurde, was eine optimierte Leistung ermöglicht. Darüber hinaus ermöglicht das ONNX-Laufzeittool von Microsoft die Konvertierung jedes Frameworks in das ONNX-Format und bietet Beschleunigungsbibliotheken, die für jede Hardwareplattform verwendet werden können, was es zu einem hilfreichen und vielseitigen Tool für Inferenz und Produktion macht.

  • 00:15:00 In diesem Abschnitt des Videos sprechen die Referenten über ihre Erfahrungen mit ONNX und ONNX Runtime für KI-Interoperabilität. Sie erklären, wie sie ein PyTorch-Modell in Python erstellen, es in das ONNX-Format konvertieren und ONNX Runtime für die Bereitstellung verwenden, sodass sie ihre Pipelines schreiben und auf verschiedene Plattformen wie GPUs oder Android-Geräte abzielen können. Sie demonstrieren auch die Leistungsverbesserungen bei der Verwendung von ONNX Runtime im Vergleich zu anderen Inferenz-Engines, wodurch bis zu viermal schnellere Ergebnisse erzielt werden. Sie heben die Flexibilität von ONNX hervor, die es ihnen ermöglicht, in anderen Frameworks wie Matlab erstellte Modelle zu konvertieren, um sie mit ONNX Runtime zu verwenden, ohne die Bereitstellungspipeline neu schreiben zu müssen.

  • 00:20:00 In diesem Abschnitt erörtern die Referenten den Prozess der Verwendung von ONNX und ONNXRuntime in C++. Sie erklären, dass Modelle zunächst in das ONNX-Format konvertiert werden müssen, bevor sie auf ONNXRuntime ausgeführt werden können. Während die TensorFlow-Serialisierung nicht in ONNXRuntime integriert ist, stehen Open-Source-Bibliotheken für die Konvertierung zur Verfügung. Sie beantworten auch Fragen zur Möglichkeit der Skripterstellung für den Konvertierungsprozess und zum Grad der Verbesserung, der mit ONNX im Vergleich zu C++ festgestellt wurde. Sie stellen fest, dass weiteres Benchmarking und Analysen erforderlich sind. Das ONNXRuntime-Repository ist Open Source und wird von Microsoft unterstützt. Es bietet eine Reihe von Informationen, Leitfäden und Beispielen für Benutzer.

  • 00:25:00 In diesem Abschnitt erläutert das Video die Funktionen von ONNXRuntime in einer Komplexitätsskala von einfach bis anspruchsvoller. Die grüne Spalte enthält grundlegende Funktionen, die für einfachere maschinelle Lernaufgaben ausreichen, während die magentafarbene Spalte etwas ausgefeiltere Funktionen wie Ausführungsanbieter und Profilerstellungsunterstützung enthält. Die rote Spalte stellt erweiterte Funktionen für komplexere Aufgaben dar, wie z. B. die Möglichkeit, benutzerdefinierte ONNX-Operatoren hinzuzufügen oder den Handel zu optimieren. Der Moderator stellt auch Links zu zwei Demo-Repositories für ONNXRuntime in C++ und Python bereit.

  • 00:30:00 In diesem Abschnitt stellt der Referent ONNX und ONNXRuntime in C++ vor. Sie erklären, dass innerhalb des Programms eine Umgebung geschaffen werden sollte, um den Handelspool und die Sitzung zu verwalten, die das betrachtete Modell festlegt. Die Eigenschaften der Sitzung können auch angepasst werden, und die Standardeinstellungen können mit der Sitzung ausgeführt werden. Darüber hinaus optimiert die ONNXRuntime das Modell, indem sie die erforderliche Vorverarbeitung implementiert, um die Daten vor der Ausführung der Sitzung zu verwalten. Das Tool kann auch Inspektionsaufgaben ausführen, z. B. die Abfrage der Anzahl der Ein- und Ausgänge, Datentypen und Namen. Letztendlich können Benutzer ihre Eingaben und Tensoren im erforderlichen Format erstellen.

  • 00:35:00 In diesem Abschnitt des Videos erläutert der Sprecher, wie ein Objekt erstellt wird, das Tensoren auf der CPU zuweist und sie an den Ausführungsanbieter überträgt. Der Sprecher erstellt Eingabe- und Ausgabetensoren, indem er den Puffer mit Eingabewerten und der Form des Tensors als Argumente übergibt. Der Tensor für die Ausgabe wird dann erstellt, indem die Ausgabewerte an die OnnxRuntime-Bibliothek übergeben werden. Der Referent erklärt, wie wichtig es ist, Namen zum Starten von Inferenzen zu verwenden, da dies Flexibilität bei der Änderung der Reihenfolge der Eingaben ermöglicht. Die Demo zeigt ein einfaches Beispiel dafür, wie die Ausgabewerte auf dem Bildschirm gedruckt werden.

  • 00:40:00 In diesem Abschnitt gibt der Referent Ratschläge für diejenigen, die das ONNX-Projekt und seine Dokumentation besser verstehen möchten. Sie empfehlen, unter „Parts C“ nachzusehen, um auf die besser dokumentierten Abschnitte von ONNX zuzugreifen, und ihre Erfahrungen mit der Überprüfung von Daten in ONNX zu beschreiben. Der Referent erklärt auch, dass ONNX-Laufzeitbibliotheken zwar über andere Paketmanager verfügbar sind, dass sie jedoch empfehlen, die Bibliotheken neu zu kompilieren, da Architekturen und Anbieter variieren, und zeigt, wie sie denselben Code kompiliert haben, um zwei ONNX-Laufzeitpakete zu erstellen, die entweder auf eine CPU oder eine GPU abzielen.

  • 00:45:00 In diesem Abschnitt erörtert der Referent die ONNX-Laufzeit mit Beispielen für die Verwendung der DLL in C++. Die dem Code hinzugefügten Sitzungsoptionen variieren je nach den Vorlieben des Clients, und es wird versucht, die hinzugefügten Anbieter in der angegebenen Reihenfolge zu verwenden. Der Referent bietet eine Beispielanwendung, wie das System die RAM- und GPU-Auslastung belegt. Als Beispiel wurde ein Primärspiel-KI-Renet verwendet, das auf einem Datensatz mit 1.000 Bildern vortrainiert wurde. Das System hat seine Nachverarbeitungs- und Vorverarbeitungsanforderungen.

  • 00:50:00 In diesem Abschnitt des Videos erläutert der Sprecher die Vorverarbeitung von Bildern mit Python und die Verwendung von Erweiterungsquellen zur Vereinfachung des Prozesses. Die Bilder werden auf eine optimale Größe skaliert und in Float umgewandelt, bevor sie normalisiert werden. Bei der Normalisierung werden die Werte durch den Mittelwert dividiert und die Standardabweichung durchgeführt. Die Nachbearbeitung des neuronalen Netzes beinhaltet eine einfache Softmax-Normalisierung. Der Referent demonstriert auch, wie Bilder mit ONNX Runtime mit minimalem Code geöffnet, verarbeitet und ausgegeben werden. Die Klasse, die zum Lesen von Klassen aus einer Textdatei verwendet wird, ist einfach, und einige Dienstprogramme werden verwendet, um unnötigen Boilerplate-Code zu vermeiden.

  • 00:55:00 In diesem Abschnitt erläutert der Referent den Prozess der Messung der Inferenzzeit für ein neuronales Netzwerk mit ONNXRuntime in C++. Er erklärt, dass er den Inferenzteil zum zuvor besprochenen Netzwerk hinzugefügt und die Inferenzzeit unter Verwendung der Systemuhr gemessen hat. Anschließend demonstriert er, wie ein benutzerdefinierter Logger in ONNXRuntime für Profilerstellungszwecke verwendet wird. Der Referent geht auch kurz auf ein separates Mobilfunknetz ein, das in Zusammenarbeit mit der Universität Modena entwickelt wurde, und auf die Komplexität seiner Vor- und Nachverarbeitung.

  • 01:00:00 In diesem Abschnitt erläutert der Referent die Ausgabe eines Detektors und zeigt, wie er Begrenzungsrahmen auf Objekte wie Bären und Signale zeichnet. Sie erwähnen auch die Verwendung von ONNXRuntime und wie es Sitzungsoptionen und -optimierung ermöglicht, einschließlich der Aktivierung der Profilerstellung zur Leistungsoptimierung. Die resultierende Tracing-Datei kann im Detail überprüft werden, um zu sehen, wie lange es dauert, das Modell zu initialisieren und es auf Bildern auszuführen, einschließlich der verwendeten Operatoren und des ausgewählten Anbieters. Sie erwähnen auch die Fähigkeit von ONNX, einen Graphen zu optimieren, bevor er ausgeführt wird, was die Leistung verbessern und die Zeit zum Laden des Modells verkürzen kann.

  • 01:05:00 In diesem Abschnitt spricht der Moderator über das Optimieren eines Modells durch Aktivieren oder Deaktivieren von Optimierungen, die sich auf die Übertragbarkeit des Modells auf verschiedene Ziele auswirken können. Sie untersuchen verschiedene Optimierungsebenen und wie sich jede auf die Leistung des Modells auswirkt. Der Moderator zeigt, dass die Aktivierung des parallelen Ausführungsmodus dem Modell die Verwendung mehrerer Threads ermöglichen kann, aber in bestimmten Fällen möglicherweise keine signifikanten Auswirkungen auf die Leistung hat. Sie erwähnen auch die Möglichkeit, die Verarbeitung mehrerer Bilder mit einem Dienstprogramm zu parallelisieren. Abschließend weist der Referent darauf hin, dass Optimierungen einen spürbaren Einfluss auf die Leistung des Modells haben können, wie die verkürzte Ladezeit optimierter Modelle zeigt.

  • 01:10:00 In diesem Abschnitt erörtern Marco Arena und Marco Verasani die Vorteile der Verwendung von ONNX und ONNX Runtime in C++. Ein großer Vorteil ist die Möglichkeit, eine einzige Inferenzebene zu haben, die ONNX als Format akzeptiert, was Portabilität und Flexibilität bei der Verwendung verschiedener Frameworks zum Erstellen von Modellen ermöglicht. Diese Funktion ist besonders nützlich in Situationen, in denen verschiedene Teams möglicherweise verschiedene Frameworks verwenden und eine Standard-Inferenzpipeline für die Produktion benötigt wird. Darüber hinaus kann die Verwendung von ONNX Runtime in C++ zu einer schnelleren und optimierteren Laufzeitleistung für Deep-Learning-Modelle führen. Insgesamt bietet das ONNX-Ökosystem viele Optionen und Möglichkeiten zur Feinabstimmung und Optimierung der Leistung von Deep-Learning-Modellen.

  • 01:15:00 In diesem Abschnitt erörtern die Referenten die Vorteile der Verwendung von ONNX und ONNXRuntime in C++ für Machine-Learning-Modelle, da sie Flexibilität bei Frameworks und eine einfache Konvertierung zwischen ihnen ohne Leistungseinbußen ermöglichen. Sie erwähnen auch, dass ONNXRuntime unter Linux unterstützt wird, und zeigen, wie Python- und Jupyter-Notebooks für das Prototyping und den Export von Modellen in das ONNX-Format verwendet werden. Sie verwenden ein kleines Tutorial als Beispiel, um zu zeigen, wie Modelle aus anderen Frameworks in ONNX konvertiert werden, und heben die Nützlichkeit des Netron-Tools zur Visualisierung des Berechnungsdiagramms der Modelle hervor. Die Referenten ermutigen die Zuschauer, Fragen zu stellen und Wissen über das Tool auszutauschen.

  • 01:20:00 In diesem Abschnitt erörtern die Referenten den Prozess der Konvertierung eines Modells in das ONNX-Format und dessen Ausführung im Inferenzmodus mit ONNXRuntime in C++. Sie demonstrieren, wie man ein Berechnungsdiagramm erstellt und die Eingabe- und Ausgabedimensionen definiert, sowie wie man die Zeit verwendet, um die Leistung des Modells auf CPU und GPU zu bewerten. Sie demonstrieren auch die Verwendung des beliebten Modells für die Verarbeitung natürlicher Sprache BERT, das den Transformer-Operator verwendet und in der Hugging Face-Bibliothek implementiert ist. Die Referenten betonen die Bedeutung der Installation des richtigen Pakets für die Verwendung von ONNXRuntime mit CPU oder GPU.

  • 01:25:00 In diesem Abschnitt des Videos zeigt der Moderator, wie ein BERT-Modell in Python in das ONNX-Format konvertiert wird. Der Prozess umfasst das Definieren der Eingaben des Modells und das Konvertieren des Modells mithilfe der Funktion „torch.onnx.export“. Der Moderator erklärt, dass ONNX jeder Version Operatoren hinzufügt, was die Notwendigkeit unterstreicht, an der richtigen Version von ONNX mit den erforderlichen Operatoren für das spezifische Modell zu arbeiten. Die dynamische Achse wird auch als wichtiges Merkmal hervorgehoben, um dynamische Eingabe-/Ausgabeformen zu ermöglichen, wie z. B. variable Sequenzlängen bei der Verarbeitung natürlicher Sprache. Abschließend zeigt der Moderator einen Vergleich zwischen Python und ONNX in Bezug auf die Leistung beim Durchführen der Inferenz für das Modell.

  • 01:30:00 In diesem Abschnitt des virtuellen Treffens teilen die Referenten eine Demonstration ihrer Arbeit mit ONNX und ONNXRuntime in C++. Sie zeigen eine Leistungsverbesserung, die in der Inferenz eines klassischen Python-Modells zu sehen ist, das durch ONNXRuntime ausgeführt wird. Sie demonstrieren auch ein Tool namens "Network Viewer", mit dem Benutzer das statische Berechnungsdiagramm eines Modells anzeigen und die ausgeführten Operationen sehen können, einschließlich der erwarteten Eingabe- und Ausgabetypen. Das Tool zeigt auch die für die Konvertierung verwendete Version von ONNX und den während des Konvertierungsprozesses verwendeten Offset an. Die Referenten erbitten Feedback von den Zuschauern und stellen einen Link bereit, über den die Teilnehmer Kommentare abgeben können.

  • 01:35:00 In diesem Abschnitt sprechen Marco Arena und Matteo Verasani über ihre Arbeit zum Studium von Plattformen für eingebettete Systeme, einschließlich GPUs, FGAs und CPUs. Sie ließen vier neuronale Netze zur Objekterkennung auf diesen eingebetteten Systemen laufen und analysierten die Ergebnisse in Bezug auf Stromverbrauch und Inferenzgeschwindigkeit. Sie diskutieren auch die Bedeutung der Verwendung von einstufigen Detektoren für eingebettete Systeme und stellen Links zu Repositories für ONNX und ONNXRuntime bereit. Sie erwähnen die potenziellen Vorteile des Benchmarkings von ONNXRuntime auf GPUs und bekunden Interesse daran, das ONNXRuntime-Team von Microsoft zur Teilnahme an zukünftigen Veranstaltungen einzuladen. Schließlich laden sie die Zuschauer ein, an ihrer bevorstehenden Online-Veranstaltung und zukünftigen Treffen teilzunehmen.

  • 01:40:00 In diesem Abschnitt des Videos geht es darum, Gründe zu finden, nicht zu persönlichen Treffen zurückzukehren, und wie glücklich sie waren, von den Teilnehmern ein Zugeständnis für ihr Online-Meeting zu erhalten. Sie besprechen auch bevorstehende Pläne für ihre virtuelle Meetup-Reihe, die die Entfernung des Python-Bereichs und die Konzentration auf die ersten Teile ihrer Demonstration umfasst, basierend auf den Materialien, die von Malattia, Verasani und den ONNX- und ONNX-Laufzeit-Repositories gezeigt werden. Es gibt auch Links und offizielle Quellen für diejenigen, die nach weiteren Informationen zu diesem Thema suchen. Letztendlich äußern sie die Hoffnung, mehr Networking-Zeit einzuplanen und den Chat für diejenigen offen zu halten, die daran interessiert sind, nach dem Abendessen zu bleiben, aber sie geben die Einschränkungen von Online-Treffen zu.
[Virtual meetup] Interoperable AI: ONNX e ONNXRuntime in C++ (M. Arena, M. Verasani)
[Virtual meetup] Interoperable AI: ONNX e ONNXRuntime in C++ (M. Arena, M. Verasani)
  • 2020.10.22
  • www.youtube.com
Relatori: Marco Arena, Mattia Verasani📍 Slides: https://www.italiancpp.org/interoperable-ai-arena-verasani/💻 Demo: https://github.com/ilpropheta/onnxruntim...
 

[CppDay20] Interoperable KI: ONNX & ONNXRuntime in C++ (M. Arena, M. Verasani)



[CppDay20] Interoperable KI: ONNX & ONNXRuntime in C++ (M. Arena, M. Verasani)

Die Verwendung von maschinellem Lernen und Deep-Learning-Algorithmen nimmt zu, und es besteht ein Bedarf an Tools, die diese Algorithmen auf verschiedenen Plattformen einsetzen können. Das ONNX-Tool bietet Interoperabilität zwischen verschiedenen Frameworks und Plattformen, sodass Entwickler ihre Algorithmen von einem Framework in ein anderes konvertieren und auf verschiedenen Geräten bereitstellen können, selbst wenn sie mit dem spezifischen Framework oder der Plattform nicht vertraut sind. ONNX Runtime ist eine Inferenz-Engine, die benutzerdefinierte Beschleuniger nutzen kann, um Modelle während der Inferenzphase zu beschleunigen, und die auf eine Vielzahl von Hardwareplattformen abzielen kann. Die Referenten demonstrieren die Verwendung von ONNX und ONNX Runtime in der C++-Programmierung mit Beispielen für lineare Regression und neuronale Netzwerkmodelle. Sie diskutieren auch die Vorteile der Verwendung von ONNX und ONNX Runtime bei der Feinabstimmung der Ausführung eines Netzwerks, der Optimierung der Ladezeit und der Ausführung sequentieller Images.

  • 00:00:00 In diesem Abschnitt des Videos diskutieren die Referenten den zunehmenden Einsatz von maschinellem Lernen und Deep-Learning-Algorithmen für verschiedene Anwendungen und den Bedarf an Tools, die diese Algorithmen auf verschiedenen Plattformen bereitstellen können. Sie führen ein Tool namens ONNX ein, das Interoperabilität zwischen verschiedenen Frameworks und Plattformen bietet. Sie erklären, wie Entwickler ONNX verwenden können, um ihre Algorithmen von einem Framework in ein anderes zu konvertieren und sie auf verschiedenen Geräten bereitzustellen, selbst wenn sie mit dem spezifischen Framework oder der Plattform nicht vertraut sind. Die Referenten verwenden das Beispiel der Konvertierung eines Python-Algorithmus in das ONNX-Format und dann in das Core ML-Framework zur Bereitstellung auf einem Apple-Gerät. Sie betonen die Nützlichkeit von ONNX, um Algorithmen für Deep Learning und maschinelles Lernen zugänglicher und auf einer Vielzahl von Plattformen einsetzbar zu machen.

  • 00:05:00 In diesem Abschnitt erörtert der Redner ONNX und ONNX Runtime, die Tools sind, die eine interoperable KI ermöglichen. ONNX ermöglicht die Übertragung von Modellen zwischen verschiedenen Deep-Learning-Frameworks wie PyTorch und Tensorflow, ohne dass Kenntnisse über jedes Framework erforderlich sind. ONNX Runtime, das von Microsoft bereitgestellt wird, ist eine Inferenz-Engine, die benutzerdefinierte Beschleuniger nutzen kann, um Modelle während der Inferenzphase zu beschleunigen. Es kann auf eine Vielzahl von Hardwareplattformen abzielen und erfordert nicht, dass der Benutzer seine eigene Inferenz-Engine in C++ erstellt.

  • 00:10:00 In diesem Abschnitt erörtern die Referenten die Vorteile der Verwendung des ONNX-Formats für maschinelle Lernmodelle und die Interoperabilität, die es für verschiedene Trainingsframeworks bietet. Sie erklären die Pipeline für die Entwicklung von Deep-Learning-Algorithmen, deren Konvertierung in das ONNX-Format und die Verwendung der ONNX-Laufzeit-Inferenz-Engine, um das Modell auf verschiedenen Plattformen und Programmiersprachen auszuführen. Die Referenten präsentieren auch Leistungsdiagramme, die eine deutliche Verbesserung der Leistung der Algorithmen bei Verwendung der ONNX-Laufzeit im Vergleich zu anderen Frameworks wie PyTorch und scikit-learn zeigen. Schließlich übernimmt Marco und spricht über die Verwendung der ONNX-Laufzeit-Engine in der C++-Programmierung.

  • 00:15:00 In diesem Abschnitt spricht der Referent über seine Erfahrungen mit der Interoperabilität zwischen Frameworks für maschinelles Lernen und stellt das ONNX-Projekt als wichtigen Versuch zur Erreichung dieses Ziels vor. Sie erwähnen, dass sie beim Konvertieren von Modellen zwischen Frameworks nicht viele Konvertierungsprobleme hatten, aber das Hauptproblem entsteht, wenn ein Operator im ONNX-Format oder ONNX Runtime-Format nicht unterstützt wird. Der Referent beantwortet auch eine Frage zu Konvertierungsproblemen und erklärt, dass von ONNX nicht unterstützte Betreiber Probleme bei der Konvertierung verursachen können.

  • 00:20:00 In diesem Abschnitt diskutieren die Referenten ihre Erfahrungen mit der Konvertierung von TensorFlow in ONNX und erwähnen, dass sie nicht viele Konvertierungsprobleme gesehen haben. Sie diskutieren auch Debugging und Fehlerbehebung, wenn es um die Manipulation von Tensoren in C++ geht, und erwähnen die Verwendung anderer Bibliotheken wie Extensor oder Python, um dies zu tun. Sie stellen den Einstiegspunkt für ONNX, onx.ai, vor, der es Benutzern ermöglicht, ihre gewünschte Architektur und Programmiersprache auszuwählen, und demonstrieren die Verwendung von ONNXRuntime in C++. Sie erwähnen, dass der Code für die GPU derselbe ist, der einzige Unterschied ist die verknüpfte Bibliothek.

  • 00:25:00 In diesem Abschnitt zeigt der Moderator eine Demo der Verwendung von ONNXRuntime zum Laden, Prüfen und Ausführen von Inferenzen für ein Modell. Er beginnt mit der Erstellung einer Umgebung für die zugrunde liegende API mit optionalen Funktionen wie dem Anpassen von Protokollen oder Threading. Dann erstellt er eine Sitzung, die die Inferenz darstellt, um auf einem bestimmten Modell ausgeführt zu werden, das entweder von einem Pfad oder einem Bytestrom geladen werden kann. Er demonstriert, wie ein Allokator verwendet wird, um die Informationen des Modells zu überprüfen, wie z. B. die Anzahl und Namen von Ein- und Ausgängen. Er merkt an, dass diese Demo die Rohbibliothek zeigt und dass in realen Situationen ein Wrapper verwendet würde, um die Verwaltung von Zeichenfolgen und anderen Komplexitäten zu vermeiden.

  • 00:30:00 In diesem Abschnitt erörtert der Referent ein einfaches lineares Regressionsmodell und wie eine Eingabe an das Netzwerk übergeben wird, ohne Daten mit einer externen API namens CreateTensor zu kopieren. Der Sprecher betont, wie wichtig es ist, zur c-API unterhalb der c++-API zu gehen, wenn die Dokumentation unklar ist. Darüber hinaus erläutern sie die verschiedenen Optionen, die beim Ausführen der Inferenzsitzung verfügbar sind, darunter das Abrufen von Teilausgaben und das Anpassen von Ausgabenamen. Schließlich stellen sie fest, dass Ausgabewerte in einem Vektor gespeichert werden und die gleichen Tensoren sind, die zuvor zugewiesen wurden.

  • 00:35:00 In diesem Abschnitt erörtert der Referent den Zugriff auf Daten in C++ mithilfe der Funktion get tensor mutable data und die Notwendigkeit, den verwendeten Typ aufgrund von Typlöschung anzugeben. Das bereitgestellte Beispiel zeigt, wie Sie mit dieser Methode Werte auf die Standardausgabe drucken. Der Redner erwähnt auch die Notwendigkeit, bei der Zuweisung von Tensoren und Ausgangspuffern und bei der Verwendung von vorab zugewiesenen Ausgangspuffern vorsichtig zu sein. Die Diskussion bewegt sich dann zum Ausführen eines linearen Modells mit einem GPU-Ausführungsanbieter unter Verwendung des Microsoft ML ONNXRuntime-GPU-Pakets als Standardauswahl zum Ausführen von ONNXRuntime für die CPU. Abschließend stellt der Referent kurz zwei Demo-Projekte für Vision-Netzwerke vor: einen Klassifikator namens ResNet und einen Detektor namens MobileNet. Der Democode ähnelt dem vorherigen Beispiel, und der Sprecher hebt die Vorverarbeitung und Nachverarbeitung hervor, die in diesen Netzwerken enthalten sind.

  • 00:40:00 In diesem Abschnitt demonstriert der Moderator, wie ONNXRuntime verwendet wird, um die Ausführung eines neuronalen Netzwerks mithilfe eines externen Zeitgebers zu profilieren. Durch Hinzufügen einer Profilerstellungsoption während der Sitzungserstellung kann ONNXRuntime eine JSON-Datei erstellen, die die für jede Phase aufgewendete Ausführungszeit und die Explosion aller ausgeführten Operatoren im Diagramm enthält. Dieses Tool kann zusätzliche Details bereitstellen, z. B. ob das Modell auf CPU oder GPU ausgeführt wird oder ob es sequentiell oder parallel ausgeführt wird. Profiling kann bei der Feinabstimmung der Ausführung eines Netzwerks helfen und prüfen, ob es auf einem anderen Beschleuniger läuft.

  • 00:45:00 In diesem Abschnitt demonstriert der Referent die Auswirkungen der Optimierung auf die Ladezeit und Ausführungszeit eines Modells mit ONNX und ONNXRuntime in C++. Das Deaktivieren der Optimierung führt zu einer deutlich längeren Ausführungszeit, während das Aktivieren zu einer längeren Ladezeit führt. Es ist jedoch möglich, eine optimierte Version des Modells zu speichern, die Optimierung und Ladezeit ausgleicht. Der Referent zeigt dem Publikum, wie das Modell mit verschiedenen verfügbaren Optionen optimiert und gespeichert werden kann. Darüber hinaus geht der Referent kurz auf die parallele Ausführung ein und demonstriert, wie sie die Verarbeitungszeit für einen Stapel von Bildern erheblich verkürzen kann.

  • 00:50:00 In diesem Abschnitt erörtert der Redner die Ausführung sequentieller Bilder und die Konkurrenz im globalen Thread-Pool, die eine längere Ausführungszeit für jedes Bild verursacht. Sie erwähnen auch die Verwendung eines Profiling-Tools zur Verfeinerung der Zeitmessungen für einzelne Eingaben und die Explosion aller Operatoren, die pro Bild ausgeführt werden. Der Referent erklärt die Verwendung der Extensor-Bibliothek für die Tensor-Manipulation, ähnlich wie numpy für Python, die für die Bildvorverarbeitung in einem einfacheren ResNet-Klassifikator verwendet wird. Die ONNX Runtime-Unterscheidung für grundlegende, mittlere und fortgeschrittene Ebenen wird ebenfalls erwähnt, mit erweiterten Funktionen wie benutzerdefinierten Operatoren, Speicherbereichen und Allokatoren. Handelsunterstützung und Python-Beispiele werden ebenfalls besprochen, mit Links zu Demos und Folien.

  • 00:55:00 In diesem Abschnitt diskutieren die Referenten einen Benchmark, den sie zu Objekterkennungsalgorithmen durchgeführt haben, wobei der Schwerpunkt auf einstufigen Detektoren liegt, die für eingebettete Geräte nützlich sind. Sie verglichen FPGA, GPUs und CPUs und stellten fest, dass NVIDIA-Geräte, Intel Core E7-CPUs und FPGAs die besten Plattformen für bestimmte Arten von Operationen waren. Sie erwähnten auch, dass es eine gewisse Unterstützung für das Trainieren von Modellen in ONNX gibt, allerdings nur in Python. Auf die Frage, ob sie die Verwendung von ONNXRuntime in der Produktion in Betracht ziehen würden, gaben sie an, dass sie es bereits beim Testen und beim Übergang zur Produktion verwenden. Sie stellten fest, dass Microsoft es auch in vielen Projekten verwendet, einschließlich Windows ML, und dass es seit drei Jahren in der Entwicklung ist.
[CppDay20] Interoperable AI: ONNX & ONNXRuntime in C++ (M. Arena, M.Verasani)
[CppDay20] Interoperable AI: ONNX & ONNXRuntime in C++ (M. Arena, M.Verasani)
  • 2020.12.02
  • www.youtube.com
Event page: https://italiancpp.org/cppday20/Slides: https://github.com/italiancpp/cppday20---ONNX is an open source format built to represent machine learnin...
 

Beschleunigung des maschinellen Lernens mit ONNX Runtime und Hugging Face



Beschleunigung des maschinellen Lernens mit ONNX Runtime und Hugging Face

Das Video „Accelerating Machine Learning with ONNX Runtime and Hugging Face“ erläutert die Erstellung der Optimum-Bibliothek von Hugging Face, die sich auf die Beschleunigung von Transformatormodellen vom Training bis zur Inferenz durch einfache Anwendung der ONNX-Laufzeit konzentriert. Die Bibliothek vereinfacht die Brücke zwischen der Transformer-Bibliothek und der Hardwarebeschleunigung und schafft ein benutzerfreundliches Toolkit für Produktionsleistung. Durch die Anwendung der von ONNX Runtime bereitgestellten Optimierungen können Benutzer von der gesamten Hardwarebeschleunigung profitieren, was zu schnelleren Inferenzpipelines führt. Eine Zusammenarbeit innerhalb der Hugging Face-Community ermöglicht eine Sequenz-zu-Sequenz-Modelloptimierung unter Verwendung dieser beschleunigten Inferenz-Pipeline-Klassen, und ein End-to-End-Beispiel zeigte, dass die Verwendung der Optimum Library zu einer 44-prozentigen Steigerung des Durchsatzes oder einer Verringerung der Latenz bei gleichzeitiger Einsparung führen kann 99,6 % der ursprünglichen Modellgenauigkeit.

  • 00:00:00 In diesem Abschnitt erläutert Jeff von Hugging Face das Ziel des Unternehmens, die Leistung von Transformatormodellen für jedes Unternehmen auf der ganzen Welt durch leicht zugängliche vortrainierte Modelle und Tools zugänglich zu machen. Er erklärt, dass Transferlernen und die Aufmerksamkeit alles ist, was Sie brauchen, Papier hat den Bereich des maschinellen Lernens verändert, indem es bahnbrechende Leistungen bei Aufgaben zur Verarbeitung natürlicher Sprache erzielte und in jeder einzelnen Modalität des maschinellen Lernens hochmoderne Ergebnisse lieferte. Jeff stellt die Optimum-Bibliothek vor, die entwickelt wurde, um Transformatormodelle durch einfache Anwendung der ONNX-Laufzeit zu beschleunigen und Ingenieuren und Softwareentwicklern die Verwendung dieser Modelle in der Produktion zu erleichtern.

  • 00:05:00 In diesem Abschnitt erörtert der Redner die Erstellung der Hugging Face Optimum-Bibliothek, die sich auf die Beschleunigung von Transformatormodellen vom Training bis zur Inferenz konzentriert. Die Bibliothek bietet ein Referenz-Toolkit für die Hardwarebeschleunigung mit High-Level-APIs für die Produktionsleistung. Das Onnx Runtime-Paket in Optimum bietet eine native Integration von DeepSpeed, eine Möglichkeit, das Training zu beschleunigen. Optimum bietet auch den Ort Optimizer zur Vereinfachung von Diagrammmodellen, den Rt Quantizer zur Optimierung von Gewichtungen und richtet sich an bestimmte Ausführungsanbieter, um hardwarespezifische Optimierungen zu nutzen. Insgesamt vereinfacht Optimum die Brücke zwischen der Transformatorbibliothek und der Hardwarebeschleunigung und schafft ein benutzerfreundliches Toolkit für die Produktionsleistung.

  • 00:10:00 In diesem Abschnitt spricht der Redner über die Optimierung von Modellen für maschinelles Lernen mit ONNX Runtime und der Optimize Library von Hugging Face. Durch den Wechsel von Auto Model for Task zu RT Model for Task können Benutzer die von ONNX Runtime bereitgestellten Optimierungen einfach anwenden und von der gesamten Hardwarebeschleunigung profitieren, was zu schnelleren Inferenzpipelines führt. Die Hugging Face-Community arbeitet auch zusammen, um eine Sequenz-zu-Sequenz-Modelloptimierung mithilfe dieser beschleunigten Inferenz-Pipeline-Klassen zu ermöglichen. Das im Blogbeitrag skizzierte End-to-End-Beispiel zeigt, dass die Verwendung der Optimum Library zu einer Steigerung des Durchsatzes um 44 % oder einer Verringerung der Latenz führen kann, während 99,6 % der ursprünglichen Modellgenauigkeit erhalten bleiben.
Accelerating Machine Learning with ONNX Runtime and Hugging Face
Accelerating Machine Learning with ONNX Runtime and Hugging Face
  • 2022.07.13
  • www.youtube.com
Hugging Face has democratized state of the art machine learning with Transformers and the Hugging Face Hub, but deploying these large and complex models into...
 

Beschleunigung der ML-Inferenz im großen Maßstab mit ONNX, Triton und Seldon | PyData Global 2021



Beschleunigung der ML-Inferenz im großen Maßstab mit ONNX, Triton und Seldon | PyData Global 2021

In dem Video „Accelerating ML Inference at Scale with ONNX, Triton and Seldon | PyData Global 2021“ erörtert Alejandro Saucedo von Seldon Technologies die Herausforderungen bei der Skalierung von Machine-Learning-Inferenz und die Verwendung von ONNX und Triton zur Optimierung und Produktion von Modellen. Unter Verwendung des GPT-2-TensorFlow-Modells als Anwendungsfall behandelt die Sitzung die Vorverarbeitung, die Auswahl optimaler Tokens und die Bereitstellung des Modells mit Tempo und dem Triton-Inferenzserver. Saucedo betont die Notwendigkeit, Infrastrukturkomplexitäten zu abstrahieren und eine einfache Bereitstellung zu ermöglichen, während gleichzeitig Reproduzierbarkeit und Compliance sichergestellt werden. Der Vortrag endet mit Kooperationen mit Open-Source-Projekten für End-to-End-Schulungs- und Bereitstellungskomponenten.

  • 00:00:00 In diesem Abschnitt stellt Alejandro Saucedo sich und sein Unternehmen Seldon Technologies vor, das sich auf den Einsatz und die Überwachung von maschinellem Lernen konzentriert. Er erklärt, dass die Sitzung die Herausforderung behandeln wird, maschinelle Lerninferenz in großem Maßstab zu beschleunigen, indem ein praktischer Ansatz verfolgt wird, wobei das GPT-2-TensorFlow-Modell als Anwendungsfall verwendet wird. Ziel ist es, das Modell mit ONNX zu optimieren und es lokal mit einem Tool namens Tempo zu testen, bevor es auf Kubernetes produziert wird. Das Hauptaugenmerk liegt darauf, die zugrunde liegende Komplexität der Infrastruktur zu abstrahieren, damit sich Data-Science-Praktiker auf die Data-Science-Seite konzentrieren können. Saucedo erklärt auch, was GPT-2 ist und welche Anwendungen es hat, und stellt fest, dass es sich um ein relativ komplexes Modell handelt, das einen erheblichen Rechenaufwand für das Training und die Schlussfolgerung erfordert.

  • 00:05:00 In diesem Abschnitt des Videos erörtert der Sprecher die Verwendung vortrainierter Modelle, insbesondere GPT-2, und wie sie für verschiedene Anwendungen wie Spiele und Codegenerierung genutzt werden können. Der Referent erklärt, wie die Hugging Face-Bibliothek verwendet wird, um das vortrainierte GPT-2-Modell abzurufen, und erörtert die Komponenten des Modells, einschließlich des Tokenizers und des Kopfmodells, die für die Vorverarbeitung und Inferenz verwendet werden. Der Sprecher geht dann durch ein Beispiel der Vorverarbeitung eines für Menschen lesbaren Satzes unter Verwendung des Tokenizers und der Verwendung der Generate-Funktion zur Vorhersage von 20 Tokens. Abschließend erklärt der Referent den zugrunde liegenden Arbeitsablauf der Generate-Funktion, die die Inferenz mehrfach für das Modell ausführt, und wie die maschinenlesbare Ausgabe mithilfe des Decoders des Tokenizers wieder in ein menschenlesbares Format konvertiert wird.

  • 00:10:00 In diesem Abschnitt erläutert der Referent den Prozess der Auswahl des optimalen Tokens für ein Modell und die Herausforderungen, denen Praktiker bei der Skalierung des Modells gegenüberstehen. Zu den Herausforderungen gehören die Anforderung an spezialisierte Hardware, komplexe Abhängigkeiten zwischen Komponenten und die Notwendigkeit von Reproduzierbarkeit und Konformität. Der Referent stellt dann das ONNX-Format vor, das in der Industrie weit verbreitet ist und die Umwandlung von Python- oder PyTorch-Modellen in ein standardisiertes Format ermöglicht, damit optimierte Server sie lesen und für eine optimale Leistung modifizieren können. Die Konvertierung in ONNX ist jedoch nicht erforderlich, und Praktiker können ihre Modelle weiterhin direkt einsetzen. Der Referent stellt auch das Tempo-Framework vor, das den Prozess der Bereitstellung und Skalierung von Modellen vereinfacht.

  • 00:15:00 In diesem Abschnitt erläutert der Referent, wie das Modell mit Tempo und dem Triton-Inferenzserver produziert wird. Der erste Schritt besteht darin, einen Tempo-Wrapper für das GPT-2-Modell zu definieren und dann das optimierte Modell auf dem optimierten Server von Nvidia auszuführen. Als Nächstes muss eine benutzerdefinierte Transformatorlogik definiert werden, um maschinenlesbare Token in menschenlesbare Zeichenfolgen umzuwandeln, sodass Benutzer auf einfache und unkomplizierte Weise mit dem Modell interagieren können. Nachdem das Modell lokal in Docker getestet wurde, kann es mit einem einfachen Befehl im Kubernetes-Stack bereitgestellt werden. Der Code zum Definieren des Wrappers wird gezeigt, und der Referent erklärt, dass diese Methode die Verwendung verschiedener Arten von Modellframeworks ermöglicht, was sie zu einem vielseitigen Werkzeug für die Produktion von ML-Inferenzen macht.

  • 00:20:00 In diesem Abschnitt erläutert der Referent, wie eine benutzerdefinierte Transformatorlogik mithilfe von PyTorch-Modellen mit ONNX und Triton erstellt wird. Zunächst erklärt das Transkript, wie Token durch diese benutzerdefinierte Logik gesendet werden, indem eine Zeichenfolgenkonvertierung und die Vorhersagefunktion verwendet werden. Der Referent erklärt dann, wie Artefakte aus dem GPT2-Modell geladen und die Vorhersagefunktion als REST-Endpunkt definiert werden, bevor die Tokens durchlaufen und die Antwort generiert werden. Die wichtigste Erkenntnis ist, dass wir, indem wir Token durch das Modell leiten und mehrere Läufe durchlaufen, eine Zeichenfolge aus dieser komplexen Infrastruktur zurückgeben können. Darüber hinaus erwähnt der Referent, dass dieser Ansatz durch die Deploy-Remote-Funktion einfach in Kubernetes bereitgestellt werden kann.

  • 00:25:00 In diesem Abschnitt erörtert der Redner die Beschleunigung des maschinellen Lernens im großen Maßstab, wobei er sich insbesondere auf die Optimierung eines GPT-2-TensorFlow-Modells mit ONNX und dessen Ausführung mit Triton mit Docker und die anschließende Bereitstellung in Kubernetes konzentriert, während er Best Practices befolgt. Ziel ist es, Lecks in der zugrunde liegenden Infrastruktur zu minimieren und eine zuverlässige Bereitstellung mit minimalem Aufwand sicherzustellen. Der Redner erwähnt auch ihre Zusammenarbeit mit Tempo- und Metaflow-Teams, um End-to-End-Trainings- und Bereitstellungskomponenten in Open-Source-Projekten bereitzustellen. Der Vortrag endet mit einer Q&A-Session.
Accelerating ML Inference at Scale with ONNX, Triton and Seldon | PyData Global 2021
Accelerating ML Inference at Scale with ONNX, Triton and Seldon | PyData Global 2021
  • 2022.01.19
  • www.youtube.com
Accelerating ML Inference at Scale with ONNX, Triton and SeldonSpeaker: Alejandro SaucedoSummaryIdentifying the right tools for high performant production ma...
 

AI Show Live – Folge 62 – Multiplattform-Inferenz mit der ONNX-Laufzeit



AI Show Live – Folge 62 – Multiplattform-Inferenz mit der ONNX-Laufzeit

In der Folge „Multiplatform Inference with the ONNX Runtime“ der AI Show Live zeigen Gastgeber, wie ein Superauflösungsmodell und ein Objekterkennungsmodell auf mehreren Plattformen mithilfe des ONNX Runtime-Frameworks bereitgestellt werden. Sie diskutieren Vor- und Nachverarbeitungsschritte für mobile und Webplattformen, demonstrieren die Vorteile der Verwendung einer einzigen Lösung, erklären den Prozess der Konvertierung eines PyTorch-Modells in ein ONNX-Modell und zeigen, wie Daten für die Inferenz mit ONNX vorverarbeitet werden Laufzeit. Darüber hinaus demonstrieren sie die Implementierung des BERT-Modells zur Verarbeitung natürlicher Sprache mithilfe von Onnx Runtime in C#. Der Code und die Open-Source-Modelle stehen zur Anpassung an die Lösungen der Benutzer zur Verfügung.

Im zweiten Teil der AI Show Live behandeln die Moderatoren eine Vielzahl von Themen im Zusammenhang mit der Ausführung von Inferenz mit der ONNX-Laufzeit. Sie demonstrieren den Prozess der Textklassifizierung anhand eines Beispiels aus den ONNX-Inferenzbeispielen und untersuchen die Installation von Paketen und Tools, die zum Erstellen von BERT-Klassifizierungsmodellen in C# erforderlich sind. Sie besprechen auch die Verwendung von IntelliCode mit VS 2022 und gehen durch die Schritte zur Vorbereitung der Modellinferenz, einschließlich der Erstellung von Tensoren, der Konfiguration der ONNX Runtime-Inferenzsitzung und der Nachbearbeitung der Ausgabe. Darüber hinaus gehen sie auf die Bedeutung der Konsultation der Modelldokumentation und der Auswahl des richtigen Tokenizers für genaue Ergebnisse ein.

  • 00:00:00 In diesem Abschnitt der KI-Show Live stellt Moderatorin Cassie Breviu die besonderen Gäste Victor, Kalia und David vor, Praktikanten im ONNX Runtime-Team, die ein Projekt zur Bereitstellung eines Superauflösungsmodells und eine Objekterkennungsmodell auf Mobilgeräten und im Web mit dem ONNX Runtime-Framework. Das Projekt zielt darauf ab, die Objekterkennung auf Bildern durch Superauflösungsausgabe zu verbessern und die Fähigkeit der ONNX-Laufzeit für den Einsatz auf mehreren Plattformen zu demonstrieren.

  • 00:05:00 In diesem Abschnitt stellen die Gastgeber ein Projekt vor, das React Native und Expo verwendet, um eine App zu erstellen, die auf verschiedenen Plattformen für Mobilgeräte und das Web bereitgestellt werden kann. Sie erklären, dass die Verwendung der nativen Modulfunktion von React Native die Implementierung von Funktionen und Modellen in anderen Sprachen wie C++ und Java ermöglicht, die in JavaScript-Code verwendet werden können. Diese Funktion ermöglicht es ihnen, Vorverarbeitungsfunktionen in einer anderen Sprache zu schreiben, wie z. B. ihre in Java geschriebene Funktion „Pixel abrufen“, um Daten besser zu verarbeiten und das Abrufen der Pixeldaten eines Bildes für ihre Modelle für maschinelles Lernen zu vereinfachen.

  • 00:10:00 In diesem Abschnitt des YouTube-Videos erläutert der Sprecher die Vor- und Nachverarbeitungsschritte einer mobilen Anwendung, die ein Superauflösungsmodell verwendet. Im Gegensatz zu anderen Modellen, die mit RGB-Werten arbeiten, arbeitet dieses Modell nur mit der Luminanz (Y)-Komponente eines Bildes. Daher zeigt der Referent, wie man ein RGB-Bild in ein YCbCr-Bild umwandelt, um die Y-Komponente zu extrahieren. Der Referent demonstriert auch, wie das Modell mithilfe des ONNX Runtime-Formats in die mobile Umgebung geladen wird, das einen optimierten und größenreduzierten Build für mobile und Webanwendungen bietet. Schließlich wird der Nachbearbeitungsschritt durchgeführt, um die Ausgabe des Modells zu verarbeiten.

  • 00:15:00 In diesem Abschnitt des Videos demonstrieren der Host und der Gast die Post-Processing-Funktion, die ein Array aus ihrem Modell aufnimmt und YCbCr wieder in RGB umwandelt. Sie verwenden dann die Funktion eines nativen Modells, um die Bildquelle für die Anzeige abzurufen. Die Vor- und Nachverarbeitung in Nicht-Python-Sprachen ist in der Regel der schwierige Teil bei der Operationalisierung und Ableitung von Modellen in anderen Sprachen. Sie zeigen eine Demo, in der das Modell lokal auf einem mobilen Gerät bereitgestellt wird, und verwenden den Code später wieder, um dasselbe Modell in einem Webbrowser bereitzustellen. Ein Betrachter fragt, ob das auch in C# möglich ist, was der Gast für möglich hält.

  • 00:20:00 In diesem Abschnitt demonstriert Kalia die Unterschiede in der Vor- und Nachbearbeitung für die Ausführung des Modells auf Web- und mobilen Plattformen. Im Web werden Off-Screen-Canvas und die Canvas-API verwendet, um die Bilddaten abzurufen, während auf Mobilgeräten kein Hin- und Herwechseln zwischen APIs erforderlich ist. Sobald die Off-Screen-Leinwand das Bild zeichnet, passt die Vorverarbeitungsfunktion die Bilddaten an den y-Kanal an, den das Super-Resolution-Modell verwendet. Die Nachbearbeitungsfunktion wandelt die Daten dann vom y cbcr- in das rgb-Format um, damit sie auf einem Bildschirm angezeigt werden können. Der Code von Kalia für die Vor- und Nachverarbeitungsfunktionen kann entweder in Java, C# oder React verwendet werden.

  • 00:25:00 In diesem Abschnitt des Videos erörtern die Referenten die Vorteile der Verwendung einer einzigen Lösung für mehrere Geräte, z. B. mit ONNX Runtime. Sie demonstrieren, wie ein mobiles Modell auf einer Webplattform ausgeführt wird, und zeigen die Vorteile von On-Device-Inferencing, einschließlich Kosteneffizienz und Datenschutz. Die Referenten erklären auch den Prozess der Konvertierung eines PyTorch-Modells in ein ONNX-Modell und dann in ein ONNX-Runtime-Format. Schließlich stellen sie den Objekterkennungsaspekt des Projekts vor und erklären, wie sie ONNX Runtime zum Erkennen von Objekten in den Bildern verwendet haben.

  • 00:30:00 In diesem Abschnitt des Videos erläutert der Moderator die Details des in seinem Projekt verwendeten Modells, bei dem es sich um ein Objekterkennungs-KI-Modell handelt, das Superauflösung verwendet, um die Genauigkeit der Gesamterkennung zu erhöhen. Sie erklären die Unterschiede in der Vor- und Nachverarbeitung zwischen ihrem Modell und dem zuvor besprochenen Modell und erläutern die vier Ergebnisse ihres Modells, einschließlich Standort, Klassen, Bewertung und Anzahl der Erkennungen. Darüber hinaus zeigen sie, wie sie das Netron-Tool verwendet haben, um ihr Modell zu analysieren und aufzuschlüsseln, und wie sie die Vorverarbeitung angepasst haben, um die RGB-Werte konsistent zu halten, damit das Modell Objekte genau erkennen kann.

  • 00:35:00 In diesem Abschnitt demonstriert der Moderator das Ausführen eines Modells auf einem Foto vor der Superauflösung und zeigt die Ergebnisse der Objekterkennung, die den Hund auf dem Foto genau identifiziert. Die Verwendung des Superauflösungsmodells verbessert das Bild und führt zu einer genaueren und kleineren Erkennungsbox. Dies demonstriert die Portabilität und praktische Verwendung der ONNX-Laufzeit und zeigt die Möglichkeiten zum Ausführen des Modells auf einem optimierten Modell auf dem Gerät. Die Code- und Open-Source-Modelle sind auch für Benutzer verfügbar, auf die sie zugreifen und sie für ihre eigenen Lösungen anpassen können.

  • 00:40:00 In diesem Abschnitt sehen Sie eine Demonstration des BERT-Modells zur Verarbeitung natürlicher Sprache unter Verwendung von Onnx Runtime in C#. Der Gastgeber erklärt, dass es zwar viele Beispiele für die Verwendung von BERT in Python gibt, er jedoch C# bevorzugt. Sie begannen mit dem BERT-Basismodell ohne Gehäuse, bevor sie zur Beantwortung von Fragen zu einem Beispiel aus der Onnx Runtime-Dokumentation übergingen. Mit der Hugging Face Transformers API konnten sie das vortrainierte Modell einfach abrufen und in das Onnx-Format exportieren. Anschließend zeigen sie, wie man dem Modell Eingaben gibt und es mit Onnx Runtime in C# ausführt.

  • 00:45:00 In diesem Abschnitt erörtert der Sprecher den Vorverarbeitungsschritt für das Modell, bei dem der Text in Tokens umgewandelt wird. Sie zeigen, wie dynamische Achsen verwendet werden, um unterschiedliche Eingabelängen zu ermöglichen, und wie sie den Tokenizer verwenden, um die Eingabe in Cis vorzuverarbeiten. Sie stellen auch den Boat Tokenizer vor, ein Open-Source-Projekt, das es ihnen ermöglicht, das BERT-Modell in Cis zu tokenisieren, was mit dem auf Python basierenden Transformers-Paket nicht möglich ist. Die codierte Eingabe wird dann als Eingabe-IDs zurückgegeben, bei denen es sich um die verschiedenen Token handelt, die an verschiedene Wörter im Modell angehängt sind.

  • 00:50:00 In diesem Abschnitt erläutert der Moderator die Implementierung von BERT-Modellen in C# durch Erstellen einer Konsolen-App. Sie erklären, dass die Verwendung einer Konsolen-App beim Experimentieren mit verschiedenen C#-Implementierungen von Modellen hilfreich ist und bei Bedarf in eine Produktionsanwendung integriert werden kann. Der Moderator demonstriert, wie Tokenisierung verwendet wird, um die tatsächlichen Tokens eines Satzes zu erhalten, und wie Eingaben mit den Tokens zugeordneten IDs codiert werden. Sie zeigen auch die großen verwendeten Vokabulare und wie sie in Objekte umgewandelt werden, die bei der Tokenisierung verwendet werden.

  • 00:55:00 In diesem Abschnitt erläutert der Moderator, wie Daten vorverarbeitet und für die Inferenz mit der ONNX-Laufzeit vorbereitet werden. Sie demonstrieren, wie Daten in Tensoren konvertiert werden, die für den Inferenzprozess erforderlich sind, und wie eine Liste mit benannten ONNX-Wertobjekten erstellt wird, die an die Inferenzsitzung übergeben werden. Sie erwähnen auch, wie wichtig es ist, korrekte Labels für die Eingabedaten festzulegen. Insgesamt bieten sie hilfreiche Tipps zum Arbeiten mit der ONNX-Laufzeit und zum Vorbereiten von Daten für Machine-Learning-Inferenz.

  • 01:00:00 In diesem Abschnitt führt der Sprecher die Inferenzwerte aus und erhält die Start- und Endlogits. Die Ergebnisse werden in der Reihenfolge des Indexes der Labels zurückgegeben. Um die vorhergesagte Antwort zu erhalten, müssen zuerst der Maximalwert und der Index des Maximalwerts aus den Start- und Endlogits erhalten werden. Die Ausgabenamen werden angezeigt, und die codierten Tokenwerte können gesehen werden, die zum Vergleichen verwendet werden, ob die Token korrekt sind. Der Referent demonstriert auch den Prozess der Konvertierung von Python-Inferenzcode in C# zur Operationalisierung von Modellen. Schließlich schlagen sie vor, mit mehr Modellen zu experimentieren, Python-Inferenzcode in C# zu konvertieren und Modelle zu optimieren.

  • 01:05:00 In diesem Abschnitt des Videos untersucht der Host die Textklassifizierung mit der ONNX-Laufzeit und einem Beispiel aus den ONNX-Inferenzbeispielen, die eine gute Ressource zum Auffinden von Beispielen für die Verwendung von ONNX darstellen. Das Beispiel verwendet einen Tokenizer von Hugging Face und eine kleinere, destillierte Version des umhüllten Basis-Tokenizers. Der Host legt den Pfad basierend auf dem Modellnamen fest und legt dann die Eingaben für das Modell fest, das aufgrund der variablen Satzlänge dynamische Achsen hat. Die Eingaben für das Textklassifizierungsmodell sind Eingabe-IDs und die Aufmerksamkeitsmaske. Der Gastgeber erwähnt, dass für ONNX Erweiterungen entwickelt werden und dass die neue Version der Laufzeitumgebung .NET Six und Maui unterstützt. Obwohl das Vorverarbeitungsbeispiel für das Modell nicht ohne weiteres verfügbar ist, plant der Host, Netron zu verwenden, um es herauszufinden.

  • 01:10:00 Fassen Sie diesen Abschnitt zusammen. In diesem Abschnitt des Videos benennt der Sprecher das Vorgängermodell auf weniger informative Weise um und fügt ihm eine Textklassifizierung hinzu. Anschließend erstellen sie ein neues Projekt mit C# und .NET 6 und erläutern die neue Funktion einer einfachen skriptgesteuerten Konsolenvorlage. Der Sprecher kopiert und fügt etwas Code aus dem vorherigen Projekt in das neue ein und fügt den BERT-Eingang hinzu, der jetzt nur noch zwei Ausgänge hat. Der Sprecher erkennt an, dass er eine separate Datei für diese Eingabe erstellen sollte, entscheidet sich jedoch dafür, sie stattdessen per Skript auszuführen.

  • 01:15:00 In diesem Abschnitt erörtert der Referent die Installation verschiedener Pakete und Tools zum Erstellen von Burp-Klassifizierungsmodellen in C#. Sie installieren das erforderliche Tokenizer-Paket und die ONNX-Laufzeitpakete zusammen mit dem verwalteten Paket. Die nicht benötigten Attributpakete werden auskommentiert, und der Sprecher fügt einen Eingabesatz und einen Tokenizer hinzu, um die Token für die Codierung zu erhalten. Der Referent erwähnt auch den VS 2022 IntelliCode, der das GPT-2-Modell verwendet, um auf der Codebasis zu trainieren und lokal ausgeführt wird.

  • 01:20:00 In diesem Abschnitt des Videos spricht der Moderator über die Verwendung von Intellicode (früher bekannt als Intellisense) mit VS 2022, einem KI-gestützten Tool, das von einer vorhandenen Codebasis lernen kann. Anschließend arbeiten sie mit dem Tokenizer und dem codierten Wert für einen Satz. Sie diskutieren auch den Modellpfad und das Einfügen des Modells in eine Konsolen-App für experimentelle Zwecke, obwohl es bessere Möglichkeiten gibt, dies für eine Produktionsanwendung zu handhaben. Schließlich erstellt der Präsentator eine Inferenzsitzung für das BERT-Modell.

  • 01:25:00 In diesem Abschnitt des Videos gehen die Moderatoren die Schritte durch, die zur Vorbereitung auf die Ausführung einer Inferenz mit ONNX Runtime erforderlich sind. Sie beginnen damit, Tensoren zu erstellen und sie in einen Tensor umzuwandeln. Sie erstellen dann eine Eingabe unter Verwendung von Eingabe-IDs und einer Aufmerksamkeitsmaske und einer Liste von Listen von Listen. Nachdem sie einen benannten ONNX-Wert erstellt haben, führen sie das Modell aus und erörtern Optionen zum Konfigurieren der ONNX Runtime-Inferenzsitzung, einschließlich verschiedener Diagrammoptimierungen und Ausführungsanbieter. Schließlich rufen sie die Ausgabe ab, die in diesem Fall nur einen Wert hat.

  • 01:30:00 In diesem Abschnitt des Transkripts geht der Sprecher den Code für die Verwendung eines Modells mit der ONNX-Laufzeit durch. Sie erklären, wie sie die Labels so benannt haben, dass sie für die Verwendung des ONNX-Modells gleich sind, und wie sie einen Plausibilitätstest durchführen können, um zu sehen, ob alles funktioniert. Sie setzen einen Haltepunkt, um den Code schrittweise zu durchlaufen und zu prüfen, ob die Eingabe, die Aufmerksamkeitsmaske und die IDs richtig sind. Sobald die Eingabe korrekt ist, laden sie das Modell, erstellen ihren Tensor, ihre Sitzung und ihre Inferenz. Dann erklären sie, dass sie nachbearbeiten müssen, um herauszufinden, wie dies wieder in ein Ergebnis umgewandelt werden kann, und sie haben sich auf die Suche nach etwas Vorverarbeitungscode gemacht.

  • 01:35:00 In diesem Abschnitt des Videos erläutert der Sprecher den Prozess der Verarbeitung von zwei Werten, die aus einem Klassifizierungsmodell stammen, um die positive und negative Stimmung eines bestimmten Satzes zu bestimmen. Sie demonstrieren die Verwendung eines Tokenizers zum Tokenisieren des Satzes und Abrufen seiner Tokens, die sie verwenden, um ihr Verständnis der Durchführung des Prozesses in C# zu bestätigen. Sie erwähnen auch, wie wichtig es ist, die Modelldokumentation zu konsultieren und den richtigen Tokenizer auszuwählen, um eine genaue Tokenisierung zu gewährleisten.

  • 01:40:00 In diesem Abschnitt diskutieren die Moderatoren der AI Show Live das Optimum-Projekt von Hugging Face, das Optimierungen für maschinelles Lernen implementiert, einschließlich Beschleuniger für das Training und verschiedene Hardware-Integrationen unter Verwendung der ONNX-Laufzeit im Backend. Die Hosts überprüfen auch die Vorverarbeitungsschritte für den Tokenizer und das Erstellen der Sitzung für das Textklassifizierungsmodell. Sie untersuchen die codierte Version eines Satzes und verwenden zuvor geschriebenen Code erneut, um die Sitzung für ihr Modell zu erstellen.

  • 01:45:00 In diesem Abschnitt bereitet sich der Präsentator auf die Modellinferenz vor, indem er das Modell exportiert und die Eingabedaten verarbeitet. Sie bestätigen, dass der richtige Tokenizer verwendet wurde, um die Eingabedaten zu tokenisieren, indem sie eine Plausibilitätsprüfung der codierten Token durchführen. Sie stellen jedoch fest, dass die Eingabemaske fehlt, und gehen zurück, um das Modell und den Code zu untersuchen, um das Problem zu lokalisieren. Trotz Unsicherheit über den verwendeten Tokenizer bestätigen sie, dass die codierten Token korrekt sind, und fahren mit der Generierung der Eingabemaske fort.

  • 01:55:00 In diesem Abschnitt des Videos versucht der Moderator, die Ein- und Ausgänge zum Ausführen des Modells einzurichten. Sie stoßen auf einige Probleme mit der Eingabemaske und der Aufmerksamkeitsmaske und stellen schließlich fest, dass sie die Token einfach greifen und einsenden können, ohne eine zusätzliche Verarbeitung durchführen zu müssen. Dann wechseln sie ihren Fokus auf die Modelleingabe, die etwas komplizierter ist, da sie zwei Eingaben erfordert und die Form für den Stapel angeben muss. Der Präsentator verwendet die ONNX Runtime, um die Eingaben und Ausgaben einzurichten, und testet sie, um zu sehen, ob sie die gleichen Ergebnisse wie das C#-Modell liefert.
AI Show Live - Episode 62 - Multiplatform Inference with the ONNX Runtime
AI Show Live - Episode 62 - Multiplatform Inference with the ONNX Runtime
  • 2022.07.29
  • www.youtube.com
Join Cassie Breviu as she takes us on a tour of what the ONNX Runtime can do when it comes to inference AND on multiple platforms to boot.