Nachricht

Das PyTorch-Team stellt seine technische Roadmap vor, mit fast hundert Seiten an Dokumenten, die seine Entwicklungsrichtung in der zweiten Hälfte des Jahres 2024 verraten.

2024-07-15

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina


Neuer Weisheitsbericht

Herausgeber: Qiao Yang

[Einführung in die neue Weisheit]Kürzlich gab das PyTorch-Team zum ersten Mal die Entwicklungs-Roadmap bekannt, die direkt aus internen technischen Dokumenten modifiziert wurde und die nächste Entwicklungsrichtung dieser klassischen Open-Source-Bibliothek enthüllte.

Wenn Sie in Python im Bereich KI entwickeln, muss PyTorch einer Ihrer alten Freunde sein. Im Jahr 2017 veröffentlichte Meta AI diese Open-Source-Bibliothek im Bereich maschinelles Lernen und Deep Learning, die mittlerweile im siebten Jahr erscheint.

Laut der Statistik von Assembly AI aus dem Jahr 2021 können die 30 beliebtesten Modelle auf HuggingFace alle auf PyTorch laufen, und 92 % der Modelle sind Eigentum von PyTorch. Dieser Anteil macht viele Konkurrenten, einschließlich TensorFlow, außer Reichweite.


Erst am 10. Juli veröffentlichte das Ingenieurteam von PyTorch erstmals öffentlich sein Roadmap-Dokument, in dem die Entwicklungsrichtung in der zweiten Hälfte des Jahres 2024 dargelegt wird.

Soumith Chintala, Mitbegründer von Meta und Leiter des PyTorch-Teams, gab die Neuigkeiten offiziell auf Twitter bekannt.

Er sagte, er hoffe, die Forschungsmotivationen und -ziele der Ingenieure öffentlich machen zu können.

„Während die gesamte PyTorch-Entwicklung auf GitHub öffentlich ist, sind die tatsächlichen Planungs- und Roadmap-Dokumente, die von Teams verschiedener PyTorch-Tochtergesellschaften verfasst wurden, nicht öffentlich, daher haben wir beschlossen, Änderungen vorzunehmen, um die Transparenz zu erhöhen.“


Ähnlich äußerte sich auch Gott Brath, technischer Projektleiter des PyTorch-Teams im Forum.


Wir haben darüber nachgedacht, wie wir eine Roadmap der Arbeit des Teams an PyTorch veröffentlichen können. Wir planen alle zwei Jahre, daher sind dies einige öffentliche Versionen unserer H2-OSS-Pläne für 2024 für mehrere Schlüsselbereiche in PyTorch.

Bei diesen Dateien handelt es sich im Wesentlichen um interne Dokumente und Arbeitspläne des PyTorch-Teams. Nach dem Löschen einiger Inhalte wurden sie als Roadmap veröffentlicht, die die folgenden Aspekte von PyTorch umfasst:

- Kernbibliotheken und Kernleistung

- Verteilt

- Torchune, Torchrec, TorchVision

- PyTorch Edge

- Laden von Daten (DataLoading)

- Compilerkern und Bereitstellung

- Entwicklerinfrastruktur

Jedes Dokument enthält mindestens drei Teile, basierend auf OKR-Ideen:

- Hintergrund

- Top 5 Schwerpunktbereiche und Ziele: Ziele, Schlüsselergebnisse, bekannte oder unbekannte Risiken und entsprechende Abhilfemaßnahmen (maximal eine Seite)

- Top 3 bis 5 Aspekte zur Verbesserung des technischen Niveaus: BE-Säulenklassifizierung, Ziele, Indikatoren/Status/spezifische Ziele, bekannte oder unbekannte Risiken und Abhilfemaßnahmen, Auswirkungen/Kosten, Priorität/Konfidenzniveau (maximal eine Seite)

Unter diesen kann die BE-Säule als die „fünf Maximen“ angesehen werden, die Meta an das Entwicklungsteam geschrieben hat. Die spezifischen Inhalte sind:

Besserer Code, bessere Dokumentation, Stärkung der Teams, moderner Code, bessere Architektur

Ich weiß nicht, ob sich irgendwelche Entwickler wegen der „maximal eine Seite“-Regel Sorgen gemacht haben. Schließlich sind Dokumente teurer als lange Dokumente. Die Zusammenfassung vieler Entwicklungsanforderungen auf eine Seite spart nicht nur Zeit, sondern spart auch Zeit testet auch die Fähigkeiten des Autors.

Darüber hinaus sind in dem Dokument auch einige hervorragende Ideen des Meta-Entwicklungsteams zu sehen, beispielsweise die Betonung der Zusammenarbeit verschiedener Modulteams, die Betonung der API-Integration und der gemeinsamen Entwicklung mit externen Partnern sowie die Betonung der Interaktion mit der Open-Source-Community und Entwicklern.

Wenn das Team eine neue Codebasis wie ExecuTorch auf den Markt bringt oder den Einfluss des PyTorch-Compilers erhöhen möchte, geht es normalerweise von zwei Aspekten aus: Zum einen geht es darum, die Leistung zu verbessern und zum anderen direkt auf SOTA abzuzielen tiefgreifende Integration. Beginnen Sie mit mehr sofort einsatzbereiten Anwendungsfällen.

Vielleicht sind dies der Schlüssel zum jahrelangen Erfolg von Meta im Open-Source-Bereich.

Im Folgenden finden Sie einen Teilauszug und eine Zusammenfassung des Inhalts jedes Dokuments.


Ursprüngliche Adresse: https://dev-discuss.pytorch.org/t/meta-pytorch-team-2024-h2-roadmaps/2226

Kernbibliotheken und Kernleistung

Zu den Kernbibliotheken des Dokuments gehören TendorDict, Torchao, NN, TorchRL usw.

In Bezug auf die Leistung hat das PyTorch-Team das Ziel vorgeschlagen, SOTA-Leistung beim Modelltraining und in der Inferenz zu erreichen. Zu den Maßnahmen gehört die Einführung von Architekturoptimierungstechnologie und Hochleistungskernel, um eine Kombination mit dem gesamten PyTorch-Technologie-Stack zu bilden.

Im vergangenen Jahr hat sich GenAI rasant weiterentwickelt, um die Entwicklung im Forschungsbereich zu unterstützen. Viele von ihnen verlassen sich jedoch nicht direkt auf PyTorch, was die Dominanz von PyTorch im Bereich der wissenschaftlichen Forschung gefährden wird.

Um wieder mit dem Tempo Schritt zu halten, wird PyTorch gängige Entwicklungstechnologien wie Quantisierung, Sparsifizierung, MoE und Training mit geringer Präzision unterstützen, einschließlich Bausteinen und APIs (hauptsächlich in Torchao integriert), um Modelle verschiedener Transformer-Architekturen zu unterstützen Leistung verbessern.

Die Torchao-Bibliothek kann Forscher dabei unterstützen, leistungsstarke dtype-, Layout- und Optimierungstechniken innerhalb des PyTorch-Frameworks anzupassen und so den Anwendungsbereich auf verschiedene Szenarien wie Training, Inferenz und Optimierung zu erweitern.

Darüber hinaus umfassen Aktualisierungen der Kernbibliothek Folgendes:

- Die eingeführte automatische Optimierungsbibliothek Torchao hat einen bahnbrechenden Erfolg erzielt. Der nächste Schritt besteht darin, die Codeorganisation zu verbessern und die numerischen Operationen von der Kernbibliothek zu trennen.

– Behebt die Kernmodularität von TendorDict, unterstützt die Serialisierung von Ladungen/Speichern und sorgt dafür, dass es im Eager-Modus doppelt so schnell läuft

- Fortsetzung des Erfolgs des speicherzugeordneten Ladens in der ersten Jahreshälfte, weitere Verbesserung der Leistung und Sicherheit des Ladens/Speicherns von Modellen

- Reduzieren Sie den TorchRL-Overhead um 50 %

- Kernunterstützung für NoGIL hinzugefügt

– Das Problem, dass die von Benutzern gemeldete Variable TORCH_env nicht funktioniert, wurde behoben

Das Dokument erwähnt auch die veraltete Version des nn.transformer-Moduls und besagt, dass eine Reihe von Tutorials und Anwendungsfällen veröffentlicht werden, die zeigen, wie Torch.compile, sdpa, NJT, FlexAttention, custom_op, Torchao und andere Module zum Erstellen von Transformer verwendet werden.

verteilt

Das LLM-Vortraining erstreckt sich normalerweise über Dutzende oder sogar Tausende von GPUs, und da die Parameterskala des Modells allmählich zunimmt, ist es schwierig, Schlussfolgerungen und Feinabstimmungen auf einer einzelnen GPU durchzuführen.

Daher deckt das nächste „verteilte“ Layout von PyTorch umfassend die drei Verknüpfungen Training, Inferenz und Feinabstimmung ab und schlägt vor, ein verteiltes Training in extrem großem Maßstab, eine Feinabstimmung mit hoher Speichereffizienz und eine verteilte Argumentation auf mehreren Hosts zu erreichen .

Zug

Zu den von PyTorch nativ unterstützten parallelen Modi gehören hauptsächlich die folgenden:

- Vollständige Shard-Datenparallelität (FSDP)

-Hybrid-Sharding-Daten parallel (HSDP)

-Tensorparallel (TP)

- Pipeline parallel (PP)

- Sequenzparallel (SP)

-Kontextparallel (CP)

PyTorch hofft, verschiedene parallele Methoden in TorchTitan weiter zu modularisieren, sodass Entwickler nach Bedarf N-dimensionale Parallelität frei kombinieren und erreichen können.


Das Dokument erwähnt ausdrücklich die Notwendigkeit, Unterstützung für zwei neue Architekturen, MoE und Multimodalität, hinzuzufügen, wie z. B. Expertenparallelität und Optimierung von Routing-Algorithmen.

Zusätzlich zum Update von TorchTitan selbst muss das verteilte Team auch noch enger mit dem Compiler-Team zusammenarbeiten, um eine bessere Integration mit dem Torch.compile-Modul zu erreichen und so zusätzliche Leistungsverbesserungen für groß angelegte verteilte Szenarien zu erzielen.

Feinabstimmung und Schlussfolgerung

Feinabstimmung: In Kombination mit Torchtune wird die FSDP2 LoRA/QLoRA-Lösung eingesetzt und die NF4-Quantisierung des Modellzustandswörterbuchs unterstützt

Begründung: PP und DP sind zum Kern verteilter APIs geworden. Als nächstes müssen wir auf die verteilte Argumentation von Torchtitan achten, die PP + asynchrone TP-Methoden für große Modelle unterstützt.

Das Dokument erwähnt auch, dass die Inferenz-API von HuggingFace von PiPPy auf PyTorch migriert wird (vervollständigt von HuggingFace).

Torchtune, TorchRec, TorchVision

Fackeltune

Die Einführung von Torchtune soll Benutzern helfen, LLM bequemer zu optimieren. Dies ist auch die offizielle Lösung zur Feinabstimmung des Llama-Modells.

Die durch Torchtune definierte „Feinabstimmung“ hat eine sehr große Bandbreite, die sich in drei Arten von Szenarien zusammenfassen lässt:

- Modellanpassung an domänenspezifische Datensätze oder nachgelagerte Aufgaben

- Belohnungs- und Präferenzmodellierung, wie RLHF, DPO usw.

- Trainingsprozess einschließlich Destillation und Quantisierung

Die Updates in der zweiten Jahreshälfte werden die Feinabstimmung der Arbeitsabläufe der Agenten unterstützen und sich gleichzeitig auf Verbesserungen bei der Feinabstimmung der Leistung konzentrieren.

Das Team wird mit Kompilierungs-, Kernel-, verteilten und anderen Modulen zusammenarbeiten, um eine effiziente Feinabstimmung zu ermöglichen und repräsentative Leistungsbenchmarks für die Feinabstimmung innerhalb des PyTorch-Ökosystems zu etablieren.

Da es sich bei Torchtune ebenfalls um eine neuere Open-Source-Bibliothek handelt, ist auch die Interaktion mit der Open-Source-Community unerlässlich.

Das Dokument schlägt vor, Blog-Artikel und Tutorials zu veröffentlichen, technische Vorträge usw. abzuhalten, um das Verständnis der Benutzer zu verbessern. Außerdem werden quantitative Indikatoren definiert, um den Beitrag von Torchturn zum LLM-Ökosystem zu messen.

Zusätzlich zur Open-Source-Community wird Torchune mit mindestens einem Partner zusammenarbeiten und sich an dessen Community beteiligen, um die Nutzung von Torchune zu fördern.

FackelVision

Als absolut dominierender Akteur im CV-Bereich ist die Technologie von TorchVision relativ ausgereift, sodass in der Roadmap nur sehr wenige Updates vorgeschlagen werden.

Das Team wird weiterhin in Richtung Vorverarbeitung arbeiten, weitere Formate (wie WebP, HEIC) und Plattformen (wie CUDA) im Bildkodierungs-/Dekodierungsraum unterstützen und die Kodierungs-/Dekodierungsleistung des JPEG-Formats verbessern GPU.

TorchRec

TorchRec zielt darauf ab, Sparsitäts- und Parallelitätsprimitive bereitzustellen, die häufig in großen Empfehlungssystemen verwendet werden. Die erste stabile Version, TorchRec 1.0, wird im Herbst veröffentlicht.

Rand

Derzeit hat die Open-Source-Bibliothek ExecuTorch eine Alpha-Version veröffentlicht, die hauptsächlich auf Torch.compile und Torch.export basiert, um Modellanalyse, Debugging und Inferenz auf mobilen Geräten und Edge-Geräten (wie AR/VR, tragbare Geräte) zu unterstützen.

In der zweiten Jahreshälfte wird das Edge-Team die Beta-Version von xecuTorch veröffentlichen und Lösungen innerhalb des PyTorch-Ökosystems für die Modelle der Llama-Serie von Meta und andere Open-Source-Modelle bereitstellen.

Die Hauptziele decken hauptsächlich zwei Richtungen ab. Die erste besteht darin, grundlegende Funktionen und eine zuverlässige Infrastruktur für die KI auf dem Gerät bereitzustellen, darunter:

- Stellen Sie die API-Stabilität für C++ und Python sicher

- Implementieren Sie eine Reihe von Kernfunktionen: Unterstützung der Modellkomprimierung, Verwaltung des Proxy-Cache-Standorts sowie Daten- und Programmtrennung

Die zweite besteht darin, diese entstehende Codebasis zu schützen, den Einfluss innerhalb der Open-Source-Community zu stärken und gute Kooperationsbeziehungen mit Unternehmen wie Arm, Apple und Qualcomm aufrechtzuerhalten.

Das Ziel des Community-Einflusses wurde sogar quantifiziert und erfordert, dass der Code 3.000 Sterne auf GitHub erhält und 500 Mal geklont (Fork) wird. Interessierte Leser können weiterhin aufmerksam beobachten, ob das Team dieses OKR bis Ende des Jahres abschließen kann.

Daten werden geladen

Die auf dem Apache Arrow-Format basierende HuggingFace-Datensatzbibliothek ist in den letzten Jahren mit ihrem schnellen Laden/Speichern ohne Speicherbeschränkungen plötzlich aufgetaucht und scheint den PyTorch-bezogenen Funktionen das Rampenlicht gestohlen zu haben.

Das Dokument zum Datenladen beginnt mit dem Ziel, die TorchData-Bibliothek wieder großartig zu machen und die Dominanz von PyTorch beim Datenladen wiederherzustellen.

Um dieses Ziel zu erreichen, ist es notwendig, relevante Funktionen flexibel, skalierbar, leistungsstark und speichereffizient zu gestalten, gleichzeitig einen narrenähnlichen Betrieb zu erreichen und multimodales Training verschiedener Maßstäbe zu unterstützen.

Konkrete Update-Ziele umfassen folgende Aspekte:

- Die funktionale Entwicklung und Schnittstelle von DataLoader wird zunächst das Prinzip von GitHub implementieren, und DataPipes und DataLoader v2 werden nach und nach veraltet und gelöscht.

- Sorgen Sie für klare Grenzen und gute Interoperabilität zwischen TorchTune, TorchTitan, HuggingFace und TorchData und unterstützen Sie mehrere Datensätze und das Laden multimodaler Daten

- HuggingFace nutzt die API von StatefulDataLoader, um Kompatibilität sicherzustellen und Beispiele und Testfälle zeitnah zu aktualisieren.

Compilerkern und Bereitstellung

Die Kernfunktionen des PyTorch-Compilers sind nach Jahren der Entwicklung immer perfekter geworden. Was jetzt nachgeholt werden muss, ist eine tiefere Integration und mehr Optimierungsunterstützung in den Bereichen LLM und GenAI.

Die Roadmap schlägt vor, die Funktion Torch.compile() auf alle Aspekte des Nutzungszyklus von LLM und GenAI (Inferenz, Feinabstimmung, Vortraining) zu übertragen, sodass wichtige Modelle bei der Veröffentlichung mit nativem PyTorch kompiliert werden können.

Um dieses Ziel zu erreichen, schlägt das Dokument viele konkrete Maßnahmen vor, beispielsweise die Zusammenarbeit mit Torchtune- und TorchTitan-Teams zur Verbesserung der Kompilierungsleistung und die Veröffentlichung nativer PyTorch-kompilierter Versionen von mindestens zwei hochkarätigen Modellen in der zweiten Jahreshälfte.

Darüber hinaus kann der Compiler Visualisierungsfunktionen hinzufügen, um Modelldiagramme zu generieren, die den Vorwärtsberechnungs-/Rückausbreitungsprozess im nicht eifrigen Trainingsmodus ausdrücken.

Es gibt auch viele Pläne zur Benutzerunterstützung, z. B. zur Verbesserung der Überwachung und Beobachtbarkeit des Systems und zur Unterstützung der Benutzer bei der Fehlerbehebung bei Kompilierungsproblemen. Zu den Hauptzielen gehört auch die Einrichtung eines Benutzer-Support-Teams, das von Entwicklern auf Plattformen wie GitHub in mehreren Schlüsselbereichen (Datenklassen, Kontextverwaltung usw.) aufgeworfene Probleme angeht.

Verweise:

https://dev-discuss.pytorch.org/t/meta-pytorch-team-2024-h2-roadmaps/2226

https://x.com/soumithchintala/status/1811060935211049046

https://www.assemblyai.com/blog/pytorch-vs-tensorflow-in-2023/