[{"data":1,"prerenderedAt":267},["ShallowReactive",2],{"project-46516267":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":29,"sentiment":30,"stance_mix":31,"scored_comments":35,"aspects":36,"strip":44,"post_text":45,"what":46,"said":71,"maker_in_thread":159,"shape":171,"grid":175,"attempts":228,"same_week":229,"maker_shows":35,"maker_hidden":259,"reader_version":260,"card":261},"46516267","jax-js","Jax-JS, array library in JavaScript targeting WebGPU","title","Show HN: Jax-JS, array library in JavaScript targeting WebGPU","https:\u002F\u002Fss.ekzhang.com\u002Fp\u002Fjax-js-an-ml-library-for-the-web","ss.ekzhang.com","ekzhang",1767723571,2026,84,22,807,4366,19,"notable","ai","ml library","library",[24,25,26,27,28],"javascript machine learning","webgpu","autodiff","tensor library","jax javascript","mixed",0.364,{"positive":32,"neutral":33,"mixed":34,"critical":33},5,1,2,9,{"performance":37,"idea":39,"design":41,"docs":42,"execution":43},{"positive":33,"critical":38},0,{"positive":40,"critical":38},3,{"positive":38,"critical":38},{"positive":33,"critical":38},{"positive":38,"critical":33},[32,38,38,38,38,38,38,32,38,32,32,40,38,40,38,38,38,40,33,38,38,32],null,{"problem":47,"audience":45,"pricing":45,"motivation":58,"time_to_build":45,"stack":63,"openness":69,"stage":70,"team_size":69},{"value":48,"source":49,"evidence":50},"Running array computation and gradients in JavaScript on the GPU","inferred",[51,55],{"id":52,"by":53,"text":54},"46518937","fouronnes3","Congrats on the launch! This is a very exciting project because the only decent autodiff implementation in typescript was tensorflowjs, which has been completely abandonned by…",{"id":56,"by":11,"text":57},"46519118","Yes, we are actively working on it! The goal is to be a full ML research library, not just a model inference runtime. You can join the Discord to follow along",{"value":59,"source":60,"evidence":61},"Build a full ML research library, not just a model inference runtime","maker",[62],{"id":56,"by":11,"text":57},[64],{"value":65,"source":66,"evidence":67},"TypeScript","commenter",[68],{"id":52,"by":53,"text":54},"unknown","launched",{"praise":72,"objections":91,"requests":109,"questions":125,"alternatives":134},[73,77,84],{"value":74,"source":66,"evidence":75},"Fills gap left by tensorflow.js for gradients in JavaScript",[76],{"id":52,"by":53,"text":54},{"value":78,"source":66,"evidence":79},"Supports WebGPU plus CPU, Wasm and WebGL backends",[80],{"id":81,"by":82,"text":83},"46523557","forgotpwd16","Very nice work. Like how it supports webgpu but also cpu\u002Fwasm\u002Fwebgl. Would love to read more on the internals & design choices made like e.g. ref counting in README. P.S. And…",{"value":85,"source":66,"evidence":86},"Examples are useful",[87],{"id":88,"by":89,"text":90},"46535452","sbondaryev","The examples are great. It would be really nice to have a sandbox with the full training code (e.g. MNIST) to play with.",[92,102],{"value":93,"source":66,"evidence":94},"Firefox cannot run the demos without WebGPU",[95,99],{"id":96,"by":97,"text":98},"46518357","maelito","Could not run the demos on Firefox. On Chromium, the Great Expectations loads but then nothing happens.",{"id":100,"by":82,"text":101},"46523529","According to page WebGPU supported (`dom.webgpu.enabled` flag) but is only enabled by default on Windows & macOS (i.e. not Linux).",{"value":103,"source":66,"evidence":104},"Ref and dispose API is low-level and error-prone",[105],{"id":106,"by":107,"text":108},"46516978","mlajtos","I have a project using tfjs and jax-js is very exciting alternative. However during porting I struggle a lot with `.ref` and `.dispose()` API. Coming from tfjs where you garbage…",[110,117,121],{"value":111,"source":66,"evidence":112},"Benchmark against other autodiff tools",[113],{"id":114,"by":115,"text":116},"46517085","sestep","Hey Eric, great to see you've now published this! I know we chatted about this briefly last year, but it would be awesome to see how the performance of jax-js compares against…",{"value":118,"source":66,"evidence":119},"Sandbox with full training code such as MNIST",[120],{"id":88,"by":89,"text":90},{"value":122,"source":66,"evidence":123},"Write-up of internals and design choices",[124],{"id":81,"by":82,"text":83},[126,130],{"value":127,"source":66,"evidence":128},"Is it a side project or a long-term commitment?",[129],{"id":52,"by":53,"text":54},{"value":131,"source":66,"evidence":132},"Can the ref API be improved or could using help?",[133],{"id":106,"by":107,"text":108},[135,140,148,152],{"value":136,"source":66,"evidence":137},"tensorflow.js",[138,139],{"id":52,"by":53,"text":54},{"id":106,"by":107,"text":108},{"value":141,"source":66,"evidence":142},"ONNX Runtime Web",[143,144],{"id":52,"by":53,"text":54},{"id":145,"by":146,"text":147},"46518011","sroussey","onnx on the web has the most models available and can use webgpu which is available everywhere. Huggingface’s transformers.js uses it. And I use that for https:\u002F\u002Fworkglow.dev…",{"value":149,"source":66,"evidence":150},"transformers.js",[151],{"id":145,"by":146,"text":147},{"value":153,"source":66,"evidence":154},"WebNN",[155],{"id":156,"by":157,"text":158},"46516785","esafak","What is the state of web ML? Anybody doing cool things already? How about https:\u002F\u002Fwww.w3.org\u002FTR\u002Fwebnn\u002F ?",{"comments":160,"answered":34,"key":161},7,[162,165,168],{"id":163,"text":164},"46517977","For sure! It looks like this is benchmarking the autodiff cpu time, not the actual kernels though, which (correct me if I’m wrong) isn’t really relevant for an ML library — it’s…",{"id":166,"text":167},"46518823","Hm okay, seems like an interesting set of benchmarks — let me know if there’s anything I can do to help make jax-js more compatible with your docker setup",{"id":169,"text":170},"46520249","I don’t think this is straightforward but it may be a skill issue on my part. It would require dockerizing headless Chrome with WebGPU support and dynamically injecting custom…",{"commenters":172,"max_depth":160,"maker_replies":160,"first_comment_mins":173,"lifespan_hours":174},11,36,30,[176,178,180,183,185,187,189,191,193,194,198,201,204,207,210,212,213,215,218,220,223,225],[114,38,32,177,115,38],"maker\u002Fpositive\u002Fperformance",[163,38,38,179,11,33],"project\u002Fcritical\u002Fperformance",[181,38,38,182,115,38],"46518762","commenter\u002Fneutral\u002Fperformance",[166,38,38,184,11,33],"commenter\u002Fneutral\u002Fnone",[186,38,38,184,115,38],"46518871",[169,38,38,188,11,33],"project\u002Fneutral\u002Fperformance",[190,38,38,184,115,38],"46521304",[52,33,32,192,53,38],"maker\u002Fpositive\u002Fidea",[56,33,38,192,11,33],[195,34,32,196,197,38],"46517543","project\u002Fpositive\u002Fidea","bobajeff",[199,40,32,196,200,38],"46516997","yuppiemephisto",[106,202,40,203,107,38],4,"project\u002Fmixed\u002Fdesign",[205,202,38,206,11,33],"46518030","maker\u002Fneutral\u002Fdesign",[208,202,40,209,107,38],"46523268","project\u002Fneutral\u002Fdesign",[156,32,38,211,157,38],"other\u002Fneutral\u002Fnone",[145,32,38,211,146,38],[214,32,38,196,11,33],"46518069",[88,216,40,217,89,38],6,"project\u002Fmixed\u002Fdocs",[96,160,33,219,97,38],"project\u002Fcritical\u002Fexecution",[221,160,38,222,11,33],"46518702","maker\u002Fneutral\u002Fexecution",[100,160,38,224,82,38],"commenter\u002Fneutral\u002Fexecution",[81,226,32,227,82,38],8,"project\u002Fpositive\u002Fdocs",[],[230,235,240,244,249,254],{"id":231,"name":232,"points":233,"category":234},"46454693","OpenWorkers",500,"infrastructure",{"id":236,"name":237,"points":238,"category":239},"46491749","taws",390,"dev_tools",{"id":241,"name":242,"points":243,"category":239},"46511469","Prism.Tools",380,{"id":245,"name":246,"points":247,"category":248},"46499646","DoNotNotify",347,"productivity",{"id":250,"name":251,"points":252,"category":253},"46488654","how browsers work",302,"learning_science",{"id":255,"name":256,"points":257,"category":258},"46501137","Tailsnitch",280,"security_privacy",false,"v2",{"id":262,"name":5,"line":6,"ai":259,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":263,"top":18,"kw":264,"maker":11,"domain":10,"tier":19,"attempts":38,"strip":265,"url":9,"mix":266,"praise":74,"objection":93,"sub":21},46516267,0.36,[24,25,26,27,28],"5000000505530300031005",[32,33,34,33],1794036689698]