Kilvoctu / aiyabot

A neat Discord bot for AUTOMATIC1111's Web UI

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Crash on Launch - KeyError: 'model_name'

hdtv35 opened this issue · comments

Describe the bug
When running the launch.sh script, it fails and results in the error KeyError: 'model_name'. I've been running the bot for a while without issue but it suddenly stopped working. It's probably something I screwed up messing around with Automatic. Any insight would be much appreciated!!!


Environment
Linux: Ubuntu 22.04.3 LTS
Kernel: 6.3.5
Python: 3.10.12
GPU: Intel ARC A770
Branch: vladmandic/automatic


Console logs
From a fresh install:

Using cached mpmath-1.3.0-py3-none-any.whl (536 kB)
Installing collected packages: mpmath, urllib3, uritools, typing-extensions, tqdm, tomlkit, sympy, safetensors, regex, pyyaml, python-dotenv, platformdirs, Pillow, packaging, nvidia-nvtx-cu
12, nvidia-nvjitlink-cu12, nvidia-nccl-cu12, nvidia-curand-cu12, nvidia-cufft-cu12, nvidia-cuda-runtime-cu12, nvidia-cuda-nvrtc-cu12, nvidia-cuda-cupti-cu12, nvidia-cublas-cu12, numpy, netw
orkx, multidict, MarkupSafe, idna, fsspec, frozenlist, filelock, charset-normalizer, certifi, attrs, async-timeout, yarl, urlextract, triton, requests, nvidia-cusparse-cu12, nvidia-cudnn-cu
12, jinja2, aiosignal, nvidia-cusolver-cu12, huggingface-hub, aiohttp, torch, tokenizers, py-cord, transformers
Successfully installed MarkupSafe-2.1.3 Pillow-10.1.0 aiohttp-3.8.6 aiosignal-1.3.1 async-timeout-4.0.3 attrs-23.1.0 certifi-2023.7.22 charset-normalizer-3.3.2 filelock-3.13.1 frozenlist-1.
4.0 fsspec-2023.10.0 huggingface-hub-0.17.3 idna-3.4 jinja2-3.1.2 mpmath-1.3.0 multidict-6.0.4 networkx-3.2.1 numpy-1.26.1 nvidia-cublas-cu12-12.1.3.1 nvidia-cuda-cupti-cu12-12.1.105 nvidia
-cuda-nvrtc-cu12-12.1.105 nvidia-cuda-runtime-cu12-12.1.105 nvidia-cudnn-cu12-8.9.2.26 nvidia-cufft-cu12-11.0.2.54 nvidia-curand-cu12-10.3.2.106 nvidia-cusolver-cu12-11.4.5.107 nvidia-cuspa
rse-cu12-12.1.0.106 nvidia-nccl-cu12-2.18.1 nvidia-nvjitlink-cu12-12.3.52 nvidia-nvtx-cu12-12.1.105 packaging-23.2 platformdirs-3.11.0 py-cord-2.4.1 python-dotenv-1.0.0 pyyaml-6.0.1 regex-2
023.10.3 requests-2.31.0 safetensors-0.4.0 sympy-1.12 tokenizers-0.14.1 tomlkit-0.12.2 torch-2.1.0 tqdm-4.66.1 transformers-4.35.0 triton-2.1.0 typing-extensions-4.8.0 uritools-4.0.2 urlext
ract-1.8.0 urllib3-2.0.7 yarl-1.9.2
Missing file for /generate. Downloading config.json
Missing file for /generate. Downloading merges.txt
Missing file for /generate. Downloading pytorch_model.bin
Missing file for /generate. Downloading vocab.json
Configuration file missing! I'm creating config.toml in resources/.
Using URL: http://127.0.0.1:7860
Using outputs directory: outputs
Uh oh, stats.txt missing. Creating a new one.
Uh oh, missing models.csv data. Creating a new one.
Traceback (most recent call last):
  File "/home/hdtv35/aiyabot/aiya.py", line 22, in <module>
    settings.files_check()
  File "/home/hdtv35/aiyabot/core/settings.py", line 473, in files_check
    populate_global_vars()
  File "/home/hdtv35/aiyabot/core/settings.py", line 555, in populate_global_vars
    or norm_csv_path.replace(os.sep, '_') == model['model_name']:
KeyError: 'model_name'

Try running with my patch from #221. Not sure if it's the same error but on newer automatic1111 it has more samplers and that might be making it upset. It might also not be generating a config file correctly

Thanks, tried cloning your fork fresh and got a different error, I must be doing something dumb
Here is the result of running launch.sh

./launch.sh
Collecting py-cord
  Using cached py_cord-2.4.1-py3-none-any.whl (1.1 MB)
Collecting python-dotenv
  Using cached python_dotenv-1.0.0-py3-none-any.whl (19 kB)
Collecting requests
  Using cached requests-2.31.0-py3-none-any.whl (62 kB)
Collecting Pillow
  Using cached Pillow-10.1.0-cp310-cp310-manylinux_2_28_x86_64.whl (3.6 MB)
Collecting tomlkit
  Using cached tomlkit-0.12.2-py3-none-any.whl (37 kB)
Collecting urlextract
  Using cached urlextract-1.8.0-py3-none-any.whl (21 kB)
Collecting typing-extensions<5,>=4
  Using cached typing_extensions-4.8.0-py3-none-any.whl (31 kB)
Collecting aiohttp<3.9.0,>=3.6.0
  Using cached aiohttp-3.8.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.0 MB)
Collecting certifi>=2017.4.17
  Using cached certifi-2023.7.22-py3-none-any.whl (158 kB)
Collecting charset-normalizer<4,>=2
  Using cached charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (142 kB)
Collecting urllib3<3,>=1.21.1
  Using cached urllib3-2.0.7-py3-none-any.whl (124 kB)
Collecting idna<4,>=2.5
  Using cached idna-3.4-py3-none-any.whl (61 kB)
Collecting uritools
  Using cached uritools-4.0.2-py3-none-any.whl (10 kB)
Collecting filelock
  Using cached filelock-3.13.1-py3-none-any.whl (11 kB)
Collecting platformdirs
  Using cached platformdirs-3.11.0-py3-none-any.whl (17 kB)
Collecting multidict<7.0,>=4.5
  Using cached multidict-6.0.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (114 kB)
Collecting frozenlist>=1.1.1
  Using cached frozenlist-1.4.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (225 kB)
Collecting yarl<2.0,>=1.0
  Using cached yarl-1.9.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (268 kB)
Collecting async-timeout<5.0,>=4.0.0a3
  Using cached async_timeout-4.0.3-py3-none-any.whl (5.7 kB)
Collecting aiosignal>=1.1.2
  Using cached aiosignal-1.3.1-py3-none-any.whl (7.6 kB)
Collecting attrs>=17.3.0
  Using cached attrs-23.1.0-py3-none-any.whl (61 kB)
Installing collected packages: urllib3, uritools, typing-extensions, tomlkit, python-dotenv, platformdirs, Pillow, multidict, idna, frozenlist, filelock, charset-normalizer, certifi, attrs, async-timeout, yarl, urlextract, requests, aiosignal, aiohttp, py-cord
Successfully installed Pillow-10.1.0 aiohttp-3.8.6 aiosignal-1.3.1 async-timeout-4.0.3 attrs-23.1.0 certifi-2023.7.22 charset-normalizer-3.3.2 filelock-3.13.1 frozenlist-1.4.0 idna-3.4 multidict-6.0.4 platformdirs-3.11.0 py-cord-2.4.1 python-dotenv-1.0.0 requests-2.31.0 tomlkit-0.12.2 typing-extensions-4.8.0 uritools-4.0.2 urlextract-1.8.0 urllib3-2.0.7 yarl-1.9.2
Configuration file missing! I'm creating config.toml in resources/.
Using URL: http://127.0.0.1:7860
Using outputs directory: outputs
Uh oh, stats.txt missing. Creating a new one.
Uh oh, missing models.csv data. Creating a new one.
Traceback (most recent call last):
  File "/home/hdtv35/aiyabot/aiya.py", line 20, in <module>
    settings.files_check()
  File "/home/hdtv35/aiyabot/core/settings.py", line 476, in files_check
    populate_global_vars()
  File "/home/hdtv35/aiyabot/core/settings.py", line 505, in populate_global_vars
    s = authenticate_user()
  File "/home/hdtv35/aiyabot/core/settings.py", line 325, in authenticate_user
    if response_data['gradio_auth']:
KeyError: 'gradio_auth'

I tried also just going with the docker container and even it is giving me the same error from within the container.
Docker command: docker run --name aiyabot --network=host --restart=always -e TOKEN=[my token] -e TZ=America/New_York -v ./aiyabot/outputs:/app/outputs -v ./aiyabot/resources:/app/resources -d ghcr.io/kilvoctu/aiyabot:latest

Output from Docker attach:

Missing file for /generate. Downloading config.json
Missing file for /generate. Downloading merges.txt
Missing file for /generate. Downloading pytorch_model.bin
Missing file for /generate. Downloading vocab.json
Traceback (most recent call last):
  File "/app/aiya.py", line 22, in <module>
    settings.files_check()
  File "/app/core/settings.py", line 473, in files_check
Using URL: http://127.0.0.1:7860
Using outputs directory: outputs
    populate_global_vars()
  File "/app/core/settings.py", line 555, in populate_global_vars
    or norm_csv_path.replace(os.sep, '_') == model['model_name']:
                                             ~~~~~^^^^^^^^^^^^^^
KeyError: 'model_name'

It looks like you might be having a folder permissions issue. Maybe chmod -R 0755 hdtv35:hdt35 . on the folder where you installed it. If you get

Using outputs directory: outputs
Uh oh, stats.txt missing. Creating a new one.
Uh oh, missing models.csv data. Creating a new one.

on every run then somehow the script is not able to write files in the directory.

It looks like you might be having a folder permissions issue. Maybe chmod -R 0755 hdtv35:hdt35 . on the folder where you installed it. If you get

Using outputs directory: outputs
Uh oh, stats.txt missing. Creating a new one.
Uh oh, missing models.csv data. Creating a new one.

on every run then somehow the script is not able to write files in the directory.

Gotcha, it does not do that every run, just because I wiped the directory and cloned fresh. I ran the chmod and chown to make the directory match those perms. Here is the error after running the command:

hdtv35@artanis:~/aiyabot$ ./launch.sh
Requirement already satisfied: py-cord in ./venv/lib/python3.10/site-packages (from -r requirements.txt (line 1)) (2.4.1)
Requirement already satisfied: python-dotenv in ./venv/lib/python3.10/site-packages (from -r requirements.txt (line 2)) (1.0.0)
Requirement already satisfied: requests in ./venv/lib/python3.10/site-packages (from -r requirements.txt (line 3)) (2.31.0)
Requirement already satisfied: Pillow in ./venv/lib/python3.10/site-packages (from -r requirements.txt (line 4)) (10.1.0)
Requirement already satisfied: tomlkit in ./venv/lib/python3.10/site-packages (from -r requirements.txt (line 5)) (0.12.2)
Requirement already satisfied: urlextract in ./venv/lib/python3.10/site-packages (from -r requirements.txt (line 6)) (1.8.0)
Requirement already satisfied: aiohttp<3.9.0,>=3.6.0 in ./venv/lib/python3.10/site-packages (from py-cord->-r requirements.txt (line 1)) (3.8.6)
Requirement already satisfied: typing-extensions<5,>=4 in ./venv/lib/python3.10/site-packages (from py-cord->-r requirements.txt (line 1)) (4.8.0)
Requirement already satisfied: urllib3<3,>=1.21.1 in ./venv/lib/python3.10/site-packages (from requests->-r requirements.txt (line 3)) (2.0.7)
Requirement already satisfied: certifi>=2017.4.17 in ./venv/lib/python3.10/site-packages (from requests->-r requirements.txt (line 3)) (2023.7.22)
Requirement already satisfied: idna<4,>=2.5 in ./venv/lib/python3.10/site-packages (from requests->-r requirements.txt (line 3)) (3.4)
Requirement already satisfied: charset-normalizer<4,>=2 in ./venv/lib/python3.10/site-packages (from requests->-r requirements.txt (line 3)) (3.3.2)
Requirement already satisfied: uritools in ./venv/lib/python3.10/site-packages (from urlextract->-r requirements.txt (line 6)) (4.0.2)
Requirement already satisfied: filelock in ./venv/lib/python3.10/site-packages (from urlextract->-r requirements.txt (line 6)) (3.13.1)
Requirement already satisfied: platformdirs in ./venv/lib/python3.10/site-packages (from urlextract->-r requirements.txt (line 6)) (3.11.0)
Requirement already satisfied: attrs>=17.3.0 in ./venv/lib/python3.10/site-packages (from aiohttp<3.9.0,>=3.6.0->py-cord->-r requirements.txt (line 1)) (23.1.0)
Requirement already satisfied: async-timeout<5.0,>=4.0.0a3 in ./venv/lib/python3.10/site-packages (from aiohttp<3.9.0,>=3.6.0->py-cord->-r requirements.txt (line 1)) (4.0.3)
Requirement already satisfied: yarl<2.0,>=1.0 in ./venv/lib/python3.10/site-packages (from aiohttp<3.9.0,>=3.6.0->py-cord->-r requirements.txt (line 1)) (1.9.2)
Requirement already satisfied: frozenlist>=1.1.1 in ./venv/lib/python3.10/site-packages (from aiohttp<3.9.0,>=3.6.0->py-cord->-r requirements.txt (line 1)) (1.4.0)
Requirement already satisfied: aiosignal>=1.1.2 in ./venv/lib/python3.10/site-packages (from aiohttp<3.9.0,>=3.6.0->py-cord->-r requirements.txt (line 1)) (1.3.1)
Requirement already satisfied: multidict<7.0,>=4.5 in ./venv/lib/python3.10/site-packages (from aiohttp<3.9.0,>=3.6.0->py-cord->-r requirements.txt (line 1)) (6.0.4)
Using URL: http://127.0.0.1:7860
Using outputs directory: outputs
Traceback (most recent call last):
  File "/home/hdtv35/aiyabot/aiya.py", line 20, in <module>
    settings.files_check()
  File "/home/hdtv35/aiyabot/core/settings.py", line 476, in files_check
    populate_global_vars()
  File "/home/hdtv35/aiyabot/core/settings.py", line 505, in populate_global_vars
    s = authenticate_user()
  File "/home/hdtv35/aiyabot/core/settings.py", line 325, in authenticate_user
    if response_data['gradio_auth']:
KeyError: 'gradio_auth'

I wish I was more familiar with Python, going to attempt to diagnose further. I managed to get the bot online and partially working by commenting out the following lines in core/settings.py

                if norm_csv_path.split(os.sep)[-1] == norm_api_path.split(os.sep)[-1] \
                        or norm_csv_path.replace(os.sep, '_') == model['model_name']:
                    global_var.model_info[row[0]] = model['title'], model['model_name'], model['hash'], row[2]

I've lost the ability to select a model, it just uses whatever is currently loaded in SD, but it does generate and work otherwise.

Okay figured it out, this was my fault. After troubleshooting I found that the fork of A1111 I'm using, vladmandic/automatic, has slightly different API names. By changing the following lines in core/settings.py to remove "model" from "model_name", it works again!
Around Line 552:

                if norm_csv_path.split(os.sep)[-1] == norm_api_path.split(os.sep)[-1] \
                        or norm_csv_path.replace(os.sep, '_') == model['name']:
                    global_var.model_info[row[0]] = model['title'], model['name'], model['hash'], row[2]

It won't display the new diffusers files yet but that could be another error on my part. Anyone using vladmandic for Intel Arc support or diffusers should be able to make this modification to make it work though. Thank you for your help and patches @solareon!