Skip to content

Commit

Permalink
Configuration script tidying up (#2513)
Browse files Browse the repository at this point in the history
- Rename configure_invokeai.py to invokeai_configure.py to be consistent
with installed script name
- Remove warning message about half-precision models not being available
during the model download process.
- adjust estimated file size reported by configure
- guesstimate disk space needed for "all" models
- fix up the "latest" tag to be named 'v2.3-latest'
  • Loading branch information
lstein committed Feb 5, 2023
2 parents 0ca499c + 61149ab commit 82ae276
Show file tree
Hide file tree
Showing 7 changed files with 19 additions and 21 deletions.
7 changes: 4 additions & 3 deletions installer/create_installer.sh
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,13 @@ fi
VERSION=$(cd ..; python -c "from ldm.invoke import __version__ as version; print(version)")
PATCH=""
VERSION="v${VERSION}${PATCH}"
LATEST_TAG="v2.3-latest"

echo Building installer for version $VERSION
echo "Be certain that you're in the 'installer' directory before continuing."
read -p "Press any key to continue, or CTRL-C to exit..."

read -e -p "Commit and tag this repo with ${VERSION} and 'v2.3-latest'? [n]: " input
read -e -p "Commit and tag this repo with '${VERSION}' and '${LATEST_TAG}'? [n]: " input
RESPONSE=${input:='n'}
if [ "$RESPONSE" == 'y' ]; then
git commit -a
Expand All @@ -28,8 +29,8 @@ if [ "$RESPONSE" == 'y' ]; then
echo "Existing/invalid tag"
exit -1
fi
git push origin :refs/tags/v2.3-latest
git tag -fa latest
git push origin :refs/tags/$LATEST_TAG
git tag -fa $LATEST_TAG
fi

# ----------------------
Expand Down
4 changes: 2 additions & 2 deletions installer/installer.py
Original file line number Diff line number Diff line change
Expand Up @@ -339,15 +339,15 @@ def configure(self):

introduction()

from ldm.invoke.config import configure_invokeai
from ldm.invoke.config import invokeai_configure

# NOTE: currently the config script does its own arg parsing! this means the command-line switches
# from the installer will also automatically propagate down to the config script.
# this may change in the future with config refactoring!

# set sys.argv to a consistent state

configure_invokeai.main()
invokeai_configure.main()

def install_user_scripts(self):
"""
Expand Down
4 changes: 2 additions & 2 deletions ldm/invoke/CLI.py
Original file line number Diff line number Diff line change
Expand Up @@ -1133,8 +1133,8 @@ def report_model_error(opt:Namespace, e:Exception):
for arg in yes_to_all.split():
sys.argv.append(arg)

from ldm.invoke.config import configure_invokeai
configure_invokeai.main()
from ldm.invoke.config import invokeai_configure
invokeai_configure.main()
print('** InvokeAI will now restart')
sys.argv = previous_args
main() # would rather do a os.exec(), but doesn't exist?
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -127,8 +127,8 @@ def user_wants_to_download_weights() -> str:
https://invoke-ai.github.io/InvokeAI/installation/020_INSTALL_MANUAL/
You may download the recommended models (about 10GB total), select a customized set, or
completely skip this step.
You may download the recommended models (about 15GB total), install all models (40 GB!!)
select a customized set, or completely skip this step.
"""
)
completer.set_options(["recommended", "customized", "skip"])
Expand Down Expand Up @@ -435,9 +435,7 @@ def _download_diffusion_weights(
)
except OSError as e:
if str(e).startswith("fp16 is not a valid"):
print(
f"Could not fetch half-precision version of model {repo_id}; fetching full-precision instead"
)
pass
else:
print(f"An unexpected error occurred while downloading the model: {e})")
if path:
Expand Down Expand Up @@ -868,7 +866,7 @@ def initialize_rootdir(root: str, yes_to_all: bool = False):
):
os.makedirs(os.path.join(root, name), exist_ok=True)

configs_src = Path(configs.__path__[-1])
configs_src = Path(configs.__path__[0])
configs_dest = Path(root) / "configs"
if not os.path.samefile(configs_src, configs_dest):
shutil.copytree(configs_src, configs_dest, dirs_exist_ok=True)
Expand Down
7 changes: 3 additions & 4 deletions ldm/invoke/model_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -484,12 +484,11 @@ def _load_diffusers_model(self, mconfig):
**pipeline_args,
**fp_args,
)

except OSError as e:
if str(e).startswith('fp16 is not a valid'):
print(f'Could not fetch half-precision version of model {name_or_path}; fetching full-precision instead')
pass
else:
print(f'An unexpected error occurred while downloading the model: {e})')
print(f'** An unexpected error occurred while downloading the model: {e})')
if pipeline:
break

Expand Down Expand Up @@ -1040,7 +1039,7 @@ def _load_vae(self, vae_config)->AutoencoderKL:
vae = AutoencoderKL.from_pretrained(name_or_path, **vae_args, **fp_args)
except OSError as e:
if str(e).startswith('fp16 is not a valid'):
print(' | Half-precision version of model not available; fetching full-precision instead')
pass
else:
deferred_error = e
if vae:
Expand Down
4 changes: 2 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -98,13 +98,13 @@ dependencies = [

# legacy entrypoints; provided for backwards compatibility
"invoke.py" = "ldm.invoke.CLI:main"
"configure_invokeai.py" = "ldm.invoke.config.configure_invokeai:main"
"configure_invokeai.py" = "ldm.invoke.config.invokeai_configure:main"
"textual_inversion.py" = "ldm.invoke.training.textual_inversion:main"
"merge_embeddings.py" = "ldm.invoke.merge_diffusers:main"

# modern entrypoints
"invokeai" = "ldm.invoke.CLI:main"
"invokeai-configure" = "ldm.invoke.config.configure_invokeai:main"
"invokeai-configure" = "ldm.invoke.config.invokeai_configure:main"
"invokeai-merge" = "ldm.invoke.merge_diffusers:main" # note name munging
"invokeai-ti" = "ldm.invoke.training.textual_inversion:main"

Expand Down
4 changes: 2 additions & 2 deletions scripts/configure_invokeai.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
# Copyright (c) 2022 Lincoln D. Stein (https://github.com/lstein)

import warnings
from ldm.invoke.config import configure_invokeai
from ldm.invoke.config import invokeai_configure

if __name__ == '__main__':
warnings.warn("configire_invokeai.py is deprecated, please run 'invoke'", DeprecationWarning)
warnings.warn("configure_invokeai.py is deprecated, please run 'invokai-configure'", DeprecationWarning)
configure_invokeai.main()

0 comments on commit 82ae276

Please sign in to comment.