之前用 WebGPU 在浏览器里跑模型,老是遇到标签页崩溃的情况。后来发现,大多是模型超过了 maxStorageBufferBindingSize 限制,或者设备压根不支持 shader-f16 导致的。
实在受不了,我就做了个叫 browser-llm-fit 的小工具。它会先探测你客户端的硬件上限,在真正下载模型权重之前,帮你判断哪些模型能在浏览器里跑、顺便排个序。
用法也很简单,比如:
import fit from 'browser-llm-fit';
const res = await fit('SmolLM2-135M');
console.log(res.fits, res.speed); // true, '45-65 tokens/sec'
单独传模型名就是测这一个;直接 fit() 不传参,就会返回所有模型按硬件适配度排好的结果。
另外它已经发到 npm 了,装起来就是 npm install browser-llm-fit。
如果你们有奇怪的 GPU 组合,或者在手机上用 WebGPU 跑过,欢迎聊聊体验,帮我一起完善对各种设备的支持!