|
simple stable diffusion server that saves images to cloud storage - returns links to google cloud storage |
|
|
|
## Creators |
|
[![netwrck logo](https://static.netwrck.com/static/img/netwrck-logo-colord256.png)](https://netwrck.com) |
|
|
|
Checkout [Voiced AI Characters to chat with](https://netwrck.com) at [netwrck.com](https://netwrck.com) |
|
|
|
Characters are narrated and written by many GPT models trained on 1000s of fantasy novels and chats. |
|
|
|
Also for LLMs for making Text - Checkout [Text-Generator.io](https://text-generator.io) for a Open Source text generator that uses many AI models to generate the best along with image understanding and OCR networks. |
|
## Setup |
|
|
|
. Create a virtual environment (optional) |
|
|
|
```bash |
|
python3 -m venv venv |
|
source venv/bin/activate |
|
``` |
|
|
|
#### Install dependencies |
|
|
|
```bash |
|
pip install -r requirements.txt |
|
pip install -r dev-requirements.txt |
|
|
|
cd models |
|
git clone https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0 |
|
|
|
# install stopwords |
|
python -c "import nltk; nltk.download('stopwords')" |
|
``` |
|
|
|
#### Edit settings in env.py |
|
#### download your Google cloud credentials to secrets/google-credentials.json |
|
Images generated will be stored in your bucket |
|
#### Run the server |
|
|
|
```bash |
|
GOOGLE_APPLICATION_CREDENTIALS=secrets/google-credentials.json gunicorn -k uvicorn.workers.UvicornWorker -b :8000 main:app --timeout 600 -w 1 |
|
``` |
|
|
|
with max 4 requests at a time |
|
This will drop a lot of requests under load instead of taking on too much work and causing OOM Errors. |
|
|
|
```bash |
|
GOOGLE_APPLICATION_CREDENTIALS=secrets/google-credentials.json PYTHONPATH=. uvicorn --port 8000 --timeout-keep-alive 600 --workers 1 --backlog 1 --limit-concurrency 4 main:app |
|
``` |
|
|
|
#### Make a Request |
|
|
|
http://localhost:8000/create_and_upload_image?prompt=good%20looking%20elf%20fantasy%20character&save_path=created/elf.webp |
|
|
|
Response |
|
```shell |
|
{"path":"https://storage.googleapis.com/static.netwrck.com/static/uploads/created/elf.png"} |
|
``` |
|
|
|
http://localhost:8000/docs |
|
|
|
|
|
Check to see that "good Looking elf fantasy character" was created |
|
|
|
![elf.png](https://storage.googleapis.com/static.netwrck.com/static/uploads/created/elf.png) |
|
![elf2.png](https://storage.googleapis.com/static.netwrck.com/static/uploads/created/elf2.png) |
|
|
|
### Testing |
|
|
|
```bash |
|
GOOGLE_APPLICATION_CREDENTIALS=secrets/google-credentials.json pytest . |
|
``` |
|
|
|
|
|
#### Running under supervisord |
|
|
|
edit ops/supervisor.conf |
|
|
|
install the supervisor |
|
apt-get install -y supervisor |
|
```bash |
|
sudo cat >/etc/supervisor/conf.d/python-app.conf << EOF |
|
[program:sdif_http_server] |
|
directory=/home/lee/code/sdif |
|
command=/home/lee/code/sdif/.env/bin/uvicorn --port 8000 --timeout-keep-alive 600 --workers 1 --backlog 1 --limit-concurrency 4 main:app |
|
autostart=true |
|
autorestart=true |
|
environment=VIRTUAL_ENV="/home/lee/code/sdif/.env/",PATH="/opt/app/sdif/.env/bin",HOME="/home/lee",GOOGLE_APPLICATION_CREDENTIALS="secrets/google-credentials.json",PYTHONPATH="/home/lee/code/sdif" |
|
stdout_logfile=syslog |
|
stderr_logfile=syslog |
|
user=lee |
|
EOF |
|
|
|
supervisorctl reread |
|
supervisorctl update |
|
``` |
|
|
|
#### run a manager process to kill/restart if the server if it is hanging |
|
|
|
Sometimes the server just stops working and needs a hard restart |
|
|
|
This command will kill the server if it is hanging and restart it (must be running under supervisorctl) |
|
``` |
|
python3 manager.py |
|
``` |
|
|
|
# hack restarting without supervisor |
|
run the server in a infinite loop |
|
``` |
|
while true; do GOOGLE_APPLICATION_CREDENTIALS=secrets/google-credentials.json PYTHONPATH=. uvicorn --port 8000 --timeout-keep-alive 600 --workers 1 --backlog 1 --limit-concurrency 4 main:app; done |
|
``` |
|
|