mirror of
https://github.com/leejet/stable-diffusion.cpp.git
synced 2026-11-12 03:49:09 +00:00
feat(server): report generation stages independently of previews (#2303)
Co-authored-by: Maxime Dréan <maximedrean@proton.me>
This commit is contained in:
1 parent
b43ce4badd
commit
fc350be2ce
12 files changed
+259
-11
No files matched your search
@@ -775,6 +775,7 @@ Field types:
|
||||
| `queue_position` | `integer` |
|
||||
| `result` | `object \| null` |
|
||||
| `error` | `object \| null` |
|
||||
| `progress` | `object` |
|
||||
| `preview` | `object \| null` |
|
||||
|
||||
`created`, `started`, and `completed` are integer Unix timestamps in
|
||||
@@ -782,6 +783,57 @@ Field types:
|
||||
the elapsed generation time in seconds, including output encoding and excluding
|
||||
queue time.
|
||||
|
||||
`progress` is available independently of the preview setting, for both image
|
||||
and video jobs. Continue polling until `status` is terminal: a sampling pass
|
||||
can finish before decoding, ADetailer, or output encoding finishes.
|
||||
|
||||
| Field | Type | Notes |
|
||||
| --- | --- | --- |
|
||||
| `progress.stage` | `string` | Current execution stage; see below |
|
||||
| `progress.detail` | `string` | Stage detail, or an empty string |
|
||||
| `progress.pass` | `integer` | Sampling pass number within the job; zero before sampling |
|
||||
| `progress.completed` | `integer \| null` | Completed units in the current stage/pass |
|
||||
| `progress.total` | `integer \| null` | Actual total units, or null when unknown |
|
||||
| `progress.unit` | `string \| null` | `steps` for sampling, `images` for image output encoding; null when uncounted |
|
||||
| `progress.stage_elapsed_ms` | `integer` | Elapsed time in the current stage/detail/pass |
|
||||
| `progress.elapsed_ms` | `integer` | Job execution time, excluding queue time; zero before execution |
|
||||
|
||||
Stages include `queued`, `waiting` (waiting for the execution lock), `preparing`,
|
||||
`conditioning`, `sampling`, `vae_encode`, `vae_decode`, `audio_decode`,
|
||||
`upscaling`, `adetailer`, and `encoding`. Stages may repeat or be skipped.
|
||||
Details include `positive_prompt` / `negative_prompt` / `image_condition` for
|
||||
conditioning, `high_noise` / `low_noise` for two-stage sampling, and `image` /
|
||||
`video` for output encoding. During ADetailer, `detail` identifies the inner
|
||||
stage, such as `conditioning` or `sampling`. Clients should tolerate unknown
|
||||
stage, detail, and unit values.
|
||||
|
||||
Sampling counts completed logical steps using the actual schedule, including
|
||||
strength adjustments. Each new sampling pass increments `pass` and starts at
|
||||
zero, including batch items, highres passes, high/low-noise passes, and ADetailer
|
||||
passes. The ratio is **current-pass progress**, not overall job completion.
|
||||
The progress snapshot is published atomically. Preview metadata still describes
|
||||
the preview frame, which may be older than the current progress.
|
||||
|
||||
Unknown totals are represented by null counts, not an estimated percentage.
|
||||
For example, prompt encoding can report:
|
||||
|
||||
```json
|
||||
"progress": {
|
||||
"stage": "conditioning",
|
||||
"detail": "positive_prompt",
|
||||
"pass": 0,
|
||||
"completed": null,
|
||||
"total": null,
|
||||
"unit": null,
|
||||
"stage_elapsed_ms": 3200,
|
||||
"elapsed_ms": 4100
|
||||
}
|
||||
```
|
||||
|
||||
Elapsed times freeze when a job completes, fails, or is cancelled; the last
|
||||
stage is retained for inspection. Use `status` to determine the final outcome.
|
||||
Elapsed time alone does not indicate that computation is advancing.
|
||||
|
||||
`preview` sub-fields:
|
||||
|
||||
| Field | Type | Notes |
|
||||
|
||||
Reference in new issue
Block a user