[HN Gopher] Brain.js: GPU Accelerated Neural Networks in JavaScript ___________________________________________________________________ Brain.js: GPU Accelerated Neural Networks in JavaScript Author : andsoitis Score : 167 points Date : 2022-07-07 15:22 UTC (7 hours ago) (HTM) web link (brain.js.org) (TXT) w3m dump (brain.js.org) | danielEM wrote: | Long time ago wanted to so something good and took a part in W3C | webmachinelearning standardization group. Inspired by simplicity | of brain.js wanted browser API to offer something similar to it - | simple and easy to learn and easy to understand, also wanted a | training API to be available. It is possible to keep simplicity | of brain.js and flexibility of any other op set. And my oh my - | did hit the wall HARD! Paid seats in W3C rules. They do what they | want there. Your voice there matters only if it aligns well with | their voice. Browsers API is now their own domain and whenever | there is a conflict of interest their choice is obvious. | dennisy wrote: | That group has been around for so long, seems mostly Intel | folks. | | I just don't get why the progress is so slow! | | I was trying to follow along, and joined calls, but the group | moves like a glacier. | davidatbu wrote: | There's also tract, from Sonos[0]. 100% Rust[1]. I'm currently | using it to do speech recognition with a variant of the Conformer | architecture (exported to ONNX). | | The final goal is to do it in WASM client-side. | | [0] https://github.com/sonos/tract | | [1] To be clear, I'm not saying that writing in Rust is some | inherent advantage for an NN inference engine. But I personally | gravitate to using libraries written in languages I know/want to | learn, and Rust might be that for some people. | brrrrrm wrote: | For inference, models should be compiled down directly to WASM | or WebGPU or whatever, right? The driving language really | shouldn't matter at the end of the day. | | Unless you've got massive compute bound transformers or old- | school full convolutions, if you're interpreting a list of | operations you're going to lose perf. | leeoniya wrote: | also https://github.com/photopea/UNN.js | misterdata wrote: | See also https://github.com/webonnx/wonnx, which runs ONNX models | through WebGPU. It is written in Rust and can be used natively on | Windows, macOS and Linux (through wgpu which uses either DX12, | Vulkan or Metal) or on the web (it has a JS API that uses WASM | under the hood, which calls into the browser's WebGPU API). There | is a Python module as well. | davidatbu wrote: | I've ran across this before, but haven't figured out if a GPU | is _required_ to use it. That would be a deal-breaker for any | consumer facing web app right? | misterdata wrote: | It will work with software implementations (e.g. | llvmpipe/lavapipe is used in CI). That will be slower though. | However you'd be surprised at how many devices have a usable | GPU. Not all have NVIDIA RTX'es of course, but a simple iGPU | will do. I tested it on a fairly low specced Dell office PC | with an Intel Iris iGPU and that works just fine. Also most | mobile devices will have a GPU these days. | nightski wrote: | I'm curious if there are many scenarios where a CPU fallback, | especially javascript based, would have acceptable | performance when a GPU is not present. Is that even really a | solution? | neodypsis wrote: | There's also TensorFlow.js: https://www.tensorflow.org/js | ch_sm wrote: | also ONNX.js, which is great for interop: | https://github.com/microsoft/onnxjs | ge96 wrote: | I used their facial landmark model, took some messing around | (import/dep issues) but worked in my react project. | | My use case was just automatic picture taking when a face was | detected in a video stream. | jppope wrote: | brain.js is significantly simpler to deploy basic projects than | TensorFlow.js | yeldarb wrote: | For object detection, we made a way to do it from scratch in | a couple of hours (for free if your project is open | source[1]): https://docs.roboflow.com/inference/web-browser | | [1] https://blog.roboflow.com/computer-vision-datasets-and- | apis/ | neodypsis wrote: | I was checking it out, but it seems limited in terms of the | type of models you can implement. You don't have CNNs for | example. | pluc wrote: | https://dannjs.org/ | neodypsis wrote: | Does it support GPU? | cubano wrote: | So being semi-retired (unable to find work due to 10yr+ past | background issues) and living in Vegas, I've really given serious | thought to building some sort of NN to help with gambling in | general and specifically the picking of horses (or perhaps even | baseball outcomes). | | I can't help but think that buried in all the race data their are | correlations that are impossible to figure with standard | statistical methods but can be sussed out using NNs. Of course I | am vaguely aware that many people are already using NNs to | predict race outcomes, but I am purposely trying to keep that | info at arms length as I don't really want to be negatively | influenced existing attitudes. | | However, if someone does happen to know of a good NN/horseracing | blog that has a positive outlook and is making money, I would be | interested in such a site. | | Anyway, this type of easy-to-use NN could be exactly what I'm | looking for with getting started on this project, and once again, | I would be interested in hearing about the pros and cons of using | such a lightweight easy-to-use NN for my explorations. | FrenchDevRemote wrote: | what do you think the bookmakers are using to set the odds? | | If you don't have a PHD level and a large amount of money to | start with, don't even try to think about it. | | I've spent a few months tinkering with this kind of stuff, with | a huuuge dataset, my simulations never went past the annual | return of an average ETF, and by eliminating 99/99.5% of bets | possible, so you'd only have a few bets that are worth it per | month, a bad streak would ruin your return for the year, and | you'd have to have access to a lot of bookmakers to get the | best odds. | | It's just not worth it IMO. | vosper wrote: | If you can consistently make money the bookies / betting | platforms will just ban you. | jdmoreira wrote: | There is a good book that I recommend | | Precision Statistical and Mathematical Methods in Horse Racing | | the book will set you in the right path at least and I learnt | some good mental models from it | jdmoreira wrote: | I just want to clarify I never gambled in my life. But I did | have similar thoughts to yours and the book scratched that | itch for me. | jsiaajdsdaa wrote: | Tangentially, I'm just curious, is it something that appears in | your criminal background check that causes you to not receive | offers? Or is it a lack of interviews due to gaps on a resume? | | I am a firm believer that if someone demonstrates they have | motivation and skill in a writing sample, they deserve an | interview. If that person then passes a technical interview, | they deserve a job. And if that person is friendly and does not | commit any crimes while working, they deserve to keep that job. | [deleted] | TekMol wrote: | unable to find work due to 10yr+ past background issues | | The broken url in your profile might also be a factor. | ww520 wrote: | There might not be enough data to train a NN, and it's probably | prone to overfitting the model. It's a similar problem to using | NN to predict the stock market. You might have better luck with | shallow learning statistical techniques that require less data | to train a model. | mhh__ wrote: | Those standard statical methods probably don't have the gift of | thousands of parameters. | carnitine wrote: | Well no, but what's your point? | mhh__ wrote: | It's a pretty strange comparison if you think about it | computationally. | | I'm very much on the deep learning train but comparisons | with traditional statistics are rather somewhat tortured. | m00dy wrote: | I think a js framework doesn't make sense because all people I | know dealing with dnns using python as base language. I'm also | working on something very similar and I think my stack is a lot | better because I used pyodide + webassembly + webgpu . So far, I | managed to implement a very small grad based dnn framework with | couple of ops. (like matmul, etc.) | | One of the limitations is that webassembly vm has 4gb address | space. This could be a problem during loading/unloading from/to | gpu. | revskill wrote: | Because many devs just don't want to use a language like | Python. | paradite wrote: | The point is to train and run DNN in browsers and mobile | phones. | darepublic wrote: | The mobile site needs some work. Why is the hero present on every | page, not just the lander? On mobile firefox the flex box in the | hero is not wrapping like it should. In terms of marketing and | communication, you need to specify up front what lib is being | used for the gpu accelerated parts. Can I do everything with this | as I could with, say, pytorch, except in js? | m00dy wrote: | No, you can't | fbanon654 wrote: | not yet (and not with this framework) but soon with pytorch | itself | | https://dev-discuss.pytorch.org/t/proposal-torch-js-a- | javasc... | pixelbyindex wrote: | > It's pretty much a certainty that a web standard for | eager-mode machine learning will spring up when WebGPU | comes online | | I can agree on this point. The fusion of the browser and | the GPU will likely open up some new pathways to ML | concepts that were previously impeded. | | At the same time, is there a possibility that websites | begin implementing heavy GPU operations at scale, in the | same way that SPA webapps are heavy on memory today? | jppope wrote: | I ABSOLUTELY loved this project and used it for all of my "quick | and dirty" ML stuff where I was fooling around... the only | problem, which I don't think has been fixed is that it still | requires *Python 2.7*. | | End of life for Python 2.7 was 2020! | vorticalbox wrote: | Yeah this is a big issue that is super annoying to fix on | latest Ubuntu. | | That said if you can get it working the api is very simple but | you can do a lot of things with it. | | I created a LSTM network to predict your next move in rocker, | paper, scissors in very little code. | nmstoker wrote: | As others say, it's headless-gl, and that in turn seems to be | due to node-gyp. | | However the good news seems this is probably more a case of | documentation inertia than actual requirements: it looks like | you actually can install a version of node-gyp that works with | Python 3.x and then in turn should be able to get headless-gl | working too, which then let's brain.js work with a non -EOL | version of Python | Aspos wrote: | What do you mean? Brain.js is JavaScript ML engine. | synchronizing wrote: | Check out the README: https://github.com/BrainJS/brain.js | YetAnotherNick wrote: | It's just a requirement. Python 2 is available on all the | systems I know. What difficulty are you facing in | installing it? | Aspos wrote: | Oh, you don't need to use python if you don't want to. | Brain.js happily runs in a broswer. | dhritzkiv wrote: | Thanks for pointing this out. I've submitted a PR to resolve | this: https://github.com/gpujs/gpu.js/issues/757 | | That being said, if you're not building from source (you're | running an LTS version of node on a supported platform), you | don't need to worry about python or many of the build deps. | pmelendez wrote: | It sounds like the problem is with its dependency with | headless-gl, but still you have a point ___________________________________________________________________ (page generated 2022-07-07 23:00 UTC)