你是否还在为如何将训练好的深度学习模型部署到生产环境而烦恼?传统的部署方式往往需要复杂的配置和维护,而且难以扩展。现在,DJL Serving 为你提供了一个简单、高效、可扩展的解决方案!
DJL Serving 是一个基于 DJL 的高性能通用模型服务解决方案,它可以将你的深度学习模型轻松部署为 HTTP 服务,方便其他应用程序调用。
DJL Serving 的优势
- 通用性: 支持多种深度学习框架,包括 PyTorch、TensorFlow、MXNet、ONNX、TensorRT 等等。
- 高性能: 利用多线程推理,在单一 JVM 中实现高吞吐量,性能优于市场上的大多数 C++ 模型服务器。
- 易用性: 开箱即用,无需复杂的配置。
- 可扩展性: 支持插件机制,方便扩展功能。
- 自动伸缩: 根据负载自动调整工作线程数量,保证服务稳定性。
- 动态批处理: 支持动态批处理,提高吞吐量。
- 模型版本控制: 支持加载不同版本的模型,方便迭代更新。
- 多引擎支持: 支持同时服务来自不同引擎的模型。
安装 DJL Serving
你可以通过以下方式安装 DJL Serving:
- macOS: 使用 Homebrew 安装:
brew install djl-serving
- Ubuntu: 使用
dpkg
安装:
curl -O https://publish.djl.ai/djl-serving/djl-serving_0.27.0-1_all.deb
sudo dpkg -i djl-serving_0.27.0-1_all.deb
- Windows: 下载 zip 文件并解压:
curl -O https://publish.djl.ai/djl-serving/serving-0.27.0.zip
unzip serving-0.27.0.zip
- Docker: 使用 Docker 镜像运行:
docker run -itd -p 8080:8080 deepjavalibrary/djl-serving
使用 DJL Serving
DJL Serving 可以通过命令行启动,并提供 RESTful API 用于模型推理和管理。
启动 DJL Serving:
djl-serving --help
REST API:
- 推理 API: 用于客户端调用模型进行推理。
- 管理 API: 用于添加、删除和扩展模型。
默认情况下,DJL Serving 监听端口 8080,仅允许本地访问。你可以修改配置文件以允许远程访问。
扩展 DJL Serving
DJL Serving 支持插件机制,你可以开发自己的插件来扩展功能。
总结
DJL Serving 是一个强大的模型服务解决方案,它能够帮助你轻松部署和管理深度学习模型,并提供高性能和可扩展性。无论你是初学者还是经验丰富的开发者,DJL Serving 都能满足你的需求。
更多信息:
DJL Serving 架构揭秘:模型服务背后的秘密
DJL Serving 是一款功能强大的模型服务解决方案,它将你的深度学习模型转化为可供其他应用程序访问的 HTTP 服务。但你是否好奇它背后的运作机制?本文将带你深入了解 DJL Serving 的架构,揭开模型服务背后的秘密。
四层架构:协同运作,高效服务
DJL Serving 的架构可以大致分为四层:
- 前端 (Frontend): 负责接收和管理来自客户端的请求。它使用 Netty 框架构建,并包含多个 HTTP 请求处理器,分别处理推理 API、管理 API 以及其他插件提供的 API。
- 工作流 (Workflows): 用于组合多个模型和代码片段,形成执行计划。它通过
workflow.json
文件定义,描述了模型的调用顺序和数据流向。 - 工作负载管理器 (WorkLoadManager,WLM): 负责管理工作线程,支持批处理和请求路由。它可以独立使用,并提供工作线程扩展功能。
- 模型管理器 (ModelManager): 负责加载和管理模型,根据配置在启动时加载指定模型。
各层职责:紧密合作,高效执行
- 前端: 接收来自客户端的请求,并根据请求类型选择相应的处理器。例如,推理 API 请求会传递给 WorkLoadManager,管理 API 请求则会传递给 ModelManager。
- 工作流: 定义模型的执行顺序和数据流向,并协调各个模型的调用。它可以包含多个模型,并通过代码片段连接它们,形成完整的推理流程。
- 工作负载管理器: 管理工作线程,将请求分配给不同的工作线程进行处理。它支持动态批处理,根据负载自动调整工作线程数量,并提供模型版本控制功能。
- 模型管理器: 负责加载和管理模型,根据配置在启动时加载指定模型,并提供模型版本控制功能。
深入 WLM:高效管理工作线程
WLM 是 DJL Serving 的核心组件,它负责管理工作线程,并确保模型推理的高效执行。
- 工作线程池: WLM 为每个模型创建独立的工作线程池,每个线程池包含多个工作组。
- 工作组: 每个工作组对应一个特定的设备,例如 CPU 或 GPU。同一个模型可以在不同的设备上创建多个工作组,以充分利用硬件资源。
- 工作线程: 每个工作组包含多个工作线程,每个线程负责执行模型推理任务。
- 自动伸缩: WLM 支持自动伸缩功能,根据负载动态调整工作线程数量,保证服务稳定性。
- 模型预测器: 每个工作线程包含一个 DJL 模型预测器,它负责执行模型推理。预测器支持多种模型引擎,例如 PyTorch、TensorFlow、XGBoost 等。
Python 引擎:灵活扩展,无缝集成
DJL Serving 还支持 Python 引擎,允许你使用 Python 代码编写模型预处理、后处理逻辑,甚至直接调用 Python 模型。
- 独立进程: 每个工作线程拥有独立的 Python 进程,确保代码执行的隔离性。
- 灵活调用: 通过 Python 预测器 (PyPredictor) 可以方便地调用 Python 进程,执行预处理、后处理或模型推理。
总结:高效、灵活、可扩展
DJL Serving 的架构设计体现了高效、灵活、可扩展的原则,它能够满足各种深度学习模型部署需求,并提供强大的性能和可靠性。
更多信息:
希望本文能够帮助你更好地理解 DJL Serving 的架构,并为你的模型部署提供参考。