vladmandic / automatic

SD.Next: Advanced Implementation of Stable Diffusion and other Diffusion-based generative image models
https://github.com/vladmandic/automatic
GNU Affero General Public License v3.0
5.72k stars 426 forks source link

[Feature]: Process Image Tab - Stop/Interrupt button #804

Closed HarrisTerry closed 1 year ago

HarrisTerry commented 1 year ago

Feature description

Process Image tab needs a stop/interrupt button if possible, as when using batch it can be a pain to stop it, needing to restart the program to halt it since at times I batch process quite a few images and waiting to finish is not possible.

Thank you very much

Version Platform Description

Win 11, 3070ti 8GB, i7 12700 5ghz 10:10:40-216318 INFO Latest published version: https://github.com/vladmandic/automatic/commit/22e588091376a458ae529d18c5ffaee5f0dcaa1b 2023-05-06T12:51:23Z

DirtyHamster commented 1 year ago

I actually have to agree I tried to run a sizable batch (5000 small images) and it disregards any safety for hardware temperatures. Stopping it required to kill the command prompt it was running in. Restarting from where it was forcibly stopped required manually going through the output and input folders to trim out the already finished work.

While I don't mind watching and monitoring the temperatures on a large run it would be nice if it could at least be stopped and started keeping it's query log intact. Beyond that a duty cycle might be more useful for large batches giving the hardware a chance to cool if it hits critical temperature limits. So that it might run N images then cool for a variable of time then restart the processing itself.

As it is right now it will just try to plow through the query without regards to temps.

vladmandic commented 1 year ago

@DirtyHamster sorry, but any HW should be able to run safely without user-mode app checking for things like you mention. If you're running into high temperatures improve cooling or reduce overclocking or core voltages. That is NOT what app should worry about.

I'm all for giving users control over user operations (and stop is one of them), but your use-case is not what app should cater to.

DirtyHamster commented 1 year ago

I'm not overclocking though. I'm running a fairly stock setup for I7-9700K, 32gb, nvidia 4070. The only thing even slightly out of the norm is a raid array. I have a fairly open cooler master case with plenty of fans and space inside for airflow and it's clean. I don't normally have any heating issues.

byteconcepts commented 1 year ago

I can also confirm that sometimes the Stop Rendering button does not work any more. But I'm only always render a batch of four images on a GTX 1060 mobile. - But this is not dependent on the Laptop's temperature. I have to wait until all four renders have finished or have to kill the cmd window which started everything.

And unfortunately gradio is a pain in the ass as it loads and loads and loads some gui elements forever. It has been getting really worse with the last update. But I know that it's practically impossibe for this project to change that now.

updated: 2023-05-12 hash: a2485cf7 url: https://github.com/vladmandic/automatic/tree/master

arch: AMD64 cpu: Intel64 Family 6 Model 158 Stepping 10, GenuineIntel system: Windows

device: NVIDIA GeForce GTX 1060 (1) (compute_37) (6, 1) cuda: 11.8 cudnn: 8700 release: Windows-10-10.0.19044-SP0 python: 3.10.8

vladmandic commented 1 year ago

i've added interrupt/skip to processing tab.

but note how interrupt actually works - its not application that can abort anything in progress, its up to specific module to check if interrupt is requested. for example, when you press interrupt, app marks that interrupt is requested. and then txt2img (or anything) would check in its loop which runs for each iteration if interrupt flag is set.

so for long running operations that are stuck inside single operation, there is no way to interrupt them. for txt2img or img2img that check happens on each sampler step. for processing, well, it depends on upscaler or operation used.

you can monitor what's going on if you run webui --debug and you'll see Interrupt requested message printed.

@byteconcepts no, it doesn't work that way. and yes, gradio is a pain, but lets stay on-topic. besides, this request was about process tab.