Jina-Serve:AI 服务框架,从本地开发到生产部署一条龙

Jina-Serve:AI 服务框架,从本地开发到生产部署一条龙

Jina-Serve 在 GitHub 上已经拿到 21,864 Star 了。

Jina AI 开源了这套框架,专门用来构建和部署 AI 推理服务。支持 gRPC、HTTP 和 WebSocket 三种协议,内置流式输出、动态批处理、Docker 集成,还能一行命令推到 JCloud。

1、这玩意儿是干嘛的

一句话:把 AI 模型包装成高性能微服务,从本地开发到 Kubernetes 集群部署全包了。

你用 PyTorch、Transformers 或者其他框架写了个模型,想让别人通过 API 调用,还想支持高并发、流式输出、自动扩缩。这些基础设施的活,Jina-Serve 都帮你干了。你只需要写核心推理逻辑,剩下的网络层、序列化、部署编排都交给它。

正文顶部截图

2、为什么要用它

做过模型服务化的人都踩过坑。FastAPI 搭个接口简单,但一碰到 gRPC 调用、流式 token 输出、多副本负载均衡、动态 batch 合并这些需求,就得自己拼积木。FastAPI 加 gRPC 插件加 Celery 加 Docker Compose,搭出来的东西能用,但维护起来累人。

Jina-Serve 把这些全收敛到一套 API 里。定义一个 Executor,写清楚用哪个 Deployment 部署,配好 replicas 和 dynamic batching,就搞定了。gRPC、HTTP、WebSocket 三种协议自动支持,不用额外写适配层。

README区域截图

3、快速上手

安装:

pip install jina

定义一个 AI 服务,比如用 StableLM 做文本生成:

from jina import Executor, requests
from docarray import DocList, BaseDoc
from transformers import pipeline


class Prompt(BaseDoc):
    text: str


class Generation(BaseDoc):
    prompt: str
    text: str


class StableLM(Executor):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        self.generator = pipeline(
            'text-generation', model='stabilityai/stablelm-base-alpha-3b'
        )

    @requests
    def generate(self, docs: DocList[Prompt], **kwargs) -> DocList[Generation]:
        generations = DocList[Generation]()
        prompts = docs.text
        llm_outputs = self.generator(prompts)
        for prompt, output in zip(prompts, llm_outputs):
            generations.append(Generation(prompt=prompt, text=output))
        return generations

部署只需要几行:

from jina import Deployment
from executor import StableLM

dep = Deployment(uses=StableLM, timeout_ready=-1, port=12345)

with dep:
    dep.block()

也可以换成 YAML 配置部署,跟写 Docker Compose 差不多。客户端调用同样简单,指定端口和输入 schema 就行。

4、流水线和扩展

多个服务可以串成 Flow,文本生成接图片生成,流水线式处理:

from jina import Flow

flow = Flow(port=12345).add(uses=StableLM).add(uses=TextToImage)

with flow:
    flow.block()

扩展同样不费劲。YAML 里配 replicas: 2 就开启了多副本并行,加上 uses_dynamic_batching 设置 batch size 和超时时间,自动合并请求提升 GPU 利用率。数据分片通过 shards 配置,适合大批量数据处理场景。

5、部署到生产

本地跑通了,上生产也就几步。

先容器化 Executor,目录里放 executor.py、config.yml、requirements.txt,然后:

jina hub push TextToImage

推到 Executor Hub 之后,可以用 jina export kubernetes 导出 K8s 配置直接 apply,也可以用 jina export docker-compose 导出 Compose 文件。想最省事的话,jina cloud deploy 一行命令推到 JCloud。

6、LLM 流式输出

做对话类应用,流式输出是刚需。用户不想等 10 秒看一个完整回复,想看到 token 一个一个往外蹦。

Jina-Serve 内置了异步流式支持。Executor 里用 async defyield,每次 yield 一个 token,客户端用 client.stream_doc() 逐条接收。gRPC 协议下延迟很低,适合需要实时交互的场景。

7、适合哪些人用

  • 训练完模型需要快速封装 API 上线的算法工程师
  • 在搭 RAG 管线或者多模型流水线的后端开发者
  • 需要把 AI 服务部署到 Kubernetes 的 infra 团队
  • 想用 gRPC 做高性能推理服务的团队

Jina-Serve 是 Apache 2.0 协议开源的,可以商用。

posted @ 2026-06-21 16:33  cloudnine36  阅读(22)  评论(0)    收藏  举报