Spaces:
Sleeping
Sleeping
Hjgugugjhuhjggg
commited on
Update app.py
Browse files
app.py
CHANGED
@@ -11,10 +11,11 @@ from transformers import (
|
|
11 |
pipeline
|
12 |
)
|
13 |
from io import BytesIO
|
14 |
-
import asyncio
|
15 |
import boto3
|
16 |
from botocore.exceptions import NoCredentialsError
|
17 |
from huggingface_hub import snapshot_download
|
|
|
|
|
18 |
|
19 |
# Configuraci贸n global
|
20 |
AWS_ACCESS_KEY_ID = os.getenv("AWS_ACCESS_KEY_ID")
|
@@ -65,28 +66,36 @@ class S3ModelLoader:
|
|
65 |
|
66 |
s3_uri = self._get_s3_uri(model_name)
|
67 |
try:
|
68 |
-
#
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
90 |
|
91 |
return token_dict[model_name]
|
92 |
except NoCredentialsError:
|
@@ -232,7 +241,7 @@ async def generate_video(request: GenerateRequest):
|
|
232 |
video = video_generator(validated_body.input_text)[0]
|
233 |
|
234 |
video_byte_arr = BytesIO()
|
235 |
-
video.save(video_byte_arr)
|
236 |
video_byte_arr.seek(0)
|
237 |
|
238 |
return StreamingResponse(video_byte_arr, media_type="video/mp4")
|
@@ -240,7 +249,7 @@ async def generate_video(request: GenerateRequest):
|
|
240 |
except Exception as e:
|
241 |
raise HTTPException(status_code=500, detail=f"Internal server error: {str(e)}")
|
242 |
|
243 |
-
#
|
244 |
if __name__ == "__main__":
|
245 |
import uvicorn
|
246 |
uvicorn.run(app, host="0.0.0.0", port=7860)
|
|
|
11 |
pipeline
|
12 |
)
|
13 |
from io import BytesIO
|
|
|
14 |
import boto3
|
15 |
from botocore.exceptions import NoCredentialsError
|
16 |
from huggingface_hub import snapshot_download
|
17 |
+
import asyncio
|
18 |
+
import shutil
|
19 |
|
20 |
# Configuraci贸n global
|
21 |
AWS_ACCESS_KEY_ID = os.getenv("AWS_ACCESS_KEY_ID")
|
|
|
66 |
|
67 |
s3_uri = self._get_s3_uri(model_name)
|
68 |
try:
|
69 |
+
# Verificar si el modelo ya est谩 en S3
|
70 |
+
try:
|
71 |
+
self.s3_client.head_object(Bucket=self.bucket_name, Key=f'{model_name}/model')
|
72 |
+
print(f"Modelo {model_name} ya existe en S3.")
|
73 |
+
except self.s3_client.exceptions.ClientError:
|
74 |
+
print(f"Modelo {model_name} no existe en S3. Descargando desde Hugging Face...")
|
75 |
+
model_path = snapshot_download(model_name, token=HUGGINGFACE_HUB_TOKEN)
|
76 |
+
|
77 |
+
# Cargar el modelo y tokenizer
|
78 |
+
model = AutoModelForCausalLM.from_pretrained(model_path)
|
79 |
+
tokenizer = AutoTokenizer.from_pretrained(model_path)
|
80 |
+
|
81 |
+
# Asignar EOS y PAD token si no est谩n definidos
|
82 |
+
if tokenizer.eos_token_id is None:
|
83 |
+
tokenizer.eos_token_id = tokenizer.pad_token_id
|
84 |
+
|
85 |
+
# Guardar el modelo y el tokenizer en el diccionario
|
86 |
+
token_dict[model_name] = {
|
87 |
+
"model": model,
|
88 |
+
"tokenizer": tokenizer,
|
89 |
+
"pad_token_id": tokenizer.pad_token_id,
|
90 |
+
"eos_token_id": tokenizer.eos_token_id
|
91 |
+
}
|
92 |
+
|
93 |
+
# Subir los archivos del modelo y tokenizer a S3
|
94 |
+
self.s3_client.upload_file(model_path, self.bucket_name, f'{model_name}/model')
|
95 |
+
self.s3_client.upload_file(f'{model_path}/tokenizer', self.bucket_name, f'{model_name}/tokenizer')
|
96 |
+
|
97 |
+
# Eliminar los archivos locales despu茅s de haber subido a S3
|
98 |
+
shutil.rmtree(model_path)
|
99 |
|
100 |
return token_dict[model_name]
|
101 |
except NoCredentialsError:
|
|
|
241 |
video = video_generator(validated_body.input_text)[0]
|
242 |
|
243 |
video_byte_arr = BytesIO()
|
244 |
+
video.save(video_byte_arr, format="MP4")
|
245 |
video_byte_arr.seek(0)
|
246 |
|
247 |
return StreamingResponse(video_byte_arr, media_type="video/mp4")
|
|
|
249 |
except Exception as e:
|
250 |
raise HTTPException(status_code=500, detail=f"Internal server error: {str(e)}")
|
251 |
|
252 |
+
# Ejecutar el servidor FastAPI con Uvicorn
|
253 |
if __name__ == "__main__":
|
254 |
import uvicorn
|
255 |
uvicorn.run(app, host="0.0.0.0", port=7860)
|