Nach sechs Jahren Entwicklungszeit steht WebGPU kurz vor der Einführung in den meisten großen Webbrowsern. Das ist enorm: Webanwendungen haben jetzt nahezu nativen Zugriff auf die GPU, mit der zusätzlichen Kapazität von Compute-Shadern.
WebGPT ist eine Vanilla-JS- und HTML-Implementierung eines Transformatormodells, die sowohl als Proof-of-Concept als auch als Bildungsressource gedacht ist. Es wurde getestet, dass WebGPT mit Modellen mit bis zu 500 Mio. Parametern funktioniert, könnte jedoch durch weitere Tests/Optimierungen wahrscheinlich weit mehr unterstützen.
2020 M1 Mac: 3 ms/Token bei 5 Mio. Parametern mit f32-Präzision.
2020 M1 Mac: 30 ms/Token bei 117 Millionen Parametern mit f32-Präzision.
2020 M1 Mac: 70 ms/Token bei 377 Millionen Parametern mit f32-Präzision.
2020 M1 Mac: 120 ms/Token bei 775 Millionen Parametern mit f32-Präzision.
1.5B funktioniert, ist aber instabil und liegt aufgrund von Ineffizienzen bei etwa 1000 ms/Token.
Das Ausführen von WebGPT ist bemerkenswert einfach, da es sich lediglich um eine Reihe von HTML- und JS-Dateien handelt. Da sich WebGPU noch in der Veröffentlichungsphase befindet, müssen Sie es mit einem kompatiblen Browser öffnen. WebGPU ist derzeit in Chrome v113 verfügbar. Der einfachste Weg, die ordnungsgemäße Funktionalität sicherzustellen, ist jedoch die Installation von Chrome Canary oder Edge Canary.
Ich habe zwei verschiedene Modelle beigefügt: ein Spielzeug-GPT-Shakespeare-Modell (das stark untertrainiert ist, haha) und ein GPT-2 117M. Weitere Informationen zum Ausführen dieser Modelle finden Sie unter main.js. Wenn Sie benutzerdefinierte Modelle importieren möchten, werfen Sie einen Blick auf misc/conversion_scripts.
Wenn Sie WebGPT ausprobieren möchten, besuchen Sie die Demo-Website hier KMeans.org. Ich würde im Allgemeinen empfehlen, das Repo zu klonen und lokal auszuführen, da das Laden der Gewichte aus der Ferne deutlich langsamer ist.
Hinweis: Nach dem Klonen des Repositorys müssen Sie Git LFS verwenden , um die Modelldateien herunterzuladen.
Als ich mit diesem Projekt begann, hatte ich keine Ahnung, wie Transformatoren funktionieren oder wie man sie implementiert (oder GPUs oder Matmul-Kernel oder WebGPU oder Tokenisierung im Übrigen), daher waren Andrej Karpathys Serie über neuronale Netze und den Aufbau von GPT von Grund auf von unschätzbarem Wert: Andrejs Youtube. Ich habe auch Code aus dem nanoGPT-Repository verwendet: nanoGPT.
Ich habe die Implementierung des GPT-3-Tokenizers von OpenAI in Javascript von LatitudeGames kopiert: GPT-3-Encoder.