mirror of
https://github.com/vladmandic/automatic
synced 2026-09-19 17:24:32 +02:00
unified move-model
This commit is contained in:
@@ -97,8 +97,7 @@ def set_adapter(adapter_name: str = 'None'):
|
||||
)
|
||||
orig_pipe = shared.sd_model
|
||||
shared.sd_model = new_pipe
|
||||
if not ((shared.opts.diffusers_model_cpu_offload or shared.cmd_opts.medvram) or (shared.opts.diffusers_seq_cpu_offload or shared.cmd_opts.lowvram)):
|
||||
shared.sd_model.to(shared.device)
|
||||
sd_models.move_model(shared.sd_model, devices.device) # move pipeline to device
|
||||
sd_models.copy_diffuser_options(new_pipe, orig_pipe)
|
||||
sd_models.set_diffuser_options(shared.sd_model, vae=None, op='model')
|
||||
shared.log.debug(f'AnimateDiff create pipeline: adapter="{loaded_adapter}"')
|
||||
|
||||
@@ -14,7 +14,7 @@ from diffusers.schedulers import KarrasDiffusionSchedulers
|
||||
from diffusers.utils import is_accelerate_available, is_accelerate_version
|
||||
from diffusers.utils.torch_utils import randn_tensor
|
||||
from diffusers.pipelines.pipeline_utils import DiffusionPipeline, ImagePipelineOutput
|
||||
from modules import scripts, processing, shared, sd_models
|
||||
from modules import scripts, processing, shared, sd_models, devices
|
||||
|
||||
|
||||
### Class definition
|
||||
@@ -1268,8 +1268,7 @@ class Script(scripts.Script):
|
||||
force_zeros_for_empty_prompt=shared.opts.diffusers_force_zeros,
|
||||
)
|
||||
shared.sd_model = new_pipe
|
||||
if not ((shared.opts.diffusers_model_cpu_offload or shared.cmd_opts.medvram) or (shared.opts.diffusers_seq_cpu_offload or shared.cmd_opts.lowvram)):
|
||||
shared.sd_model.to(shared.device)
|
||||
sd_models.move_model(shared.sd_model, devices.device) # move pipeline to device
|
||||
sd_models.set_diffuser_options(shared.sd_model, vae=None, op='model')
|
||||
shared.log.debug(f'DemoFusion create: pipeline={shared.sd_model.__class__.__name__}')
|
||||
processed = processing.process_images(p)
|
||||
|
||||
+3
-3
@@ -1,6 +1,6 @@
|
||||
import gradio as gr
|
||||
from diffusers.pipelines import StableDiffusionPipeline, StableDiffusionXLPipeline # pylint: disable=unused-import
|
||||
from modules import shared, scripts, processing, sd_models
|
||||
from modules import shared, scripts, processing, sd_models, devices
|
||||
|
||||
"""
|
||||
This is a simpler template for script for SD.Next that implements a custom pipeline
|
||||
@@ -109,8 +109,8 @@ class Script(scripts.Script):
|
||||
)
|
||||
sd_models.copy_diffuser_options(shared.sd_model, orig_pipeline) # copy options from original pipeline
|
||||
sd_models.set_diffuser_options(shared.sd_model) # set all model options such as fp16, offload, etc.
|
||||
if not ((shared.opts.diffusers_model_cpu_offload or shared.cmd_opts.medvram) or (shared.opts.diffusers_seq_cpu_offload or shared.cmd_opts.lowvram)):
|
||||
shared.sd_model.to(shared.device) # move pipeline if needed, but don't touch if its under automatic managment
|
||||
sd_models.move_model(shared.sd_model, devices.device) # move pipeline to device
|
||||
shared.sd_model.to(dtype=devices.dtype)
|
||||
|
||||
# if pipeline also needs a specific type, you can set it here, but not commonly needed
|
||||
# shared.sd_model = sd_models.set_diffuser_pipe(shared.sd_model, sd_models.DiffusersTaskType.IMAGE_2_IMAGE)
|
||||
|
||||
@@ -85,8 +85,7 @@ class Script(scripts.Script):
|
||||
motion_adapter = diffusers.MotionAdapter.from_pretrained(repo_id)
|
||||
motion_adapter.to(devices.device, devices.dtype)
|
||||
shared.sd_model = sd_models.switch_pipe(diffusers.PIAPipeline, shared.sd_model, { 'motion_adapter': motion_adapter })
|
||||
if not ((shared.opts.diffusers_model_cpu_offload or shared.cmd_opts.medvram) or (shared.opts.diffusers_seq_cpu_offload or shared.cmd_opts.lowvram)):
|
||||
shared.sd_model.to(devices.device, devices.dtype)
|
||||
sd_models.move_model(shared.sd_model, devices.device) # move pipeline to device
|
||||
if num_frames > 0:
|
||||
p.task_args['num_frames'] = num_frames
|
||||
p.task_args['image'] = p.init_images[0]
|
||||
@@ -111,8 +110,8 @@ class Script(scripts.Script):
|
||||
sd_models.copy_diffuser_options(pipe, shared.sd_model)
|
||||
sd_models.set_diffuser_options(pipe)
|
||||
shared.sd_model = pipe
|
||||
shared.sd_model.to(devices.device, torch.float32)
|
||||
devices.torch_gc()
|
||||
sd_models.move_model(shared.sd_model, devices.device) # move pipeline to device
|
||||
shared.sd_model.to(dtype=torch.float32)
|
||||
if num_frames > 0:
|
||||
p.task_args['image'] = p.init_images[0]
|
||||
p.task_args['num_frames'] = num_frames
|
||||
|
||||
Reference in New Issue
Block a user