Unverified Commit d78377ea authored by AUTOMATIC1111's avatar AUTOMATIC1111 Committed by GitHub
Browse files

Merge pull request #11593 from akx/better-status-reporting-1

Better status reporting, part 1
parents ae74b44c fc049a2f
Loading
Loading
Loading
Loading
+21 −23
Original line number Diff line number Diff line
@@ -330,7 +330,7 @@ class Api:
                p.outpath_grids = opts.outdir_txt2img_grids
                p.outpath_samples = opts.outdir_txt2img_samples

                shared.state.begin()
                shared.state.begin(job="scripts_txt2img")
                if selectable_scripts is not None:
                    p.script_args = script_args
                    processed = scripts.scripts_txt2img.run(p, *p.script_args) # Need to pass args as list here
@@ -387,7 +387,7 @@ class Api:
                p.outpath_grids = opts.outdir_img2img_grids
                p.outpath_samples = opts.outdir_img2img_samples

                shared.state.begin()
                shared.state.begin(job="scripts_img2img")
                if selectable_scripts is not None:
                    p.script_args = script_args
                    processed = scripts.scripts_img2img.run(p, *p.script_args) # Need to pass args as list here
@@ -396,7 +396,6 @@ class Api:
                    processed = process_images(p)
                shared.state.end()


        b64images = list(map(encode_pil_to_base64, processed.images)) if send_images else []

        if not img2imgreq.include_init_images:
@@ -603,44 +602,42 @@ class Api:

    def create_embedding(self, args: dict):
        try:
            shared.state.begin()
            shared.state.begin(job="create_embedding")
            filename = create_embedding(**args) # create empty embedding
            sd_hijack.model_hijack.embedding_db.load_textual_inversion_embeddings() # reload embeddings so new one can be immediately used
            shared.state.end()
            return models.CreateResponse(info=f"create embedding filename: {filename}")
        except AssertionError as e:
            shared.state.end()
            return models.TrainResponse(info=f"create embedding error: {e}")
        finally:
            shared.state.end()


    def create_hypernetwork(self, args: dict):
        try:
            shared.state.begin()
            shared.state.begin(job="create_hypernetwork")
            filename = create_hypernetwork(**args) # create empty embedding
            shared.state.end()
            return models.CreateResponse(info=f"create hypernetwork filename: {filename}")
        except AssertionError as e:
            shared.state.end()
            return models.TrainResponse(info=f"create hypernetwork error: {e}")
        finally:
            shared.state.end()

    def preprocess(self, args: dict):
        try:
            shared.state.begin()
            shared.state.begin(job="preprocess")
            preprocess(**args) # quick operation unless blip/booru interrogation is enabled
            shared.state.end()
            return models.PreprocessResponse(info='preprocess complete')
        except KeyError as e:
            shared.state.end()
            return models.PreprocessResponse(info=f"preprocess error: invalid token: {e}")
        except AssertionError as e:
            shared.state.end()
        except Exception as e:
            return models.PreprocessResponse(info=f"preprocess error: {e}")
        except FileNotFoundError as e:
        finally:
            shared.state.end()
            return models.PreprocessResponse(info=f'preprocess error: {e}')

    def train_embedding(self, args: dict):
        try:
            shared.state.begin()
            shared.state.begin(job="train_embedding")
            apply_optimizations = shared.opts.training_xattention_optimizations
            error = None
            filename = ''
@@ -653,15 +650,15 @@ class Api:
            finally:
                if not apply_optimizations:
                    sd_hijack.apply_optimizations()
                shared.state.end()
            return models.TrainResponse(info=f"train embedding complete: filename: {filename} error: {error}")
        except AssertionError as msg:
            shared.state.end()
        except Exception as msg:
            return models.TrainResponse(info=f"train embedding error: {msg}")
        finally:
            shared.state.end()

    def train_hypernetwork(self, args: dict):
        try:
            shared.state.begin()
            shared.state.begin(job="train_hypernetwork")
            shared.loaded_hypernetworks = []
            apply_optimizations = shared.opts.training_xattention_optimizations
            error = None
@@ -679,9 +676,10 @@ class Api:
                    sd_hijack.apply_optimizations()
                shared.state.end()
            return models.TrainResponse(info=f"train embedding complete: filename: {filename} error: {error}")
        except AssertionError:
        except Exception as exc:
            return models.TrainResponse(info=f"train embedding error: {exc}")
        finally:
            shared.state.end()
            return models.TrainResponse(info=f"train embedding error: {error}")

    def get_memory(self):
        try:
+1 −1
Original line number Diff line number Diff line
@@ -30,7 +30,7 @@ def wrap_gradio_gpu_call(func, extra_outputs=None):
            id_task = None

        with queue_lock:
            shared.state.begin()
            shared.state.begin(job=id_task)
            progress.start_task(id_task)

            try:
+1 −2
Original line number Diff line number Diff line
@@ -73,8 +73,7 @@ def to_half(tensor, enable):


def run_modelmerger(id_task, primary_model_name, secondary_model_name, tertiary_model_name, interp_method, multiplier, save_as_half, custom_name, checkpoint_format, config_source, bake_in_vae, discard_weights, save_metadata):
    shared.state.begin()
    shared.state.job = 'model-merge'
    shared.state.begin(job="model-merge")

    def fail(message):
        shared.state.textinfo = message
+1 −2
Original line number Diff line number Diff line
@@ -184,8 +184,7 @@ class InterrogateModels:

    def interrogate(self, pil_image):
        res = ""
        shared.state.begin()
        shared.state.job = 'interrogate'
        shared.state.begin(job="interrogate")
        try:
            if shared.cmd_opts.lowvram or shared.cmd_opts.medvram:
                lowvram.send_everything_to_cpu()
+1 −2
Original line number Diff line number Diff line
@@ -9,8 +9,7 @@ from modules.shared import opts
def run_postprocessing(extras_mode, image, image_folder, input_dir, output_dir, show_extras_results, *args, save_output: bool = True):
    devices.torch_gc()

    shared.state.begin()
    shared.state.job = 'extras'
    shared.state.begin(job="extras")

    image_data = []
    image_names = []
Loading