mirror of
				https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
				synced 2025-11-04 12:03:36 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			47 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
from torch.utils.checkpoint import checkpoint
 | 
						|
 | 
						|
import ldm.modules.attention
 | 
						|
import ldm.modules.diffusionmodules.openaimodel
 | 
						|
 | 
						|
 | 
						|
def BasicTransformerBlock_forward(self, x, context=None):
 | 
						|
    return checkpoint(self._forward, x, context)
 | 
						|
 | 
						|
 | 
						|
def AttentionBlock_forward(self, x):
 | 
						|
    return checkpoint(self._forward, x)
 | 
						|
 | 
						|
 | 
						|
def ResBlock_forward(self, x, emb):
 | 
						|
    return checkpoint(self._forward, x, emb)
 | 
						|
 | 
						|
 | 
						|
stored = []
 | 
						|
 | 
						|
 | 
						|
def add():
 | 
						|
    if len(stored) != 0:
 | 
						|
        return
 | 
						|
 | 
						|
    stored.extend([
 | 
						|
        ldm.modules.attention.BasicTransformerBlock.forward,
 | 
						|
        ldm.modules.diffusionmodules.openaimodel.ResBlock.forward,
 | 
						|
        ldm.modules.diffusionmodules.openaimodel.AttentionBlock.forward
 | 
						|
    ])
 | 
						|
 | 
						|
    ldm.modules.attention.BasicTransformerBlock.forward = BasicTransformerBlock_forward
 | 
						|
    ldm.modules.diffusionmodules.openaimodel.ResBlock.forward = ResBlock_forward
 | 
						|
    ldm.modules.diffusionmodules.openaimodel.AttentionBlock.forward = AttentionBlock_forward
 | 
						|
 | 
						|
 | 
						|
def remove():
 | 
						|
    if len(stored) == 0:
 | 
						|
        return
 | 
						|
 | 
						|
    ldm.modules.attention.BasicTransformerBlock.forward = stored[0]
 | 
						|
    ldm.modules.diffusionmodules.openaimodel.ResBlock.forward = stored[1]
 | 
						|
    ldm.modules.diffusionmodules.openaimodel.AttentionBlock.forward = stored[2]
 | 
						|
 | 
						|
    stored.clear()
 | 
						|
 |