add CHANGELOG.md

master
unknown 2024-01-24 12:29:36 -06:00
parent 40d5afd7cb
commit 2c98129bb1
No known key found for this signature in database
GPG Key ID: CA376082283AF69A
3 changed files with 35 additions and 8 deletions

26
CHANGELOG.md Normal file
View File

@ -0,0 +1,26 @@
# Change Log
Formatting: [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), [Semantic Versioning](https://semver.org/spec/v2.0.0.html)
## [2.0.0] - 2024-1-24
### Added
- A changelog
- Faster model loading by hooking the model dropdown and immediately sending sync requests
- Popups in UI to lessen the need to check the status tab
- A debug option for resetting error correction at runtime
- Experimental "Pixel Cap" setting under worker config UI tab for limiting pixels allocated to a given worker
### Changed
- From a selectable script to an **AlwaysOn** style extension
- Thin-client mode will lack function for now
- Renamed main extension file from `extension.py` -> `distributed.py` to help with config grouping
- The log file (`distributed.log`) will max out at a size of 10MB and rotate over
- All relevant UI components are returned by ui() which has implications for API usage
### Fixed
- Connection check ping not always being sent on startup
- Old issue where benchmarking could become inaccurate due to models not being loaded on every machine [#11](https://github.com/papuSpartan/stable-diffusion-webui-distributed/issues/11)
- Worker randomly disconnecting when under high load due to handling a previous request
### Removed
- Certain superfluous warnings in logs related to third party extensions

View File

@ -347,7 +347,7 @@ class UI:
with gradio.Tab('Settings'):
thin_client_cbx = gradio.Checkbox(
label='Thin-client mode (experimental)',
info="Only generate images using remote workers. There will be no previews when enabled.",
info="(BROKEN) Only generate images using remote workers. There will be no previews when enabled.",
value=self.world.thin_client_mode
)
job_timeout = gradio.Number(

View File

@ -511,16 +511,16 @@ class World:
#####################################
# Now that this worker would (otherwise) not be doing anything, see if it can still do something.
# Calculate how many images it can output in the time that it takes the slowest real-time worker to do so.
# Calculate how many images it can output in the time that it takes the fastest real-time worker to do so.
for job in self.jobs:
if job.complementary is False:
continue
slowest_active_worker = self.fastest_realtime_job().worker
fastest_active = self.fastest_realtime_job().worker
for j in self.jobs:
if j.worker.label == slowest_active_worker.label:
slack_time = slowest_active_worker.batch_eta(payload=payload, batch_size=j.batch_size) + self.job_timeout
if j.worker.label == fastest_active.label:
slack_time = fastest_active.batch_eta(payload=payload, batch_size=j.batch_size) + self.job_timeout
logger.debug(f"There's {slack_time:.2f}s of slack time available for worker '{job.worker.label}'")
# see how long it would take to produce only 1 image on this complementary worker
@ -615,9 +615,9 @@ class World:
config = ConfigModel(**config_raw)
# saves config schema to <extension>/distributed-config.schema.json
# print(models.Config.schema_json())
# with open(self.extension_path.joinpath("distributed-config.schema.json"), "w") as schema_file:
# json.dump(json.loads(models.Config.schema_json()), schema_file, indent=3)
# print(ConfigModel.schema_json())
# with open(extension_path.joinpath("distributed-config.schema.json"), "w") as schema_file:
# json.dump(json.loads(ConfigModel.schema_json()), schema_file, indent=3)
for w in config.workers:
label = next(iter(w.keys()))
@ -628,6 +628,7 @@ class World:
sh.benchmark_payload = Benchmark_Payload(**config.benchmark_payload)
self.job_timeout = config.job_timeout
self.enabled = config.enabled
logger.debug("config loaded")