数据中心/云端

实践中的机器学习:构建 ML 模型

本系列介绍 开发和部署  ( M L ) 模型 。在这篇文章中,训练并保存 ML 模型 ,因此它可以作为 ML 系统的一部分部署。 第 1 部分给出了一个 ML 工作流概括 ,考虑了使用机器学习和数据科学实现商业价值所涉及的各个阶段。第 3 部分介绍 如何部署 ML 模型到 Google 云平台 ( GCP )。

培训一个可以作为机器学习系统一部分的模型需要了解您的数据、业务目标以及许多其他技术和组织要求。

在本文中,您创建了一个 Python 脚本,当执行该脚本时,它训练一个 ML 模型,然后将其保存以供将来使用。

首先,我强调了为应用程序训练 ML 模型时的一些重要考虑事项。

培训模型前的注意事项

从模型选择到数据集的复杂性和大小,数据从业者必须战略性地规划资源和期望的需求。在培训模型之前要考虑的因素包括:

  • 型号的选择
  • 解释能力
  • 模型超参数
  • 硬件的选择
  • 数据大小

型号的选择

您可以使用许多类 ML 模型来解决问题。您选择的模型取决于您的用例和可能的约束。

解释能力

如果要将您的模型部署为在受监管行业(如金融或医疗保健)中运行的系统的一部分,则您的模型可能是 explainable 。这意味着,对于模型做出的任何预测,都可以说明模型做出该决定的原因。

在这种情况下,您可能希望使用易于解释的 linear regressionlogistic regression 等模型。

模型超参数

模型具有可调超参数。了解这些超参数对应于什么以及它们如何影响模型非常重要。

根据超参数的选择,模型的性能可能会发生很大变化。

硬件的选择

大多数数据从业者都知道,模型训练通常可以在 GPU 上加速。但即使在您进入模型训练阶段之前, GPU 也可以极大地帮助您的数据科学工作流。

从预处理管道到数据探索和可视化,一切都可以加快。这有助于您更快地迭代并尝试更昂贵的计算技术。

数据大小

当处理比一个内核或机器上的内存更大的数据时,重要的是要考虑充分利用所有数据的技术。

也许使用 RAPID 等工具转移到 GPU 来加速 pandasscikit-learn 风格的工作流是有意义的。或者你可能想研究一个扩展框架,比如 Dask ,它可以扩展模型训练和数据处理,无论你是在 CPU 还是 GPU 上工作。

了解数据集

在本文中,您在一个经典数据集上训练一个模型: UCI Machine Learning Repository 中的 Iris Dataset 。这个数据集包含 150 朵鸢尾花的花瓣长度和宽度以及萼片长度和宽度的记录。每个虹膜属于三种类型之一: setosavirginicaversicolor

你使用这些数据来训练分类模型,目的是根据花瓣和萼片的尺寸来预测虹膜的类型。

CPU 培训

在部署 ML 模型之前,必须首先构建一个 ML 模型。首先下载流行的 Iris Dataset 。本示例假设虹膜数据集已下载并保存为当前工作目录中的iris.data

要训练逻辑回归模型,请执行以下步骤:

  1. 阅读培训数据。
  2. 将训练数据拆分为要素和标签。
  3. 将数据分成训练和测试集( 75% 是训练数据, 25% 是测试数据)。
  4. 训练 Logistic Regression 模型。
  5. 坚持训练后的模型。
import joblib
import pandas as pd
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split

def run_training():
"""
Train the model
"""
# Read the training data
dataset = pd.read_csv(
filepath_or_buffer="iris.data",
names=["sepal_length_cm", "sepal_width_cm", "petal_length_cm", "petal_width_cm", "class"]
)

# Split into labels and targets
X = dataset.drop("class", axis=1).copy()
y = dataset["class"].copy()

# Create train and test set
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.25, random_state=26)

# Training the model
model = LogisticRegression(random_state=26)
model.fit(X_train, y_train)

# Persist the trained model
joblib.dump(model, "logistic_regression_v1.pkl")

if __name__ == "__main__":
run_training()

train_test_splitLogisticRegression调用中的random_state参数有助于确保该脚本每次运行时都产生相同的结果。

运行脚本会生成一个保存在文件logistic_regression_v1.pkl中的模型,您可以使用该模型根据花瓣和萼片的尺寸对其他虹膜进行分类。

GPU 加速模型训练

在本例中,您使用的是一个小数据集,仅包含 150 行数据。由于数据的简单性,该模型在 CPU 上几秒钟就能训练。

然而,在处理真实世界数据集时,模型训练成为瓶颈并不罕见。在这种情况下,通常可以通过使用 GPU 而不是 CPU 来加快工作流的模型训练阶段。

例如, RAPIDS 提供了一套开源软件工具,使数据科学家和工程师能够在 GPU 上快速运行工作负载和数据科学管道。通过模仿常见数据科学库(如pandasscikit-learn)的 API ,您可以通过少量代码更改来加快机器学习模型训练(以及探索性数据科学)。

Ad for Accelerated Data Science Kit

接下来是什么?

现在您已经有了一个经过培训的模型,可以考虑将其部署到生产环境中。在下一篇文章 Machine Learning in Practice: Deploy an ML Model on Google Cloud Platform 中,您将学习在 GCP 上部署模型的三种方法。

寻求从数据摄取到部署机器学习的帮助或指导?加入 Data Processing 论坛。

 

Tags