felipecaspol commited on
Commit
b26704f
·
1 Parent(s): 92742eb

Actualizando API para modelo fusionado

Browse files
Files changed (1) hide show
  1. api.py +12 -21
api.py CHANGED
@@ -2,7 +2,7 @@ from fastapi import FastAPI
2
  from pydantic import BaseModel
3
  from transformers import AutoModelForCausalLM, AutoTokenizer
4
  import torch
5
- from huggingface_hub import hf_hub_download
6
  import os
7
 
8
  # ✅ Inicializar FastAPI
@@ -11,43 +11,35 @@ app = FastAPI()
11
  # ✅ Definir un directorio de caché seguro
12
  os.environ["HF_HOME"] = "/tmp/huggingface"
13
 
14
- # ✅ Nombre del modelo en Hugging Face Hub
15
- HUGGING_FACE_REPO = "fcp2207/Phi-2" # Reemplaza con tu usuario y nombre correcto del modelo en Hugging Face
16
- MODEL_FILENAME = "phi2_finetuned.pth" # Nombre del archivo en Hugging Face
17
 
18
- # ✅ Descargar el modelo desde Hugging Face con caché segura
19
- model_path = hf_hub_download(
20
- repo_id=HUGGING_FACE_REPO,
21
- filename=MODEL_FILENAME,
22
- cache_dir=os.environ["HF_HOME"] # Directorio seguro en Hugging Face Spaces
23
- )
24
 
25
- # ✅ Cargar el tokenizer
26
- tokenizer = AutoTokenizer.from_pretrained("microsoft/phi-2", cache_dir=os.environ["HF_HOME"])
 
27
 
28
  # ✅ Cargar el modelo en modo optimizado para memoria
 
29
  model = AutoModelForCausalLM.from_pretrained(
30
- "microsoft/phi-2",
31
- cache_dir=os.environ["HF_HOME"],
32
  torch_dtype=torch.float16, # Reduce el tamaño del modelo
33
  device_map="auto" # Optimiza la carga en CPU/GPU automáticamente
34
  )
35
 
36
- # ✅ Cargar los pesos del modelo entrenado
37
- model.load_state_dict(torch.load(model_path, map_location="cpu"))
38
  model.eval() # Poner el modelo en modo inferencia
39
 
40
-
41
  # ✅ Definir la estructura de la solicitud para la API
42
  class InputText(BaseModel):
43
  input_text: str
44
 
45
-
46
  @app.get("/")
47
  def home():
48
  """Endpoint de prueba para verificar que la API está activa"""
49
- return {"message": "API de Chatbot con Phi-2 está en funcionamiento 🚀"}
50
-
51
 
52
  @app.post("/predict/")
53
  def predict(request: InputText):
@@ -60,7 +52,6 @@ def predict(request: InputText):
60
  response_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
61
  return {"response": response_text}
62
 
63
-
64
  # ✅ Ejecución en modo local (opcional, no necesario en Hugging Face)
65
  if __name__ == "__main__":
66
  import uvicorn
 
2
  from pydantic import BaseModel
3
  from transformers import AutoModelForCausalLM, AutoTokenizer
4
  import torch
5
+ from huggingface_hub import snapshot_download
6
  import os
7
 
8
  # ✅ Inicializar FastAPI
 
11
  # ✅ Definir un directorio de caché seguro
12
  os.environ["HF_HOME"] = "/tmp/huggingface"
13
 
14
+ # ✅ Nombre del modelo en Hugging Face Hub (modelo fusionado)
15
+ HUGGING_FACE_REPO = "fcp2207/Fusion_modelo_Phi2" # Ruta donde subiste el modelo fusionado
 
16
 
17
+ # ✅ Descargar el modelo fusionado desde Hugging Face
18
+ print("🔄 Descargando modelo fusionado...")
19
+ model_path = snapshot_download(repo_id=HUGGING_FACE_REPO, cache_dir=os.environ["HF_HOME"])
 
 
 
20
 
21
+ # ✅ Cargar el tokenizer desde el modelo fusionado
22
+ print("🔄 Cargando tokenizer...")
23
+ tokenizer = AutoTokenizer.from_pretrained(model_path)
24
 
25
  # ✅ Cargar el modelo en modo optimizado para memoria
26
+ print("🔄 Cargando modelo...")
27
  model = AutoModelForCausalLM.from_pretrained(
28
+ model_path,
 
29
  torch_dtype=torch.float16, # Reduce el tamaño del modelo
30
  device_map="auto" # Optimiza la carga en CPU/GPU automáticamente
31
  )
32
 
 
 
33
  model.eval() # Poner el modelo en modo inferencia
34
 
 
35
  # ✅ Definir la estructura de la solicitud para la API
36
  class InputText(BaseModel):
37
  input_text: str
38
 
 
39
  @app.get("/")
40
  def home():
41
  """Endpoint de prueba para verificar que la API está activa"""
42
+ return {"message": "API de Chatbot con Phi-2 fusionado está en funcionamiento 🚀"}
 
43
 
44
  @app.post("/predict/")
45
  def predict(request: InputText):
 
52
  response_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
53
  return {"response": response_text}
54
 
 
55
  # ✅ Ejecución en modo local (opcional, no necesario en Hugging Face)
56
  if __name__ == "__main__":
57
  import uvicorn