Nachricht

Flying Paddle Framework Advanced 3.0!In einem Artikel werden die fünf neuen Funktionen erläutert, darunter „Integriertes Training und Pushing großer Modelle“.

2024-08-01

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

Als Basissoftware fördert das Deep-Learning-Framework nicht nur den schnellen Fortschritt der Deep-Learning-Technologie, sondern legt auch eine solide Grundlage für die weit verbreitete Anwendung der Technologie der künstlichen Intelligenz.

Das Deep-Learning-Framework stellt Entwicklern praktische und benutzerfreundliche Entwicklungsschnittstellen zur Verfügung, die Daten und Vorgänge stark abstrahieren und es Entwicklern ermöglichen, sich mehr auf das Design von Algorithmen und Modellen zu konzentrieren, ohne sich in den Details der zugrunde liegenden Datenverarbeitung zu verlieren. Durch diese Schnittstellen müssen Entwickler die komplexen zugrunde liegenden Hardware-Entwicklungsdetails nicht direkt wahrnehmen und damit umgehen, was die Entwicklungseffizienz und -erfahrung erheblich verbessert. Zweitens bietet das Deep-Learning-Framework auch die leistungsstarke Funktion der automatischen Differenzierung. Entwickler müssen normalerweise nur den Code für das Forward-Propagation-Netzwerk schreiben, während das umständliche Back-Propagation-Netzwerk automatisch vom Framework vervollständigt wird.

Als Chinas erste selbst entwickelte, funktionsreiche Open-Source- und Open-Deep-Learning-Plattform wurde Fei Paddle von Version 1.0, die standardmäßig statische Bilder verwendet, auf Version 2.0 veröffentlicht, die standardmäßig dynamische Bilder verwendet und die Integration realisieren kann von dynamischen und statischen Bildern sowie Training und Push. Es konnte die Flexibilität dynamischer Grafiken und die Effizienz statischer Grafiken perfekt integrieren und unterstützt kürzlich das hybride parallele Training von Modellen Ära der großen Modelle, wurde offiziell veröffentlicht! Flying Paddle hat offiziell eine neue Generation von Rahmentechnologie-Innovationen eröffnet!

Design Thinking

Das Design des Deep-Learning-Frameworks ist von entscheidender Bedeutung für die Förderung der Entwicklung der Technologie der künstlichen Intelligenz. Sein zentrales Designziel besteht darin, die Innovation und Anwendung der Deep-Learning-Technologie zu erleichtern.

Wie macht man das?

Das Framework muss die Bedürfnisse von Entwicklern und Hardwareherstellern vollständig berücksichtigen.

Aus Benutzersicht sollte ein hervorragendes Deep-Learning-Framework Entwicklern das ultimative Entwicklungserlebnis bieten. Dies bedeutet nicht nur die Bereitstellung einer benutzerfreundlichen Entwicklungsumgebung, sondern, was noch wichtiger ist, es muss in der Lage sein, die Lern- und Zeitkosten der Entwickler erheblich zu senken und gleichzeitig den Entwicklungskomfort erheblich zu verbessern. Zu diesem Zweck schlägt das Flying Paddle Framework das Konzept der „Vereinheitlichung von Bewegung und Statik, der Integration von Training und Push sowie der automatischen Parallelität“ vor, das die Entwicklungseffizienz erheblich verbessert.

Aus Sicht der Hardwareanpassung müssen moderne Deep-Learning-Anwendungen häufig auf verschiedenen Hardwareplattformen ausgeführt werden. Daher muss das Framework mit einer Vielzahl unterschiedlicher Hardwaregeräte kompatibel und anpassbar sein. Dies erfordert, dass das Framework die Unterschiede zwischen verschiedenen Hardwareschnittstellen intelligent isoliert und eine umfassende Hardwareanpassungsfähigkeit erreicht. Um die Leistung der Hardware voll auszunutzen, muss das Framework gleichzeitig auch die Fähigkeit haben, Software und Hardware zusammenzuarbeiten, um eine optimale Leistung bei der Nutzung von Hardwareressourcen sicherzustellen.

Gleichzeitig muss ein guter Rahmen auch den Gesamttrend der KI-Technologieentwicklung und die tatsächlichen Anwendungsanforderungen der Branche berücksichtigen.

Im Hinblick auf die technologische Entwicklung haben sich Spitzentechnologien wie Large Language Model (LLM), MOE (Mixture of Experts), Multimodalität und AI for Science nach und nach zu neuen Forschungs-Hotspots entwickelt. Mit zunehmender Komplexität des Modells treten Probleme wie Rechenengpässe, Speicherengpässe, Speicherzugriffsengpässe und Kommunikationsengpässe allmählich in den Vordergrund, und der Bedarf an verteiltem Training und allgemeiner Leistungsoptimierung wird immer dringlicher.

Auf der Industrialisierungsebene muss das Framework über vollständige Prozessfähigkeiten verfügen, die die Integration von Training, Komprimierung und Argumentation unterstützen. Das bedeutet, dass das Framework vom Modelltraining über die Optimierung bis hin zur tatsächlichen Bereitstellung und Inferenz eine vollständige und effiziente Lösung bieten sollte, um den tatsächlichen Bedarf der Branche an Deep-Learning-Technologie zu erfüllen.

Nur ein Framework, das mit Trends Schritt halten und dem Polieren standhalten kann, kann Entwicklern aus allen Bereichen in Industrie, Wissenschaft und Forschung kontinuierliche und stabile Unterstützung bieten.


Designkonzept und Hauptmerkmale des Flying Paddle Frame 3.0

Um die oben genannten Anforderungen zusammenzufassen, wird Feipiao Entwicklern ein Deep-Learning-Framework zur Verfügung stellen, das „dynamisch und statisch vereint, Training und Push, automatische Parallelisierung, automatische Optimierung und umfassende Hardware-Anpassung integriert. Entwickler können verteilten Code schreiben, genau wie beim Schreiben von Standard.“ Allein Code, ohne die Notwendigkeit einer komplexen Kommunikations- und Planungslogik, kann die Entwicklung großer Modelle in Python genauso realisiert werden wie das Schreiben mathematischer Formeln, ohne Hardware-Entwicklungssprachen zum Schreiben komplexer Operator-Kernelcodes zu verwenden. und Sie können einen effizienten Betrieb erreichen.

Es entstand die Flying Paddle Framework Version 3.0, die das Designkonzept der 2.x-Version fortsetzt, Dynamik und Statik zu vereinen und Training und Push zu integrieren. Die Entwicklungsschnittstelle ist vollständig mit der 2.x-Version kompatibel. Dies bedeutet, dass mit Version 2.x entwickelter Code in den meisten Fällen ohne Änderungen direkt auf Version 3.0 ausgeführt werden kann. Der Schwerpunkt liegt auf der Einführung von vier neuen Funktionen: dynamische und statische einheitliche automatische Parallelisierung, automatische Compiler-Optimierung, Training und Push-Integration großer Modelle sowie Multi-Hardware-Anpassung großer Modelle. Diese Funktionen wurden seit Version 2.6 des Flying Propeller Framework oder früher entwickelt und haben nun das Stadium der externen Testnutzung erreicht. Diese neuen Funktionen haben in Bezug auf Benutzererfahrung, Leistung, Komfort der Sekundärentwicklung und Hardware-Anpassbarkeit zu erheblichen Verbesserungen geführt. Fei Paddle hat offiziell Version 3.0 veröffentlicht. Diese Version enthält Verbesserungen einiger bestehender Funktionen der Framework-Version 2.x und ist ausgereift und stabil, ohne neue Funktionen zu verwenden.

Überblick über die Framework-Architektur

Um die oben genannten Eigenschaften des Deep-Learning-Frameworks zu realisieren, muss die Architektur des Frameworks sorgfältig entworfen werden, um sicherzustellen, dass es verschiedene komplexe Modellkonstruktionen unterstützen und eine nahtlose Integration mit verschiedenen Chips erreichen kann. Als nächstes wird ein intuitives Architekturdiagramm verwendet, um die Funktionsmodule, die im Framework der neuen Generation von Flying Paddle abgedeckt werden, sowie die Interaktionen und Verbindungen zwischen diesen Modulen im Detail zu demonstrieren. Das Folgende ist das Architekturdiagramm von Flying Paddle Framework 3.0.


Flying Paddle Framework 3.0-Architekturdiagramm

Umfangreiche Schnittstellen: Das Flying Paddle Framework bietet eine Vielzahl von Entwicklungsschnittstellen im Zusammenhang mit Deep Learning, wie z. B. Tensordarstellung, mathematische Berechnungen, Modellvernetzung, Optimierungsstrategien usw. Über diese Schnittstellen können Entwickler ganz einfach ihre eigenen Deep-Learning-Modelle erstellen und trainieren, ohne auf die zugrunde liegenden technischen Details eingehen zu müssen.

Unter der Entwicklungsschnittstelle kann das Flying Paddle Framework in vier Ebenen unterteilt werden: Präsentationsschicht, Planungsschicht, Bedienerschicht und Anpassungsschicht.

Präsentationsschicht: Konzentriert sich auf den Ausdruck und die Konvertierung von Rechendiagrammen und bietet Kernfunktionen wie dynamisch in statisch (dynamische Diagramme in statische Diagramme), automatische Differenzierung, automatische Parallelität, Operatorkombination und Optimierung von Rechendiagrammen durch hoch skalierbare Zwischendarstellung PIR. Solide Unterstützung.

Planungsschicht: Verantwortlich für die intelligente Orchestrierung und effiziente Planung von Codes oder Berechnungsdiagrammen sowie für die Fähigkeit, Grafikspeicher und Speicher entsprechend dem tatsächlichen Bedarf zu verwalten und zu optimieren und die effiziente Ausführung dynamischer Diagramme und statischer Diagramme zu unterstützen. Unabhängig davon, ob sich Entwickler für die Verwendung dynamischer Grafiken oder statischer Grafiken für die Modellentwicklung entscheiden, kann das Flying Paddle Framework eine effiziente Ausführungsumgebung bereitstellen und gleichzeitig eine optimale Ressourcennutzung gewährleisten.

Operatorschicht: Sie besteht aus dem Compiler für neuronale Netze CINN und der Operatorbibliothek PHI und deckt Schlüsselfunktionen wie Tensordefinition, Operatordefinition, automatische Operatorfusion und Operatorkernimplementierung ab.

Anpassungsschicht: Wird zur Implementierung der Anpassung an den zugrunde liegenden Chip verwendet, einschließlich Funktionen wie Geräteverwaltung, Bedieneranpassung, Kommunikationsanpassung und Kompilierungszugriff.

Im Folgenden geht es um das neue und große Upgrade der Flying Paddle 3.0-Versionsarchitektur. Dieses Upgrade umfasst hauptsächlich die folgenden Module:

1) Hochskalierbare Zwischendarstellung PIR durchbricht durch die Erstellung einer einheitlichen Zwischendarstellung für die gesamte Architektur die Barrieren jedes Moduls in der Framework-Schicht und erweitert das Potenzial von Flying Paddle in den Bereichen wissenschaftliches Rechnen, Kompilierungsoptimierung und große Modelle ;

2) Der Compiler des neuronalen Netzwerks optimiert und verbessert die End-to-End-Leistung des Modells automatisch durch automatische Fusion und Richtlinienoptimierung.

3) Die automatische Parallelisierung reduziert die Kosten für die Modellentwicklung und Leistungsoptimierung großer Modellszenen und verbessert die Benutzererfahrung großer Modellszenen erheblich.

Stark erweiterte Zwischendarstellung PIR

Die Zwischendarstellung (IR) von Rechendiagrammen ist ein wichtiger Eckpfeiler der Leistungsoptimierung von Deep-Learning-Frameworks, der Inferenzbereitstellung und von Compilern. In den letzten Jahren haben immer mehr Frameworks und Forscher Compiler-Technologie in die Optimierung neuronaler Netzwerkmodelle für Deep Learning eingeführt und auf dieser Grundlage Compilerkonzepte, -technologien und -tools verwendet, um neuronale Netzwerke automatisch zu optimieren und zu codieren. Im Zeitalter großer Modelle werden höhere Anforderungen an IR hinsichtlich Flexibilität, Skalierbarkeit und Vollständigkeit gestellt.

Daher standardisiert Feipiao unter Version 3.0 die Definition der Zwischenrepräsentations-IR auf Infrastrukturebene, um eine einheitliche Darstellung der gesamten Architektur und den Austausch von Entwicklungsergebnissen in alle Richtungen vor- und nachgelagert zu erreichen. Die IR-Architektur der neuen Generation von Feipiao konzentriert sich auf die beiden wichtigen Dimensionen hohe Flexibilität und hohe Skalierbarkeit. Sie wird durch vollständigere und robustere semantische Ausdrucksfähigkeiten, eine einheitliche Darstellung der gesamten Architektur und einen effizienten steckbaren Mechanismus zur Leistungsoptimierung (Pass) entwickelt, um eine komplexe Semantik zu erreichen Unterstützung, bequemere Unterstützung umfangreicher Segmentierungsstrategien unter automatischer Parallelisierung großer Modelle und nahtlose Verbindung mit dem Compiler für neuronale Netze, um eine automatische Leistungsoptimierung und Multi-Hardware-Anpassung zu erreichen.



Flying Paddle Intermediate Representation (PIR) abstrahiert eine Reihe hoch skalierbarer Grundkomponenten auf der untersten Ebene, die Typ, Attribut, Op, Merkmal und Schnittstelle abdecken, und führt das Konzept des Dialekts ein, wodurch Entwickler die Möglichkeit haben, flexibel zu erweitern und frei anzupassen Bietet umfassende und robuste semantische Ausdrucksmöglichkeiten. Auf der Modelldarstellungsebene wird durch modulare Verwaltung mehrerer Dialekte und einheitliche Multi-Terminal-Darstellung eine einheitliche Darstellung der gesamten Architektur erreicht, die Training und Inferenz integriert, eine nahtlose Verbindung zwischen Operatoren und Compilern sowie automatische Optimierung und Multi-Hardware-Anpassung erreicht wird sind unterstützt. . Auf der Ebene der Graphtransformation bietet es Benutzern durch die Vereinheitlichung der zugrunde liegenden Module und die Vereinfachung grundlegender Konzepte eine kostengünstige, benutzerfreundliche und leistungsstarke Entwicklungserfahrung sowie einen umfassenden und steckbaren Pass-Optimierungsmechanismus. Flying Paddle PIR folgt dem SSA-Prinzip (Static Single Assignment), um sicherzustellen, dass das Modell einem gerichteten azyklischen Graphen entspricht, und verwendet Wert und Operation, um den Berechnungsgraphen zu abstrahieren, wobei Operation Knoten und Wert Kanten darstellt.

Operation stellt einen Knoten im Berechnungsdiagramm dar: Jede Operation stellt einen Operator dar und enthält null oder mehr Regionen. Region stellt einen Abschluss dar, der null oder mehr Blöcke enthalten kann. Block stellt einen Basisblock dar, der dem SSA-Prinzip (Static Single Assignment) entspricht und null oder mehr Operationen enthält. Durch Schleifenverschachtelung zwischen diesen drei können beliebig komplexe grammatikalische Strukturen konstruiert werden.

Der Wert stellt eine gerichtete Kante im Berechnungsdiagramm dar: Er wird verwendet, um zwei Operationen zu verbinden und beschreibt so die Use-Define-Kette (dh die UD-Kette) im Programm. Unter diesen dient OpResult als Definitionsende und wird zum Definieren eines Werts verwendet, während OpOperand als Verwendungsende dient und die Verwendung eines bestimmten Werts beschreibt.

Feipiao bietet zwei Pass-Entwicklungsmechanismen: PatternRewriter und Declarative Rewrite Rule (kurz DRR), die die Flexibilität der Anpassung und die einfache Entwicklung berücksichtigen. Die dreistufige Pass-Entwicklungsmethode ermöglicht es Entwicklern, sich mehr auf die Verarbeitung der Pass-Logik zu konzentrieren, ohne auf die Details der zugrunde liegenden IR zu achten. Mit dem Pass-Entwicklungsmechanismus von PIR werden die Pass-Entwicklungskosten bei Anwendung auf Inferenzszenarien um 58 % gesenkt; mehr als 84 % der Modellinferenzen werden um mehr als 10 % beschleunigt.

Automatische Optimierung des Compilers für neuronale Netze

Es gibt drei Gründe, warum wir Compiler-Technologie entwickeln müssen:

1) Hardware-Entwicklungstrend: Durch die Kombination der Geschichte der Hardware-Entwicklung und der Merkmale der technologischen Entwicklung entwickelt sich die Rechenleistung viel schneller als die Speicherzugriffsleistung, die CPU-Leistung und die Busspeicherzugriffsleistung wirken sich auf die Leistung speicherzugriffsintensiver Operatoren aus (Normklasse). , Aktivierung usw.), CPU-Leistung und Busbandbreite wirken sich auf die Planung und Leistung aus. Die Compiler-basierte automatische Fusionsoptimierungstechnologie kann mehrere Operatoren zu einem großen Operator zusammenführen. Durch die Reduzierung des Speicherzugriffs und der Anzahl der Operatoren kann die Compiler-Technologie zu einer Standardkomponente von Deep-Learning-Frameworks werden.

2) Modellentwicklungstrend: Die Modellstruktur weist Diversitätsmerkmale auf, und die Nachfrage nach Diversität hängt stark von der allgemeinen Optimierung des Compilers ab.

3) Mehrfache Hardware-Optimierung: Es gibt viele Arten von Hardware auf dem Markt, die unterschiedliche Eigenschaften und Optimierungsanforderungen haben. Mit Hilfe der Compiler-Technologie kann diese Art von Optimierungstechnologie durchgeführt werden Kosten stark reduziert werden.

Lassen Sie uns dies anhand eines Beispiels veranschaulichen. Nehmen wir als Beispiel die RMS-Normalisierung (Root Mean Square Layer Normalization), die häufig im Lama-Modell verwendet wird. Die Berechnungsformel ist relativ einfach und klar.



Angenommen, wir müssen die Berechnung der RMS-Normalisierung implementieren. Der einfachste Weg besteht darin, die vom Flying Paddle-Framework bereitgestellte Tensor-Operations-Entwicklungsschnittstelle zu verwenden und Operationen wie Quadrat, Summe, Division, Wurzel usw. aufzurufen Der Code lautet wie folgt:



Der obige Code ist einfach zu entwickeln, aber seine Leistung ist schlecht und er beansprucht viel Videospeicher; Entwickler können FusedRMSNorm implementieren, aber die Anforderungen an Entwickler sind höher und die Kosten sind höher.

Mit der Compiler-Technologie für neuronale Netze können wir erhebliche Leistungssteigerungen erzielen und gleichzeitig ein hohes Maß an Flexibilität und Benutzerfreundlichkeit beibehalten. Die folgenden Leistungstestergebnisse des RMSNorm-Operators auf der A100-Plattform sind ein klarer Beweis: Im Vergleich zur Implementierung mit einer Kombination aus Python-Entwicklungsschnittstellen läuft der kompilierte und optimierte Operator viermal schneller, selbst wenn er in den manuellen Operator integriert ist Außerdem wurde eine Leistungssteigerung von 14 % erzielt. Dieses Ergebnis zeigt voll und ganz die ideale Balance zwischen Flexibilität und Leistung, die der Fly-Paddle-Rahmen bietet.

Aus diesem Grund betrachtet Feipiao die Compilertechnologie für neuronale Netze als eine wichtige Forschungs- und Entwicklungsrichtung. Das Folgende ist das Gesamtarchitekturdiagramm des Feipiao-Compilers.



Auf der Präsentationsebene wird mithilfe der Erweiterungsmöglichkeiten von PIR das CINN-Front-End-Modul implementiert, um schichtbezogene Transformationen zu verarbeiten, einschließlich Operatoraufteilung, Neuberechnung, Teilgraphenteilung, Dimensionsableitungsmodulen und anderen Modulen, und erhält schließlich mehrere Compiler-Backends . Generieren Sie optimierte Untergraphen. Im Compiler-Backend ruft der Compiler für diese fusionierbaren Untergraphen außerdem die Compute-Funktion auf, um sie in eine Low-Level-Zwischendarstellung (IR) umzuwandeln, die aus einem abstrakten Syntaxbaum (AST) besteht, und führt auf dieser Grundlage eine Fusion durch Um sicherzustellen, dass es in einen Kernel integriert werden kann, wird eine Leistungsoptimierungsanalyse durchgeführt, um die optimale Konfiguration zu erhalten. Anschließend wird die zugrunde liegende IR sorgfältig in eine spezifische Codeimplementierung umgewandelt.

Experimentelle Ergebnisse zum generativen großen Sprachmodell Llama und zum Vincent-Graphmodell Stable Diffusion zeigen, dass durch die Verwendung der Optimierungstechnologie des Compilers im Vergleich zur Basisversion ohne manuelle Leistungsoptimierung die Inferenzgeschwindigkeit um 36 % bzw. 30 % schneller ist.

Dynamische und statische Vereinheitlichung und automatische Parallelisierung

Warum führen wir automatische Parallelität durch?

Die aktuellen gängigen Trainingsmethoden für große Modelle verwenden eine Vielzahl paralleler Strategien. Diese parallelen Strategien basieren auf der „manuellen“ parallelen Methode, die im dynamischen Diagrammmodus implementiert ist, dh auf der Grundlage einer einzelnen Karte und manueller Segmentierungsverarbeitung (). Segmentierung von Tensoren, Berechnungsdiagramme), Kommunikation (Hinzufügen von Kommunikationsoperatoren), Videospeicheroptimierung (Videospeicherfreigabe, Neuberechnung), Planungsoptimierung (Pipeline-Orchestrierung, asynchrone Berechnung und Kommunikation) und andere Strategien müssen nicht nur Entwickler kennen Sie kennen die Modellstruktur, verfügen aber auch über ein tiefgreifendes Verständnis paralleler Strategien und Frameworks. Die Planungslogik macht die Entwicklung und Leistungsoptimierung großer Modelle sehr hoch. Zusätzlich zu einem dedizierten Algorithmenteam, das für die Modellalgorithmusinnovation verantwortlich ist, muss es auch ein dediziertes Team geben, das für die modellparallele Optimierung verantwortlich ist. Dies bringt viele Hindernisse für die Innovation und Iteration großer Modelle mit sich.

Nehmen wir ein einfaches Beispiel, um den Unterschied zwischen der Entwicklung großer Modelle und der Einzelkartenlogik zu veranschaulichen. Da die Parallelstrategie dazu führt, dass sich die Tensor-Laufzeitform ändert, müssen Operatoren im Zusammenhang mit der Formverarbeitung berücksichtigen, ob sie von der Parallelstrategie betroffen sind. Wie in der Umformverarbeitung unten gezeigt, bewirkt die Segmentierungsstrategie, dass die Eingabeform transformiert wird, sodass die Ausgabeform entsprechend der Segmentierungsstrategie angemessen angepasst werden muss:



Zu diesem Zweck schlagen wir ein automatisches Parallelschema vor, das dynamische und statische Bedingungen vereint. Entwickler benötigen nur eine kleine Menge an Anmerkungen zur Tensorsegmentierung, und das Framework kann automatisch den verteilten Segmentierungsstatus aller Tensoren und Operatoren ableiten und geeignete Kommunikationsoperatoren hinzufügen, um sicherzustellen, dass die Ergebnisse schließlich auf der Modellstruktur basieren Clusterinformationen finden in Kombination mit der Optimierung des Grafikspeichers und der Planungsschicht automatisch die effizienteste verteilte Parallelstrategie.

Beim automatischen parallelen Design benötigen Entwickler nur eine kleine Menge an Anmerkungen zur Tensorsegmentierung. Wir abstrahieren die Segmentierungsmethoden und benötigen zwei Arten von Segmentierungsmethoden: segmentierte Tensoren (Parameter, Eingaben) und segmentierte Berechnungsdiagramme (Pipeline). Um diese beiden Arten von Segmentierungsmethoden zu implementieren, benötigt das Framework einen Mechanismus zur Beschreibung der Zuordnungsbeziehung zwischen verteilten Tensoren und Computergeräten. Zu diesem Zweck führen wir die beiden verteilten Konzepte ProcessMesh und Placements ein Der Prozess ordnet mehrere Geräte eindimensionalen oder mehrdimensionalen Arrays zu, die aus mehreren Prozessen bestehen. Die folgende Abbildung zeigt zwei verschiedene abstrakte ProcessMesh-Darstellungen, die aus 8 Geräten bestehen.



Placements ist eine Liste, die aus drei verteilten Tags besteht: Replicate, Shard und Partial. Die Länge stimmt mit der Dimension von ProcessMesh überein. Sie wird verwendet, um anzugeben, welches verteilte Tag zum Aufteilen des verteilten Tensors in die Dimension des entsprechenden Computergeräts verwendet wird . Die detaillierten Beschreibungen der drei verteilten Tags lauten wie folgt:

Wie in der folgenden Abbildung dargestellt, bedeutet „Replizieren“, dass der Tensor in Form einer Replikation auf verschiedenen Geräten vorhanden ist. „Teilweise“ bedeutet, dass der Tensor auf dem Gerät unvollständig ist erfordert „Summe reduzieren“ oder „Reduzieren“. Der vollständige Zustand kann nur nach Mittelwert und anderen Operationen auf unterschiedliche Weise erhalten werden.



Nach Abschluss der verteilten Tag-Abstraktion rufen wir auf
Die Schnittstelle Paddle.distributed.shard_tensor() implementiert die Markierung von Tensor-Sharding. Durch die Markierung und automatische Ableitung von Tensor-Slicing können wir komplexe verteilte Hybridparallelität darstellen. Die folgende Abbildung zeigt ein spezifisches Beispiel für Hybridparallelität, bestehend aus Datenparallelität, Tensormodellparallelität und Pipelineparallelität.



Der folgende Code zeigt ein konkretes Beispiel für gemischte Parallelität.



Durch die Einführung eines automatischen parallelen Entwicklungsansatzes müssen Entwickler keine komplexen Kommunikationslogiken mehr berücksichtigen. Am Beispiel der Lama-Aufgabe wurde die Menge des verteilten Trainingskerncodes um 50 % reduziert, wodurch die Schwierigkeit der Entwicklung erheblich verringert wurde. Aus einigen unserer Experimente geht hervor, dass dies mithilfe globaler Analysen und anderer Optimierungen der Fall ist Die Leistung ist auch besser als die Leistung der manuellen Parallelisierung dynamischer Diagramme.

In Zukunft werden wir die vollautomatische Parallelität ohne Verwendung von Tensor-Split-Markern weiter erforschen, sodass Entwickler verteilten Code genauso schreiben können wie eigenständigen Code und so die Entwicklungserfahrung großer Modelle weiter verbessern.

Industrielle Vorteile

Im Allgemeinen ist das Framework der neuen Generation von Flying Paddle – Flying Paddle Framework 3.0-Beta – speziell für große Modelle und heterogene Multi-Cores konzipiert. Modelltraining und Inferenz. Gleichzeitig verfügt es über vier Hauptfunktionen: dynamische und statische einheitliche automatische Parallelisierung, automatische Compileroptimierung, Training und Push-Integration großer Modelle sowie Multi-Hardware-Anpassung großer Modelle, was die Leistungsfähigkeit der Branche umfassend verbessert.

Einheitliche statische und dynamische automatische Parallelisierung: Diese Funktion reduziert die Kosten für industrielle Entwicklung und Schulung erheblich. Benutzer müssen nur einen kleinen Teil der Tensorsegmentierung auf Einzelkartenbasis markieren, und das Flying Paddle Framework schließt automatisch die Ableitung verteilter Segmentierungsinformationen ab und fügt Kommunikationsoperatoren hinzu, um die Richtigkeit der Logik sicherzustellen. Gleichzeitig kann Flying Paddle basierend auf der Modellstruktur und den Clusterinformationen in Kombination mit der Optimierung des Videospeichers und der Planungsschicht automatisch die effizienteste verteilte Parallelstrategie finden, wodurch die Entwicklungskosten für hybrides Paralleltraining erheblich gesenkt werden Entwickler sollen sich mehr auf Innovationsmodelle und -algorithmen konzentrieren.

Automatische Compiler-Optimierung: Diese Funktion reduziert die Kosten der Leistungsoptimierung erheblich. Der Compiler von Fei Paddle ist für die Integration in das Framework konzipiert und kann effizientes Training und variable Formbegründung verschiedener Modelle wie generativer Modelle und wissenschaftlicher Rechenmodelle unterstützen und so eine gute Balance zwischen Rechenflexibilität und hoher Leistung bieten. Durch die automatische Fusion von Operatoren und Codegenerierungstechnologie wurde die Inferenzleistung generativer Modelle wie Llama2 und Stable Diffusion um mehr als 30 % verbessert.

Integrierte Schulung und Förderung großer Modelle: Diese Funktion bietet der Branche das ultimative Entwicklungserlebnis. Es ermöglicht die Wiederverwendung von Trainings- und Inferenzfunktionen miteinander und bietet so ein einheitliches Entwicklungserlebnis und ultimative Trainingseffizienz für den gesamten Prozess großer Modelle. Durch den Übergang von der Bewegung zur Stille können Trainings- und Denkarbeit nahtlos miteinander verbunden werden. Generative Berechnungen während des RLHF-Trainingsprozesses (Reinforcement Learning with Human Feedback) können zur Inferenzoptimierung wiederverwendet werden, wodurch eine 2,1-fache Beschleunigung erreicht wird. Gleichzeitig wird die Effizienz der verteilten automatischen Parallelstrategie für das Training zur Wiederverwendung von Argumentations- und Quantifizierungsszenarien um das 3,8-fache erhöht.

Multi-Hardware-Anpassung großer Modelle: Eines der wichtigen Merkmale von Flying Paddle ist die Anpassung an heterogene Multi-Cores und die vollständige Ausschöpfung des Hardware-Potenzials. In Bezug auf den Zugriffsmechanismus bietet Flying Paddle eine einfache und effiziente abstrakte Schnittstelle und ein grundlegendes Betreibersystem, wodurch die Anpassungskosten gesenkt werden. In Bezug auf den Betriebsmechanismus optimiert es die Planung, Speicherfreigabe und andere Mechanismen, um die Planungseffizienz zu verbessern. Aus Sicht der Betreiberkerne bietet Feipiao eine Lösung zur automatischen Optimierung der Compiler-Fusion, um die End-to-End-Leistung zu verbessern. Gleichzeitig hat Feipiao auch eine F&E-Infrastruktur wie Codeintegration, kontinuierliche Integration und Modellregressionstests für neue Hardwarehersteller aufgebaut. Diese Mechanismen stellen sicher, dass neue Hardware in das normale Release-System von Feipiao aufgenommen wird und Benutzer sie ohne Kompilierung direkt installieren und ausprobieren können. Der voll funktionsfähige und kostengünstige Zugriffsmechanismus von Flying Paddle hat Hardware-Hersteller dazu bewegt, gemeinsam 3.456 PRs zu Flying Paddle beizutragen, darunter insgesamt mehr als 25.000 Commits.

Dies ist Fei Paddles Framework 3.0 der neuen Generation. Derzeit steht Entwicklern die 3.0-Beta-Version offen und alle Entwicklungsschnittstellen sind vollständig mit 2.0 kompatibel. Entwickler sind herzlich willkommen, diese zu verwenden und Feedback zu geben.