使用 Azure Databricks AutoML UI 训练 ML 模型

本文演示如何使用 AutoML 和 Databricks 机器学习 UI 训练机器学习模型。 AutoML UI 可引导你完成基于数据集训练分类、回归或预测模型的过程。

若要访问 UI,请执行以下操作:

  1. 在边栏中,选择“新建”>“AutoML 试验”。

    还可以从“试验”页创建新的 AutoML 试验。

    此时会显示“配置 AutoML 试验”页。 在此页上,指定数据集、问题类型、要预测的目标或标签列、要用于评估试验运行并为其评分的指标,以及停止条件,来配置 AutoML 过程。

要求

请参阅 AutoML 试验的要求

设置分类或回归问题

可以按照以下步骤使用 AutoML UI 设置分类或回归问题:

  1. 在“计算”字段中,选择一个运行 Databricks Runtime ML 的群集。

  2. 在“ML 问题类型”下拉菜单中,选择“回归”或“分类”。 如果你正在尝试预测每个观测项的连续数字值(例如年度收入),请选择“回归”。 如果你正在尝试将每个观测项分配给一组离散类中的一个(例如良好信用风险或不良信用风险),请选择“分类”。

  3. 在“数据集”下,选择“浏览”。

  4. 导航到要使用的表,然后单击“选择”。 此时会显示表架构。

    仅对于分类和回归问题而言,可以指定要将哪些列包含在训练中,并选择自定义插补方法

  5. 单击“预测目标”字段。 此时会显示一个下拉列表,其中列出了架构中显示的列。 选择希望模型预测的列。

  6. “试验名称”字段显示默认名称。 若要更改该名称,请在字段中键入新名称。

你还可以:

设置预测问题

可以按照以下步骤使用 AutoML UI 设置预测问题:

  1. 在“计算”字段中,选择一个运行 Databricks Runtime 10.0 ML 或更高版本的群集。

  2. 在“ML 问题类型”下拉菜单中,选择“预测”。

  3. 在“数据集”下,单击“浏览”。 导航到要使用的表,然后单击“选择”。 此时会显示表架构。

  4. 单击“预测目标”字段。 此时会显示一个下拉菜单,其中列出了架构中显示的列。 选择希望模型预测的列。

  5. 单击“时间列”字段。 将显示一个下拉列表,其中显示类型为 timestampdate 的数据集列。 选择包含时序时间段的列。

  6. 对于多序列预测,请从“时序标识符”下拉列表中选择标识单个时序的列。 AutoML 按这些列将数据分组为不同的时序,并单独训练每个序列的模型。 如果将此字段留空,AutoML 会假定数据集包含单个时序。

  7. 在“预测范围和频率”字段中,指定 AutoML 应计算预测值的未来时间段数。 在左侧框中,输入要预测的时间段整数。 在右侧框中,选择单位。

    注意

    要使用 Auto-ARIMA,时间序列必须有一个规则的频率(也就是说,任意两点之间的间隔必须在整个时间序列中相同)。 频率必须与 API 调用或 AutoML UI 中指定的频率单元匹配。 AutoML 通过用前一个值填充这些值,以此来处理丢失的时间步长。

  8. 在 Databricks Runtime 10.5 ML 及更高版本中,可以保存预测结果。 为此,请在“输出数据库”字段中指定一个数据库。 单击“浏览”并从对话框中选择数据库。 AutoML 会将预测结果写入此数据库中的表。

  9. “试验名称”字段显示默认名称。 若要更改该名称,请在字段中键入新名称。

你还可以:

使用 Databricks 特征存储中的现有特征表

在 Databricks Runtime 11.3 LTS ML 及更高版本中,可以使用 Databricks 特征存储中的特征表扩展输入训练数据集以解决分类和回归问题。

在 Databricks Runtime 12.2 LTS ML 及更高版本中,可以使用 Databricks 特征存储中的特征表来扩展所有 AutoML 问题(分类、回归和预测)的输入训练数据集。

若要创建特征表,请参阅 在 Unity Catalog 中创建特征表在 Databricks 功能存储中创建特征表

配置完 AutoML 试验后,可以使用以下步骤选择特征表:

  1. 单击“加入特征(可选)”。

    Select Join features button

  2. 在“加入其他功能”页的“特征表”字段中选择一个特征表。

  3. 对于每个特征表主键,选择相应的查找键。 查找键应该是为 AutoML 试验提供的训练数据集中的列。

  4. 对于时序特征表,请选择相应的时间戳查找键。 同样,时间戳查找键应该是为 AutoML 试验提供的训练数据集中的列。

    Select primary key and lookup tables

  5. 若要添加更多特征表,请单击“添加另一个表”并重复上述步骤。

高级配置

打开“高级配置 (可选)”部分以访问这些参数。

  • 评估指标是用来为运行评分的主要指标
  • 在 Databricks Runtime 10.3 ML 及更高版本中,你可以将训练框架排除在考虑之外。 默认情况下,AutoML 使用 AutoML 算法下列出的框架训练模型。
  • 你可以编辑停止条件。 默认停止条件为:
    • 对于预测实验,请在 120 分钟后停止。
    • 在 Databricks Runtime 10.5 ML 及更低版本中,对于分类和回归实验,请在 60 分钟或完成 200 次试验后停止,以较早发生者为准。 对于 Databricks Runtime 11.0 ML 及更高版本,试验次数不会用作停止条件。
    • 在 Databricks Runtime 10.1 ML 及更高版本中,对于分类和回归实验,AutoML 包含了提前停止;如果验证指标不再改进,它将停止训练和调整模型。
  • 在 Databricks Runtime 10.1 ML 及更高版本中,你可以选择时间列以按时间顺序拆分数据以进行训练、验证和测试(仅适用于分类和回归)。
  • Databricks 建议不要填充“数据目录”字段。 这样做会触发默认行为,将数据集安全地存储为 MLflow 项目。 可以指定 DBFS 路径,但在这种情况下,数据集不会继承 AutoML 试验的访问权限。

列选择

注意

此功能仅适用于分类和回归问题

在 Databricks Runtime 10.3 ML 及更高版本中,你可以指定 AutoML 应使用哪些列进行训练。 要排除某个列,请在“包括”列中取消选中此列。

你不能删除选择作为预测目标或时间列的列来拆分数据。

默认情况下,包括所有列。

缺失值的插补

在 Databricks Runtime 10.4 LTS ML 和更高版本中,可以指定如何插补 null 值。 在 UI 中,从表架构的“插补”列中的下拉列表内选择一种方法。

默认情况下,AutoML 会根据列类型和内容选择一种插补方法。

注意

如果你指定了非默认插补方法,则 AutoML 不会执行语义类型检测

运行实验并监视结果

若要启动 AutoML 试验,请单击“启动 AutoML”。 试验随即开始运行,此时会显示 AutoML 训练页。 若要刷新运行表,请单击Refresh button

在此页中,可以:

  • 随时停止试验。
  • 打开数据探索笔记本。
  • 监视运行。
  • 导航到任一运行的运行页。

对于 Databricks Runtime 10.1 ML 和更高版本,AutoML 会显示有关数据集潜在问题的警告,例如不支持的列类型或高基数列。

注意

Databricks 会尽力指出潜在的错误或问题。 但是,这可能并不全面,并且可能无法捕获可能正在搜索的问题或错误。 请确保也进行自己的评审。

若要查看数据集的任何警告,请单击训练页(或在试验完成后的试验页)上的“警告”选项卡。

AutoML warnings

试验完成后,可以:

  • 使用 MLflow 注册和部署某个模型。
  • 选择“查看最佳模型的笔记本”以查看和编辑创建了最佳模型的笔记本。
  • 选择“查看数据探索笔记本”打开数据探索笔记本。
  • 搜索、筛选运行表中的运行以及对其进行排序。
  • 查看任一运行的详细信息:
    • 可以通过单击 MLflow 运行找到包含源代码的已生成笔记本进行试运行。 笔记本保存在运行页的“项目”部分。 如果工作区管理员启用了下载项目的功能,则可以下载此笔记本并将其导入工作区。
    • 要查看运行结果,请单击“模型”列或“开始时间”列。 出现运行页面,显示关于试运行的信息(例如参数、度量和标记)以及运行所创建的工件,包括模型。 此页面还包含可用于对模型进行预测的代码片段。

以后若要返回到此 AutoML 试验,可在“试验”页上的表中找到它。 每个 AutoML 实验的结果(包括数据探索和训练笔记本)都存储在运行实验的用户的主文件夹中的一个 databricks_automl 文件夹中。

注册和部署模型

可以使用 AutoML UI 注册和部署模型:

  1. 选择要注册的模型的“模型”列中的链接。 运行完成后,最佳模型(基于主要指标)将显示在最前面的行中。
  2. 选择register model button以在模型注册表中注册该模型。
  3. 选择边栏中的Models Icon模型”以导航到“模型注册表”。
  4. 在模型表中选择你的模型名称。 此时会显示已注册的模型页

没有名为“pandas.core.indexes.numeric”的模块

通过模型服务为使用 AutoML 生成的模型提供服务时,可能会收到错误:No module named 'pandas.core.indexes.numeric

这是由于 AutoML 和模型服务终结点环境之间的 pandas 版本是不兼容的版本。 可以通过运行 add-pandas-dependency.py 脚本解决此错误。 该脚本会为你记录的模型编辑 requirements.txtconda.yaml,以包含适当的 pandas 依赖项版本:pandas==1.5.3

  1. 修改脚本以包含记录模型时所在的 MLflow 运行的 run_id
  2. 将模型重新注册到 MLflow 模型注册表。
  3. 尝试为新版 MLflow 模型提供服务。