使用Claude Code将Moebius 0.2B图像修复模型移植到浏览器中运行
西蒙·威利森使用Claude Code将Moebius 0.2B图像修复模型从PyTorch/CUDA移植到使用WebGPU的浏览器中。整个过程涉及模型转换、部署和缓存优化,最终实现了可在线运行的演示版本。
西蒙·威利森(Simon Willison)近日成功将Moebius 0.2B图像修复模型移植到了浏览器中,并分享了他的整个过程。Moebius是一个轻量级但效果出色的图像修复模型,能够智能填充图像中被标记的缺失区域。该模型最初依赖PyTorch和NVIDIA CUDA,主要面向服务器端运行。威利森受到其小参数量的启发,决定尝试将其迁移到WebGPU上,实现纯浏览器端的运行。
项目的起点是Hacker News上的一篇帖子,威利森随后使用Claude.ai进行了初步可行性研究。研究建议使用ONNX Runtime Web作为WebGPU后端,而非他最初设想的Transformers.js。在确认可行后,他启动了Claude Code来实际执行代码工作。
威利森在本地创建了项目目录,并准备了必要的资源,包括Moebius的源代码、模型权重以及ONNX Runtime和Transformers.js的仓库。随后,他让Claude Code开始工作,并指示其频繁提交代码和记录notes.md文件。整个过程他几乎未查看任何代码行,而是将时间花在测试和提出改进建议上。
在Claude Code的努力下,模型被成功转换为ONNX格式,并发布了约1.24GB的权重到Hugging Face上的simonw/Moebius-ONNX仓库。随后,前端代码被部署到GitHub Pages,用户可以通过simonw.github.io/moebius-web/访问演示。
早期版本存在一个显著问题:每次页面刷新都会重新下载约1.3GB的模型权重。为解决此问题,威利森参考了Whisper Web演示的实现,指示Claude Code使用CacheStorage API(caches.open("transformers-cache"))来缓存权重,从而避免了重复下载。
最终,该模型在Chrome、Firefox和Safari上均能正常工作。威利森强调,这次经历让他认识到几个关键点:Claude Opus 4.8能够独立完成从模型转换到Web应用的全流程;主要浏览器已具备运行此类模型的能力;CacheStorage API可以处理大文件缓存;以及最重要的是,客户端纯Web应用的图像修复功能已成为可能。
威利森还分享了他从该项目中学到的技术细节,特别是关于ONNX的理解:ONNX是一种与框架无关的神经网络文件格式,包含计算图和权重,仅描述计算内容而不指定硬件,通过opset版本控制算子语义。PyTorch内置的torch.onnx.export函数可用于导出ONNX模型。
该项目的完整Claude Code对话记录也已公开,供有兴趣的开发者参考。