diff --git a/ldm/invoke/CLI.py b/ldm/invoke/CLI.py index 7531d598a5..7c117ae140 100644 --- a/ldm/invoke/CLI.py +++ b/ldm/invoke/CLI.py @@ -91,10 +91,11 @@ def main(): safety_checker=opt.safety_checker, max_loaded_models=opt.max_loaded_models, ) - except FileNotFoundError: - print('** You appear to be missing configs/models.yaml') - print('** You can either exit this script and run scripts/preload_models.py, or fix the problem now.') - emergency_model_create(opt) + except (FileNotFoundError, TypeError): + print('** You appear to have missing or misconfigured model files') + print('** The script will now exit and run configure_invokeai.py to help fix the problem.') + print('** After reconfiguration is done, please relaunch invoke.py.') + emergency_model_reconfigure(opt) sys.exit(-1) except (IOError, KeyError) as e: print(f'{e}. Aborting.') @@ -910,6 +911,10 @@ def write_commands(opt, file_path:str, outfilepath:str): f.write('\n'.join(commands)) print(f'>> File {outfilepath} with commands created') +def emergency_model_reconfigure(): + import configure_invokeai + configure_invokeai.main() + def emergency_model_create(opt:Args): completer = get_completer(opt) completer.complete_extensions(('.yaml','.yml','.ckpt','.vae.pt')) diff --git a/notebooks/Stable-Diffusion-local-Windows.ipynb b/notebooks/Stable-Diffusion-local-Windows.ipynb new file mode 100644 index 0000000000..309feb784c --- /dev/null +++ b/notebooks/Stable-Diffusion-local-Windows.ipynb @@ -0,0 +1,222 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Easy-peasy Windows install" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note that you will need NVIDIA drivers, Python 3.10, and Git installed\n", + "beforehand - simplified\n", + "[step-by-step instructions](https://invoke-ai.github.io/InvokeAI/installation/INSTALL_WINDOWS/#conda)\n", + "are available in the wiki (you'll only need steps 1, 2, & 3 )" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Run each cell in turn. In VSCode, either hit SHIFT-ENTER, or click on the little ▶️ to the left of the cell. In Jupyter/JupyterLab, you **must** hit SHIFT-ENTER" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%pip install pew" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%cmd\n", + "git clone https://github.com/invoke-ai/InvokeAI.git\n", + "cd /content/InvokeAI/\n", + "git checkout --quiet development" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%cmd\n", + "pew new --python 3.10 -r requirements-lin-win-colab-CUDA.txt --dont-activate invokeai" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Switch the notebook kernel to the new 'invokeai' environment!\n", + "\n", + "## VSCode: restart VSCode and come back to this cell\n", + "\n", + "1. Ctrl+Shift+P\n", + "1. Type \"Select Interpreter\" and select \"Jupyter: Select Interpreter to Start Jupyter Server\"\n", + "1. VSCode will say that it needs to install packages. Click the \"Install\" button.\n", + "1. Once the install is finished, do 1 & 2 again\n", + "1. Pick 'invokeai'\n", + "1. Run the following cell" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%cd InvokeAI" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## Jupyter/JupyterLab\n", + "\n", + "1. Run the cell below\n", + "1. Click on the toolbar where it says \"(ipyknel)\" ↗️. You should get a pop-up asking you to \"Select Kernel\". Pick 'invokeai' from the drop-down.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### DO NOT RUN THE FOLLOWING CELL IF YOU ARE USING VSCODE!!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# DO NOT RUN THIS CELL IF YOU ARE USING VSCODE!!\n", + "%%cmd\n", + "pew workon invokeai\n", + "pip3 install ipykernel\n", + "python -m ipykernel install --name=invokeai" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### When running the next cell, Jupyter/JupyterLab users might get a warning saying \"IProgress not found\". This can be ignored." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%run \"scripts/preload_models.py\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%cmd\n", + "mkdir \"models/ldm/stable-diffusion-v1\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Now copy the SD model you downloaded from Hugging Face into the above new directory, and (if necessary) rename it to 'model.ckpt'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Now go create some magic!\n", + "\n", + "VSCode\n", + "\n", + "- The actual input box for the 'dream' prompt will appear at the very top of the VSCode window. Type in your commands and hit 'ENTER'.\n", + "- To quit, hit the 'Interrupt' button in the toolbar up there ⬆️ a couple of times, then hit ENTER (you'll probably see a terrifying traceback from Python - just ignore it).\n", + "\n", + "Jupyter/JupyterLab\n", + "\n", + "- The input box for the 'dream' prompt will appear below. Type in your commands and hit 'ENTER'.\n", + "- To quit, hit the interrupt button (⏹️) in the toolbar up there ⬆️ a couple of times, then hit ENTER (you'll probably see a terrifying traceback from Python - just ignore it)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%run \"scripts/dream.py\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Once this seems to be working well, you can try opening a terminal\n", + "\n", + "- VSCode: type ('CTRL+`')\n", + "- Jupyter/JupyterLab: File|New Terminal\n", + "- Or jump out of the notebook entirely, and open Powershell/Command Prompt\n", + "\n", + "Now:\n", + "\n", + "1. `cd` to wherever the 'InvokeAI' directory is\n", + "1. Run `pew workon invokeai`\n", + "1. Run `winpty python scripts\\dream.py`" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3.10.6 64-bit", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.6" + }, + "vscode": { + "interpreter": { + "hash": "5e164cef426134bf171f386fbddecb52046b6c1479f922ab8dfdd30df05e0e80" + } + } + }, + "nbformat": 4, + "nbformat_minor": 4 +}