Dynamic Request Batching: Group concurrent single-item incoming HTTP requests into a single tensor batch to maximize GPU/CPU vectorization efficiency.
Model Serialization: Export trained PyTorch / TensorFlow weights to ONNX or TensorRT for optimized runtime kernels and cross-framework portability.
Warm-up Requests: Run synthetic forward passes during container startup before declaring the pod healthy in readinessProbe.
Reference ONNX Runtime Inference Service (Python)¶
importnumpyasnpimportonnxruntimeasortfromfastapiimportFastAPI,HTTPExceptionfrompydanticimportBaseModelfromtypingimportListapp=FastAPI(title="ML Inference Service")# Load model session once at application startupsession=ort.InferenceSession("model.onnx",providers=["CUDAExecutionProvider","CPUExecutionProvider"])input_name=session.get_inputs()[0].nameclassPredictRequest(BaseModel):features:List[float]classPredictResponse(BaseModel):prediction:floatconfidence:float@app.post("/v1/predict",response_model=PredictResponse)defpredict(request:PredictRequest):input_tensor=np.array([request.features],dtype=np.float32)outputs=session.run(None,{input_name:input_tensor})logits=outputs[0][0]# Softmax / Sigmoid output extractionprob=1.0/(1.0+np.exp(-logits))returnPredictResponse(prediction=round(float(prob)),confidence=float(prob))@app.get("/healthz")defhealth():return{"status":"ready"}