alexfremont commited on
Commit
945554c
·
1 Parent(s): 37e8687

try 8 threads

Browse files
Files changed (1) hide show
  1. main.py +32 -32
main.py CHANGED
@@ -54,7 +54,7 @@ class PredictRequest(BaseModel):
54
  modelName: str
55
 
56
 
57
- torch.set_num_threads(6)
58
 
59
  # Dictionnaire pour stocker les pipelines de modèles
60
  model_pipelines = {}
@@ -128,44 +128,44 @@ class BatchPredictRequest(BaseModel):
128
  modelName: str
129
 
130
 
131
- @app.post("/batch_predict")
132
- async def batch_predict(request: BatchPredictRequest):
133
- model_name = request.modelName
134
- results = []
135
 
136
- # Verify if the model is loaded
137
- if model_name not in model_pipelines:
138
- raise HTTPException(status_code=404, detail="Model not found")
139
 
140
- model = model_pipelines[model_name]
141
 
142
- # Asynchronously process each image
143
- async with httpx.AsyncClient() as client:
144
- for image_url in request.imageUrls:
145
- try:
146
- response = await client.get(image_url)
147
- image = Image.open(BytesIO(response.content))
148
- except Exception as e:
149
- results.append({"imageUrl": image_url, "error": "Invalid image URL"})
150
- continue
151
 
152
- # Preprocess the image
153
- processed_image = process_image(image, size=image_size)
154
 
155
- # Convert to tensor
156
- image_tensor = transforms.ToTensor()(processed_image).unsqueeze(0)
157
 
158
- # Perform inference
159
- with torch.no_grad():
160
- outputs = model(image_tensor)
161
- probabilities = torch.nn.functional.softmax(outputs, dim=1)
162
- predicted_probabilities = probabilities.numpy().tolist()
163
- confidence = round(predicted_probabilities[0][1], 2)
164
 
165
- results.append({"imageUrl": image_url, "confidence": confidence})
166
 
167
- # Return the results as JSON
168
- return JSONResponse(content={"results": results})
169
 
170
 
171
  @app.post("/batch_predict")
@@ -178,7 +178,7 @@ async def batch_predict(request: BatchPredictRequest):
178
 
179
  model = model_pipelines[model_name]
180
  semaphore = asyncio.Semaphore(
181
- 6
182
  ) # Limiter à 8 tâches simultanées pour éviter de surcharger la machine
183
 
184
  async def process_single_image(image_url):
 
54
  modelName: str
55
 
56
 
57
+ torch.set_num_threads(8)
58
 
59
  # Dictionnaire pour stocker les pipelines de modèles
60
  model_pipelines = {}
 
128
  modelName: str
129
 
130
 
131
+ # @app.post("/batch_predict")
132
+ # async def batch_predict(request: BatchPredictRequest):
133
+ # model_name = request.modelName
134
+ # results = []
135
 
136
+ # # Verify if the model is loaded
137
+ # if model_name not in model_pipelines:
138
+ # raise HTTPException(status_code=404, detail="Model not found")
139
 
140
+ # model = model_pipelines[model_name]
141
 
142
+ # # Asynchronously process each image
143
+ # async with httpx.AsyncClient() as client:
144
+ # for image_url in request.imageUrls:
145
+ # try:
146
+ # response = await client.get(image_url)
147
+ # image = Image.open(BytesIO(response.content))
148
+ # except Exception as e:
149
+ # results.append({"imageUrl": image_url, "error": "Invalid image URL"})
150
+ # continue
151
 
152
+ # # Preprocess the image
153
+ # processed_image = process_image(image, size=image_size)
154
 
155
+ # # Convert to tensor
156
+ # image_tensor = transforms.ToTensor()(processed_image).unsqueeze(0)
157
 
158
+ # # Perform inference
159
+ # with torch.no_grad():
160
+ # outputs = model(image_tensor)
161
+ # probabilities = torch.nn.functional.softmax(outputs, dim=1)
162
+ # predicted_probabilities = probabilities.numpy().tolist()
163
+ # confidence = round(predicted_probabilities[0][1], 2)
164
 
165
+ # results.append({"imageUrl": image_url, "confidence": confidence})
166
 
167
+ # # Return the results as JSON
168
+ # return JSONResponse(content={"results": results})
169
 
170
 
171
  @app.post("/batch_predict")
 
178
 
179
  model = model_pipelines[model_name]
180
  semaphore = asyncio.Semaphore(
181
+ 8
182
  ) # Limiter à 8 tâches simultanées pour éviter de surcharger la machine
183
 
184
  async def process_single_image(image_url):