News for hackers. Stuff that matters.
Re:Use.GPU by planb on Friday September 09, 2022 @09:04AM (#32778673)
Slightly OT: I never heard of webGPU before. So, in theory it will be feasible in a few years to run models like Stable Diffusion on my GPU through the browser without fighting with conda, pip and drivers? Or did I get the scope of this wrong?
Re:Use.GPU by modeless on Friday September 09, 2022 @12:23PM (#32781208)
You can already run ML models with GPU acceleration in WebGL using tensorflow.js and other libraries. WebGPU will make things better for sure, but I think the major obstacles to running large models like Stable Diffusion will not be solved by WebGPU.

WebGPU will not expose Nvidia-specific tensor cores, at least initially. But the main issues are with loading and processing gigabytes of data in browsers, which aren't addressed by WebGPU at all. You'll have difficulty downloading and storing all that data and quickly run into out of memory crashes.

Re:Use.GPU by carpenecopinum on Friday September 09, 2022 @09:28AM (#32778949)
In principle, yes. With webGPU (but also WebGL2) we get access to compute shaders, which makes it feasible/easier to evaluate a model like Stable Diffusion.

The biggest issue I see is that those models (or rather their trained parameters) are usually pretty large (several GiB). So it'll take a while to set up in the browser before the evaluation can actually start. It'll also require a lot of bandwidth on both ends.

A lot of those things should already be doable with the fragment shaders we get from WebGL and a lot of hackery, like clever (ab)use of textures. So the actual issue that we're not seeing a lot of this is probably not due to it being impossible right now...

Re:Use.GPU by capableweb on Friday September 09, 2022 @09:40AM (#32779093)
> The biggest issue I see is that those models (or rather their trained parameters) are usually pretty large (several GiB). So it'll take a while to set up in the browser before the evaluation can actually start. It'll also require a lot of bandwidth on both ends.

Might not be feasible due to memory constraints (I'm not sure), but browsers can load data from disk into memory without having to touch the network. So you could in theory ask the users to download the model separately, then ask them to select it from a file picker, and the browser can have access to it that way.

Re:Use.GPU by lmeyerov on Friday September 09, 2022 @11:01AM (#32780075)
Next step: browser JS VMs need to allow you access gigs of RAM in-memory, it's surprisingly locked down
Re:Use.GPU by flyteuk on Friday September 09, 2022 @10:51AM (#32779962)
It'd be nice if the models could be loaded via WebTorrent[1], which would significantly reduce the bandwidth requirement for whomever releases it.

[1] https://github.com/webtorrent/webtorrent

Re:Use.GPU by tough on Friday September 09, 2022 @11:13AM (#32780204)
The models are certainly available on torrent though
Re:Use.GPU by jakogut on Friday September 09, 2022 @11:35AM (#32780495)
Right. Another option is running the model locally from a web page, served from the project source directory, which is still a lot easier than setting up a platform specific GPU accelerated ML dev environment.
Re:Use.GPU by krona on Friday September 09, 2022 @12:14PM (#32781059)
WebGL2 doesn't support compute shaders.
Re:Use.GPU by pjmlp on Friday September 09, 2022 @01:09PM (#32781988)
It did for a short while as an extension, then Google decided to throw away Intel's work and only support compute in WebGPU.
Re:Use.GPU by Tade0 on Friday September 09, 2022 @09:24AM (#32778906)
It's a replacement for WebGL, but the key difference is that it supports compute shaders.
Re:Use.GPU by unconed on Friday September 09, 2022 @11:26AM (#32780365)
It also supports many more features in rendering which previously were unavailable or so badly supported you couldn't use them. It's basically like going from 2005 to 2015 in terms of capabilities.

There are still notable gaps, like no bindless resources or raytracing though. So don't expect e.g. unreal engine to run on WebGPU without some significant compromises.

Re:Use.GPU by markdog12 on Friday September 09, 2022 @01:04PM (#32781915)
Someone patched Chrome to enable raytracing with WebGPU: https://github.com/maierfelix/chromium-ray-tracing
Re:Use.GPU by irate2942 on Friday September 09, 2022 @09:36AM (#32779050)
WebGL2 also supports them! And now that Apple finally added support (like half a year ago(?)) to it, it can be fairly safely used
Re:Use.GPU by raphlinus on Friday September 09, 2022 @10:05AM (#32779400)
I believe WebGL compute shader development has been halted[1], in favor of making WebGPU happen. Though it's possible to run it in dev builds in some cases, I'm pretty sure there's no browser that has it on by default, and likely this won't happen.

Apple does support WebGL2, but compute shader support is not part of that core spec. The demos[2] certainly don't work in Safari in my quick test.

[1]: https://registry.khronos.org/webgl/specs/latest/2.0-compute/

[2]: https://9ballsyndrome.github.io/WebGL_Compute_shader/webgl-c...

Re:Use.GPU by pjmlp on Friday September 09, 2022 @01:10PM (#32782005)
Thanks Google that dropped them out of Chrome and we all know how the Web is basically whatever Chrome does, so WebGPU it is.
Re:Use.GPU by boppo1 on Friday September 09, 2022 @09:30AM (#32778978)
Is it a replacement? It looks more like a framework that lives on top of webgl.
Re:Use.GPU by danielvaughn on Friday September 09, 2022 @10:24AM (#32779638)
You shouldn't be downvoted, your question is reasonable even if it demonstrates a misunderstanding. So it's not a wrapper over WebGL, it's a more modern, lower-level GPU programming model. There are equivalent efforts in native environments to replace OpenGL - notably Vulkan and (Apple's) Metal.

As far as I understand, the approach allows far more flexibility, at the expense of higher complexity. It's less "stateful" than WebGL, which basically gives you a big class that manages everything OOP-style.

Re:Use.GPU by msk-lywenn on Friday September 09, 2022 @09:36AM (#32779039)
It's the other way around. WebGPU is to Vulkan what WebGL is to OpenGL. It's less low level than vulkan though.
Re:Use.GPU by incrudible on Friday September 09, 2022 @09:35AM (#32779029)
WebGPU is to WebGL as Vulkan is to OpenGL, a lower level, low overhead graphics API.