mirror of
https://github.com/brycedrennan/imaginAIry
synced 2024-10-31 03:20:40 +00:00
316114e660
Wrote an openai script and custom prompt to generate them.
37 lines
1.1 KiB
Python
37 lines
1.1 KiB
Python
"""Wrappers for diffusion model integration"""
|
|
|
|
import torch
|
|
import torch.nn as nn
|
|
from packaging import version
|
|
|
|
OPENAIUNETWRAPPER = "sgm.modules.diffusionmodules.wrappers.OpenAIWrapper"
|
|
|
|
|
|
class IdentityWrapper(nn.Module):
|
|
def __init__(self, diffusion_model, compile_model: bool = False):
|
|
super().__init__()
|
|
torch_compile = (
|
|
torch.compile
|
|
if (version.parse(torch.__version__) >= version.parse("2.0.0"))
|
|
and compile_model
|
|
else lambda x: x
|
|
)
|
|
self.diffusion_model = torch_compile(diffusion_model)
|
|
|
|
def forward(self, *args, **kwargs):
|
|
return self.diffusion_model(*args, **kwargs)
|
|
|
|
|
|
class OpenAIWrapper(IdentityWrapper):
|
|
def forward(
|
|
self, x: torch.Tensor, t: torch.Tensor, c: dict, **kwargs
|
|
) -> torch.Tensor:
|
|
x = torch.cat((x, c.get("concat", torch.Tensor([]).type_as(x))), dim=1)
|
|
return self.diffusion_model(
|
|
x,
|
|
timesteps=t,
|
|
context=c.get("crossattn", None),
|
|
y=c.get("vector", None),
|
|
**kwargs,
|
|
)
|