


TensorFlow, PyTorch und JAX: Welches Deep-Learning-Framework ist besser für Sie?
Übersetzer |. Zhu Xianzhong
Rezensent |. Ink
Deep Learning beeinflusst unser Leben jeden Tag auf verschiedene Weise. Ob Siri, Alexa, Echtzeit-Übersetzungs-Apps auf Ihrem Telefon, die auf Sprachbefehlen des Benutzers basieren, oder die Computer-Vision-Technologie, die intelligente Traktoren, Lagerroboter und selbstfahrende Autos antreibt – jeden Monat scheint es neue Fortschritte zu geben. Fast alle dieser Deep-Learning-Anwendungen sind in diesen drei Frameworks geschrieben: TensorFlow, PyTorch oder JAX.
Welche Deep-Learning-Frameworks sollten Sie also verwenden? In diesem Artikel führen wir einen allgemeinen Vergleich von TensorFlow, PyTorch und JAX durch. Unser Ziel ist es, Ihnen eine Vorstellung davon zu geben, welche Arten von Apps ihre Stärken ausspielen, wobei wir natürlich Faktoren wie Community-Unterstützung und Benutzerfreundlichkeit berücksichtigen.
Sollten Sie TensorFlow verwenden?
„Niemand wurde jemals gefeuert, weil er IBM gekauft hat“ war in den 1970er und 1980er Jahren ein Slogan in der Computerwelt. Zu Beginn dieses Jahrhunderts galt das Gleiche auch für Deep Learning mit TensorFlow. Aber wie wir alle wissen, war IBM zu Beginn der 1990er Jahre „in den Hintergrund gedrängt worden“. Ist TensorFlow also heute, sieben Jahre nach seiner ersten Veröffentlichung im Jahr 2015 und im kommenden neuen Jahrzehnt noch wettbewerbsfähig?
Natürlich. TensorFlow stand nicht immer still. Erstens erstellt TensorFlow 1.x statische Diagramme auf nicht-pythonische Weise, aber in TensorFlow 2.x können Sie Modelle auch im Eager-Modus erstellen, um Vorgänge sofort auszuwerten, wodurch es sich eher wie PyTorch anfühlt. Auf der hohen Ebene stellt TensorFlow Keras zur Erleichterung der Entwicklung bereit; auf der unteren Ebene stellt es den XLA-Compiler (Accelerated Linear Algebra, beschleunigte lineare Algebra) zur Verfügung, der die Geschwindigkeit erhöht. XLA spielt eine magische Rolle bei der Verbesserung der GPU-Leistung. Es ist die wichtigste Methode zur Nutzung der Leistung der TPU (Tensor Processing Units) von Google und bietet eine beispiellose Leistung für das Training großer Modelle.
Zweitens hat TensorFlow über die Jahre danach gestrebt, in allem so gut wie möglich zu sein. Möchten Sie beispielsweise Modelle auf einer ausgereiften Plattform klar definiert und wiederholbar bereitstellen? TensorFlow ist einsatzbereit. Möchten Sie die Modellbereitstellung ins Web, auf Computer mit geringem Stromverbrauch wie Smartphones oder auf ressourcenbeschränkte Geräte wie das Internet der Dinge verlagern? Zu diesem Zeitpunkt sind sowohl TensorFlow.js als auch TensorFlow Lite sehr ausgereift.
Angesichts der Tatsache, dass Google TensorFlow immer noch zu 100 % für die Ausführung seiner Produktionsbereitstellungen verwendet, können Sie natürlich sicher sein, dass TensorFlow in der Lage sein wird, die Skalierungsanforderungen der Benutzer zu erfüllen.
Allerdings gibt es in den jüngsten Projekten tatsächlich einige Faktoren, die nicht ignoriert werden können. Kurz gesagt, das Upgrade eines Projekts von TensorFlow 1.x auf TensorFlow 2.x ist tatsächlich sehr grausam. Einige Unternehmen entscheiden sich einfach dafür, den Code auf das PyTorch-Framework zu portieren, da sie den Aufwand berücksichtigen, der erforderlich ist, um den Code so zu aktualisieren, dass er in der neuen Version ordnungsgemäß funktioniert. Darüber hinaus hat TensorFlow auch im Bereich der wissenschaftlichen Forschung an Dynamik verloren, wo vor einigen Jahren begonnen wurde, die von PyTorch bereitgestellte Flexibilität zu bevorzugen, was zu einem kontinuierlichen Rückgang der Verwendung von TensorFlow in Forschungsarbeiten geführt hat.
Außerdem spielte der „Keras-Vorfall“ keine Rolle. Keras wurde vor zwei Jahren ein integrierter Bestandteil der TensorFlow-Distribution, wurde aber kürzlich wieder in eine separate Bibliothek mit einem eigenen Release-Plan zurückgezogen. Natürlich wird der Ausschluss von Keras keine Auswirkungen auf das tägliche Leben der Entwickler haben, aber eine solch dramatische Änderung in einer kleinen aktualisierten Version des Frameworks weckt bei Programmierern kein Vertrauen in die Verwendung des TensorFlow-Frameworks.
Dennoch ist TensorFlow in der Tat ein zuverlässiges Framework. Es verfügt über ein umfangreiches Deep-Learning-Ökosystem und Benutzer können auf TensorFlow Anwendungen und Modelle jeder Größe erstellen. Wenn wir das tun, wird es viele gute Unternehmen geben, mit denen wir zusammenarbeiten können. Doch heute ist TensorFlow möglicherweise nicht die erste Wahl.
Sollten Sie PyTorch verwenden?
PyTorch ist kein „Emporkömmling“ mehr, der TensorFlow folgt, sondern ist heute eine wichtige Kraft im Deep Learning, vielleicht hauptsächlich für die Forschung, aber zunehmend für Produktionsanwendungen. Da der Eager-Modus zum Standardansatz für die Entwicklung in TensorFlow und PyTorch wird, scheint der eher pythonische Ansatz von PyTorchs Autograd den Krieg gegen statische Diagramme zu gewinnen.
Im Gegensatz zu TensorFlow gab es beim Kerncode von PyTorch keine größeren Ausfälle, seit die Variablen-API in Version 0.4 veraltet war. Früher erforderten Variablen automatisch generierte Tensoren, aber jetzt ist alles ein Tensor. Das heißt aber nicht, dass es nicht überall Fehler gibt. Wenn Sie beispielsweise PyTorch zum Trainieren über mehrere GPUs hinweg verwendet haben, sind Ihnen möglicherweise Unterschiede zwischen DataParallel und dem neueren DistributedDataParaller aufgefallen. Sie sollten immer DistributedDataParallel verwenden, aber es spricht eigentlich nichts gegen die Verwendung von DataParaller.
Während PyTorch in Bezug auf XLA/TPU-Unterstützung immer hinter TensorFlow und JAX zurückgeblieben ist, hat sich die Situation ab 2022 stark verbessert. PyTorch unterstützt jetzt den Zugriff auf virtuelle TPU-Maschinen, Unterstützung für ältere TPU-Knoten und Unterstützung für die einfache Befehlszeilenbereitstellung von Code, der auf CPU, GPU oder TPU ausgeführt wird, ohne dass Codeänderungen erforderlich sind. Wenn Sie sich nicht mit einem Teil des Standardcodes befassen möchten, den Sie bei PyTorch häufig schreiben müssen, können Sie auf höherstufige Erweiterungen wie Pytorche Lightning zurückgreifen, mit denen Sie sich auf die eigentliche Arbeit konzentrieren können, anstatt Trainingsschleifen neu zu schreiben. Andererseits wird an PyTorch Mobile zwar weitergearbeitet, es ist jedoch weitaus weniger ausgereift als TensorFlow Lite.
Auf der Produktionsseite kann PyTorch jetzt in Framework-unabhängige Plattformen wie Kubeflow integriert werden, und das TorchServe-Projekt verwaltet Bereitstellungsdetails wie Skalierung, Metriken und Batch-Inferenz – alles verfügbar in einem kleinen Paket, das von PyTorch-Entwicklern selbst verwaltet wird. Vorteile von MLOps. Unterstützt PyTorch andererseits die Skalierung? Kein Problem! Meta führt PyTorch seit Jahren in der Produktion aus; jeder, der Ihnen sagt, dass PyTorch große Arbeitslasten nicht bewältigen kann, lügt. Dennoch gibt es Situationen, in denen PyTorch möglicherweise nicht so benutzerfreundlich ist wie JAX, insbesondere wenn es um sehr intensives Training geht, das eine große Anzahl von GPUs oder TPUs erfordert.
Schließlich gibt es noch ein heikles Thema, das die Leute nicht erwähnen wollen – die Popularität von PyTorch in den letzten Jahren ist fast untrennbar mit dem Erfolg der Transformers-Bibliothek von Hugging Face verbunden. Ja, Transformers unterstützt jetzt auch TensorFlow und JAX, aber es war ursprünglich ein PyTorch-Projekt und ist immer noch eng in das Framework integriert. Mit dem Aufstieg der Transformer-Architektur, der Flexibilität von PyTorch für die Forschung und der Möglichkeit, so viele neue Modelle innerhalb von Tagen oder Stunden nach der Veröffentlichung über das Model Center von Hugging Face einzuführen, ist es leicht zu erkennen, warum PyTorch in diesen Bereichen so beliebt ist.
Sollten Sie JAX verwenden?
Wenn Sie nicht an TensorFlow interessiert sind, bietet Google möglicherweise andere Dienste für Sie an. JAX ist ein Deep-Learning-Framework, das von Google entwickelt, gepflegt und verwendet wird, aber kein offizielles Google-Produkt ist. Wenn Sie jedoch die Veröffentlichungen und Produktveröffentlichungen von Google/DeepMind im letzten Jahr oder so aufmerksam verfolgen, werden Sie feststellen, dass ein Großteil der Google-Forschung auf JAX verlagert wurde. Obwohl JAX also kein „offizielles“ Google-Produkt ist, wird es von Google-Forschern genutzt, um neue Maßstäbe zu setzen.
Was genau ist JAX? Eine einfache Möglichkeit, über JAX nachzudenken, ist: Stellen Sie sich eine GPU/TPU-beschleunigte Version von NumPy vor, die Python-Funktionen mit „einem Zauberstab“ auf magische Weise vektorisieren und die Berechnung von Ableitungen all dieser Funktionen übernehmen kann. Schließlich bietet es eine Just-in-Time-Komponente (JIT: Just-In-Time) zum Abrufen von Code und deren Optimierung für den XLA-Compiler (Accelerated Linear Algebra), wodurch die Leistung von TensorFlow und PyTorch erheblich verbessert wird. Einige Codes werden derzeit vier- bis fünfmal schneller ausgeführt, indem sie einfach in JAX ohne echte Optimierungsarbeit erneut implementiert werden.
Wenn man bedenkt, dass JAX auf der NumPy-Ebene arbeitet, wird JAX-Code auf einer viel niedrigeren Ebene geschrieben als TensorFlow/Keras (oder sogar PyTorch). Glücklicherweise gibt es rund um JAX ein kleines, aber wachsendes Ökosystem mit einigen Erweiterungen. Möchten Sie die Bibliothek für neuronale Netze nutzen? Sicher. Darunter sind Flax von Google und Haiku von DeepMind (ebenfalls Google). Darüber hinaus steht Optax für alle Ihre Optimierungsanforderungen zur Verfügung, PIX steht für die Bildverarbeitung zur Verfügung und vieles mehr. Sobald Sie etwas wie Flax verwenden, wird der Aufbau neuronaler Netze relativ einfach zu meistern. Beachten Sie, dass es immer noch einige beunruhigende Probleme gibt. Erfahrene Leute sprechen beispielsweise oft darüber, dass JAX Zufallszahlen anders verarbeitet als viele andere Frameworks.
Sollten Sie also alles auf JAX umstellen und die Vorteile dieser Spitzentechnologie nutzen? Diese Frage ist von Person zu Person unterschiedlich. Dieser Ansatz wird empfohlen, wenn Sie sich mit großen Modellen befassen, deren Training viele Ressourcen erfordert. Wenn Sie außerdem an JAX für deterministisches Training und andere Projekte interessiert sind, die Tausende von TPU-Pods erfordern, ist es einen Versuch wert.
Zusammenfassung
Also, was ist das Fazit? Welches Deep-Learning-Framework sollten Sie verwenden? Leider gibt es keine einheitliche Antwort auf diese Frage. Alles hängt von der Art des Problems ab, an dem Sie arbeiten, von der Größenordnung, in der Sie das Modell einsetzen möchten, und sogar von der Computerplattform, mit der Sie es zu tun haben.
Wenn Sie jedoch im Bereich Text und Bilder arbeiten und kleine bis mittlere Forschung betreiben, um diese Modelle in der Produktion einzusetzen, dann ist PyTorch derzeit wahrscheinlich die beste Wahl. Der aktuellen Version nach zu urteilen, trifft es genau das Richtige für diese Art von Anwendungsbereich.
Wenn Sie die volle Leistung eines Geräts mit geringer Rechenleistung benötigen, wird die Verwendung von TensorFlow und dem äußerst robusten TensorFlow Lite-Paket empfohlen. Wenn Sie schließlich Trainingsmodelle mit Dutzenden, Hunderten von Milliarden oder mehr Parametern betrachten und diese hauptsächlich zu Forschungszwecken trainieren, ist es möglicherweise an der Zeit, JAX auszuprobieren.
Originallink: https://www.infoworld.com/article/3670114/tensorflow-pytorch-and-jax-choosing-a-deep-learning-framework.html
Einführung in den Übersetzer
Zhu Xianzhong, 51CTO-Community-Redakteur, 51CTO-Expertenblogger, Dozent, Computerlehrer an einer Universität in Weifang und ein Veteran in der freiberuflichen Programmierbranche.
Das obige ist der detaillierte Inhalt vonTensorFlow, PyTorch und JAX: Welches Deep-Learning-Framework ist besser für Sie?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Herausgeber | Rettichhaut Seit der Veröffentlichung des leistungsstarken AlphaFold2 im Jahr 2021 verwenden Wissenschaftler Modelle zur Proteinstrukturvorhersage, um verschiedene Proteinstrukturen innerhalb von Zellen zu kartieren, Medikamente zu entdecken und eine „kosmische Karte“ jeder bekannten Proteininteraktion zu zeichnen. Gerade hat Google DeepMind das AlphaFold3-Modell veröffentlicht, das gemeinsame Strukturvorhersagen für Komplexe wie Proteine, Nukleinsäuren, kleine Moleküle, Ionen und modifizierte Reste durchführen kann. Die Genauigkeit von AlphaFold3 wurde im Vergleich zu vielen dedizierten Tools in der Vergangenheit (Protein-Ligand-Interaktion, Protein-Nukleinsäure-Interaktion, Antikörper-Antigen-Vorhersage) deutlich verbessert. Dies zeigt, dass dies innerhalb eines einzigen einheitlichen Deep-Learning-Frameworks möglich ist

Die Bewertung des Kosten-/Leistungsverhältnisses des kommerziellen Supports für ein Java-Framework umfasst die folgenden Schritte: Bestimmen Sie das erforderliche Maß an Sicherheit und Service-Level-Agreement-Garantien (SLA). Die Erfahrung und das Fachwissen des Forschungsunterstützungsteams. Erwägen Sie zusätzliche Services wie Upgrades, Fehlerbehebung und Leistungsoptimierung. Wägen Sie die Kosten für die Geschäftsunterstützung gegen Risikominderung und Effizienzsteigerung ab.

Das leichte PHP-Framework verbessert die Anwendungsleistung durch geringe Größe und geringen Ressourcenverbrauch. Zu seinen Merkmalen gehören: geringe Größe, schneller Start, geringer Speicherverbrauch, verbesserte Reaktionsgeschwindigkeit und Durchsatz sowie reduzierter Ressourcenverbrauch. Praktischer Fall: SlimFramework erstellt eine REST-API, nur 500 KB, hohe Reaktionsfähigkeit und hoher Durchsatz

Wählen Sie das beste Go-Framework basierend auf Anwendungsszenarien aus: Berücksichtigen Sie Anwendungstyp, Sprachfunktionen, Leistungsanforderungen und Ökosystem. Gängige Go-Frameworks: Gin (Webanwendung), Echo (Webdienst), Fiber (hoher Durchsatz), gorm (ORM), fasthttp (Geschwindigkeit). Praktischer Fall: Erstellen einer REST-API (Fiber) und Interaktion mit der Datenbank (gorm). Wählen Sie ein Framework: Wählen Sie fasthttp für die Schlüsselleistung, Gin/Echo für flexible Webanwendungen und gorm für die Datenbankinteraktion.

Die Lernkurve eines PHP-Frameworks hängt von Sprachkenntnissen, Framework-Komplexität, Dokumentationsqualität und Community-Unterstützung ab. Die Lernkurve von PHP-Frameworks ist im Vergleich zu Python-Frameworks höher und im Vergleich zu Ruby-Frameworks niedriger. Im Vergleich zu Java-Frameworks haben PHP-Frameworks eine moderate Lernkurve, aber eine kürzere Einstiegszeit.

Herausgeber | KX Wenn wir vollständig verstehen würden, wie Moleküle miteinander interagieren, gäbe es wenig über Biologie zu lernen, da jedes biologische Phänomen, einschließlich unserer Wahrnehmung der Welt, letztendlich auf dem Verhalten von Biomolekülen innerhalb von Zellen und deren Interaktion beruht. Das kürzlich eingeführte AlphaFold3 kann die 3D-Struktur biomolekularer Komplexe direkt aus den Sequenzen von Proteinen, Nukleinsäuren und ihren Liganden vorhersagen. Dies stellt einen bedeutenden Fortschritt in unserer langfristigen Erforschung der Interaktion von Biomolekülen dar. AlphaFold3 stellt einen Durchbruch bei der Vorhersage der dreidimensionalen Struktur eines Komplexes direkt aus seiner Sequenz dar und liefert Einblicke in biomolekulare Wechselwirkungen. 1. Der Code eines Biomoleküls Eine eindimensionale (1D) Sequenz eines Biomoleküls (z. B. eines Proteins oder einer Nukleinsäure), die eine zelluläre Funktion angibt, so etwas wie

Bei der Go-Framework-Entwicklung treten häufige Herausforderungen und deren Lösungen auf: Fehlerbehandlung: Verwenden Sie das Fehlerpaket für die Verwaltung und Middleware zur zentralen Fehlerbehandlung. Authentifizierung und Autorisierung: Integrieren Sie Bibliotheken von Drittanbietern und erstellen Sie benutzerdefinierte Middleware zur Überprüfung von Anmeldeinformationen. Parallelitätsverarbeitung: Verwenden Sie Goroutinen, Mutexe und Kanäle, um den Ressourcenzugriff zu steuern. Unit-Tests: Verwenden Sie Gotest-Pakete, Mocks und Stubs zur Isolierung sowie Code-Coverage-Tools, um die Angemessenheit sicherzustellen. Bereitstellung und Überwachung: Verwenden Sie Docker-Container, um Bereitstellungen zu verpacken, Datensicherungen einzurichten und Leistung und Fehler mit Protokollierungs- und Überwachungstools zu verfolgen.

Zu den wichtigsten Leistungsindikatoren (KPIs) bei der Auswahl eines Go-Frameworks gehören: Antwortzeit, Durchsatz, Parallelität und Ressourcennutzung. Durch Benchmarking und Vergleich der KPIs der Frameworks können Entwickler fundierte Entscheidungen auf der Grundlage der Anwendungsanforderungen treffen und dabei die erwartete Auslastung, leistungskritische Abschnitte und Ressourcenbeschränkungen berücksichtigen.
