DJL Serving: 轻松部署你的深度学习模型

你是否还在为如何将训练好的深度学习模型部署到生产环境而烦恼?传统的部署方式往往需要复杂的配置和维护,而且难以扩展。现在,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 的架构可以大致分为四层:

  1. 前端 (Frontend): 负责接收和管理来自客户端的请求。它使用 Netty 框架构建,并包含多个 HTTP 请求处理器,分别处理推理 API、管理 API 以及其他插件提供的 API。
  2. 工作流 (Workflows): 用于组合多个模型和代码片段,形成执行计划。它通过 workflow.json 文件定义,描述了模型的调用顺序和数据流向。
  3. 工作负载管理器 (WorkLoadManager,WLM): 负责管理工作线程,支持批处理和请求路由。它可以独立使用,并提供工作线程扩展功能。
  4. 模型管理器 (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 的架构,并为你的模型部署提供参考。

0 0 投票数
Article Rating
订阅评论
提醒
0 评论
最多投票
最新 最旧
内联反馈
查看所有评论
0
希望看到您的想法,请您发表评论x