如何为人工智能/ML 模型的服务做好准备

出版商
乌拉普团队
关于
2023 年 10 月 13 日 上午 9:29

将机器学习、LLM 和人工智能模型部署到云中是一个复杂而耗时的过程。 

您要么需要对特定云服务和云资源配置有广泛的了解,要么需要一个运营开发团队来为您完成这项工作。

难怪数据科学家讨厌开发过程中的这一步--他们的工作停滞不前,因为他们在等待别人为他们部署模型。

这正是 Ulap 的推理引擎的用武之地,它为模型服务提供了一个高效且对数据科学家友好的平台。

我们将在本文中向您展示如何做到这一点。

什么是示范服务?

模型服务,简单地说,就是托管机器学习模型,并通过应用程序接口(API)提供其功能,以便应用程序将人工智能纳入其系统。

数据科学家准备好 ML 模型后,下一步就是部署它。

如果不通过云或内部部署(我们建议使用云)来访问产品,您的企业就无法向大量用户提供人工智能产品。

常见的上菜方法

一般来说,向云部署(或提供)模型有两种常见方法。

云服务

提供模型的最常见方法之一是利用 AWS Sagemaker、Azure ML 和 GCP Vertex AI 等云服务。

在这种方法中,用户或团队必须熟悉他们正在使用的特定服务并了解云资源配置--这需要大量的培训和经验才能做好。

这通常是最昂贵的选择,而且可能导致供应商锁定。一旦选择了供应商,要更换就会非常困难,而且成本高昂,因此要明智选择!

推理终点

下一种方法是找到一家提供推理终端部署的供应商,如 Hugging Face、Weights and Biases、DataRobot 和 Databricks。

这些供应商不需要你知道如何配置云资源,因为部署过程通常是自动化的。

在这种方法中,用户或团队提供模型或模型文件的位置,软件对模型进行容器化并提供服务。

推理引擎背后的技术 

向云提供模型的第三种选择是 Ulap 的推理引擎。

我们创建推理引擎是为了解放开发人员和数据科学家,让他们能够通过部署向导和自动化操作在云资源上提供令人惊叹的人工智能/ML 应用程序。换句话说,我们希望创建一个经济高效、易于使用的选项,将模型服务到云中。

开源技术

在引擎盖下,我们的推理引擎采用开源技术。它利用 Kubernetes 来管理和部署推理服务器。 它有助于提供服务器的可扩展性、资源管理、容错和自动化。 这为您的推理服务提供了强大的架构,可随时投入生产。 

我们使用两种开源工具为干扰引擎提供动力。

MLflow

首先,我们使用MLflow跟踪生产就绪模型。

这一开源平台可管理 ML 生命周期,包括实验、可重现性、部署和中央模型注册中心。

它不仅有助于跟踪整个模型开发过程中的训练实验,还能跟踪模型注册表中的生产就绪模型列表。

有关模型性能、工件位置和模型要求的信息均已存储,以便于访问。

KServe

为推理引擎提供动力的第二个应用程序是KServe

该应用可在 Kubernetes 上实现无服务器推理,并为常见的机器学习 (ML) 框架提供高性能、高抽象度的接口,以解决生产模型服务用例。

我们使用 KServe 进行扩展、联网、健康检查和配置模型服务器。

在引擎盖下,它利用MLserverTensorflow ServingTorchServe为特定框架模型提供服务。 

使用 Ulap 推理引擎为模型服务做准备

使用 Ulap 的推理引擎为模型提供服务非常简单。

根据建立模型的人工智能框架(如scikit-LearnPyTorch)的不同,模型部署过程的步骤也会有所不同。

不过,要在我们的推理引擎上部署和提供模型,您需要三个总体步骤:

步骤 1:训练和跟踪模型

第一步是使用 MLFlow 跟踪模型的训练。

在训练过程中,我们的目标不仅是跟踪模型的性能指标,还要跟踪从训练中重现模型所需的所有信息。

这可能包括以下信息

  • 使用的数据集
  • 培训脚本
  • 环境要求

跟踪模型训练的最常用方法是封装训练代码,并使用下面的代码启动MLflow 运行

使用 mlflow.start_run():
# 训练代码
# 例如,使用 model.fit(X_train, y_train) for scikit

第 2 步:准备模型文件

在此步骤中,模型会打包成一个与框架相关的文件,并创建其他部署文件。

对于scikitXGBoostTensorFlow,模型分别保存为 .pickle、.bst 或 .pb 文件。

不过,PyTorch 的部署过程要复杂一些,因为该框架允许更多的配置服务。必须创建三个文件:

然后使用以下命令通过 MLFlow 将这些文件加载到与模型运行相关联的部署文件夹中:

# 上传模型工件
client.log_artifacts(run_id=run_id,
local_dir="deployment",
artifact_path='deployment')

步骤 3:制作模型

整个过程的最后一步是在 MLflow 中使用下面的代码对模式进行分阶段处理。

client = MlflowClient()
client.transition_model_version_stage(name="MODEL_NAME", version=1,
stage="Staging")

在这里,模型可以过渡到 "暂存"、"生产 "或 "存档"。这可以让用户跟踪模型的阶段,但更具体地说,是通知推理引擎哪些模型已准备好提供服务,以及工件的位置,以便服务器在部署过程中获取文件。

让您的部署更轻松

部署机器学习模型不应该是一项艰巨的任务。

借助 Ulap 的推理引擎,您可以简化部署流程,让您的开发人员和数据科学家专注于最重要的事情--构建客户喜爱的应用程序。

想亲自体验推理引擎吗?

注册获得 30 天免费试用,立即开始部署您的 ML 模型。