From 6d733ed3ff9fefac7a63cb8f7ccb968c9f288dcb Mon Sep 17 00:00:00 2001 From: Bryce Drennan Date: Thu, 26 Jan 2023 21:41:52 -0800 Subject: [PATCH] feature: added `aimg system-info` command to help debug issues (#216) --- README.md | 2 +- imaginairy/cmds.py | 11 +++++++++++ imaginairy/debug_info.py | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 imaginairy/debug_info.py diff --git a/README.md b/README.md index 5499d9b..547559f 100644 --- a/README.md +++ b/README.md @@ -283,7 +283,7 @@ docker run -it --gpus all -v $HOME/.cache/huggingface:/root/.cache/huggingface - ## ChangeLog - +- feature: added `aimg system-info` command to help debug issues **8.1.0** - feature: some memory optimizations and documentation diff --git a/imaginairy/cmds.py b/imaginairy/cmds.py index fc0f43d..e8bbf9d 100644 --- a/imaginairy/cmds.py +++ b/imaginairy/cmds.py @@ -7,6 +7,7 @@ from click_shell import shell from imaginairy import LazyLoadingImage, __version__, config, generate_caption from imaginairy.api import imagine_image_files +from imaginairy.debug_info import get_debug_info from imaginairy.enhancers.prompt_expansion import expand_prompts from imaginairy.log_utils import configure_logging from imaginairy.samplers import SAMPLER_TYPE_OPTIONS @@ -971,6 +972,16 @@ def prune_ckpt(ckpt_paths): prune_diffusion_ckpt(p) +@aimg.command("system-info") +def system_info(): + """ + Display system information. Submit this when reporting bugs. + """ + for k, v in get_debug_info().items(): + k += ":" + click.secho(f"{k: <30} {v}") + + aimg.add_command(imagine_cmd, name="imagine") aimg.add_command(edit_image, name="edit") diff --git a/imaginairy/debug_info.py b/imaginairy/debug_info.py new file mode 100644 index 0000000..8897fa5 --- /dev/null +++ b/imaginairy/debug_info.py @@ -0,0 +1,32 @@ +import os.path +import sys + +import torch + +from imaginairy import __version__ +from imaginairy.utils import get_device, get_hardware_description + + +def get_debug_info(): + data = { + "imaginairy_version": __version__, + "imaginairy_path": os.path.dirname(__file__), + "python_version": f"{sys.version_info.major}.{sys.version_info.minor}.{sys.version_info.micro}", + "python_installation_path": sys.executable, + "device": get_device(), + "torch_version": torch.__version__, + "platform": sys.platform, + "hardware_description": get_hardware_description(get_device()), + } + if torch.cuda.is_available(): + device_props = torch.cuda.get_device_properties(0) + data.update( + { + "cuda_version": torch.version.cuda, + "graphics_card": device_props.name, + "graphics_card_memory": device_props.total_memory, + "graphics_card_processor_count": device_props.multi_processor_count, + "graphics_card_hw_version": f"{device_props.major}.{device_props.minor}", + } + ) + return data