diffusers.js WebGPU 演示
此演示要求用户使用具有特定功能的最新版 Chrome 浏览器。用户需要启用“Experimental WebAssembly”标志和“Experimental WebAssembly JavaScript Promise Integration (JSPI)”标志。同时,需要 Chrome Canary 119 或更高版本,对于 FP16 支持则需要 Chrome Canary 121 或更高版本。此外,还需要浏览器具备 WebGPU 支持。
该演示基于 diffusers.js 构建,涉及诸多参数,如提示、负提示、推理步骤数量、指导尺度、种子等。这些参数可影响生成图像与提示的相似度以及初始随机噪声等。
用户可按下按钮下载模型,模型将存储在浏览器缓存中。下载完成后,上述所有设置将可编辑。
在使用过程中,可能会遇到一些问题。例如,如果出现“protobuf 解析失败错误”,可打开开发者工具,前往“应用程序 -> 存储”并点击“清除站点数据”。如果出现“sbox_fatal_memory_exceeded”,则可能是内存不足,可尝试重新加载标签页或浏览器。
为了实现此演示,开发者将 StableDiffusionPipeline 从 Python 移植到了 JS,并对 onnxruntime 和 emscripten+binaryen(WebAssembly 编译器工具链)进行了补丁,以支持分配和使用超过 4GB 的内存。同时,还涉及到 WebAssembly 规范和 V8 引擎。