Sid-the-sloth commited on
Commit
b5db444
·
1 Parent(s): b215cfc

Initial model sever setup

Browse files
Files changed (3) hide show
  1. Dockerfile +13 -0
  2. app.py +40 -0
  3. requirements.txt +6 -0
Dockerfile ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FROM python:3.10-slim
2
+
3
+ WORKDIR /code
4
+
5
+ COPY ./requirements.txt /code/requirements.txt
6
+
7
+ RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt
8
+
9
+ COPY ./app.py /code/app.py
10
+
11
+ EXPOSE 7860
12
+
13
+ CMD ["uvicorn","app:app","--host","0.0.0.0","--port","7860"]
app.py ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from fastapi import FastAPI, HTTPException
2
+ from pydantic import BaseModel
3
+ from sentence_transformers import SentenceTransformer
4
+ import logging
5
+
6
+ logging.basicConfig(level=logging.INFO)
7
+ logger=logging.getLogger(__name__)
8
+
9
+ logger.info("Server Starting")
10
+ try:
11
+ logger.info("Loading model")
12
+ model=SentenceTransformer("Sid-the-sloth/leetcode_unixcoder_final")
13
+ logger.info("Model Loaded")
14
+ except:
15
+ logger.error("Failed to load Model")
16
+ model=None
17
+
18
+ app=FastAPI()
19
+
20
+ #Req and Response Pydantic models
21
+ class EmbedRequest(BaseModel):
22
+ text : str
23
+
24
+ class EmbedResponse(BaseModel):
25
+ embedding: list[float]
26
+
27
+ @app.get("/")
28
+ def root_status():
29
+ return {"status":"ok","model":model is not None}
30
+
31
+ @app.post("/embed",response_model=EmbedResponse)
32
+ def get_embedding(request: EmbedRequest):
33
+ if model is None:
34
+ HTTPException(status_code=503,detail="Model could not be loaded")
35
+ try:
36
+ embedding=model.encode(request.text).tolist()
37
+ return EmbedResponse(embedding=embedding)
38
+ except Exception as e:
39
+ logger.error("Error during embedding generation %s",e)
40
+ return HTTPException(status_code=500,detail="Error generating embeddings")
requirements.txt ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ fastapi==0.116.1
2
+ uvicorn==0.35.0
3
+ sentence-transformers==5.1.0
4
+ torch==2.8.0
5
+ python-dotenv==1.1.1
6
+ pydantic