Inhaltsverzeichnis
Einführung in die OpenDiT-Methode
Installation und Verwendung
DiT 复现结果
Heim Technologie-Peripheriegeräte KI Möchten Sie ein Sora-ähnliches Modell trainieren? Ihr Yang-Team OpenDiT erreicht eine Beschleunigung von 80 %

Möchten Sie ein Sora-ähnliches Modell trainieren? Ihr Yang-Team OpenDiT erreicht eine Beschleunigung von 80 %

Feb 29, 2024 pm 04:34 PM
ai 模型

Soras erstaunliche Leistung Anfang 2024 ist zu einem neuen Maßstab geworden und inspiriert alle, die Wensheng-Videos studieren, dazu, schnell aufzuholen. Jeder Forscher ist bestrebt, Soras Ergebnisse zu reproduzieren und arbeitet gegen die Zeit.

Laut dem von OpenAI veröffentlichten technischen Bericht besteht ein wichtiger Innovationspunkt von Sora darin, visuelle Daten in eine einheitliche Darstellung von Patches umzuwandeln und durch die Kombination von Transformer und Diffusionsmodell eine hervorragende Skalierbarkeit zu demonstrieren. Mit der Veröffentlichung des Berichts hat das von William Peebles, Soras Kernentwickler, und Xie Saining, Assistenzprofessor für Informatik an der New York University, gemeinsam verfasste Papier „Scalable Diffusion Models with Transformers“ große Aufmerksamkeit bei Forschern auf sich gezogen. Die Forschungsgemeinschaft hofft, durch die im Papier vorgeschlagene DiT-Architektur mögliche Wege zur Reproduktion von Sora zu erkunden.

Kürzlich hat ein Open-Source-Projekt namens OpenDiT des You Yang-Teams der National University of Singapore neue Ideen für das Training und den Einsatz von DiT-Modellen eröffnet.

OpenDiT ist ein System zur Verbesserung der Trainings- und Inferenzeffizienz von DiT-Anwendungen. Es ist nicht nur einfach zu bedienen, sondern auch schnell und speichereffizient. Das System umfasst Funktionen wie die Text-zu-Video-Generierung und die Text-zu-Bild-Generierung und zielt darauf ab, Benutzern ein effizientes und komfortables Erlebnis zu bieten.

Möchten Sie ein Sora-ähnliches Modell trainieren? Ihr Yang-Team OpenDiT erreicht eine Beschleunigung von 80 %

Projektadresse: https://github.com/NUS-HPC-AI-Lab/OpenDiT

Möchten Sie ein Sora-ähnliches Modell trainieren? Ihr Yang-Team OpenDiT erreicht eine Beschleunigung von 80 %

Einführung in die OpenDiT-Methode

OpenDiT bietet Diffusion unterstützt durch Colossal-AI A Hochleistungsimplementierung von Transformer (DiT). Während des Trainings werden Video- und Zustandsinformationen in den entsprechenden Encoder bzw. als Eingabe in das DiT-Modell eingegeben. Anschließend werden Training und Parameteraktualisierung über die Diffusionsmethode durchgeführt und schließlich werden die aktualisierten Parameter mit dem EMA-Modell (Exponential Moving Average) synchronisiert. In der Inferenzphase wird das EMA-Modell direkt verwendet und Bedingungsinformationen als Eingabe verwendet, um entsprechende Ergebnisse zu generieren.

Möchten Sie ein Sora-ähnliches Modell trainieren? Ihr Yang-Team OpenDiT erreicht eine Beschleunigung von 80 %

Bildquelle: https://www.zhihu.com/people/berkeley-you-yang

OpenDiT verwendet die ZeRO-Parallelstrategie, um die DiT-Modellparameter auf mehrere Maschinen zu verteilen. Vorläufig Reduzierter Speicher Druck. Um ein besseres Gleichgewicht zwischen Leistung und Genauigkeit zu erreichen, wendet OpenDiT außerdem eine Trainingsstrategie mit gemischter Präzision an. Insbesondere werden Modellparameter und Optimierer mit float32 gespeichert, um genaue Aktualisierungen sicherzustellen. Während des Modellberechnungsprozesses entwickelte das Forschungsteam eine gemischte Präzisionsmethode aus float16 und float32 für das DiT-Modell, um den Berechnungsprozess zu beschleunigen und gleichzeitig die Modellgenauigkeit beizubehalten.

Die im DiT-Modell verwendete EMA-Methode ist eine Strategie zur Glättung von Modellparameteraktualisierungen, die die Stabilität und Generalisierungsfähigkeit des Modells effektiv verbessern kann. Allerdings wird eine zusätzliche Kopie der Parameter erstellt, was die Belastung des Videospeichers erhöht. Um diesen Teil des Videospeichers weiter zu reduzieren, fragmentierte das Forschungsteam das EMA-Modell und speicherte es auf verschiedenen GPUs. Während des Trainingsprozesses muss jede GPU nur ihren eigenen Teil der EMA-Modellparameter berechnen und speichern und nach jedem Schritt warten, bis ZeRO die Aktualisierung für synchrone Aktualisierungen abgeschlossen hat.

FastSeq

Im Bereich visueller generativer Modelle wie DiT ist Sequenzparallelität für effizientes Training langer Sequenzen und Inferenz mit geringer Latenz von wesentlicher Bedeutung.

Bestehende Methoden wie DeepSpeed-Ulysses, Megatron-LM-Sequenzparallelität usw. stoßen jedoch bei der Anwendung auf solche Aufgaben an Grenzen – entweder führt sie zu viel Sequenzkommunikation ein oder fehlt sie, wenn es um die Effizienz der Sequenzparallelität im kleinen Maßstab geht.

Zu diesem Zweck schlug das Forschungsteam FastSeq vor, eine neue Sequenzparallelität, die für große Sequenzen und Parallelität im kleinen Maßstab geeignet ist. FastSeq minimiert die Sequenzkommunikation durch den Einsatz von nur zwei Kommunikationsoperatoren pro Transformatorschicht, nutzt AllGather zur Verbesserung der Kommunikationseffizienz und setzt strategisch asynchrone Ringe ein, um die AllGather-Kommunikation mit qkv-Berechnungen zu überlappen und so die Leistung weiter zu optimieren.

Möchten Sie ein Sora-ähnliches Modell trainieren? Ihr Yang-Team OpenDiT erreicht eine Beschleunigung von 80 %

Möchten Sie ein Sora-ähnliches Modell trainieren? Ihr Yang-Team OpenDiT erreicht eine Beschleunigung von 80 %

Betreiberoptimierung

Das adaLN-Modul wird in das DiT-Modell eingeführt, um bedingte Informationen in visuelle Inhalte zu integrieren. Obwohl dieser Vorgang für die Verbesserung der Leistung des Modells von entscheidender Bedeutung ist, bringt er auch eine große Anzahl elementweiser Vorgänge mit sich und wird häufig aufgerufen das Modell, was die Gesamtrecheneffizienz verringert. Um dieses Problem zu lösen, schlug das Forschungsteam einen effizienten Fused adaLN-Kernel vor, der mehrere Vorgänge zu einem zusammenführt, wodurch die Recheneffizienz erhöht und der I/O-Verbrauch visueller Informationen reduziert wird.

Möchten Sie ein Sora-ähnliches Modell trainieren? Ihr Yang-Team OpenDiT erreicht eine Beschleunigung von 80 %

Bildquelle: https://www.zhihu.com/people/berkeley-you-yang

Einfach ausgedrückt hat OpenDiT die folgenden Leistungsvorteile:

1 GPU Bis zu 80 % Beschleunigung, 50 % Speichereinsparung

  • Entwickelte effiziente Operatoren, einschließlich Fused AdaLN für DiT sowie FlashAttention, Fused Layernorm und HybridAdam.
  • Verwendung eines hybriden parallelen Ansatzes einschließlich ZeRO, Gemini und DDP. Durch das Sharding des ema-Modells werden außerdem die Speicherkosten weiter reduziert.

2. FastSeq: Ein neuartiger sequenzparalleler Ansatz

  • ist für DiT-ähnliche Arbeitslasten konzipiert, bei denen Sequenzen normalerweise länger sind, aber die Parameter kleiner sind als bei LLM Small.
  • Knoteninterne Sequenzparallelität kann bis zu 48 % des Kommunikationsvolumens einsparen.
  • Überwinden Sie die Speicherbeschränkungen einer einzelnen GPU und reduzieren Sie die gesamte Trainings- und Inferenzzeit.

3. Einfach zu bedienen

  • Mit nur wenigen Codezeilen können Sie enorme Leistungsverbesserungen erzielen.
  • Benutzer müssen nicht verstehen, wie verteiltes Training umgesetzt wird.

4. Komplette Pipeline zur Text-zu-Bild- und Text-zu-Video-Generierung

  • Forscher und Ingenieure können die OpenDiT-Pipeline einfach nutzen und auf praktische Anwendungen anwenden, ohne den parallelen Teil zu ändern.
  • Das Forschungsteam überprüfte die Genauigkeit von OpenDiT, indem es ein Text-zu-Bild-Training auf ImageNet durchführte und einen Prüfpunkt freigab.

Installation und Verwendung

Um OpenDiT nutzen zu können, müssen Sie zunächst die Voraussetzungen installieren:

  • Python >= 3.10
  • PyTorch >= 1.13 beendet, um >2 zu verwenden. 0-Version)
  • CUDA >= 11.6

Es wird empfohlen, eine neue Umgebung mit Anaconda (Python >= 3.10) zu erstellen, um die Beispiele auszuführen:

conda create -n opendit pythnotallow=3.10 -yconda activate opendit
Nach dem Login kopieren

Installieren Sie ColossalAI:

git clone https://github.com/hpcaitech/ColossalAI.gitcd ColossalAIgit checkout adae123df3badfb15d044bd416f0cf29f250bc86pip install -e .
Nach dem Login kopieren

Installieren Sie OpenDiT:

git clone https://github.com/oahzxl/OpenDiTcd OpenDiTpip install -e .
Nach dem Login kopieren

(optional, aber empfohlen) Installieren Sie Bibliotheken, um Training und Inferenz zu beschleunigen:

# Install Triton for fused adaln kernelpip install triton# Install FlashAttentionpip install flash-attn# Install apex for fused layernorm kernelgit clone https://github.com/NVIDIA/apex.gitcd apexgit checkout 741bdf50825a97664db08574981962d66436d16apip install -v --disable-pip-version-check --no-cache-dir --no-build-isolation --config-settings "--build-optinotallow=--cpp_ext" --config-settings "--build-optinotallow=--cuda_ext" ./--global-optinotallow="--cuda_ext" --global-optinotallow="--cpp_ext"
Nach dem Login kopieren

Bilderzeugung

Du kannst trainieren das DiT-Modell durch Ausführen des folgenden Befehls:

# Use scriptbash train_img.sh# Use command linetorchrun --standalone --nproc_per_node=2 train.py \--model DiT-XL/2 \--batch_size 2
Nach dem Login kopieren

Alle Beschleunigungsmethoden sind standardmäßig deaktiviert. Hier sind Details zu einigen der Schlüsselelemente im Trainingsprozess:

  • Plugin: Unterstützt Booster-Plugins, die von ColossalAI, Zero2 und DDP verwendet werden. Der Standardwert ist Null2. Es wird empfohlen, Null2 zu aktivieren.
  • mixed_precision: Der Datentyp des gemischten Präzisionstrainings, der Standardwert ist fp16.
  • grad_checkpoint: Ob der Gradienten-Checkpoint aktiviert werden soll. Dies spart Speicherkosten für den Trainingsprozess. Der Standardwert ist False. Es wird empfohlen, es zu deaktivieren, wenn genügend Speicher vorhanden ist.
  • enable_modulate_kernel: Gibt an, ob die modulierte Kerneloptimierung aktiviert werden soll, um den Trainingsprozess zu beschleunigen. Der Standardwert ist False und es wird empfohlen, ihn auf GPUs
  • enable_layernorm_kernel: Gibt an, ob die Layernorm-Kerneloptimierung aktiviert werden soll, um den Trainingsprozess zu beschleunigen. Der Standardwert ist False und es wird empfohlen, ihn zu aktivieren.
  • enable_flashattn: Ob FlashAttention aktiviert werden soll, um den Trainingsprozess zu beschleunigen. Der Standardwert ist False und es wird empfohlen, ihn zu aktivieren.
  • sequence_parallel_size: Größe der Sequenzparallelität. Die Sequenzparallelität wird aktiviert, wenn ein Wert > 1 eingestellt wird. Der Standardwert ist 1. Es wird empfohlen, ihn zu deaktivieren, wenn genügend Speicher vorhanden ist.

Wenn Sie das DiT-Modell zur Inferenz verwenden möchten, können Sie den folgenden Code ausführen. Sie müssen den Prüfpunktpfad durch Ihr eigenes trainiertes Modell ersetzen.

# Use scriptbash sample_img.sh# Use command linepython sample.py --model DiT-XL/2 --image_size 256 --ckpt ./model.pt
Nach dem Login kopieren

视频生成

你可以通过执行以下命令来训练视频 DiT 模型:

# train with sciptbash train_video.sh# train with command linetorchrun --standalone --nproc_per_node=2 train.py \--model vDiT-XL/222 \--use_video \--data_path ./videos/demo.csv \--batch_size 1 \--num_frames 16 \--image_size 256 \--frame_interval 3# preprocess# our code read video from csv as the demo shows# we provide a code to transfer ucf101 to csv formatpython preprocess.py
Nach dem Login kopieren

使用 DiT 模型执行视频推理的代码如下所示:

# Use scriptbash sample_video.sh# Use command linepython sample.py \--model vDiT-XL/222 \--use_video \--ckpt ckpt_path \--num_frames 16 \--image_size 256 \--frame_interval 3
Nach dem Login kopieren

DiT 复现结果

为了验证 OpenDiT 的准确性,研究团队使用 OpenDiT 的 origin 方法对 DiT 进行了训练,在 ImageNet 上从头开始训练模型,在 8xA100 上执行 80k step。以下是经过训练的 DiT 生成的一些结果:

Möchten Sie ein Sora-ähnliches Modell trainieren? Ihr Yang-Team OpenDiT erreicht eine Beschleunigung von 80 %

损失也与 DiT 论文中列出的结果一致:

Möchten Sie ein Sora-ähnliches Modell trainieren? Ihr Yang-Team OpenDiT erreicht eine Beschleunigung von 80 %

要复现上述结果,需要更改 train_img.py 中的数据集并执行以下命令:

torchrun --standalone --nproc_per_node=8 train.py \--model DiT-XL/2 \--batch_size 180 \--enable_layernorm_kernel \--enable_flashattn \--mixed_precision fp16
Nach dem Login kopieren

感兴趣的读者可以查看项目主页,了解更多研究内容。

Das obige ist der detaillierte Inhalt vonMöchten Sie ein Sora-ähnliches Modell trainieren? Ihr Yang-Team OpenDiT erreicht eine Beschleunigung von 80 %. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Welche Methode wird verwendet, um Strings in Objekte in Vue.js umzuwandeln? Welche Methode wird verwendet, um Strings in Objekte in Vue.js umzuwandeln? Apr 07, 2025 pm 09:39 PM

Bei der Konvertierung von Zeichenfolgen in Objekte in Vue.js wird JSON.Parse () für Standard -JSON -Zeichenfolgen bevorzugt. Bei nicht standardmäßigen JSON-Zeichenfolgen kann die Zeichenfolge durch Verwendung regelmäßiger Ausdrücke verarbeitet und Methoden gemäß dem Format oder dekodierten URL-kodiert reduziert werden. Wählen Sie die entsprechende Methode gemäß dem String -Format aus und achten Sie auf Sicherheits- und Codierungsprobleme, um Fehler zu vermeiden.

Vue- und Element-UI-Kaskaden-Dropdown-Box V-Model-Bindung Vue- und Element-UI-Kaskaden-Dropdown-Box V-Model-Bindung Apr 07, 2025 pm 08:06 PM

Vue- und Element-UI-kaskadierte Dropdown-Boxen V-Model-Bindung gemeinsame Grubenpunkte: V-Model bindet ein Array, das die ausgewählten Werte auf jeder Ebene des kaskadierten Auswahlfelds darstellt, nicht auf einer Zeichenfolge; Der Anfangswert von ausgewählten Optionen muss ein leeres Array sein, nicht null oder undefiniert. Die dynamische Belastung von Daten erfordert die Verwendung asynchroner Programmierkenntnisse, um Datenaktualisierungen asynchron zu verarbeiten. Für riesige Datensätze sollten Leistungsoptimierungstechniken wie virtuelles Scrollen und fauler Laden in Betracht gezogen werden.

Laravels Geospatial: Optimierung interaktiver Karten und großen Datenmengen Laravels Geospatial: Optimierung interaktiver Karten und großen Datenmengen Apr 08, 2025 pm 12:24 PM

Verarbeiten Sie 7 Millionen Aufzeichnungen effizient und erstellen Sie interaktive Karten mit Geospatial -Technologie. In diesem Artikel wird untersucht, wie über 7 Millionen Datensätze mithilfe von Laravel und MySQL effizient verarbeitet und in interaktive Kartenvisualisierungen umgewandelt werden können. Erstes Herausforderungsprojektanforderungen: Mit 7 Millionen Datensätzen in der MySQL -Datenbank wertvolle Erkenntnisse extrahieren. Viele Menschen erwägen zunächst Programmiersprachen, aber ignorieren die Datenbank selbst: Kann sie den Anforderungen erfüllen? Ist Datenmigration oder strukturelle Anpassung erforderlich? Kann MySQL einer so großen Datenbelastung standhalten? Voranalyse: Schlüsselfilter und Eigenschaften müssen identifiziert werden. Nach der Analyse wurde festgestellt, dass nur wenige Attribute mit der Lösung zusammenhängen. Wir haben die Machbarkeit des Filters überprüft und einige Einschränkungen festgelegt, um die Suche zu optimieren. Kartensuche basierend auf der Stadt

VUE.JS Wie kann man ein Array von String -Typ in ein Array von Objekten umwandeln? VUE.JS Wie kann man ein Array von String -Typ in ein Array von Objekten umwandeln? Apr 07, 2025 pm 09:36 PM

Zusammenfassung: Es gibt die folgenden Methoden zum Umwandeln von VUE.JS -String -Arrays in Objektarrays: Grundlegende Methode: Verwenden Sie die Kartenfunktion, um regelmäßige formatierte Daten zu entsprechen. Erweitertes Gameplay: Die Verwendung regulärer Ausdrücke kann komplexe Formate ausführen, müssen jedoch sorgfältig geschrieben und berücksichtigt werden. Leistungsoptimierung: In Betracht ziehen die große Datenmenge, asynchrone Operationen oder effiziente Datenverarbeitungsbibliotheken können verwendet werden. Best Practice: Clear Code -Stil, verwenden Sie sinnvolle variable Namen und Kommentare, um den Code präzise zu halten.

So stellen Sie die Zeitüberschreitung von Vue Axios fest So stellen Sie die Zeitüberschreitung von Vue Axios fest Apr 07, 2025 pm 10:03 PM

Um die Zeitüberschreitung für Vue Axios festzulegen, können wir eine Axios -Instanz erstellen und die Zeitleitungsoption angeben: in globalen Einstellungen: vue.Prototyp. $ Axios = axios.create ({Timeout: 5000}); In einer einzigen Anfrage: this. $ axios.get ('/api/user', {timeout: 10000}).

So verwenden Sie MySQL nach der Installation So verwenden Sie MySQL nach der Installation Apr 08, 2025 am 11:48 AM

Der Artikel führt den Betrieb der MySQL -Datenbank vor. Zunächst müssen Sie einen MySQL -Client wie MySQLworkBench oder Befehlszeilen -Client installieren. 1. Verwenden Sie den Befehl mySQL-uroot-P, um eine Verbindung zum Server herzustellen und sich mit dem Stammkonto-Passwort anzumelden. 2. Verwenden Sie die Erstellung von Createdatabase, um eine Datenbank zu erstellen, und verwenden Sie eine Datenbank aus. 3.. Verwenden Sie CreateTable, um eine Tabelle zu erstellen, Felder und Datentypen zu definieren. 4. Verwenden Sie InsertInto, um Daten einzulegen, Daten abzufragen, Daten nach Aktualisierung zu aktualisieren und Daten nach Löschen zu löschen. Nur indem Sie diese Schritte beherrschen, lernen, mit gemeinsamen Problemen umzugehen und die Datenbankleistung zu optimieren, können Sie MySQL effizient verwenden.

Remote Senior Backend Engineers (Plattformen) benötigen Kreise Remote Senior Backend Engineers (Plattformen) benötigen Kreise Apr 08, 2025 pm 12:27 PM

Remote Senior Backend Engineer Job Vacant Company: Circle Standort: Remote-Büro-Jobtyp: Vollzeitgehalt: 130.000 bis 140.000 US-Dollar Stellenbeschreibung Nehmen Sie an der Forschung und Entwicklung von Mobilfunkanwendungen und öffentlichen API-bezogenen Funktionen, die den gesamten Lebenszyklus der Softwareentwicklung abdecken. Die Hauptaufgaben erledigen die Entwicklungsarbeit unabhängig von RubyonRails und arbeiten mit dem Front-End-Team von React/Redux/Relay zusammen. Erstellen Sie die Kernfunktionalität und -verbesserungen für Webanwendungen und arbeiten Sie eng mit Designer und Führung während des gesamten funktionalen Designprozesses zusammen. Fördern Sie positive Entwicklungsprozesse und priorisieren Sie die Iterationsgeschwindigkeit. Erfordert mehr als 6 Jahre komplexes Backend für Webanwendungen

Wie man MySQL löst, kann nicht gestartet werden Wie man MySQL löst, kann nicht gestartet werden Apr 08, 2025 pm 02:21 PM

Es gibt viele Gründe, warum MySQL Startup fehlschlägt und durch Überprüfung des Fehlerprotokolls diagnostiziert werden kann. Zu den allgemeinen Ursachen gehören Portkonflikte (prüfen Portbelegung und Änderung der Konfiguration), Berechtigungsprobleme (Überprüfen Sie den Dienst Ausführen von Benutzerberechtigungen), Konfigurationsdateifehler (Überprüfung der Parametereinstellungen), Datenverzeichniskorruption (Wiederherstellung von Daten oder Wiederaufbautabellenraum), InnoDB-Tabellenraumprobleme (prüfen IBDATA1-Dateien), Plug-in-Ladeversagen (Überprüfen Sie Fehlerprotokolle). Wenn Sie Probleme lösen, sollten Sie sie anhand des Fehlerprotokolls analysieren, die Hauptursache des Problems finden und die Gewohnheit entwickeln, Daten regelmäßig zu unterstützen, um Probleme zu verhindern und zu lösen.

See all articles