Spaces:
Sleeping
Sleeping
import io | |
import random | |
import globales | |
import herramientas | |
import gradio_client | |
import conexion_firebase | |
from datetime import datetime | |
from fastapi import HTTPException, status | |
from huggingface_hub import InferenceClient | |
servidor = globales.servidor | |
servicio = globales.servicio | |
def genera_platillo_gpu(platillo): | |
prompt = globales.previo + platillo | |
try: | |
espacios = conexion_firebase.obtener_documentos_habilitados('espacios') | |
print(f"Espacios habilitados: {espacios}") | |
espacio_elegido = random.choice(espacios) | |
datos_espacio = conexion_firebase.obtenAllDatos('espacios', espacio_elegido) | |
client = gradio_client.Client(datos_espacio['ruta'], hf_token=globales.llave) | |
result = client.predict( | |
#**kwargs, | |
prompt=prompt, | |
#negative_prompt="live animals", | |
seed=42, | |
randomize_seed=False, | |
width=786, | |
height=568, | |
# guidance_scale=3.5, | |
# num_inference_steps=28, | |
api_name=datos_espacio['api_name'] | |
) | |
#Cuando es GPU, debe de restar segundos disponibles de HF | |
herramientas.restaSegundosGPU(globales.work_cost) | |
print("Platillo generado:", platillo) | |
conexion_firebase.registraLog(servidor, platillo, espacio_elegido, 42) | |
#Generales | |
conexion_firebase.incrementar_campo_numerico('estadisticas', 'imagenes', 'imagenes_totales', amount=1) | |
conexion_firebase.incrementar_campo_numerico('estadisticas', 'imagenes', 'endpoint-' + servicio, amount=1) | |
conexion_firebase.incrementar_campo_numerico('estadisticas', 'imagenes', 'gpu-totales', amount=1) | |
conexion_firebase.incrementar_campo_numerico('estadisticas', 'imagenes', 'gpu-' + servicio, amount=1) | |
#Día a Día | |
now = datetime.now() | |
document_id_fecha_hora = now.strftime("%Y-%m-%d") | |
nombre_doc = document_id_fecha_hora + " - " + servidor | |
conexion_firebase.incrementar_campo_numerico('estadisticas', nombre_doc, 'imagenes_totales', amount=1) | |
conexion_firebase.incrementar_campo_numerico('estadisticas', nombre_doc, 'endpoint-' + servicio, amount=1) | |
conexion_firebase.incrementar_campo_numerico('estadisticas', nombre_doc, 'gpu-totales', amount=1) | |
conexion_firebase.incrementar_campo_numerico('estadisticas', nombre_doc, 'gpu-' + servicio, amount=1) | |
return result[0] | |
except Exception as e: | |
print("Excepción: ", e) | |
raise HTTPException( | |
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, | |
detail=e | |
) | |
def genera_platillo_inference(platillo): | |
modelos = conexion_firebase.obtener_documentos_habilitados('modelos') | |
print(f"Espacios habilitados: {modelos}") | |
modelo_elegido = random.choice(modelos) | |
datos_modelo = conexion_firebase.obtenAllDatos('modelos', modelo_elegido) | |
client = gradio_client.Client(datos_modelo['ruta'], hf_token=globales.llave) | |
creditos_restantes_inference = conexion_firebase.obtenDato('nowme', servidor, 'inferencias') | |
if creditos_restantes_inference > 0: | |
provedor_seleccionado = globales.proveedor | |
else: | |
provedor_seleccionado = globales.proveedor_back | |
prompt = globales.previo + platillo | |
print("Platillo enviado:", platillo) | |
client = InferenceClient( | |
provider= provedor_seleccionado, | |
model=datos_modelo['ruta'], | |
api_key=globales.llave | |
) | |
try: | |
image = client.text_to_image( | |
prompt, | |
#negative_prompt="live animals", | |
width=784, #786 | |
height=560, #568 | |
num_inference_steps=12, | |
seed=42 | |
) | |
herramientas.restaSegundosInference(globales.inference_cost) | |
except Exception as e: | |
print("Excepción: ", e) | |
if "Gateway Time-out" in str(e): | |
print("GATEWAY TIME-OUT 💀") | |
error_impreso = f"Error: {e}" | |
print(error_impreso) | |
raise HTTPException( | |
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, | |
) | |
img_io = io.BytesIO() | |
image.save(img_io, "PNG") | |
img_io.seek(0) | |
print("Platillo generado:", platillo) | |
conexion_firebase.registraLog(servidor, platillo, modelo_elegido, 42) | |
#Generales | |
conexion_firebase.incrementar_campo_numerico('estadisticas', 'imagenes', 'imagenes_totales', amount=1) | |
conexion_firebase.incrementar_campo_numerico('estadisticas', 'imagenes', 'endpoint-' + servicio, amount=1) | |
conexion_firebase.incrementar_campo_numerico('estadisticas', 'imagenes', 'inference-totales', amount=1) | |
conexion_firebase.incrementar_campo_numerico('estadisticas', 'imagenes', 'inference-' + servicio, amount=1) | |
#Día a Día | |
now = datetime.now() | |
document_id_fecha_hora = now.strftime("%Y-%m-%d") | |
nombre_doc = document_id_fecha_hora + " - " + servidor | |
conexion_firebase.incrementar_campo_numerico('estadisticas', nombre_doc, 'imagenes_totales', amount=1) | |
conexion_firebase.incrementar_campo_numerico('estadisticas', nombre_doc, 'endpoint-' + servicio, amount=1) | |
conexion_firebase.incrementar_campo_numerico('estadisticas', nombre_doc, 'inference-totales', amount=1) | |
conexion_firebase.incrementar_campo_numerico('estadisticas', nombre_doc, 'inference-' + servicio, amount=1) | |
return img_io |