Vishwas1 commited on
Commit
deddd5d
·
verified ·
1 Parent(s): 3b359a0

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +33 -0
app.py CHANGED
@@ -5,9 +5,18 @@ import subprocess
5
  import os
6
  import uuid
7
  from huggingface_hub import HfApi, HfFolder
 
8
 
9
  app = FastAPI()
10
 
 
 
 
 
 
 
 
 
11
  # Define the expected payload structure
12
  class TrainingRequest(BaseModel):
13
  task: str # 'generation' or 'classification'
@@ -24,9 +33,17 @@ if not HF_API_TOKEN:
24
  HfFolder.save_token(HF_API_TOKEN)
25
  api = HfApi()
26
 
 
 
 
 
 
 
 
27
  @app.post("/train")
28
  def train_model(request: TrainingRequest):
29
  try:
 
30
  # Create a unique directory for this training session
31
  session_id = str(uuid.uuid4())
32
  session_dir = f"./training_sessions/{session_id}"
@@ -53,7 +70,23 @@ def train_model(request: TrainingRequest):
53
  # Start the training process as a background task
54
  subprocess.Popen(cmd, cwd=session_dir)
55
 
 
 
56
  return {"status": "Training started", "session_id": session_id}
57
 
58
  except Exception as e:
 
59
  raise HTTPException(status_code=500, detail=str(e))
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5
  import os
6
  import uuid
7
  from huggingface_hub import HfApi, HfFolder
8
+ import logging
9
 
10
  app = FastAPI()
11
 
12
+ # Configure logging
13
+ logging.basicConfig(
14
+ filename='training.log',
15
+ filemode='a',
16
+ format='%(asctime)s - %(levelname)s - %(message)s',
17
+ level=logging.INFO
18
+ )
19
+
20
  # Define the expected payload structure
21
  class TrainingRequest(BaseModel):
22
  task: str # 'generation' or 'classification'
 
33
  HfFolder.save_token(HF_API_TOKEN)
34
  api = HfApi()
35
 
36
+ @app.get("/")
37
+ def read_root():
38
+ return {
39
+ "message": "Welcome to the Training Space API!",
40
+ "instructions": "To train a model, send a POST request to /train with the required parameters."
41
+ }
42
+
43
  @app.post("/train")
44
  def train_model(request: TrainingRequest):
45
  try:
46
+ logging.info(f"Received training request for model: {request.model_name}, Task: {request.task}")
47
  # Create a unique directory for this training session
48
  session_id = str(uuid.uuid4())
49
  session_dir = f"./training_sessions/{session_id}"
 
70
  # Start the training process as a background task
71
  subprocess.Popen(cmd, cwd=session_dir)
72
 
73
+ logging.info(f"Training started for model: {request.model_name}, Session ID: {session_id}")
74
+
75
  return {"status": "Training started", "session_id": session_id}
76
 
77
  except Exception as e:
78
+ logging.error(f"Error during training request: {str(e)}")
79
  raise HTTPException(status_code=500, detail=str(e))
80
+
81
+ # Optional: Status Endpoint
82
+ @app.get("/status/{session_id}")
83
+ def get_status(session_id: str):
84
+ session_dir = f"./training_sessions/{session_id}"
85
+ log_file = os.path.join(session_dir, "training.log")
86
+ if not os.path.exists(log_file):
87
+ raise HTTPException(status_code=404, detail="Session ID not found.")
88
+
89
+ with open(log_file, "r", encoding="utf-8") as f:
90
+ logs = f.read()
91
+
92
+ return {"session_id": session_id, "logs": logs}