1.2K+ Star!LitServe:一个为模型服务而设计的高性能框架,支持自动扩展、批处理、GPU推理等多种功能

欢迎关注我,持续获取更多内容,感谢&在看~

LitServe 简介

LitServe[1]  是一个为AI模型设计的高吞吐量服务引擎,它基于FastAPI构建,提供了易于使用且灵活的特性,并且能够满足企业级规模的需求。

LitServe的主要特点包括快速服务、支持自定义模型、批处理、流处理以及GPU自动扩展等。

项目特点

主要特点

  • 快速服务:LitServe的响应速度至少是标准FastAPI的2倍。
  • 自定义模型支持:用户可以使用自己的模型进行服务。
  • 批处理与流处理:LitServe支持请求的批处理和流处理,提高效率。
  • GPU自动扩展:根据需求自动扩展GPU资源,优化性能。
  • 易于使用:简化了AI模型服务的部署和使用。
  • 多模态支持:支持多种数据类型的模型服务。
  • 构建于FastAPI之上:利用了FastAPI的灵活性和强大的功能。
  • 自托管或全托管:支持在本地机器自托管或在Lightning AI平台上全托管。

使用场景

LitServe适用于需要快速、灵活部署AI模型服务的各种场景,包括但不限于:

  • 通用AI(Gen AI)
  • 经典机器学习模型
  • 嵌入服务器
  • 大型语言模型(LLMs)
  • 视觉、音频、多模态系统等

项目使用

安装LitServe

通过pip安装LitServe:

pip install litserve

定义服务

用户可以定义模型服务的核心步骤,如初始化、解码请求、预测和编码响应。创建一个Python文件(例如server.py),并定义你的API和模型:

import litserve as ls

class SimpleLitAPI(ls.LitAPI):
    def setup(self, device):
        # 初始化模型和相关资源
        self.model1 = lambda x: x**2
        self.model2 = lambda x: x**3

    def decode_request(self, request):
        # 请求解析
        return request["input"]

    def predict(self, x):
        # 模型预测
        squared = self.model1(x)
        cubed = self.model2(x)
        output = squared + cubed
        return {"output": output}

    def encode_response(self, output):
        # 响应编码
        return {"output": output}

if __name__ == "__main__":
    api = SimpleLitAPI()
    server = ls.LitServer(api, accelerator="gpu")
    server.run(port=8000)  

LitAPI是LitServe的核心组件,通过定义setupdecode_requestpredictencode_response方法,实现模型服务的自动化和扩展。

1.2K+ Star!LitServe:一个为模型服务而设计的高性能框架,支持自动扩展、批处理、GPU推理等多种功能
单请求调用顺序
1.2K+ Star!LitServe:一个为模型服务而设计的高性能框架,支持自动扩展、批处理、GPU推理等多种功能
批处理调用顺序
方法详解:
  • setup: 服务器启动时调用一次,用于初始化模型、数据库连接等。
  • decode_request: 将请求有效载荷转换为模型输入。
  • predict: 使用模型进行推理。
  • encode_response: 将模型输出转换为响应有效载荷。
可选方法:
  • batch: 在批处理模式下,将多个请求组合成一个批次。
  • unbatch: 将预测方法的批次输出拆分为单独的结果。
属性访问:
  • device: 访问服务器当前运行的设备(CPU、GPU等)。
  • stream: 检查是否启用了流式传输。

运行服务

在命令行运行你的服务器脚本:

python server.py

查询服务器

使用自动生成的LitServe客户端或自定义客户端查询服务:

import requests
response = requests.post("http://127.0.0.1:8000/predict", json={"input"4.0})

使用示例

项目官方文档提供了多种类型的AI模型部署示例,如计算机视觉模型(Stable Diffusion 2)的部署示例:

import torch, base64
from diffusers import StableDiffusionPipeline
from io import BytesIO
import litserve as ls

class StableDiffusionLitAPI(ls.LitAPI):
    def setup(self, device):
        self.model = StableDiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-2-1", torch_dtype=torch.float16, use_auth_token=True).to(device)
        self.device = device

    def decode_request(self, request):
        prompt = request["prompt"]
        return prompt

    def predict(self, prompt):
        with torch.no_grad():
            images = self.model(prompt, num_inference_steps=50, guidance_scale=7.5)["images"]
            image = images[0]
        return image

    def encode_response(self, image):
        buffered = BytesIO()
        image.save(buffered, format="PNG")
        img_str = base64.b64encode(buffered.getvalue()).decode("utf-8")

        return {"image": img_str}

if __name__ == "__main__":
    api = StableDiffusionLitAPI()
    server = ls.LitServer(api, workers_per_device=2)
    server.run(port=8000)

参考文档

  • LitServe官方文档[2]
  • LitAPI[3] 和 LitServer[4]
  • Discord社区[5]
1.2K+ Star!LitServe:一个为模型服务而设计的高性能框架,支持自动扩展、批处理、GPU推理等多种功能

注:本文内容仅供参考,具体项目特性请参照官方 GitHub 页面的最新说明。

欢迎关注&点赞&在看,感谢你的阅读~


资源列表
[1]

Github项目地址: https://github.com/Lightning-AI/LitServe

[2]

LitServe官方文档: https://lightning.ai/docs/litserve

[3]

API参考: https://lightning.ai/docs/litserve/api-reference/litapi

[4]

LitServer: https://lightning.ai/docs/litserve/api-reference/litserver

[5]

Discord社区: https://discord.com/invite/XncpTy7DSt

原文始发于微信公众号(AIGC创想者):1.2K+ Star!LitServe:一个为模型服务而设计的高性能框架,支持自动扩展、批处理、GPU推理等多种功能

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/315271.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!