在 Amazon SageMaker 上部署和使用完全托管式 MLflow

机器学习
Amazon Simple Storage Service (S3)
Amazon SageMaker
0
0
就在上个月,亚马逊云科技宣布 [Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) 上完全托管式 MLflow 功能正式上线。MLflow 是一种广泛使用的开源工具,可有效帮助[机器学习](https://aws.amazon.com/cn/machine-learning/?trk=cndc-detail) (ML) 团队管理整个 ML 生命周期。借助该功能,客户现在**只需几个步骤即可轻松设置和管理 MLflow 跟踪服务器,从而简化流程并提高生产力**。 数据科学家和 ML 开发人员可以利用 MLflow 来跟踪训练模型的多次尝试,将其作为实验中的运行,以可视化的方式比较这些运行,评估模型,并将最佳模型注册到模型注册表。**[Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) 消除了设置和管理 MLflow 的繁重工作,为 ML 管理员提供了一种在亚马逊云科技上建立安全且可扩展的 MLflow 环境的快速、有效的方法**。 ![image.png](https://dev-media.amazoncloud.cn/0d2fa48184164253815e916c89f22acf_image.png "image.png") ### **Amazon SageMaker 上托管式 MLflow 的核心组件** [Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) 上完全托管式 MLflow 功能围绕三个核心组件构建: * **[MLflow 跟踪服务器](https://mlflow.org/docs/latest/tracking.html#mlflow-tracking-server-optional?trk=cndc-detail)**:只需几个步骤,您就可以通过 [Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) Studio UI 创建 MLflow 跟踪服务器。这个独立的 HTTP 服务器为跟踪运行和实验提供多个 REST API 端点,使您能够有效监控 ML 实验。为了实现更精细的安全自定义,您还可以使用 [Amazon 命令行界面](https://aws.amazon.com/cn/cli/?trk=cndc-detail)(Amazon CLI)。 * **MLflow 后端元数据存储**:元数据存储是 MLflow 跟踪服务器的关键组成部分,与实验、运行和构件相关的所有元数据都保存在其中。这包括实验名称、运行 ID、参数值、指标、标签和构件位置,从而让您能够全面跟踪和管理 ML 实验。 * **MLflow 构件存储**:此组件为 ML 实验期间生成的所有构件(例如训练模型、数据集、日志和图表)提供存储空间。该组件使用 [Amazon Simple Storage Service](https://aws.amazon.com/cn/s3/?trk=cndc-detail)([Amazon S3](https://aws.amazon.com/cn/s3/?trk=cndc-detail))存储桶,提供一个客户管理的亚马逊云科技账户,实现构件的安全高效存储。 ![image.png](https://dev-media.amazoncloud.cn/cf9f6ee783c743bab96ca139be3fadfb_image.png "image.png") ### **Amazon SageMaker with MLflow 的优势** 使用 [Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) with MLflow 可以简化并增强[机器学习](https://aws.amazon.com/cn/machine-learning/?trk=cndc-detail)工作流程: * **全面的实验跟踪**:跟踪在本地集成式开发环境(IDE)、[Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) Studio 中的托管 IDE、[Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) 训练作业、[Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) 处理作业和 [Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) Pipelines 中 MLflow 中的实验。 * **完整的 MLflow 功能**: 使用各项 MLflow 实验功能,包括 MLflow 跟踪、MLflow 评估和 MLflow 模型注册表,可轻松比较和评估训练迭代的结果。 * **统一模型治理**:在 MLflow 中注册的模型会自动出现在 [Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) 模型注册表中,实现统一的模型治理体验,帮助您将 MLflow 模型部署到 [Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) 推理,而无需构建自定义容器。 * **高效的服务器管理**:使用 [Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) API 或 [Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) Studio UI 根据需要预调配、删除和升级 MLflow 跟踪服务器。[Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) 管理跟踪服务器的扩展、修补和持续维护,而无需客户管理底层基础设施。 * **增强的安全性**:使用 [Amazon Identity and Access Management](https://aws.amazon.com/cn/iam/?trk=cndc-detail)(IAM)管理对 MLflow 跟踪服务器的安全访问。编写 IAM 策略来授予或拒绝对特定 MLflow API 的访问,确保 ML 环境安全。 * **有效的监控和治理**:使用 [Amazon EventBridge](https://aws.amazon.com/cn/eventbridge/?trk=cndc-detail) 和 [Amazon CloudTrail](https://aws.amazon.com/cn/cloudtrail/?trk=cndc-detail) 监控 MLflow 跟踪服务器上的活动,有效治理跟踪服务器。 ### **MLflow 跟踪服务器先决条件(环境搭建)** 1、创建 Amazon SageMaker Studio 域 您可以使用[全新 Amazon SageMaker Studio 体验](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated.html?trk=cndc-detail)创建 [Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) Studio 域。 ![image.png](https://dev-media.amazoncloud.cn/c6b9cbf60c8545e98cb7d1bc96e36c67_image.png "image.png") 2、配置 IAM 执行角色 MLflow 跟踪服务器需要 IAM 执行角色来读取和写入构件到 [Amazon S3](https://aws.amazon.com/cn/s3/?trk=cndc-detail),并在 [Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) 中注册模型。您可以使用 Studio 域执行角色作为跟踪服务器执行角色,也可以为跟踪服务器执行角色创建单独的角色。如果您选择创建新角色和选择更新 Studio 域执行角色,请参阅《[Amazon SageMaker 开发人员指南](https://docs.aws.amazon.com/sagemaker/latest/dg/mlflow.html?trk=cndc-detail)》,了解有关 IAM 角色的更多信息和该角色所需的 IAM 策略的详细信息。 ### **创建 MLflow 跟踪服务器** 在此演练中,我使用默认设置创建 MLflow 跟踪服务器,这些设置包括跟踪服务器版本 (2.13.2)、跟踪服务器大小(小)和跟踪服务器执行角色 (Studio 域执行角色)。跟踪服务器的大小决定跟踪服务器可支持的使用量,我们建议,对于不超过 25 个用户的团队,应使用小型跟踪服务器。有关跟踪服务器配置的更多信息,请阅读 《[Amazon SageMaker 开发人员指南](https://docs.aws.amazon.com/sagemaker/latest/dg/mlflow.html?trk=cndc-detail)》。 首先,在上述环境搭建期间创建的 [Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) Studio 域中,选择“应用程序”下的 MLflow,然后选择创建。 ![image.png](https://dev-media.amazoncloud.cn/8a253260d8c1421d96a110a2e91dcafe_image.png "image.png") 接下来,给跟踪服务器命名和构件存储位置 ([Amazon S3](https://aws.amazon.com/cn/s3/?trk=cndc-detail) URI)。 创建 MLflow 跟踪服务器最多可能需要 25 分钟。 ![image.png](https://dev-media.amazoncloud.cn/1a19d214587b4d4d94bcb9db11527680_image.png "image.png") ### **跟踪和比较训练运行** 要开始将指标、参数和构件记录到 MLflow,您需要一个 Jupyter Notebook 以及在创建步骤中分配到的跟踪服务器 ARN。您可以使用 MLflow 开发工具包来跟踪训练运行,并使用 MLflow UI 比较不同的运行。 ![image.png](https://dev-media.amazoncloud.cn/8e828322595a4f60a7bd7473aad028c9_image.png "image.png") 要将 MLflow 模型注册表中的模型注册到 [Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) 模型注册表,您需要使用 `sagemaker-mlflow` 插件,对 MLflow 开发工具包使用 [Amazon Signature V4](https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html?trk=cndc-detail) 发出的所有 MLflow API 请求进行身份验证。 1、安装 MLflow 开发工具包和 `sagemaker-mlflow` 插件 在您的 Notebook 中,首先安装 MLflow 开发工具包和 sagemaker-mlflow Python 插件。 `pip install mlflow==2.13.2 sagemaker-mlflow==0.1.0` 2、跟踪实验中的运行 要跟踪实验中的运行,请将以下代码复制到您的 Jupyter Notebook 中。 ```js import mlflow import mlflow.sklearn from sklearn.ensemble import RandomForestClassifier from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score # 将其替换为你刚刚创建的跟踪服务器的 ARN arn = 'YOUR-TRACKING-SERVER-ARN' mlflow.set_tracking_uri(arn) # 加载 Iris 数据集 iris = load_iris() X, y = iris.data, iris.target # 将数据拆分为训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 训练随机森林分类器 rf_model = RandomForestClassifier(n_estimators=100, random_state=42) rf_model.fit(X_train, y_train) # 使用测试集进行预测 y_pred = rf_model.predict(X_test) # 计算评估指标 accuracy = accuracy_score(y_test, y_pred) precision = precision_score(y_test, y_pred, average='weighted') recall = recall_score(y_test, y_pred, average='weighted') f1 = f1_score(y_test, y_pred, average='weighted') # 开始 MLflow 运行 with mlflow.start_run(): # 记录模型 mlflow.sklearn.log_model(rf_model, "random_forest_model") # 记录评估指标 mlflow.log_metric("accuracy", accuracy) mlflow.log_metric("precision", precision) mlflow.log_metric("recall", recall) mlflow.log_metric("f1_score", f1) ``` 3、在 MLflow UI 中查看运行 运行步骤 2 中显示的 Notebook,您将在 MLflow UI 中看到新的运行。 ![image.png](https://dev-media.amazoncloud.cn/cb54a7e62f0e48399c3db8fa5e88f100_image.png "image.png") 4、比较运行 您可以通过更改 random_state 多次运行此 `Notebook`,以便为每次训练运行生成不同的指标值。 ![image.png](https://dev-media.amazoncloud.cn/897f04681fc3480bb484f28e9e30163a_image.png "image.png") ### **注册候选模型** 在根据步骤 4 中详述的方法比较了多次运行之后,您就可以在 MLflow 模型注册表中注册指标最符合您需求的模型。注册某个模型表明该模型可能适合用于生产部署,并且将进行进一步的测试以验证这种适用性。一旦模型在 MLflow 中注册,它就会自动出现在 [Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) 模型注册表中,实现统一的模型治理体验,让您可以将 MLflow 模型部署到 [Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) 推理中。这使得主要使用 MLflow 进行实验的数据科学家能够将他们的模型交给 ML 工程师,后者使用 [Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) 模型注册表来管理模型的生产部署。 以下是在 MLflow 模型注册表中注册的模型。 ![image.png](https://dev-media.amazoncloud.cn/3d264e26332643b684d8050cbaf396f9_image.png "image.png") 以下是在 [Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) 模型注册表中注册的模型。 ![image.png](https://dev-media.amazoncloud.cn/e60230f02cb240ed8b8cfaffd6d95ba3_image.png "image.png") ### **清理** 一经创建,MLflow 跟踪服务器便会开始产生费用,直至删除或停用。跟踪服务器的计费基于服务器运行的时间、大小以及记录到跟踪服务器的数据量。您可以**在不使用时停用跟踪服务器,或者使用 API 或 Amazon SageMaker Studio UI 将其删除,以节省成本**。 ![image.png](https://dev-media.amazoncloud.cn/d51fed4bbd164adab3d15937747d5551_image.png "image.png") ### **现已推出** [Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) with MLflow 现已在所有提供 [Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) Studio 的[亚马逊云科技区域](https://aws.amazon.com/cn/about-aws/global-infrastructure/regional-product-services/?trk=cndc-detail)正式推出,中国和美国 GovCloud 区域除外。我们**邀请您探索这一新功能,让它帮助您提高[机器学习](https://aws.amazon.com/cn/machine-learning/?trk=cndc-detail)项目的效率和控制力**。要了解更多信息,请访问 [Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) with MLflow 产品详细信息页面。 有关更多信息,请参阅《[Amazon SageMaker 开发人员指南](https://docs.aws.amazon.com/sagemaker/latest/dg/mlflow.html?trk=cndc-detail)》,向 Amazon re:Post for SageMaker [发送反馈](https://repost.aws/tags/TAT80swPyVRPKPcA0rsJYPuA?trk=cndc-detail),或通过您常用的 Amazon Support 联系人发送反馈。 > **本文作者 Veliswa Boya** > > **高级开发倡导者** > > **(Senior Developer Advocate )** *\*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您了解行业前沿技术和发展海外业务选择推介该服务。* ![开发者尾巴.gif](https://dev-media.amazoncloud.cn/61f68efcf6854ff5951cd14ab564c10c_%E5%BC%80%E5%8F%91%E8%80%85%E5%B0%BE%E5%B7%B4.gif "开发者尾巴.gif")
0
目录
关闭