Skip to main content

model serving frame work

Project description

UniServe

English | 中文

UniServe is a model serving framework built on top of LitServe, designed to simplify the deployment and serving of machine learning models.

Features

  • Easy deployment of machine learning models with minimal code
  • Support for both simple APIs and file-based APIs
  • Built-in support for batching and multi-device inference
  • Extensible base classes for custom model APIs
  • CLI tool for launching model servers
  • Compatible with OpenAI API format for easy client integration

Installation

pip install uniserve

Or install from source:

pip install -e .

Quick Start

Run example

# Run with a simple API example
uniserve --api-list example.simple_api.api_list --port 8000
# Run with a simple API example in the no installed source code
uv run uniserve --api-list example.simple_api.api_list --port 8000

Create your own API

Create a custom API by extending the BaseLitAPI class:

from uniserve import BaseLitAPI

class MyModelAPI(BaseLitAPI):
    def load_model(self):
        # Load your model here
        model = MyModel()
        return model

    def decode_request(self, request):
        # Decode the incoming request
        return request.get("input")

    def predict(self, x):
        # Run model inference
        return self.model(x)

    def encode_response(self, output):
        # Encode the output into a response
        return {"result": output}

# Create an instance
my_api = MyModelAPI()
api_list = [my_api]

Then run your API:

uniserve --api-list my_module.api_list --port 8000

Debug Without Request

UniServe provides a convenient way to debug your API implementation without sending actual HTTP requests. This is especially useful during development to quickly test your model logic.

You can use the built-in debug method in your API class:

# Directly test your API methods without HTTP requests
api = MyModelAPI()
result = api.debug(request={"input": "test_data"}, device="cpu")
print(result)

See example/uni_api_debug.py for a complete example of how to debug your API implementation.

CLI Options

  • --api-list: Fully qualified name of the API list object to serve (required)
  • --port: Port to run the server on (default: 8000)
  • --host: Host to run the server on (default: 127.0.0.1)
  • --accelerator: Accelerator to use (e.g., 'cuda', 'cpu', 'auto') (default: auto)
  • --devices: Devices to use (e.g., 'auto', '[0]', '[0,1]') (default: auto)
  • --api-path: API endpoint path (default: None)

Base Classes

  • BaseLitAPI: Base class for simple APIs, extends LitAPI with a setup method
  • RequestLitAPI: Base class for handling file uploads with additional parameters
  • MultiFileLitAPI: Alternative base class for handling multiple file uploads
  • NNRequestLitAPI: Specialized base class for neural network inference with structured preprocessing and postprocessing steps

Examples

Check the example/ directory for more detailed examples of how to use UniServe with different types of models.

License

This project is licensed under the GPL-3.0 License - see the LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

uniserve-0.0.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

uniserve-0.0.4-cp313-cp313-macosx_11_0_arm64.whl (669.0 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

uniserve-0.0.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (958.5 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

uniserve-0.0.4-cp312-cp312-macosx_11_0_arm64.whl (504.0 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

uniserve-0.0.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (621.6 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

uniserve-0.0.4-cp311-cp311-macosx_11_0_arm64.whl (337.9 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

uniserve-0.0.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (315.9 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

uniserve-0.0.4-cp310-cp310-macosx_11_0_arm64.whl (172.6 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

Details for the file uniserve-0.0.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for uniserve-0.0.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 aa2e8ff9ba28647c8f49fe6f9f9ac913a66d4ec4c003e2ef0d4817a0a4a5cc43
MD5 a713a098fa5efde31200ad3543bfe326
BLAKE2b-256 f13b825b32ccff0944aaeb95255ccee16984ac294fcfeffa375711172bbf06a0

See more details on using hashes here.

File details

Details for the file uniserve-0.0.4-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for uniserve-0.0.4-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 183d75aac3e26e3218f32614f4eda2158325f49b283f823e397d1a21f234ed43
MD5 a41bbb963e1661b73603bfdd65412035
BLAKE2b-256 aec3e9ec056904c4757d8b9befc323b22c79f4d64772f948d12d9c02da8b972a

See more details on using hashes here.

File details

Details for the file uniserve-0.0.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for uniserve-0.0.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a6ef010ef4d386c0fdf88bcd6c544fc8294fa5a2cfc23aaf1e74df170c4eeaad
MD5 8aa77a069d364d5c3fb89ee0793f3b84
BLAKE2b-256 53554588158679bb5bb32d15900d8ad188435c355ddaef1c3d25d4d32464a19e

See more details on using hashes here.

File details

Details for the file uniserve-0.0.4-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for uniserve-0.0.4-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 69dba7e3145f23871f6b639c0318474352a0820cb7fda500572fc142d35346f7
MD5 219e0aacfb0dcf80703a53a57b251d51
BLAKE2b-256 e56496599fca972b70c9ccba62b7e886ea0384da8f172957d4e2e0477e2cf7a8

See more details on using hashes here.

File details

Details for the file uniserve-0.0.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for uniserve-0.0.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 91145e8ea0dea9c0040388a7665c7b848981f5f1864c074e4a7f2f0c9bb56914
MD5 0b1cbfa6a955dd4f3c01b7f4fbabd6bc
BLAKE2b-256 7ee66af79c4214c0084a28d2d65cbc02a8cb30732ca0bc458b0a32ddaefa035d

See more details on using hashes here.

File details

Details for the file uniserve-0.0.4-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for uniserve-0.0.4-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 08ce6cb9592f12e27270175066919e8a64bdd2ccbfbb0f88b1e26d01b37864a2
MD5 4fc857b3fc2372e1a7b4af7c24c0de1e
BLAKE2b-256 453cce3d7ec8ff0d4d24c2ef539a1053f87d9088a4258433517d43f73fcabc62

See more details on using hashes here.

File details

Details for the file uniserve-0.0.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for uniserve-0.0.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 33836a5ec9467b88061253cd16b48539bc877d977012fa384f5df8ebe694f2f0
MD5 8ac87c7a0a19627c207c3806a728367c
BLAKE2b-256 1be5e246fddb38057ecd09365aa161bc00afec36f004f724f18283ae94f85091

See more details on using hashes here.

File details

Details for the file uniserve-0.0.4-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for uniserve-0.0.4-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4f623d8b6243ce7cb4a6040b1115d27bc8bdf59f0e471b16ffa99f115c3c514d
MD5 adcc29503e6330d50ec5e47549c1c04f
BLAKE2b-256 e490fdb4ad15d4fa1d82e4eb244dffc4f85ee1caa156d42cb76afbba41ede05e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page