--- tags: - text-to-image - stable-diffusion - sdxl - LoRA - dall-e license: creativeml-openrail-m --- # ACKERMAN - SDXL 1.0 ![row01](ACKERMAN.png) # PINK CRATES CARD ![row01](sd1.png) # INK CRATES CARD ![row01](sd2.png) # CYBERPUNK CRATES CARD ![row01](sd3.png) # ASTHETIC GOLD CRATES CARD ![row01](sd4.png) # SUPER HEROS CRATES CARD ![row01](sd5.png) # PHOTOGRAPHIC CRATES CARD ![row01](sd6.png) # EVEN GENERATE SUNSETS ![row01](sd7.jpeg) ## MODEL 0 ![pipeline](pipeline.png) [SDXL] consists of an pipeline for latent diffusion: In a first step, the base model is used to generate (noisy) latents, which are then further processed with a refinement model specialized for the final denoising steps. Note that the base model can be used as a standalone module. Alternatively, we can use a two-stage pipeline as follows: First, the base model is used to generate latents of the desired output size. In the second step, we use a specialized high-resolution model and apply a technique called SDEdit to the latents generated in the first step, using the same prompt. This technique is slightly slower than the first one, as it requires more function evaluations. ### MODEL DESCRIPTION - **Build Organization:** LABS.ML (u_id: prithivMLmods) - **Model type:** Diffusion-based text-to-image generative model - **License:** [CreativeML Open RAIL++-M License] - **Model Description:** This is a model that can be used to generate and modify images based on text prompts. - **Resources for more information:** prithivMLmods/Ackerman-Stable-Diffusion-XL-1.0 ### MODEL REFERENCES [ IDEATION ] - **Previous Model Repository:** https://huggingface.co/prithivMLmods/Yeager-StableDiffusion-ML676 - **Demo:** https://huggingface.co/blog/stable_diffusion - **Working References:** -- stabilityai/stable-diffusion-xl-base-1.0 -- ## WORKING MODEL ![comparison](comparison.png) The figure above evaluates user preference for SDXL (with and without refinement) over SDXL 0.9 and Stable Diffusion 1.5 and 2.1. The SDXL base model performs significantly better than the previous variants, and the model combined with the refinement module achieves the best overall performance. ### ๐Ÿงจ DIFFUSERS Make sure to upgrade diffusers to >= 0.19.0: ``` pip install diffusers --upgrade ``` In addition make sure to install `transformers`, `safetensors`, `accelerate` as well as the invisible watermark: ``` pip install invisible_watermark transformers accelerate safetensors ``` To just use the base model, you can run: ```py from diffusers import DiffusionPipeline import torch pipe = DiffusionPipeline.from_pretrained("prithivMLmods/Ackerman-StableDiffusion-SDXL1.0", torch_dtype=torch.float16, use_safetensors=True, variant="fp16") pipe.to("cuda") # if using torch < 2.0 # pipe.enable_xformers_memory_efficient_attention() prompt = "An astronaut riding a green horse" images = pipe(prompt=prompt).images[0] ``` To use the whole base + refiner pipeline as an ensemble of experts you can run: ```py from diffusers import DiffusionPipeline import torch # load both base & refiner base = DiffusionPipeline.from_pretrained( "prithivMLmods/Ackerman-StableDiffusion-SDXL1.0", torch_dtype=torch.float16, variant="fp16", use_safetensors=True ) base.to("cuda") refiner = DiffusionPipeline.from_pretrained( "prithivMLmods/Ackerman-StableDiffusion-SDXL1.0", text_encoder_2=base.text_encoder_2, vae=base.vae, torch_dtype=torch.float16, use_safetensors=True, variant="fp16", ) refiner.to("cuda") # Define how many steps and what % of steps to be run on each experts (80/20) here n_steps = 40 high_noise_frac = 0.8 prompt = "A majestic lion jumping from a big stone at night" # run both experts image = base( prompt=prompt, num_inference_steps=n_steps, denoising_end=high_noise_frac, output_type="latent", ).images image = refiner( prompt=prompt, num_inference_steps=n_steps, denoising_start=high_noise_frac, image=image, ).images[0] ``` When using `torch >= 2.0`, you can improve the inference speed by 20-30% with torch.compile. Simple wrap the unet with torch compile before running the pipeline: ```py pipe.unet = torch.compile(pipe.unet, mode="reduce-overhead", fullgraph=True) ``` If you are limited by GPU VRAM, you can enable *cpu offloading* by calling `pipe.enable_model_cpu_offload` instead of `.to("cuda")`: ```diff - pipe.to("cuda") + pipe.enable_model_cpu_offload() ``` For more information on how to use Stable Diffusion XL with `diffusers`, please have a look at [the Stable Diffusion XL Docs](https://huggingface.co/docs/diffusers/api/pipelines/stable_diffusion/stable_diffusion_xl). ### OPTIMUM [Optimum](https://github.com/huggingface/optimum) provides a Stable Diffusion pipeline compatible with both [OpenVINO](https://docs.openvino.ai/latest/index.html) and [ONNX Runtime](https://onnxruntime.ai/). #### OPEN-VINO Open VINO To install Optimum with the dependencies required for OpenVINO : ```bash pip install optimum[openvino] ``` To load an OpenVINO model and run inference with OpenVINO Runtime, you need to replace `StableDiffusionXLPipeline` with Optimum `OVStableDiffusionXLPipeline`. In case you want to load a PyTorch model and convert it to the OpenVINO format on-the-fly, you can set `export=True`. ```diff - from diffusers import StableDiffusionXLPipeline + from optimum.intel import OVStableDiffusionXLPipeline model_id = "prithivMLmods/Ackerman-StableDiffusion-SDXL1.0" - pipeline = StableDiffusionXLPipeline.from_pretrained(model_id) + pipeline = OVStableDiffusionXLPipeline.from_pretrained(model_id) prompt = "A majestic lion jumping from a big stone at night" image = pipeline(prompt).images[0] ``` You can find more examples (such as static reshaping and model compilation) in optimum [documentation](https://huggingface.co/docs/optimum/main/en/intel/inference#stable-diffusion-xl). #### ONNX To install Optimum with the dependencies required for ONNX Runtime inference : ```bash pip install optimum[onnxruntime] ``` To load an ONNX model and run inference with ONNX Runtime, you need to replace `StableDiffusionXLPipeline` with Optimum `ORTStableDiffusionXLPipeline`. In case you want to load a PyTorch model and convert it to the ONNX format on-the-fly, you can set `export=True`. ```diff - from diffusers import StableDiffusionXLPipeline + from optimum.onnxruntime import ORTStableDiffusionXLPipeline model_id = "prithivMLmods/Ackerman-StableDiffusion-SDXL1.0" - pipeline = StableDiffusionXLPipeline.from_pretrained(model_id) + pipeline = ORTStableDiffusionXLPipeline.from_pretrained(model_id) prompt = "A majestic lion jumping from a big stone at night" image = pipeline(prompt).images[0] ``` You can find more examples in optimum [documentation](https://huggingface.co/docs/optimum/main/en/onnxruntime/usage_guides/models#stable-diffusion-xl). ## USES ### DIRECT USE The model is intended for research purposes only. Possible research areas and tasks include - Generation of artworks and use in design and other artistic processes. - Applications in educational or creative tools. - Research on generative models. - Safe deployment of models which have the potential to generate harmful content. - Probing and understanding the limitations and biases of generative models. Excluded uses are described below. ### OUT-OF-SCOPE USE The model was not trained to be factual or true representations of people or events, and therefore using the model to generate such content is out-of-scope for the abilities of this model. ## GPU COMPUTATION SCHEMA To calculate the computational time for GPU-based machine learning tasks such as stable diffusion, you need to consider several factors including the complexity of your model, the size of your dataset, the hardware specifications of your GPU, and the efficiency of your implementation. Here's a general formula to estimate the computational time: Computational Time = Number of iterations ร— Time per iteration / Number of GPUโ€™s Where: Number of iterations: This refers to the number of iterations or epochs your machine learning algorithm will run for. Time per iteration: This is the time taken by your algorithm to complete one iteration on a single GPU. Number of GPUs: The number of GPUs you're using for computation. ### LIMITATIONS - The model does not achieve perfect latent sync - The model cannot render legible text - Faces and people in general may not be generated properly. - The autoencoding part of the model is lossy. ### BIAS While the capabilities of image generation models are impressive, they can also reinforce or exacerbate social biases. ## MODEL STRUCTURE Files & Version Integrated : feature_extractor (folder) |- preprocessor_config.json (file) safety_checker/ |--- config.json (4.72 kB) |--- demo.txt (0 Bytes) |--- model.fp16.safetensors (608 MB) [LFS] |--- model.safetensors (1.22 GB) [LFS] |--- pytorch_model.bin (1.22 GB) [LFS] |--- pytorch_model.fp16.bin scheduler โ””โ”€โ”€ scheduler_config.json text_encoder/ โ”œโ”€โ”€ config.json (616 Bytes) โ”œโ”€โ”€ demo.txt (0 Bytes) โ””โ”€โ”€ pytorch_model.bin (246 MB) [Large File Storage (LFS)] tokenizer โ”œโ”€โ”€ demo.txt (0 Bytes) โ”œโ”€โ”€ merges.txt (525 kB) โ”œโ”€โ”€ special_tokens_map.json (472 Bytes) โ”œโ”€โ”€ tokenizer_config.json (737 Bytes) โ””โ”€โ”€ vocab.json unet/ โ”œโ”€โ”€ config.json โ”œโ”€โ”€ demo.txt โ””โ”€โ”€ diffusion_pytorch_model.bin vae/ |__ config.json |__ demo.txt |__ diffusion_pytorch_model.bin . ## CONCLUSION The model is age violated, and the results to your prompt are at your own risk. [ Think before prompting the violated content ] The model is re-designed [ SDXL 1.0 ] only for productivity purposes.