Unverified Commit 96ee3eff authored by AUTOMATIC1111's avatar AUTOMATIC1111 Committed by GitHub
Browse files

Merge pull request #13865 from Gothos/master

Add support for SSD-1B
parents c3699d4f ff805d8d
Loading
Loading
Loading
Loading
+5 −0
Original line number Original line Diff line number Diff line
## 1.6.1

### Bug Fixes:
 * fix an error causing the webui to fail to start ([#13839](https://github.com/AUTOMATIC1111/stable-diffusion-webui/pull/13839))

## 1.6.0
## 1.6.0


### Features:
### Features:
+12 −0
Original line number Original line Diff line number Diff line
@@ -184,6 +184,18 @@ class StableDiffusionModelHijack:
            errors.display(e, "applying cross attention optimization")
            errors.display(e, "applying cross attention optimization")
            undo_optimizations()
            undo_optimizations()
            
            
    def conv_ssd(self, m):
            delattr(m.model.diffusion_model.middle_block, '1')
            delattr(m.model.diffusion_model.middle_block, '2')
            for i in ['9','8','7','6','5','4']:
                delattr(m.model.diffusion_model.input_blocks[7][1].transformer_blocks,i)
                delattr(m.model.diffusion_model.input_blocks[8][1].transformer_blocks,i)
                delattr(m.model.diffusion_model.output_blocks[0][1].transformer_blocks,i)
                delattr(m.model.diffusion_model.output_blocks[1][1].transformer_blocks,i)
            delattr(m.model.diffusion_model.output_blocks[4][1].transformer_blocks,'1')
            delattr(m.model.diffusion_model.output_blocks[5][1].transformer_blocks,'1')
            devices.torch_gc()

    def hijack(self, m):
    def hijack(self, m):
        conditioner = getattr(m, 'conditioner', None)
        conditioner = getattr(m, 'conditioner', None)
        if conditioner:
        if conditioner:
+5 −2
Original line number Original line Diff line number Diff line
@@ -352,10 +352,13 @@ def load_model_weights(model, checkpoint_info: CheckpointInfo, state_dict, timer
    model.is_sdxl = hasattr(model, 'conditioner')
    model.is_sdxl = hasattr(model, 'conditioner')
    model.is_sd2 = not model.is_sdxl and hasattr(model.cond_stage_model, 'model')
    model.is_sd2 = not model.is_sdxl and hasattr(model.cond_stage_model, 'model')
    model.is_sd1 = not model.is_sdxl and not model.is_sd2
    model.is_sd1 = not model.is_sdxl and not model.is_sd2

    model.is_ssd = model.is_sdxl and 'model.diffusion_model.middle_block.1.transformer_blocks.0.attn1.to_q.weight' not in state_dict.keys()
    if model.is_sdxl:
    if model.is_sdxl:
        sd_models_xl.extend_sdxl(model)
        sd_models_xl.extend_sdxl(model)
    
    
    if model.is_ssd:
        sd_hijack.model_hijack.conv_ssd(model)
        
    if shared.opts.sd_checkpoint_cache > 0:
    if shared.opts.sd_checkpoint_cache > 0:
        # cache newly loaded model
        # cache newly loaded model
        checkpoints_loaded[checkpoint_info] = state_dict.copy()
        checkpoints_loaded[checkpoint_info] = state_dict.copy()
+4 −1
Original line number Original line Diff line number Diff line
@@ -22,7 +22,10 @@ class WebuiSdModel(LatentDiffusion):
    """structure with additional information about the file with model's weights"""
    """structure with additional information about the file with model's weights"""


    is_sdxl: bool
    is_sdxl: bool
    """True if the model's architecture is SDXL"""
    """True if the model's architecture is SDXL or SSD"""
    
    is_ssd: bool
    """True if the model is SSD"""


    is_sd2: bool
    is_sd2: bool
    """True if the model's architecture is SD 2.x"""
    """True if the model's architecture is SD 2.x"""