gdleds commited on
Commit
0bd26fe
·
1 Parent(s): c4a33b1

modif app pour recéuperer dernier version du modele

Browse files
Files changed (1) hide show
  1. app.py +13 -3
app.py CHANGED
@@ -86,7 +86,14 @@ class InputData(BaseModel):
86
  # === Configuration S3 ===
87
  S3_BUCKET = os.getenv("S3_BUCKET")
88
  MODEL_KEY = os.getenv("MODEL_KEY")
 
89
  s3 = boto3.client("s3")
 
 
 
 
 
 
90
 
91
  # === Chargement du modèle depuis S3 au démarrage ===
92
  model = None
@@ -95,8 +102,11 @@ model = None
95
  def load_model():
96
  global model
97
  try:
98
- print(f"Téléchargement du modèle depuis s3://{S3_BUCKET}/{MODEL_KEY}")
99
- response = s3.get_object(Bucket=S3_BUCKET, Key=MODEL_KEY)
 
 
 
100
  model_bytes = io.BytesIO(response["Body"].read())
101
  model = joblib.load(model_bytes)
102
  print("✅ Modèle chargé avec succès")
@@ -115,7 +125,7 @@ def predict(data: InputData):
115
  # Convertir les données en DataFrame avec colonnes correctes
116
  df = pd.DataFrame([data.dict()])
117
  print("📥 Données reçues :", df.head(1).to_dict())
118
-
119
  # Faire la prédiction
120
  prediction = model.predict(df)
121
  is_fraud = int(prediction[0])
 
86
  # === Configuration S3 ===
87
  S3_BUCKET = os.getenv("S3_BUCKET")
88
  MODEL_KEY = os.getenv("MODEL_KEY")
89
+ S3_PREFIX = "mlflow/models"
90
  s3 = boto3.client("s3")
91
+ def latest_model(bucket:str, prefix: str):
92
+ response = s3.list_objects_V2(Bucket=bucket, Prefix=prefix)
93
+ if "content" not in response:
94
+ raise FileNotFoundError(f"Aucun modèle trouvé")
95
+ latest = max(response["content"]), key=lambda x: x["Last Modified"]
96
+ return latest["key"]
97
 
98
  # === Chargement du modèle depuis S3 au démarrage ===
99
  model = None
 
102
  def load_model():
103
  global model
104
  try:
105
+ latest_model_key=latest_model(S3_BUCKET,S3_PREFIX)
106
+ print(f"Téléchargement du dernier modèle depuis s3://{S3_BUCKET}/{latest_model_key}")
107
+
108
+ # print(f"Téléchargement du modèle depuis s3://{S3_BUCKET}/{MODEL_KEY}")
109
+ response = s3.get_object(Bucket=S3_BUCKET, Key=latest_model_key)
110
  model_bytes = io.BytesIO(response["Body"].read())
111
  model = joblib.load(model_bytes)
112
  print("✅ Modèle chargé avec succès")
 
125
  # Convertir les données en DataFrame avec colonnes correctes
126
  df = pd.DataFrame([data.dict()])
127
  print("📥 Données reçues :", df.head(1).to_dict())
128
+ print(f"Téléchargement du dernier modèle depuis s3://{S3_BUCKET}/{latest_model_key}")
129
  # Faire la prédiction
130
  prediction = model.predict(df)
131
  is_fraud = int(prediction[0])