mlc-ai / web-stable-diffusion

Bringing stable diffusion models to web browsers. Everything runs inside the browser with no server support.
https://mlc.ai/web-stable-diffusion
Apache License 2.0
3.51k stars 220 forks source link

Support importing SD 2.1 #29

Closed masahi closed 1 year ago

masahi commented 1 year ago

Updated the SD UNet definition to support both v1.5 and v2.1.

Tested with

import tvm
from diffusers import StableDiffusionPipeline, EulerDiscreteScheduler
import web_stable_diffusion.trace as trace
from tvm.relax.frontend import detach_params

# pipe = StableDiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5")

model_id = "stabilityai/stable-diffusion-2-1-base"
scheduler = EulerDiscreteScheduler.from_pretrained(model_id, subfolder="scheduler")
pipe = StableDiffusionPipeline.from_pretrained(model_id, scheduler=scheduler)

unet, params_unet = detach_params(trace.unet_latents_to_noise_pred(pipe, "mps"))

@spectrometerHBH @MasterJH5574 @tqchen