sdwebui-w-horde / sd-webui-stable-horde-worker

Stable Horde Unofficial Worker Bridge as Stable Diffusion WebUI (AUTOMATIC1111) Extension
GNU Affero General Public License v3.0
60 stars 19 forks source link

[Feature]: Reject requests based on sampling steps #84

Open axemaster opened 1 year ago

axemaster commented 1 year ago

Is there existing issue for this?

Feature Description

I know what my system is capable of delivering on time. And when a request at my max reasonable resolution comes in with 100+ sampling steps there's no way it's going to get done in the ~3 minute limit enforced by the horde. So the resulting images get rejected with

"Failed to submit job with status code400: Processing Generation with ID some-guid took too long to process"

There's no point in processing these requests.

The desired feature is to set a max step count in the extension settings.

Proposed Solution

The desired feature is to set a max step count in the extension settings.

Requests popped over that limit get rejected or simply discarded if there is no rejection support in the API.

Alternatively, such requests would simply have the step count reduced to the set limit.

Additional Information

No response

MaikoTan commented 1 year ago

This sounds good. Also we could now report faulted to Stable Horde when we found a job that is not able to be processed on our side. So this is not difficult to implement.

But I think would it be better to implement this on Stable Horde side?


cc @db0

db0 commented 1 year ago

The idea is that your system should NOT be picking up jobs it cannot implement in a reasonable amount of time. If this is happening, then your GPU is too slow to use on the AI Horde and you should reduce your max_power accordingly.

As steps scales lineary, if you're running out of time at 100 steps, it also means you're comparatively very slow at 30 steps as well.

For systems which are too slow, there's two options.

  1. Reduce the max_power as higher resolutions take exponentially longer
  2. If even at 8 max_power your system is getting timed out regularly, then your GPU is too slow, but you can use it to perform image interrogations instead which require far less power.
axemaster commented 1 year ago
  • Reduce the max_power as higher resolutions take exponentially longer
  • If even at 8 max_power your system is getting timed out regularly, then your GPU is too slow, but you can use it to perform image interrogations instead which require far less power.

Is Max Power the same as Max Pixels in the extension UI?

I don't see an option to do (only) interrogations. These are the choices of what to allow in the extension UI. Apparently txt2img is always enabled and interrogations is not even a choice.

You can see which features are supported in the README of this repo. Interrogate is not one of them.

axemaster commented 1 year ago

2. perform image interrogations instead which require far less power

Current horde status

There are 0 queued interrogation requests with 6 interrogation workers

This is some barren ground. No need to reduce the throughput of the horde when the popular queues are not getting dry.

db0 commented 1 year ago

I understand that interrogation is not in this repo, but it's anyway an option through our own AI Horde worker repo.

We plan to make interrogation much more valuable soon as well so it's use should start picking up.

Anyway I pushed a change now that can allow people to avoid slow workers if they need to, but the case remains that if you're consistently getting your requests timed out, you're too slow for your max resolution

Is Max Power the same as Max Pixels in the extension UI?

I don't know for sure but it sounds like it. The max_power is using the formula of 64x64x8*max_power. It's what we use in the AI Horde Worker to allow people to specify the max power without doing complex calculations in their head. In any case, max_power 8 corresponds to 512*512 pixels