最近在学习MLflow,大概浏览完官网的资料之后,开始动手实验,以便深入了解这个架构。在 Azure Databricks 上使用 MLflow 完成一个机器学习生命周期的完整流程。从创建集群和笔记本开始,加载并处理公开数据集,训练模型并记录超参数和指标,注册模型到 MLflow Model Registry,最后将模型部署为 REST API 服务。我将以一个公开的二分类数据集(本文以乳腺癌数据集为例)为基础,使用如 Logistic Regression 或 Random Forest 模型,演示每个步骤的代码和 Databricks 界面操作,以便全面了解机器学习项目在 Databricks 上的实践流程。

一、环境准备:创建 Azure Databricks Workspace、集群 和 Notebook

  1. 创建Azure Databricks工作区: 首先,需要确保已在 Azure 上创建了 Databricks 工作区,并拥有相应的权限。如果尚未创建,登录 Azure 门户并按照向导创建一个 Azure Databricks 服务实例。创建完成后,进入 Databricks 工作区。
    在这里插入图片描述
    如上图,我选择了14天的免费Pricing Tier。
    在这里插入图片描述
    注意!!!
    Azure的其他资源需要费用,这是我10天后的账单,发现收了12$:
    在这里插入图片描述
    完成后登录界面如下:
    在这里插入图片描述

  2. (可选)创建计算节点(compute):
    注意,这个计算资源是要单独收费的。我这里没有选择这个,而是用默认的Serverless计算资源。
    如果确认要单独创建,在 Databricks 工作区左侧边栏,点击 Compute(计算)选项卡,然后点击 Create Compute(新建集群) 按钮。需要为集群命名,选择 Databricks Runtime 版本(建议选择带有 ML 字样的运行时, “Databricks Runtime for Machine Learning”,它预装了常用的机器学习库),以及设置节点类型和规模等。配置完成后点击 Create 创建集群。等待集群启动(状态变为 Running)后即可使用。集群是运行代码的计算资源,后续 Notebook 中的代码将依附于该集群运行。
    在这里插入图片描述

  3. 创建Notebook笔记本: 在左侧边栏,点击顶部的 New(加号 + 图标)按钮,然后选择 Notebook(笔记本)。在弹出的对话框中,为Notebook命名(例如“MLflow完整流程演示”),选择编程语言为 Python,默认绑定的计算资源是Serverless,如果有需要,可以设定为上面创建的单独的Compute。点击 Create 创建笔记本。此时,会看到一个空白的Notebook界面。
    在这里插入图片描述
    在这里插入图片描述

现在,环境已经准备就绪。已经创建了一个Databricks Notebook,并拥有一个正在运行的Serverless计算集群来执行Notebook中的代码。

二、数据集加载

本教程使用 乳腺癌二分类数据集(Wisconsin Breast Cancer Dataset)作为示例。这是一个公开数据集,包含肿瘤细胞核的特征指标以及良性/恶性的标签。该数据集可通过 scikit-learn 内置加载。也可以选择其他公开数据集,例如 UCI 心脏病数据集或鸢尾花(Iris)数据集,加载方法类似。

在Notebook中,新建一个代码单元格并输入以下内容以加载乳腺癌数据集:

from sklearn.datasets import load_breast_cancer
import pandas as pd
# 加载乳腺癌数据集
data = load_breast_cancer()
X = pd.DataFrame(data.data, columns=data.feature_names)  # 特征数据框
y = pd.Series(data.target)  # 标签(0或1,表示良性/恶性)
print("数据集形状:", X.shape)
X.head()  # 显示前几行数据

在这里插入图片描述

上述代码使用 sklearn.datasets.load_breast_cancer() 函数加载数据,并将特征转换为 Pandas DataFrame 方便查看。X.shape 将输出数据集的维度,例如 (569, 30)(569条样本,30个特征),X.head() 将展示前5条记录供我们了解数据格式。

如果选择其他数据集,例如 鸢尾花,可以使用 sklearn.datasets.load_iris() 来加载;如果使用 UCI 心脏病 数据集,可通过 pandas.read_csv 从公开的URL读取 CSV 数据,或使用 sklearn.datasets.fetch_openml 等方式加载。在Databricks中也可以使用自带的数据集(如/databricks-datasets路径下)或从DBFS文件系统加载数据。关键是确保数据成功读取到一个 DataFrame 以便后续处理。

三、数据清洗与特征工程

拿到原始数据后,我们需要进行基础的数据清洗和特征工程,以便模型更好地学习:

查看缺失值: 首先检查数据集中是否存在缺失值或异常值,并决定填充或删除。例如:X.isnull().sum() 查看各列空值数。如果有空值,可选择用平均值、中位数填充,或删除含空值的样本等。

特征类型处理: 针对不同类型的特征进行处理。以乳腺癌数据为例,所有特征都是数值型,不需要额外编码。如果有分类(类别型)特征,可使用独热编码(One-Hot Encoding)等方式将其转换为数值特征。

特征缩放: 视情况对特征做标准化或归一化。例如对于距离或计数等量纲差异较大的特征,使用 sklearn.preprocessing.StandardScaler 或 MinMaxScaler 进行缩放有助于模型收敛。但对基于树的模型(如Random Forest)来说,缩放影响不大,可酌情省略。

特征选择: 在了解业务的情况下,可能选择对预测最有用的特征,或根据统计指标过滤特征。但本次教程中,我们将使用所有特征来训练模型。

以下示例代码展示了基本的数据清洗流程:

# 检查缺失值
missing_counts = X.isnull().sum()
print("每列缺失值数量:\n", missing_counts)

# 如果有缺失值,可以选择填充,例如:
# X_filled = X.fillna(X.median())  # 用每列中位数填充缺失值

# 简单的特征工程示例:创建一个新的特征(例如平均值的一些组合等)
# 这里我们举例,将两个相关特征相加作为新特征(仅演示用)
if 'mean radius' in X.columns and 'mean texture' in X.columns:
    X['radius_texture_sum'] = X['mean radius'] + X['mean texture']

# 将标签y转换为0/1的布尔值(良性/恶性),0代表良性,1代表恶性
y = y.map({0: 0, 1: 1})
print("标签分布:\n", y.value_counts())

在这里插入图片描述

上述代码中,我们示例性地添加了一个新特征 radius_texture_sum(仅为演示如何进行特征组合,在实际应用中应根据领域知识选择特征)。同时确认了标签的分布情况。完成清洗与特征工程后,我们准备将数据集拆分为训练集和测试集用于模型训练。

数据集拆分: 为了评估模型性能,我们将数据分为训练集和测试集,一般使用 8:2 或 7:3 的比例。使用 scikit-learn 提供的 train_test_split 函数:

from sklearn.model_selection import train_test_split

# 将数据按8:2拆分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42
)
print("训练集大小:", X_train.shape, " 测试集大小:", X_test.shape)

执行后会输出训练集和测试集的维度。例如训练集可能是 (455, 31)(如果我们新增了1个组合特征则有31列),测试集 (114, 31),确保数据划分正确。
在这里插入图片描述

四、使用 MLflow 进行模型训练与超参数记录

现在进入模型训练阶段,同时引入 MLflow Tracking 来记录实验参数、模型和结果。Azure Databricks 已内置 MLflow,可以方便地追踪实验。

  1. 初始化 MLflow 实验环境: 在Databricks Notebook中,每个Notebook默认绑定到一个MLflow实验(experiment)。可以主动设置实验名称或使用默认。为稳妥起见,我们可以使用 mlflow.set_experiment(“/Users//MLflowDemo”) 来指定Experiment,但在Databricks中不设置也会将记录关联到Notebook自身的实验。

我们还可以使用 MLflow Autologging 功能,让 MLflow 自动记录模型的参数和评估指标。对 scikit-learn,调用 mlflow.autolog() 即可开启自动记录。当然也可以选择手动记录参数和指标,这有助于理解过程。

在训练模型前,先导入所需库并开启 MLflow:

import mlflow
import mlflow.sklearn
from sklearn.ensemble import RandomForestClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, roc_auc_score, confusion_matrix, ConfusionMatrixDisplay

# 设置MLflow自动记录
mlflow.autolog()

在这里插入图片描述

  1. 定义和训练模型: 我们以 随机森林 (RandomForestClassifier) 为示例进行训练。也可以尝试逻辑回归等模型。我们将演示如何使用 MLflow 记录超参数和性能指标。下面的代码开启一个 MLflow run,对模型训练及评估进行追踪:
# 在MLflow中记录一次运行
with mlflow.start_run(run_name="RandomForest_baseline") as run:
    # 定义模型超参数
    n_estimators = 100
    max_depth = 5
    model = RandomForestClassifier(n_estimators=n_estimators, max_depth=max_depth, random_state=42)
    
    # 显式记录超参数(如果启用了autolog也会自动记录,但我们手动记录以示例)
    mlflow.log_param("n_estimators", n_estimators)
    mlflow.log_param("max_depth", max_depth)
    mlflow.log_param("model_type", "RandomForestClassifier")
    
    # 训练模型
    model.fit(X_train, y_train)
    
    # 预测和评估
    y_pred = model.predict(X_test)
    acc = accuracy_score(y_test, y_pred)
    mlflow.log_metric("accuracy", acc)  # 记录准确率
    
    # 如果需要概率,比如计算ROC AUC(随机森林支持predict_proba)
    y_proba = model.predict_proba(X_test)[:, 1]
    auc = roc_auc_score(y_test, y_proba)
    mlflow.log_metric("auc", auc)  # 记录AUC
    
    print(f"模型准确率: {acc:.4f}, AUC: {auc:.4f}")

在上述代码中,我们通过 mlflow.start_run() 开启了一个MLflow运行(run),并命名为“RandomForest_baseline”。我们手动记录了两个超参数 n_estimators 和 max_depth,以及一个自定义参数 model_type,然后训练模型并记录了 accuracy 和 AUC 评价指标。调用 mlflow.log_param() 和 mlflow.log_metric() 会将参数和指标记录到 MLflow。因为我们同时开启了 mlflow.autolog(),MLflow实际上也会自动记录模型的其他信息(如sklearn模型的默认参数、训练时长等),并保存模型本身作为artifact。

运行此单元格,训练完成后会打印模型的准确率和AUC值。例如可能输出“模型准确率: 0.9649, AUC: 0.9944”,具体取决于模型和数据集。
在这里插入图片描述

  1. 多次运行以调节超参数: 为了演示超参数记录和比较,我们可以进行多次运行,每次修改一些超参数。例如尝试不同的 n_estimators 值,看对模型性能的影响:
for n in [50, 100, 200]:
    with mlflow.start_run(run_name=f"RandomForest_n{n}") as run:
        model = RandomForestClassifier(n_estimators=n, max_depth=5, random_state=42)
        mlflow.log_param("n_estimators", n)
        mlflow.log_param("max_depth", 5)
        model.fit(X_train, y_train)
        y_pred = model.predict(X_test)
        acc = accuracy_score(y_test, y_pred)
        mlflow.log_metric("accuracy", acc)
        print(f"n_estimators={n} 时, 准确率={acc:.4f}")

上述循环会进行3次模型训练,每次使用不同树数量,MLflow将分别记录每一次run。通过这些实验,在 MLflow 中会看到多个运行记录,以及对应的参数和指标。我们稍后会介绍如何在Databricks界面查看和比较这些运行。
在这里插入图片描述

  1. 日志输出与 MLflow 链接: 在Databricks Notebook中,运行结束后,单元格输出会提示已记录的MLflow信息,并提供一个链接进入MLflow实验页面。会在Notebook输出中看到下面的信息:
    在这里插入图片描述

在上图中,Notebook的输出日志里面可以看到运行结果,里面有“experiment ”的链接。点击这些链接会在Databricks界面打开MLflow的实验追踪UI,用于查看详细的运行结果。这是Databricks整合MLflow带来的便捷之处,可以直接从Notebook跳转查看实验记录如下:
在这里插入图片描述

五、模型评估与验证(记录指标和Artifacts)

在模型训练完成后,我们需要评估模型在测试集上的表现,并将评估结果记录在 MLflow 中,以便日后分析和比较。上一节中,我们记录了常用的数值指标(accuracy和AUC)。本节将介绍如何记录Artifacts(工件)到 MLflow,例如模型预测结果的可视化图表。

  1. 记录混淆矩阵图表: 混淆矩阵是评估分类模型的重要工具,能直观展示模型预测的正确与错误情况。我们可以使用 sklearn 的 ConfusionMatrixDisplay 绘制混淆矩阵,并将其保存为图像,然后记录到 MLflow。
import matplotlib.pyplot as plt

with mlflow.start_run(run_name="RandomForest_with_cm") as run:
    model = RandomForestClassifier(n_estimators=100, max_depth=5, random_state=42)
    model.fit(X_train, y_train)
    y_pred = model.predict(X_test)
    acc = accuracy_score(y_test, y_pred)
    mlflow.log_metric("accuracy", acc)
    
    # 绘制混淆矩阵
    cm = confusion_matrix(y_test, y_pred, labels=[0, 1])
    disp = ConfusionMatrixDisplay(confusion_matrix=cm, display_labels=["良性","恶性"])
    disp.plot(values_format='d')
    plt.title(f"Confusion Matrix (Accuracy={acc:.2f})")
    plt.savefig("confusion_matrix.png")
    plt.close()  # 关闭图表
    
    # 将混淆矩阵图像作为artifact保存
    mlflow.log_artifact("confusion_matrix.png")

在这个代码片段中,我们训练了一个模型并计算混淆矩阵,使用 disp.plot() 绘制后保存为本地文件“confusion_matrix.png”,再通过 mlflow.log_artifact 将该图像文件记录到 MLflow。这样,我们就将混淆矩阵作为模型运行的artifact进行保存。可以用类似方法保存ROC曲线图、 Precision-Recall曲线图或者模型特征重要性等可视化结果。
在这里插入图片描述

  1. 记录模型本身: 如果没有使用autolog自动记录模型,我们也可以手动记录模型文件。例如使用 mlflow.sklearn.log_model(model, “model”) 将训练好的模型以pickle形式保存为artifact,方便之后加载或部署。使用 autolog 时,模型会被自动记录为名为“model”的artifact目录,包含模型的序列化文件等。

  2. 查看 MLflow UI 中的指标和artifact: 切换到Databricks的Experiment页面(可以通过Notebook输出提供的链接,或在Notebook右侧点击 flask瓶子图标的Experiment按钮打开)。在实验页面中,会看到一个运行列表,每一行代表一次运行,包括我们记录的参数(Parameters)和指标(Metrics)摘要。点击某个运行名称,可进入该运行的详细页面。在详细页面,可以看到:

Parameters 列表:例如 n_estimators=100, max_depth=5 等。

Metrics 列表:例如 accuracy=0.9649, auc=0.9897 等。

Artifacts 部分:这里列出了我们记录的文件,如模型文件、混淆矩阵图像等。可以点击查看图像或者下载模型文件。
在这里插入图片描述

上图展示了在Databricks Notebook界面侧边栏打开的 MLflow实验运行列表。可以看到每次运行的名字、参数和值以及指标(如learning_rate、test_auc等)等摘要信息。通过点击某个运行,能够查看详情并比较不同运行的结果。

利用这些信息,我们可以方便地比较不同超参数配置下模型的表现,并选择最佳模型供下一步使用。

六、使用 MLflow Model Registry 完成模型注册与版本控制

模型训练和评估完成后,我们往往希望将表现优秀的模型进行保存和管理,以便部署和后续版本迭代。这就需要用到 MLflow Model Registry(模型注册表)。Model Registry可以将模型持久化,并赋予每个模型一个版本号和阶段(如“Staging”、“Production”等),方便团队协作和模型生命周期管理。

  1. 注册模型: 在Databricks中,有两种方式将模型注册到Model Registry:

通过代码/API注册: 使用 mlflow.register_model() 或在调用 mlflow.sklearn.log_model() 时直接指定参数 registered_model_name。

通过UI界面注册: 在MLflow Experiment页面中,选中某个运行的模型artifact,点击 “Register Model” 按钮,通过对话框将此模型artifact注册成为一个命名的注册模型。

这里我们介绍代码方式。例如,我们已经确定某次运行(run)的模型表现最佳,可以使用其 run_id 来注册:

# 找到 AUC 或 Accuracy 最好的运行(这里以Accuracy为例)
best_run = mlflow.search_runs(order_by=["metrics.accuracy DESC"], max_results=1).iloc[0]
best_run_id = best_run.run_id
print("最佳运行ID:", best_run_id, " 准确率:", best_run["metrics.accuracy"])

# 构造模型URI并注册模型到注册表
model_uri = f"runs:/{best_run_id}/model"
mlflow.register_model(model_uri=model_uri, name="BreastCancer_RF_Model")

上述代码使用 mlflow.search_runs 查询实验中 accuracy 最高的运行,并提取其 run_id。然后构造 MLflow 模型URI(格式为 runs:/<run_id>/model,指向该运行记录的模型artifact),调用 mlflow.register_model 将模型注册到 Model Registry,命名为“BreastCancer_RF_Model”。注册成功后,可以在Databricks左侧边栏的 Models(模型)页面找到这个注册模型。第一次注册会创建 版本1。
在这里插入图片描述
在这里插入图片描述

  1. (可选)设置Unity Catalog模型注册表: 如果Databricks工作区启用了 Unity Catalog,建议将MLflow注册表切换为Unity Catalog模式,以便统一管理模型资产。在代码中执行 mlflow.set_registry_uri(“databricks-uc”),并确保有权限在目标Catalog和Schema下创建模型。然后在调用 mlflow.register_model 时,name 参数需要指定为 “..<model_name>” 格式。这会将模型注册到 Unity Catalog 中。例如:
mlflow.set_registry_uri("databricks-uc")
mlflow.register_model(model_uri, "mlflow.default.BreastCancer_RF_Model")

以上代码假设使用Unity Catalog的 main catalog 和 default schema。如果尚未配置Unity Catalog,也可以使用Databricks的 工作区级别的模型注册表,直接使用名字(不带catalog前缀)进行注册。在Azure Databricks中,如果未启用Unity Catalog,那么 mlflow.register_model(…, name=“BreastCancer_RF_Model”) 就会将模型注册到工作区的Model Registry里。
在这里插入图片描述

  1. 管理模型版本与状态: 注册后的模型可以有多个版本。每次针对同一名称调用 register,都会自动创建新版本(版本2, 3,…)。可以在Databricks Models 页面查看模型详情,里面列出了各版本。
    在这里插入图片描述

可以在UI上添加描述、标签等元数据。比如上面添加了tags ”ver:1" ,Aliases “@production” 。
在这里插入图片描述

上图展示了通过 MLflow UI 注册模型时的对话框界面。也可以通过这种GUI方式,将某次运行的模型artifact选中后,点击 Register Model 按钮,选择 “Create New Model” 并输入模型名称(如图所示输入 mlflow.default.breastCancer-rf-model-n200,注意,选择Unity Catelog的话需要使用catalog_name.schema_name.model_name这种命名方式),然后点击 Register。这会在Model Registry中创建一个同名的注册模型,并把该运行的模型保存为其第一个版本。

完成模型注册后,我们的模型已经进入了 Model Registry。通过Model Registry,我们可以对模型进行版本管理、审核和部署。在团队协作中,模型注册表是实现模型治理和持续部署的关键工具。

七、在 Azure Databricks 中部署模型为 REST API 服务

模型注册完成后,我们最后一步是将模型部署为一个可供调用的服务(REST API)。Azure Databricks 提供了 Model Serving 功能,使我们能够将注册表中的模型一键部署成HTTP接口,从而其他应用程序可以通过REST API请求得到模型预测结果。(注意,Trial版本的databricks不能使用Model Serving功能)

这里介绍使用 Databricks Serving Endpoints 部署模型的流程:

  1. 启用模型Serving并创建端点: 在Databricks工作区的左侧侧边栏,点击 Serving 菜单(在“Machine Learning”类别下)进入模型服务页面。然后点击 Create serving endpoint(创建服务端点) 按钮,开始配置新的模型服务。
    在这里插入图片描述

如上图所示,将打开“Create serving endpoint”创建端点的页面。需要填写如下信息:

Endpoint Name(端点名称):输入一个名称,例如 “breastCancer-rf-model”。注意端点名称一旦创建不可修改,在Workspace范围内需唯一。

Served entities(选择模型及版本):在 Served entities 部分点击 Select an entity 下拉,选择 Registered Model 类型,然后搜索之前注册的模型名称“BreastCancer_RF_Model”。选择之后,还需要选择具体的 版本(Version);可以选择特定版本号,或者选择一个阶段比如 “Production” 来始终指向Production阶段的版本。比如我们将版本2部署,可以选择模型 BreastCancer_RF_Model, Version 2。

Compute配置:选择用于托管服务的计算资源规格。Databricks提供 Small、Medium、Large 等预配置大小以及是否使用GPU。在测试阶段可以选 Small (CPU) 以节省资源。还可以设置 Scale-to-zero(闲置时自动缩容),测试阶段可启用,生产环境建议关闭以保证随时可用性。

其他高级选项如 Route Optimization 和 AI Gateway 可暂时忽略或保留默认。

填写完成后,点击页面底部的 Create(创建) 按钮。Databricks 将开始创建和启动这个Serving端点实例。初始状态会显示为 Not Ready,需要等待模型加载完毕后状态变为 Ready。几分钟后,应该能看到端点状态变为Ready,表示服务已上线。

  1. 调用REST API获取预测: 一旦端点处于 Ready 状态,我们就可以通过REST API进行调用预测了。对于每个Serving端点,Databricks会生成一个REST API的URL。这个URL格式大致为:

https:///model///invocations

比如,如果工作区域名为 adb-1234.azuredatabricks.net,端点名称为 breast-cancer-model-endpoint,部署的是模型Production版本,那么URL类似于:

https://adb-1234.azuredatabricks.net/model/BreastCancer_RF_Model/Production/invocations

(也可以用具体版本号如 /model/BreastCancer_RF_Model/1/invocations)

要通过REST API请求预测结果,需要提供认证信息(Databricks的访问令牌)以及输入数据。以下是一份使用 curl 命令调用示例:

curl -X POST -H "Authorization: Bearer <DATABRICKS_TOKEN>" -H "Content-Type: application/json" -d '{
  "dataframe_split": {
    "columns": ["mean radius", "mean texture", "...(特征列名称列表)..."],
    "data": [
       [14.2, 20.1, ...(第一条数据特征值列表)...],
       [13.8, 17.5, ...(第二条数据特征值列表)...]
    ]
  }
}' https://<databricks-instance>/model/BreastCancer_RF_Model/2/invocations

在上述命令中:

<DATABRICKS_TOKEN>需要替换为Databricks个人访问令牌(PAT)。可以在Databricks账户设置中生成一个Token用于API认证。

JSON数据部分使用了 “dataframe_split” 格式提供输入数据,这是一种MLflow支持的格式:包含列名列表和二维数据列表。也可以使用 “dataframe_records” 或 “inputs” 等格式,具体可参考Databricks文档。

URL需要替换为实际的工作区域名、模型名称和版本/阶段。

发送请求后,如果一切正常,会收到模型的预测结果作为响应,通常是 JSON 格式。例如对于分类模型,返回值可能类似 {“predictions”: [0, 1]} 对应输入的预测类别。也可以通过Databricks UI上的 “Query” 功能直接在网页中输入JSON测试调用模型。

  1. 使用 MLflow Deployments SDK(可选): 除了直接使用REST API,MLflow还提供 mlflow.deployments SDK,可以通过Python直接部署和调用Databricks的模型服务。例如使用 client = mlflow.deployments.get_deploy_client(“databricks”) 然后 client.predict(endpoint_name, data) 实现预测。这对于在Notebook中测试部署的端点非常方便。但对于最终用户应用,通常使用REST API调用即可。

  2. 最佳实践提示:

部署前建议将模型设置为 Production 阶段,并使用Production阶段的URI,这样后续如果有新模型版本,只需在注册表中升级Production指向,无需修改调用端代码。

确保对敏感数据进行处理,开启SSL并妥善保存API令牌。生产环境中可以考虑使用OAuth令牌或服务主体而非个人令牌进行认证。

定期监控端点的延迟和负载,Databricks Model Serving支持自动扩展实例数,应根据流量调整 compute scale-out 设置来满足需求。

通过以上步骤,已经成功地将训练好的模型部署为一个可以通过REST接口访问的服务。这意味着外部应用或客户端如今可以对接这个HTTP API,将数据发给模型并获取预测结果,从而实现机器学习模型的集成应用。

八、总结

我们完成了在 Azure Databricks 上使用 MLflow 的机器学习全流程实战:

环境搭建: 从创建Databricks集群和Notebook开始,为项目提供计算资源和开发环境。

数据加载与预处理: 获取公开数据集并进行清洗和特征工程,保证数据质量,为模型训练做好准备。

模型训练与追踪: 使用 MLflow Tracking 记录实验过程,包括模型的代码、超参数、性能指标,以及输出的artifact(如图表、模型文件)。

模型注册管理: 将挑选出的最佳模型注册到 MLflow Model Registry,实现模型版本控制和阶段管理,为部署做好准备。

模型部署服务: 借助 Databricks Model Serving,将注册模型无缝部署为可用的REST API服务,实现在线推理,并提供示例请求验证部署成功。

完成此次试验后,掌握了一个机器学习项目在Azure Databricks上的端到端流程。从数据到模型,再到服务部署,Databricks加上MLflow提供了一套完整的解决方案。后续还可以根据需要扩展此流程,例如使用 Hyperopt 在Databricks上执行自动超参数调优、使用CI/CD将模型部署融入持续集成流水线,或利用Databricks的工作流调度定期训练模型等。

参考文献:

Azure Databricks 官方教程: Build your first machine learning model on Azure Databricks

Azure Databricks 文档: Track model development using MLflow

Azure Databricks 文档: MLflow Model Registry & Model Serving

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐