web-stable-diffusion

GitHub
3.7k 234 较难 1 次阅读 3天前Apache-2.0开发框架图像
AI 解读 由 AI 自动生成,仅供参考

web-stable-diffusion 是一款革命性的开源项目,它让强大的 Stable Diffusion 图像生成模型能够直接在网页浏览器中运行,无需任何后端服务器支持。这意味着用户只需打开浏览器标签页,即可在本地完成从文本到图像的生成过程。

长期以来,运行此类大型 AI 模型依赖昂贵的 GPU 服务器和特定的深度学习框架,不仅成本高,还涉及数据隐私传输风险。web-stable-diffusion 通过将计算任务完全迁移至客户端,有效解决了这些问题,既降低了服务提供者的运营成本,又极大地提升了用户的隐私保护与个性化体验。

该项目特别适合前端开发者、AI 研究人员以及希望探索去中心化 AI 应用的技术爱好者。对于普通用户而言,它也提供了无需安装复杂环境即可体验最新 AI 绘图能力的便捷途径。其核心技术亮点在于巧妙结合了 WebAssembly 与日益成熟的 WebGPU 标准,实现了浏览器内的原生 GPU 加速。此外,项目提供了一套可重复、可组合的"Python 优先”工作流,支持开发者轻松优化模型并统一部署到包括网页在内的多种终端环境,展现了极高的灵活性与扩展性。

使用场景

一家初创设计团队希望在其在线营销工具中集成"AI 海报生成”功能,让中小商家无需离开网页即可定制宣传图。

没有 web-stable-diffusion 时

  • 高昂的服务器成本:团队必须租赁昂贵的 GPU 云服务器来运行庞大的 Stable Diffusion 模型,随着用户量增加,算力账单呈指数级增长。
  • 复杂的运维架构:需要搭建专门的后端 API 服务来处理图像生成请求,并解决高并发下的排队拥堵问题,开发周期长且维护困难。
  • 隐私与延迟顾虑:用户上传图片或输入创意时需传输至云端,存在数据泄露风险;同时网络往返导致生成等待时间过长,体验流畅度差。
  • 硬件依赖受限:后端环境必须严格匹配特定的深度学习框架和 GPU 驱动版本,部署灵活性极低,难以快速迭代。

使用 web-stable-diffusion 后

  • 零服务器算力支出:利用 WebGPU 技术将模型推理完全迁移至用户浏览器本地运行,彻底消除了服务端的 GPU 租赁成本。
  • 极简的前端部署:无需构建复杂的后端推理服务,只需将优化后的模型文件嵌入网页,通过标准的 Web 技术栈即可直接交付功能。
  • 数据隐私与即时响应:所有计算在用户设备本地完成,原始数据不出域,极大提升了安全性;同时消除了网络传输延迟,生成速度仅受限于本地显卡性能。
  • 跨平台无缝兼容:借助 WebAssembly 和统一的运行时环境,该方案可自动适配不同操作系统和设备,无需为特定硬件单独维护后端环境。

web-stable-diffusion 通过将重型 AI 模型原生带入浏览器,不仅大幅降低了企业的运营门槛,更重新定义了隐私安全且低延迟的 Web AI 交互体验。

运行环境要求

操作系统
  • macOS
  • Windows
  • Linux
GPU
  • WebGPU 运行需支持 WebGPU 的浏览器(如 Chrome Canary)及独立显卡
  • 本地原生运行支持 Apple Silicon (M2) 或 NVIDIA CUDA GPU
  • 显存需求至少 8GB
内存

未说明(建议 8GB+ 以容纳模型)

依赖
notes1. 核心特性:模型完全在浏览器端运行,无需服务器支持。2. 浏览器要求:必须使用支持 WebGPU 的浏览器(目前主要为 Chrome Canary),且启动时需添加 '--enable-dawn-features=disable_robustness' 参数以获得最佳性能。3. 构建工具链:除了 Python 依赖外,还需安装 Emscripten (编译 C/C++ 到 WebAssembly)、Rust 及 wasm-pack (用于分词器)、Jekyll (用于搭建演示网站)。4. 模型来源:基于 Runway 的 stable-diffusion-v1-5 模型。5. 局限性:目前 WebGPU 仅支持 FP32 精度,且主要在 Apple Silicon 上进行了测试。
python3.x (文中使用 python3 命令,未指定具体小版本)
mlc-ai-nightly (TVM Unity)
PyTorch
Hugging Face Diffusers
Hugging Face Tokenizers
Emscripten
Rust
wasm-pack
Jekyll
web-stable-diffusion hero image

快速开始

Web 稳定扩散

本项目将稳定扩散模型引入到网页浏览器中。所有计算都在浏览器内部完成,无需服务器支持。 据我们所知,这是全球首个完全在浏览器上运行的稳定扩散模型。请访问我们的演示页面体验。

如果您对将基于 LLM 的聊天机器人部署到浏览器感兴趣,也欢迎查看 Web LLM

浏览器截图

近年来,AI 模型取得了令人瞩目的进展。得益于开源社区的努力,开发者现在可以轻松地组合各种开源模型,完成许多令人惊叹的任务。稳定扩散模型能够根据文本输入自动生成逼真的图像以及各种风格的艺术作品。然而,这些模型通常体积庞大、计算密集,因此在开发基于它们的 Web 应用时,我们必须将所有的计算请求转发到 GPU 服务器上处理。此外,大多数工作负载还需要在特定类型的 GPU 上运行,而这些 GPU 上往往已经预装了流行的深度学习框架。

本项目旨在改变这一现状,为生态系统带来更多多样性。将部分(或全部)计算转移到客户端有许多理由。这样做不仅能够降低服务提供商的成本,还能提升个性化体验和隐私保护水平。个人电脑(甚至移动设备)的发展正朝着支持这种可能性的方向迈进——客户端设备的功能越来越强大。

为这些应用构建专用的客户端应用程序是一种选择(我们也支持这种方式),但如果我们只需打开浏览器,就能直接将 AI 原生地集成到你的浏览器标签页中,岂不是更加令人兴奋?目前,生态系统已经具备了一定的基础:WebAssembly 允许我们将更多底层运行时移植到 Web 平台上。为了解决计算问题,WebGPU 技术也在不断成熟,使得在浏览器中进行原生 GPU 计算成为可能。

我们正目睹客户端侧所需的各项要素逐渐就位,无论是硬件层面还是浏览器生态方面。尽管如此,我们仍需克服诸多挑战,例如:

  • 我们需要在没有相关 GPU 加速 Python 框架的情况下运行这些模型。
  • 大多数 AI 框架高度依赖由硬件厂商维护的优化计算库。我们需要从零开始构建。为了获得最佳性能,我们可能还需要针对不同的客户端环境生成不同的版本。
  • 必须精心规划内存使用,以确保模型能够完整加载到内存中。

我们并不希望只为单一模型实现这一点。相反,我们希望提供一种可重复、可扩展、可组合的工作流程,使任何人都能在“Python 优先”的环境中轻松开发和优化这些模型,并将其普遍部署到包括 Web 在内的任何平台上。

开始使用

我们提供了一个 Jupyter 笔记本,它将引导您完成整个流程,包括:

  • 详细阐述 Web ML 模型部署的关键点,以及我们如何满足这些要求;
  • 导入稳定扩散模型;
  • 对模型进行优化;
  • 构建模型;
  • 使用原生 GPU 运行时在本地部署模型;以及
  • 使用 WebGPU 运行时在 Web 上部署模型。

如果您希望通过命令行完成这些步骤,请按照以下命令操作:

命令
  • 安装 TVM Unity。您可以:

    • 使用 pip3 install mlc-ai-nightly -f https://mlc.ai/wheels 安装 TVM Unity 的 wheel 包,或者
    • 参照 TVM 官方文档 从源码编译。请注意,在 git clone 之后,请使用 git checkout origin/unity 切换到 TVM Unity 分支。
  • 导入、优化并构建稳定扩散模型:

    python3 build.py
    

    默认情况下,build.py 会将 apple/m2-gpu 作为构建目标。您也可以通过以下命令指定 CUDA 目标:

    python3 build.py --target cuda
    
  • 使用原生 GPU 运行时在本地部署模型:

    python3 deploy.py --prompt "A photo of an astronaut riding a horse on mars."
    

    您可以替换提示词为自己想要的内容,还可以选择性地使用 --negative-prompt "Your negative prompt" 来指定负面提示词。

  • 要使用 WebGPU 运行时在 Web 上部署模型,演示笔记本 的最后一节“Deploy on web”提供了完整的说明,您也可以参考此处的简明指令:

    说明

    首先,让我们安装所有必要的依赖项:

    1. emscripten。这是一个基于 LLVM 的编译器,可以将 C/C++ 源代码编译成 WebAssembly。
      • 请按照 安装说明 安装最新版本的 emsdk。
      • 执行 source path/to/emsdk_env.sh 以激活 emsdk_env.sh,从而使 emcc 能够通过 PATH 访问,并确保 emcc 命令正常运行。
    2. Rust
    3. wasm-pack。它用于构建由 Rust 生成的 WebAssembly,而在本例中则用于分词器。
    4. 按照 官方指南 安装 Jekyll。这是我们用来搭建网站的工具包。
    5. 使用以下命令安装 jekyll-remote-theme:
      gem install jekyll-remote-theme
      
    6. 安装 Chrome Canary。它是 Chrome 的开发者版本,支持 WebGPU 功能。

    您可以通过分别在终端中尝试运行 emccjekyllwasm-pack 来验证是否成功安装。

    接下来,准备 Web 构建所需的所有依赖项:

    ./scripts/prep_deps.sh
    

    现在,我们可以将模型构建为 WebGPU 后端,并以 WebAssembly 文件格式导出可执行文件:

    python3 build.py --target webgpu
    

    最后一步是设置站点:

    ./scripts/local_deploy_site.sh
    

    站点搭建完成后,您可以在 Chrome Canary 中访问 localhost:8888/,在本地机器上试用演示。请务必使用以下命令启动 Chrome Canary,以关闭 Chrome 的健壮性检查:

    /Applications/Google\ Chrome\ Canary.app/Contents/MacOS/Google\ Chrome\ Canary --enable-dawn-features=disable_robustness
    

怎么做?

这里的关键技术是机器学习编译(MLC)。我们的解决方案建立在开源生态系统的肩膀之上,包括 PyTorch、Hugging Face diffusers 和 tokenizers、Rust、Wasm 以及 WebGPU。主要流程基于 Apache TVM Unity 构建,这是 Apache TVM 中一项令人振奋的持续开发工作。

  • 我们从 Hugging Face 的 diffuser 库中获取 Runway 的稳定扩散 v1-5 模型。
  • 我们使用 TorchDynamoTorch FX 将关键模型组件捕获为 TVM 中的 IRModule。
  • TVM 的 IRModule 中的每个函数都可以进一步转换并生成可运行的代码,这些代码可以在任何支持最小 TVM 运行时的环境中通用部署(JavaScript 就是其中之一)。
  • 我们使用 TensorIRMetaSchedule 来构建自动化方案以生成优化后的程序。这些转换会在特定设备上通过原生 GPU 运行时进行调优,然后用于生成优化的 GPU 着色器。我们提供一个记录这些转换的数据库,以便在无需再次调优的情况下完成新的构建。
  • 我们构建了静态内存规划优化,以实现跨多层的内存复用。
  • 我们使用 Emscripten 和 TypeScript 构建了一个 TVM Web 运行时,用于部署生成的模块。
  • 我们还利用了来自 Hugging Face 的 rust tokenizers 库Wasm 移植版

工作流

这个工作流的所有部分都是用 Python 完成的,当然,最后一部分除外——它构建了一个约 400 行的 JavaScript 应用程序来将各个部分连接起来。这也是一个有趣的交互式开发过程,可以不断引入新模型。

这一切都得益于我们所依赖的开源生态系统。特别是,我们大量使用了 TVM Unity,这是 TVM 项目中一项令人兴奋的最新进展,它支持这种以 Python 为主导的交互式 MLC 开发体验,使我们能够轻松地用 Python 组合新的优化方法,并逐步将我们的应用推向 Web 平台。TVM Unity 还提供了一种简便的方式,可以在生态系统中组合新的解决方案。例如,未来我们可以轻松地将其他 WebGPU 着色器生成器或着色器库引入到这个工作流中。

与原生 GPU 运行时的对比、局限性及机遇

除了 WebGPU 运行时之外,我们还提供了使用本地 GPU 运行时进行原生部署的选项。这些选项既可以作为在原生环境中部署的工具,也可以作为比较原生 GPU 驱动性能与 WebGPU 性能的参考点。

WebGPU 通过将 WGSL(WebGPU 着色语言)着色器转换为原生着色器来工作。因此,理论上,WebGPU 运行时与原生环境之间可以实现零差距。然而,如果我们直接使用 Chrome 在 Apple Silicon 上查看当前演示,会发现性能下降了约 3 倍。这是因为 Chrome 的 WebGPU 实现会对所有数组索引访问插入边界检查,例如将 a[i] 替换为 a[min(i, a.size)]。理想情况下,下游的着色器编译器应该能够优化掉这些边界检查,但遗憾的是,目前并未做到。随着 WebGPU 实现的逐渐成熟,能够更好地检查索引访问范围并移除此类检查后,这一差距将会得到解决。

您可以通过使用特殊标志启动 Chrome 来绕过这个问题(感谢 Dawn 开发人员提供的提示),即完全退出 Chrome,然后在命令行中输入:

/path/to/chrome-canary --enable-dawn-features=disable_robustness

这样您就会发现执行速度与原生 GPU 环境一样快。我们预计随着 WebGPU 的成熟,这个问题将会得到解决。

我们正目睹一场我们认为即将爆发的变革的曙光。WebGPU 仍在不断发展(尽管今年已接近正式发布),目前仅可通过 Chrome Canary 使用,且可能不够稳定。它仍然存在一些限制,比如仅支持 FP32(FP16 着色器扩展已在规范中提出,但尚未实现)。这里的稳定扩散模型需要配备具有足够显存的 GPU(至少 8GB)。到目前为止,我们只在 Apple Silicon 上测试过我们的解决方案。此外,还有机会支持诸如 FlashAttention 和量化等高级优化技术,以进一步提升系统性能。

这些都为当前解决方案带来了数倍的性能提升机会。我们相信其中许多问题在不久的将来都能够得到解决。即使只是该解决方案中的单个组件,也仍然具有实用价值。例如,用户可以选择仅部署模型的文本编码器部分。此外,同样的以 Python 为主导的开发和通用部署流程也可以用于将机器学习模型引入其他环境,比如新型硬件或移动设备。最后,相同的机器学习编译堆栈也可用于服务器级应用场景,从而优化服务器工作负载。

致谢

本项目得以实现,离不开以下机构的合作:

CMU 计算机科学学院 Catalyst MLC OctoML

本项目之所以能够实现,完全归功于我们所依托的开源生态系统。我们要感谢 Apache TVM 社区以及 TVM Unity 项目的开发者们。同时也要感谢那些公开提供这些模型的开源机器学习社区成员,以及让这些模型易于获取的 PyTorch 和 Hugging Face 社区。此外,还要感谢 Mithril Security 对分词器 Wasm 移植工作的贡献。我们也感谢 WebAssembly、Emscripten、Rust 和 WebGPU 社区的支持。最后,特别感谢 Dawn 开发人员,他们及时解答了我们在使用 Chrome 时遇到的问题。

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|1周前
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|2周前
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

160.8k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

109.2k|★★☆☆☆|昨天
开发框架图像Agent

gemini-cli

gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。

100.8k|★★☆☆☆|1周前
插件Agent图像

markitdown

MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器

93.4k|★★☆☆☆|1周前
插件开发框架