[HN Gopher] Show HN: GPT-2 implemented using graphics shaders
___________________________________________________________________
Show HN: GPT-2 implemented using graphics shaders
Back in the old days, people used to do general-purpose GPU
programming by using shaders like GLSL. This is what inspired
NVIDIA (and other companies) to eventually create CUDA (and
friends). This is an implementation of GPT-2 using WebGL and
shaders. Enjoy!
Author : nathan-barry
Score : 150 points
Date : 2025-05-02 15:21 UTC (7 hours ago)
(HTM) web link (github.com)
(TXT) w3m dump (github.com)
| throwaway314155 wrote:
| This is pretty rad. I've built and run the project on my MacBook
| and can't seem to get the visualizations to show as they appear
| in the GitHub demonstration. I'm running Firefox but I think that
| should support WebGL features you're using?
|
| Happy to file an issue on the repository as well if you'd prefer
| that.
| nathan-barry wrote:
| Yeah it'd be great if you could file an issue and show what you
| see! I was using Safari but I'm gonna check other browsers to
| test if it works on them
| throwaway314155 wrote:
| Great! I've filed an issue.
| SamosaGuru wrote:
| Would be really cool to have it hosted on a website if it can be
| a static page so we could try it out
| nathan-barry wrote:
| Working on getting it up on Github pages, will let you know.
| Not sure if there will be an issue with hosting the weights,
| I'll look into it
| Philpax wrote:
| You _may_ be able to fetch the weights directly from Hugging
| Face. I 'd try that first.
| ianand wrote:
| Checkout https://github.com/jseeio/gpt2-tfjs fetches the
| weights for GPT2 from huggingface on the fly.
| jasonjmcghee wrote:
| I haven't looked at your implementation, but if you can read
| ONNX weights... https://huggingface.co/Xenova/gpt2
| Philpax wrote:
| I'm reminded of this VRChat world, which runs Qwen2-0.5B in a
| shader:
| https://vrchat.com/home/launch?worldId=wrld_e919c1f4-8399-43...
| ianand wrote:
| As the guy who did GPT2 in Excel, very cool and kudos!!
|
| Curious why you chose WebGL over WebGPU? Just to show it can be
| done?
|
| (Also see my other comment about fetching weights from
| huggingface)
| ronsor wrote:
| Probably because WebGPU support is still rather iffy.
| nathan-barry wrote:
| This was a final project for a graphics class where we used
| WebGL a lot. Also I was just more familiar with OpenGL and
| haven't looked that much into webGPU
| littlestymaar wrote:
| > Curious why you chose WebGL over WebGPU? Just to show it can
| be done?
|
| For a WebGPU implementation, one can use transformers.js
| directly (or many other libraries actually), maybe WebGL is
| more original.
|
| [1]: https://huggingface.co/docs/transformers.js/index
| 85392_school wrote:
| Transformers.js wraps the ONNX runtime which is rather
| versatile (WASM, WebGL, WebGPU, and WebNN). It's not the
| backend that makes it novel.
| _dijs wrote:
| ianand, I immediately thought of you when I saw this post. Miss
| you friend.
| divan wrote:
| Someone needs to implement Excel using graphics shaders now.
| helloplanets wrote:
| Would absolutely read a 'making of' post on this project!
| jasonjmcghee wrote:
| Incredible. Was going to suggest tossing up a github page with
| it, but looks like one is currently in-progress? (https://nathan-
| barry.github.io/gpt2-webgl/) but doesn't seem to load for me
| currently.
|
| Looks like it's trying to load the typescript directly / hosting
| the source files: `<script type="module"
| src="src/main.ts"></script>` - instead of hosting the dist
| folder.
| nathan-barry wrote:
| Yeah, right now the weights aren't even pushed to the repo so
| there's no way for the github page to load them in. I've looked
| a tiny bit into it and might end up making a fix for it, having
| it load the weights by fetching them from somewhere else on
| load, but probably not today.
|
| There is a link to the zipped up folder with the weights here:
| https://github.com/nathan-barry/gpt2-webgl/releases/download...
|
| If anyone wants to make a PR which fetches the file from there,
| unzips it, then loads in the weights from there that would be
| greatly appreciated.
| badmonster wrote:
| Super cool project! How much of the inference time is actually
| GPU-bound vs CPU-bound in the browser? Curious if WebGPU would
| offer a big perf boost over WebGL2 here.
| Narishma wrote:
| Now do it with the fixed function pipeline so I can run it on my
| 3dfx Voodoo card.
| gitroom wrote:
| Nice, that takes some serious grinding to pull off in shaders.
| Makes me kinda wonder - does pushing old tools like WebGL
| actually force deeper understanding of how these models work
| compared to just grabbing a new library?
___________________________________________________________________
(page generated 2025-05-02 23:00 UTC)