Skip to content

Commit db57eed

Browse files
author
lno
committed
Adding example for sentence embedding
1 parent 88b7130 commit db57eed

File tree

6 files changed

+103
-0
lines changed

6 files changed

+103
-0
lines changed
+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
FROM nvidia/cuda:11.7.1-devel-ubuntu20.04
2+
3+
# Update, install
4+
RUN apt update && \
5+
apt install -y build-essential python3 python3-pip git
6+
7+
RUN pip install --upgrade pip setuptools wheel
8+
9+
# Create user instead of using root
10+
ENV USER='user'
11+
RUN groupadd -r user && useradd -r -g $USER $USER
12+
USER $USER
13+
14+
# Define workdir
15+
WORKDIR /home/$USER/app
16+
17+
# Install project
18+
COPY . .
19+
RUN pip install -r requirements.txt
20+
21+
# Get model weights and tokenizer
22+
RUN python3 get_models.py
23+
24+
# Publish port
25+
EXPOSE 50051:50051
26+
27+
# Enjoy
28+
ENTRYPOINT ["python3", "server.py"]
29+
CMD ["--address", "[::]:50051"]
+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# OpenChatKit service
2+
3+
## Description
4+
5+
This project use the [OpenChatKit](https://github.com/togethercomputer/OpenChatKit) model and turns it into an gRPC service that can be used through [SimpleAI](https://github.com/lhenault/simpleAI).
6+
7+
To quote the project:
8+
9+
>
10+
OpenChatKit provides a powerful, open-source base to create both specialized and general purpose chatbots for various applications. The kit includes an instruction-tuned 20 billion parameter language model, a 6 billion parameter moderation model, and an extensible retrieval system for including up-to-date responses from custom repositories. It was trained on the OIG-43M training dataset, which was a collaboration between Together, LAION, and Ontocord.ai. Much more than a model release, this is the beginning of an open source project. We are releasing a set of tools and processes for ongoing improvement with community contributions.
11+
12+
## Build
13+
14+
```bash
15+
docker build . -t openchatkit-service:latest
16+
```
17+
18+
## Start service
19+
20+
```bash
21+
docker run -it --rm --p 50051:50051 --gpus all openchatkit-service:latest
22+
```
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import logging
2+
3+
from sentence_transformers import SentenceTransformer
4+
5+
MODEL_ID = 'all-MiniLM-L6-v2'
6+
7+
if __name__ == '__main__':
8+
try:
9+
model = SentenceTransformer(MODEL_ID)
10+
except Exception as ex:
11+
logging.exception(f'Could not retrieve {MODEL_ID}: {ex}')
+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import logging
2+
from dataclasses import dataclass
3+
4+
from sentence_transformers import SentenceTransformer
5+
from simple_ai.serve.python.embedding.model import LanguageModel
6+
7+
8+
from get_models import MODEL_ID
9+
10+
@dataclass(unsafe_hash=True)
11+
class SentenceTransformerModel:
12+
model = SentenceTransformer(MODEL_ID)
13+
def embed(self,
14+
inputs: list=[],
15+
) -> list:
16+
logging.info(f'Processing inputs : {inputs}')
17+
embeddings = self.model.encode(inputs)
18+
logging.info(f'Successfully computed embeddings (shape : {embeddings.shape}) for inputs : {inputs}')
19+
return embeddings.tolist()
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
sentence-transformers
2+
simple_ai_server>=0.1.9
+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import logging
2+
3+
from simple_ai.serve.python.embedding.server import serve, LanguageModelServicer
4+
5+
from model import SentenceTransformerModel as Model
6+
7+
8+
if __name__ == '__main__':
9+
import argparse
10+
11+
logging.basicConfig(level=logging.INFO)
12+
13+
parser = argparse.ArgumentParser()
14+
parser.add_argument('-a', '--address', type=str, default='[::]:50051')
15+
args = parser.parse_args()
16+
17+
logging.info(f'Starting gRPC server on {args.address}')
18+
19+
model_servicer = LanguageModelServicer(model=Model())
20+
serve(address=args.address, model_servicer=model_servicer)

0 commit comments

Comments
 (0)