Glide-Api reprezinta o solutie software web care este capabila sa produca compozitii grafice intr-un mod automat, folosindu-se de modelul Glide, creat de Open-AI. Utilizand modulul de python flask, aceasta prezinta o interfata web cu utilizatorul, dar si un REST-API care poate fi utilizat pentru crearea imaginilor in cadrul altor aplicatii software.
./app
: aplicatia web
./notebooks
: Jupyter notebook-ul oferit de echipa Open-AI, explicat prin comentarii
./samples
: imagini generate de model ca exemple, folosind parametrii de baza
./usage
: un exemplu de utilizare a aplicatiei pe partea de front-end
Pentru instalarea aplicatiei sau a exemplului de folosire, este nevoie de python3, preferabil v. 3.10 si modulul pip instalat.
#Instalarea aplicatiei:
pip install -r /app/requirements.txt
#Instalarea exemplului:
pip install -r /usage/requirements.txt
Aplicatia poate fi pornita pe un server local, iar apoi accesata din browser, folosind una din comenzile urmatoare, din directorul app
:
flask run
#or
python -m flask run --host=127.0.0.1:5000
In cazul in care aceasta este gazduita pe un server de cloud, ne putem conecta la acesta, asemator cu aplicatia locala, stiind adresa si port-ul, sau ne putem folosi de apelurile catre API.
#Pentru generarea unei imagini (GET request):
curl https://${ADDRESS}:${PORT}/image?size=64&prompt="mountains in the night"
#Pentru modificarea numarului de pasi de difuzie (POST request)
#model de baza
curl -X POST https://${ADDRESS}:${PORT}/basemodel?diffusion_steps=50
#model de upsampling
curl -X POST https://${ADDRESS}:${PORT}/upmodel?diffusion_steps=27
size
- OBLIGATORIU - marimea imaginii: 64, 128, 256, 512, 1024..
prompt
- OBLIGATORIU - promt-ul text dupa care modelul va genera imaginea
batch_size
- numarul de exemple imagini returnate, insa in format-ul unei singuri imagini default=1
guidance_scale
- parametru pentru aplificarea influentei semnalului de conditionare a imaginii default=3.0
upsample_temp
- parametru pentru a controla claritatea imaginii obtinute default=0.997
diffusion_steps
- OBLIGATORIU - numarul de pasi de difuzie al unui model
base_model_default=100
upsample_model_default=27
Rezultat pentru GET request:
{
"data_type": "image/png;base64",
"gpu_memory_allocated": "1.72 Gb",
"gpu_memory_reserved": "4.48 Gb",
"image": "iVBORw0KG...kJggg==",
"image_size": 64,
"processing_time": "2.21875 s"
}
Rezultat pentru POST request, in functie de modelul apelat:
{
"base_model_total_parameters": 385030726
}
{
"upsample_model_total_parameters": 398361286
}
Este pusa la dizpozitie un fisier Docker si un container, pentru a putea lansa aplicatia pe diferite servicii de cloud.
#Crearea unei imagini noi
cd app
docker build -t ${IMAGE_NAME}:${IMAGE_TAG} .
#Rularea unui nou container
docker run -d -p ${PORT}:${PORT} --name ${IMAGE_NAME}:${IMAGE_TAG}