Hjgugugjhuhjggg commited on
Commit
1836b57
verified
1 Parent(s): 37276c2

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +34 -25
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
- # Descargar el modelo desde Hugging Face y guardarlo en S3 si no existe
69
- model_path = snapshot_download(model_name, token=HUGGINGFACE_HUB_TOKEN)
70
-
71
- # Cargar el modelo y tokenizer
72
- model = AutoModelForCausalLM.from_pretrained(model_path)
73
- tokenizer = AutoTokenizer.from_pretrained(model_path)
74
-
75
- # Asignar EOS y PAD token si no est谩n definidos
76
- if tokenizer.eos_token_id is None:
77
- tokenizer.eos_token_id = tokenizer.pad_token_id
78
-
79
- # Guardar el modelo y el tokenizer en el diccionario
80
- token_dict[model_name] = {
81
- "model": model,
82
- "tokenizer": tokenizer,
83
- "pad_token_id": tokenizer.pad_token_id,
84
- "eos_token_id": tokenizer.eos_token_id
85
- }
86
-
87
- # Subir los archivos del modelo y tokenizer a S3 si no est谩n all铆
88
- self.s3_client.upload_file(model_path, self.bucket_name, f'{model_name}/model')
89
- self.s3_client.upload_file(f'{model_path}/tokenizer', self.bucket_name, f'{model_name}/tokenizer')
 
 
 
 
 
 
 
 
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
- # Configuraci贸n para ejecutar el servidor
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)