optimize / app_tensorrt.py
zhiweili
fix torch_tensorrt
9b4449a
raw
history blame
2.4 kB
import torch
import os
from diffusers import (
DDPMScheduler,
StableDiffusionXLImg2ImgPipeline,
AutoencoderKL,
)
os.system("pip install torch_tensorrt==2.4.0")
import torch_tensorrt
BASE_MODEL = "stabilityai/stable-diffusion-xl-base-1.0"
device = "cuda"
vae = AutoencoderKL.from_pretrained(
"madebyollin/sdxl-vae-fp16-fix",
torch_dtype=torch.float16,
)
base_pipe = StableDiffusionXLImg2ImgPipeline.from_pretrained(
BASE_MODEL,
vae=vae,
torch_dtype=torch.float16,
variant="fp16",
use_safetensors=True,
)
base_pipe = base_pipe.to(device, silence_dtype_warnings=True)
base_pipe.scheduler = DDPMScheduler.from_pretrained(
BASE_MODEL,
subfolder="scheduler",
)
backend = "torch_tensorrt"
# print('Loading compiled model...')
# loadedModel = torch_tensorrt.load("compiled_pipe.ep").module()
# print('Compiled model loaded!')
def create_demo() -> gr.Blocks:
@spaces.GPU(duration=30)
def text_to_image(
prompt:str,
steps:int,
):
print('Compiling model...')
compiledModel = torch.compile(
base_pipe.unet,
backend=backend,
options={
"truncate_long_and_double": True,
"enabled_precisions": {torch.float32, torch.float16},
},
dynamic=False,
)
print('Model compiled!')
print('Saving compiled model...')
torch_tensorrt.save(compiledModel, "compiled_pipe.ep")
print('Compiled model saved!')
with gr.Blocks() as demo:
with gr.Row():
with gr.Column():
prompt = gr.Textbox(label="Prompt", placeholder="Write a prompt here", lines=2, value="A beautiful sunset over the city")
with gr.Column():
steps = gr.Slider(minimum=1, maximum=100, value=5, step=1, label="Num Steps")
g_btn = gr.Button("Generate")
with gr.Row():
with gr.Column():
generated_image = gr.Image(label="Generated Image", type="pil", interactive=False)
with gr.Column():
time_cost = gr.Textbox(label="Time Cost", lines=1, interactive=False)
g_btn.click(
fn=text_to_image,
inputs=[prompt, steps],
# outputs=[generated_image, time_cost],
outputs=[],
)
return demo