diffusers.js WebGPU demo
In dieser Demo mit dem Namen diffusers.js wird die Unterstützung von WebGPU hervorgehoben. Um diese Demo nutzen zu können, benötigen Sie einige Voraussetzungen. Sie benötigen den neuesten Chrome-Browser, in dem der "Experimental WebAssembly"-Flag aktiviert ist. Außerdem muss der "Experimental WebAssembly JavaScript Promise Integration (JSPI)"-Flag aktiviert sein. Sie benötigen Chrome Canary 119 oder neuer. Für die FP16-Unterstützung benötigen Sie Chrome Canary 121 oder höher. Zudem benötigen Sie einen Browser mit WebGPU-Unterstützung.
Die Demo basiert auf diffusers.js und beinhaltet verschiedene Funktionen. Dazu gehören die Prompt-Negative-Prompt, die Anzahl der Inferenzschritte (aufgrund des PNDM Schedulers wird es i + 1), die Guidance Scale, die bestimmt, wie ähnlich das generierte Bild zum Prompt sein wird, und den Seed, der die anfängliche zufällige Rauschentwicklung erzeugt.
Sobald Sie den Button zum Herunterladen des Modells drücken, wird es in Ihrem Browser-Cache gespeichert. Nachdem das Modell heruntergeladen wurde, können Sie alle oben genannten Einstellungen bearbeiten.
Falls Sie Probleme wie den protobuf parsing failed error oder sbox_fatal_memory_exceeded erhalten, gibt es Lösungsvorschläge. Für den protobuf parsing failed error öffnen Sie die DevTools, gehen zu Application -> Storage und drücken Sie "Clear site data". Für sbox_fatal_memory_exceeded heißt es, dass Sie nicht genügend RAM haben, um SD auszuführen. Sie können versuchen, die Registerkarte oder den Browser neu zu laden.
Um diese Demo zu ermöglichen, musste die StableDiffusionPipeline von Python nach JS portiert werden. Außerdem mussten onnxruntime und emscripten+binaryen (WebAssembly Compiler Toolchain) angepasst werden, um die Zuweisung und Nutzung von mehr als 4GB Speicher zu unterstützen. Schließlich wurden auch der WebAssembly-Spezifikation und der V8-Engine angepasst.