Update stream_api.py
Browse files- stream_api.py +32 -5
stream_api.py
CHANGED
|
@@ -12,6 +12,7 @@ from fastapi.responses import JSONResponse, StreamingResponse
|
|
| 12 |
import uvicorn
|
| 13 |
import asyncio
|
| 14 |
import time
|
|
|
|
| 15 |
|
| 16 |
|
| 17 |
# Config
|
|
@@ -29,16 +30,41 @@ app = FastAPI(title="Custom FastVLM onnx gguf API",
|
|
| 29 |
# Load ONNX session once at startup
|
| 30 |
ort_session = None
|
| 31 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 32 |
@app.on_event("startup")
|
| 33 |
async def load_models():
|
| 34 |
global ort_session
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 35 |
print("Loading ONNX vision encoder...")
|
| 36 |
|
| 37 |
-
|
| 38 |
-
session_options.enable_mem_pattern = False
|
| 39 |
-
session_options.add_session_config_entry("session.use_ort_model_bytes_for_initializers", "0")
|
| 40 |
|
| 41 |
-
|
|
|
|
| 42 |
|
| 43 |
print("Providers:", ort_session.get_providers())
|
| 44 |
|
|
@@ -46,6 +72,7 @@ async def load_models():
|
|
| 46 |
|
| 47 |
await start_llm_server()
|
| 48 |
|
|
|
|
| 49 |
@app.on_event("shutdown")
|
| 50 |
async def shutdown():
|
| 51 |
if llm_process:
|
|
@@ -308,4 +335,4 @@ async def predict(image: UploadFile = File(...), prompt: str = Form(default="De
|
|
| 308 |
return JSONResponse(status_code=500, content={"status": "error", "message": str(e)})
|
| 309 |
|
| 310 |
if __name__ == "__main__":
|
| 311 |
-
uvicorn.run("
|
|
|
|
| 12 |
import uvicorn
|
| 13 |
import asyncio
|
| 14 |
import time
|
| 15 |
+
import zipfile
|
| 16 |
|
| 17 |
|
| 18 |
# Config
|
|
|
|
| 30 |
# Load ONNX session once at startup
|
| 31 |
ort_session = None
|
| 32 |
|
| 33 |
+
# @app.on_event("startup")
|
| 34 |
+
# async def load_models():
|
| 35 |
+
# global ort_session
|
| 36 |
+
# print("Loading ONNX vision encoder...")
|
| 37 |
+
|
| 38 |
+
# session_options = ort.SessionOptions()
|
| 39 |
+
# session_options.enable_mem_pattern = False
|
| 40 |
+
# session_options.add_session_config_entry("session.use_ort_model_bytes_for_initializers", "0")
|
| 41 |
+
|
| 42 |
+
# ort_session = ort.InferenceSession(ONNX_PATH, sess_options=session_options, providers=["CPUExecutionProvider"])
|
| 43 |
+
|
| 44 |
+
# print("Providers:", ort_session.get_providers())
|
| 45 |
+
|
| 46 |
+
# print("ONNX session ready ✅")
|
| 47 |
+
|
| 48 |
+
# await start_llm_server()
|
| 49 |
+
|
| 50 |
@app.on_event("startup")
|
| 51 |
async def load_models():
|
| 52 |
global ort_session
|
| 53 |
+
|
| 54 |
+
ZIPPED_PATH = "vision_projector.zip"
|
| 55 |
+
ONNX_PATH = "vision_projector_v1_standalone.onnx"
|
| 56 |
+
|
| 57 |
+
if not os.path.exists(ONNX_PATH):
|
| 58 |
+
with zipfile.ZipFile(ZIPPED_PATH, "r") as zip_ref:
|
| 59 |
+
zip_ref.extractall()
|
| 60 |
+
print("Extraction complete!")
|
| 61 |
+
|
| 62 |
print("Loading ONNX vision encoder...")
|
| 63 |
|
| 64 |
+
ort_session = ort.InferenceSession(ONNX_PATH, providers=["CPUExecutionProvider"])
|
|
|
|
|
|
|
| 65 |
|
| 66 |
+
print(f"intra_op_num_threads: {ort_session.get_session_options().intra_op_num_threads}")
|
| 67 |
+
print(f"inter_op_num_threads: {ort_session.get_session_options().inter_op_num_threads}")
|
| 68 |
|
| 69 |
print("Providers:", ort_session.get_providers())
|
| 70 |
|
|
|
|
| 72 |
|
| 73 |
await start_llm_server()
|
| 74 |
|
| 75 |
+
|
| 76 |
@app.on_event("shutdown")
|
| 77 |
async def shutdown():
|
| 78 |
if llm_process:
|
|
|
|
| 335 |
return JSONResponse(status_code=500, content={"status": "error", "message": str(e)})
|
| 336 |
|
| 337 |
if __name__ == "__main__":
|
| 338 |
+
uvicorn.run("stream_api:app", host="0.0.0.0", port=8000, reload=False)
|