使用BentoML构建首个AI服务:Hello World示例
BentoML Build Production-Grade AI Applications 项目地址: https://gitcode.com/gh_mirrors/be/BentoML
前言
BentoML是一个强大的机器学习模型服务化框架,它让开发者能够轻松地将训练好的模型部署为生产级的API服务。本文将通过一个简单的"Hello World"示例,带您快速了解如何使用BentoML构建和部署一个文本摘要生成服务。
环境准备
在开始之前,我们需要设置开发环境。建议使用Python 3.11或更高版本,并创建虚拟环境以隔离依赖。
# 创建并激活虚拟环境
python -m venv bentoml-env
source bentoml-env/bin/activate # Linux/Mac
# 或者 bentoml-env\Scripts\activate # Windows
# 安装必要依赖
pip install bentoml torch transformers
这里我们安装了三个关键包:
bentoml
: 核心框架torch
: PyTorch深度学习框架transformers
: Hugging Face的Transformer模型库
创建BentoML服务
BentoML的核心概念是"Service",它是一个可部署的服务单元。让我们创建一个简单的文本摘要服务:
from __future__ import annotations
import bentoml
with bentoml.importing():
from transformers import pipeline
# 示例输入文本
EXAMPLE_INPUT = "Breaking News: In an astonishing turn of events..."
@bentoml.service
class Summarization:
def __init__(self) -> None:
# 初始化文本摘要pipeline
self.pipeline = pipeline('summarization')
@bentoml.api
def summarize(self, text: str = EXAMPLE_INPUT) -> str:
# 处理输入并返回摘要结果
result = self.pipeline(text)
return f"Hello world! Here's your summary: {result[0]['summary_text']}"
这段代码展示了几个关键点:
- @bentoml.service装饰器:将Python类标记为BentoML服务
- @bentoml.api装饰器:将方法暴露为API端点
- bentoml.importing():处理服务特有的依赖导入
- pipeline初始化:使用Hugging Face的transformers库加载预训练模型
本地运行服务
保存上述代码为service.py
后,可以通过以下命令启动服务:
bentoml serve
服务启动后,默认会在http://localhost:3000
监听请求。BentoML会自动生成Swagger UI界面,方便我们测试API。
测试服务
有多种方式可以测试我们的摘要服务:
1. 使用cURL
curl -X 'POST' \
'http://localhost:3000/summarize' \
-H 'accept: text/plain' \
-H 'Content-Type: application/json' \
-d '{"text": "Your long article text here..."}'
2. 使用Python客户端
import bentoml
with bentoml.SyncHTTPClient("http://localhost:3000") as client:
result = client.summarize(
text="Your long article text here..."
)
print(result)
3. 使用Swagger UI
访问http://localhost:3000
,在页面中找到"Service APIs"部分,点击"Try it out"按钮,输入文本并执行。
服务工作原理
当请求到达时,BentoML会:
- 接收HTTP请求
- 将请求路由到对应的API方法
- 执行模型推理
- 格式化返回结果
- 发送HTTP响应
整个过程是异步高效的,适合生产环境部署。
进阶学习
完成这个基础示例后,您可以进一步探索:
- 模型批处理:优化多个请求的并行处理
- 自定义模型:加载您自己训练的模型
- 容器化部署:将服务打包为Docker镜像
- 云部署:将服务部署到云平台
总结
通过这个简单的Hello World示例,我们学习了:
- 如何设置BentoML开发环境
- 创建基本的BentoML服务
- 定义API端点
- 本地测试服务
BentoML的强大之处在于它能将复杂的模型服务化过程简化为几行Python代码,同时保持高度的可扩展性和生产就绪性。这为机器学习工程师提供了从实验到生产的快速通道。
BentoML Build Production-Grade AI Applications 项目地址: https://gitcode.com/gh_mirrors/be/BentoML
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考