A server that can easily serve AI models trough an API
Find a file
2025-01-23 08:42:30 +01:00
source improved ChatInterface display 2025-01-23 08:42:30 +01:00
.gitignore replaced the previous venv system by a conda one, allowing for better dependencies management 2025-01-18 14:44:46 +01:00
docker-compose.yml base for the application : support custom python application and auto-install dependencies 2025-01-08 19:00:47 +01:00
Dockerfile replaced the previous venv system by a conda one, allowing for better dependencies management 2025-01-18 14:44:46 +01:00
environment.yml replaced the previous venv system by a conda one, allowing for better dependencies management 2025-01-18 14:44:46 +01:00
LICENSE.md base for the application : support custom python application and auto-install dependencies 2025-01-08 19:00:47 +01:00
README.md replaced the previous venv system by a conda one, allowing for better dependencies management 2025-01-18 14:44:46 +01:00

AI-Server

A server that can serve AI models with an API and an authentication system

Usage

The ai-server project require a conda environement. You can use Docker to deploy it easily.

Docker

You can easily use docker-compose to run the project. Simply go into the project directory and run :

docker compose run -d

Environment Variables

The project use special environement variables :

Name Description
MODEL_DIRECTORY the directory where the models are stored

Volumes

The project might store data inside multiples volumes :

Path Type Required Description
/models/ Volume True The place where the models are stored
/root/.huggingface/hub Bind False The place where the internal models are cached. Avoid redownloading huge amount of data at every inference

Models

A model is an object that can be loaded and do inference.

It is stored inside a directory and must always contain a config.json file.

Configuration

This is a json-structured file with basic information about the model.

It describe :

  • its type (see below)
  • its tags
  • its interface
  • its inputs
  • its output mimetype

And other properties depending on the model type.

Types

There is for now only a single type of Model : the Python model

Python Model

A python model is isolated in a conda environement.

To be considered a Python model, you need theses three files :

File Description
config.json The configuration file
env The conda virtual environment
model.py The model file
Configuration

Additionnal fields might be found in the configuration :

...

Virtual Environment

You can create a conda virtual environement it with :

conda create --prefix ./env/ python=<version>

You can install your requirements inside with pip3 or conda.

Internal Model

You need to create a model.py file containing a class named Model. This class must be exposed with the Pyro4 library for inter-operability with our main environement.

Here is an example of an internal model :

import Pyro4

import torch
import transformers


@Pyro4.expose
class Model:
    def __init__(self):
        # load the model
        self.pipe = transformers.pipeline(...)

    def infer(self, messages: list[dict]) -> bytes:
        with torch.no_grad():
            outputs = self.pipe(messages)

        return outputs[0]["generated_text"][-1]