| import os | |
| import gradio as gr | |
| import torch | |
| from torch import autocast | |
| from kandinsky2 import get_kandinsky2 | |
| import multiprocessing as mp | |
| device = torch.device('cpu') | |
| from kandinsky2 import get_kandinsky2 | |
| model = get_kandinsky2('cpu', task_type='text2img', model_version='2.1', use_flash_attention=False) | |
| def infer(args): | |
| prompt, negative = args | |
| with torch.no_grad(): | |
| images = model.generate_text2img(prompt, | |
| negative_prior_prompt=negative, | |
| negative_decoder_prompt=negative, | |
| num_steps=50, | |
| batch_size=1, | |
| guidance_scale=4, | |
| h=768, w=768, | |
| sampler='ddim_sampler', | |
| prior_cf_scale=1, | |
| prior_steps="25",) | |
| return images | |
| def run_inference(prompt, negative): | |
| args = [(prompt, negative) for i in range(2)] | |
| with mp.Pool(2) as p: | |
| results = p.map(infer, args) | |
| return results[0] | |
| css = """ | |
| .gradio-container { | |
| font-family: 'IBM Plex Sans', sans-serif; | |
| } | |
| .gr-button { | |
| color: white; | |
| border-color: black; | |
| background: black; | |
| } | |
| input[type='range'] { | |
| accent-color: black; | |
| } | |
| .dark input[type='range'] { | |
| accent-color: #dfdfdf; | |
| } | |
| .container { | |
| max-width: 730px; | |
| margin: auto; | |
| padding-top: 1.5rem; | |
| } | |
| #gallery { | |
| min-height: 22rem; | |
| margin-bottom: 15px; | |
| margin-left: auto; | |
| margin-right: auto; | |
| border-bottom-right-radius: .5rem !important; | |
| border-bottom-left-radius: .5rem !important; | |
| } | |
| #gallery>div>.h-full { | |
| min-height: 20rem; | |
| } | |
| .details:hover { | |
| text-decoration: underline; | |
| } | |
| .gr-button { | |
| white-space: nowrap; | |
| } | |
| .gr-button:focus { | |
| border-color: rgb(147 197 253 / var(--tw-border-opacity)); | |
| outline: none; | |
| box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); | |
| --tw-border-opacity: 1; | |
| --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); | |
| --tw-ring-shadow: var(--tw-ring-inset) 0 0 | |