Press "Enter" to skip to content

在零售和电子商务行业构建机器学习平台

将机器学习应用于解决组织中一些最困难的问题是很好的。电子商务公司有很多可以利用ML的用例。问题是,随着更多的ML模型和系统投入生产,您需要建立更多的基础设施来可靠地管理一切。因此,许多公司决定将这个工作集中在内部ML平台上。

但是如何构建呢?

在本文中,我将分享关于如何在电子商务中构建成功的ML平台的经验以及团队在构建过程中需要遵循的最佳实践。

但首先,让我们讨论一下您的ML平台可以和应该支持的核心零售/电子商务机器学习用例。

电子商务ML平台可以支持哪些模型类型?

虽然所有内部ML平台都有一些共同之处,但对于电子商务来说,有一些特定的模型类型更有意义,比如:

  • 1
    产品搜索
  • 2
    个性化和推荐
  • 3
    价格优化
  • 4
    需求预测

产品搜索

产品搜索是任何电子商务业务的基础。客户通过搜索平台表达他们的意图。如果产品搜索平台不理想,可能会有很多客户需求无法得到满足。

ML平台可以利用历史客户参与数据,也称为“点击流数据”,并将其转化为对搜索平台成功至关重要的特征。从算法的角度来看,Learning To Rank (LeToR)和Elastic Search是用于构建搜索系统的一些最流行的算法。

个性化和推荐

电子商务中的产品推荐是为了提供相关和有价值的建议来满足客户需求的入口。如果正确实施,电子商务产品推荐系统可以提供更好的客户体验,增加客户参与度,并带来更好的收入。

我们可以收集和使用用户产品的历史互动数据来训练推荐系统算法。传统的协同过滤或神经协同过滤算法依赖于用户过去与产品的互动,被广泛用于解决个性化和推荐问题。

价格优化

价格优化是零售业的核心问题。电子商务公司需要在“保持未售商品在仓库中”和“通过提供有吸引力的折扣促进销售”之间找到平衡。

因此,开发人员可能需要经常优化定价策略。为了支持模型的增量开发,需要构建一个具有CI/CD/CT支持的ML平台,以加快进展。

需求预测

对未来需求的估计可以帮助电子商务公司更好地管理采购和补货决策。有一些产品是季节性的,它们的需求在一年中波动。夏季服装、冬季服装、节日装饰品、万圣节服装、润肤霜等都是一些例子。

使用流行的预测算法如SARIMAX、AIRMA等的ML模型可以考虑所有这些因素,以得出更好的需求估计,并帮助更好地决策关于他们的目录和库存的电子商务。

如何在电子商务中建立ML平台?

ML平台的目标是自动化重复任务,从数据准备到模型部署和监控整个流程。ML平台有助于更快地迭代ML项目的生命周期。

下图显示了ML平台的主要组件。

在零售和电子商务行业构建机器学习平台 四海 第1张
电子商务中ML平台的架构 | 来源:作者

一个组件可能有不同的名称,但ML平台的主要组件如下:

  • 1
    数据平台
  • 2
    数据处理
  • 3
    持续集成/持续部署/持续训练
  • 4
    模型服务
  • 5
    性能监控

这些是我们在任何ML平台中都会找到的组件,但ML平台在零售业有什么特别之处?关键在于如何设计每个组件。在接下来的章节中,我们将讨论如何构建每个组件以支持零售业务用例。

数据平台的考虑因素

正确地建立数据平台对于机器学习平台的成功至关重要。当您看到电子商务平台的端到端旅程时,您会发现有很多组件会生成数据。正如下图所示,为了将商品从供应商交付给消费者,商品会通过供应链网络中的几个层级进行流转。

每个层级都会产生大量数据,捕获这些数据非常重要,因为它在优化中扮演着关键角色。有时候,管理来自多个来源的大量数据变得具有挑战性。

在零售和电子商务行业构建机器学习平台 四海 第2张
电子商务的端到端旅程 | 来源:作者

数据来源

  • 点击流数据:客户的旅程始于通过查询搜索商品。当客户继续与电子商务门户互动时,会生成一系列点击数据。为了通过分析客户的过去行为改进搜索和推荐系统,捕获客户的互动非常重要。
  • 产品目录:产品目录数据是任何算法了解产品的唯一真实来源。电子商务公司从多个供应商、制造商和供应商采购产品。整合来自多个渠道的数据并持久化以维护丰富的产品目录是具有挑战性的。
  • 供应链管理数据:另一个数据来源是供应链管理系统。当商品穿越供应链网络时,每个层级都会生成数据,将这些数据持久化以优化供应链网络非常重要。

数据平台的目标是以易于处理的方式持久化数据,以供机器学习模型开发使用。在接下来的部分,我们将讨论为零售业建立数据平台的最佳实践。

在零售和电子商务行业构建机器学习平台 四海 第3张
数据平台的组件 | 来源:作者

保留数据的历史记录

在为电子商务建立数据平台时,保留客户过去的互动数据至关重要,因为推荐系统利用历史客户互动数据来构建更好的算法。维护长时间的会话级别数据历史记录可能会很麻烦。让我们通过一个例子来理解这一点。

点击流数据通常包含<会话ID,用户,查询,商品,点击,加入购物车,订单>。为每个用户维护长时间的会话级别数据可能过于繁琐,而且机器学习模型开发可能并不总是需要那么详细的数据。

因此,更好的数据库架构是维护多个表,其中一个表维护过去3个月的历史记录和会话级别细节,而其他表可能包含每周聚合的点击、加入购物车和订单数据。

数据集的版本控制

在算法开发过程中,数据科学家可能需要运行多个实验。对于数据科学家来说,跟踪使用哪些数据运行实验有时会变得棘手。因此,数据的版本控制有助于更好地跟踪数据随时间的变化。

以电子商务为例,产品目录的数据会随时间而变化。有时会向目录添加新产品,同时也会删除无效产品。因此,在构建模型时,重要的是跟踪使用哪个版本的目录数据来构建模型,因为产品的添加或删除可能导致预测不一致。

选择合适的数据存储平台

在电子商务中,数据科学家处理各种类型的数据。根据数据类型和应用类型选择存储平台至关重要。

  • 数据平台需要通过数据连接器与BigQuery、云文件存储平台(如Amazon S3、GCP存储桶等)进行集成。
  • 同时可能存在多个数据源,这些数据以不同的形式(如图像、文本和表格形式)可用。人们可能希望利用现成的机器学习运维平台来维护不同版本的数据。
  • 为了存储图像数据,云存储如亚马逊S3和GCP存储桶、Azure Blob Storage是一些最好的选择,而人们可能想要利用Hadoop+Hive或BigQuery来存储点击流和其他形式的文本和表格数据。

如何建立数据处理平台?

我们都知道数据预处理在机器学习项目生命周期中起着至关重要的作用,开发人员花费超过70%的时间来准备数据以正确的格式。在本节中,我将讨论关于构建数据处理平台的最佳实践。

该平台的目标是对数据进行预处理、准备和转换,使其准备好用于模型训练。这是ETL(提取、转换和加载)层,它将来自多个来源的数据结合起来,清除数据中的噪声,组织原始数据,并为模型训练做准备。

数据验证

如前所述,电子商务涉及不同类型的数据,并且数据可能来自多个数据源。因此,在将来自多个来源的数据组合之前,我们需要验证数据的质量。

以目录数据为例,检查数据中是否存在产品标题、主要图像、营养价值等一组必填字段就很重要。因此,我们需要构建一个验证层,根据一组规则运行以验证和验证数据,然后准备数据进行模型训练。

探索性数据分析

探索性数据分析的目的是发现数据中的明显错误或异常值。在这个层中,我们需要设置一组可视化工具来监视数据的统计参数。

特征处理

这是数据处理单元中的最后一层,将数据转换为特征并将其存储在特征存储中。特征存储是存储可直接用于模型训练的特征的存储库。

例如,一个模型使用用户订购商品的次数作为特征之一。我们以原始格式获取的点击流数据具有用户与产品的会话级数据。我们需要在用户和商品级别上聚合此点击流数据,以创建特征并将该特征存储在集中的特征存储中。

构建此类特征存储具有许多优点:

  • 1. 它可以轻松地在多个项目之间重复使用特征。
  • 2. 它还有助于在团队之间标准化特征定义。

CI/CD/CT平台的考虑

建立持续开发平台

这是开发人员运行实验并找到最优模型架构的平台。它是实验的测试平台,开发人员在其中运行多个实验,尝试不同的模型架构,尝试找到适当的损失函数,并对模型的超参数进行实验。

JupyterLabs一直是使用Python进行机器学习开发的最受欢迎的交互式工具之一。因此,该平台可以利用JupyterLab环境编写和执行代码。该平台需要访问数据平台,并且需要支持从数据源获取数据的所有类型的数据连接器。

建立持续训练平台

电子商务机器学习平台需要各种模型,如预测、推荐系统、排序学习、分类、回归、运营研究等。为了支持这种多样化的模型开发,我们需要运行多个训练实验,找出最佳模型,并在获得新数据时不断重新训练获得的模型。因此,机器学习平台应该支持持续训练(CT)以及CI/CD。

持续训练是通过设置一个流水线来实现的,该流水线从特征存储中获取数据,使用持续开发平台预先估计的模型架构训练模型,计算评估指标,并在评估指标朝着正确的方向发展时将模型注册到模型注册表中。一旦新模型在模型注册表中注册,就会创建一个新版本,并在部署期间使用相同版本来获取模型。

但是,什么是模型注册表,以及这些评估指标是什么?

模型注册表
  • 模型注册表是一个集中存储和管理训练的机器学习模型的平台。它存储模型权重并维护模型版本的历史记录。模型注册表是一个非常有用的工具,用于组织不同的模型版本。
  • 除了模型权重,模型注册表还存储有关数据和模型的元数据。
  • 模型注册表应该支持各种模型类型,如基于TensorFlow的模型、基于sklearn的模型、基于transformer的模型等。
  • 像neptune.ai这样的工具对于模型注册表具有出色的支持,以简化这个过程。
  • 每次注册模型时,都会为该模型生成一个唯一的ID,并且该ID用于跟踪该模型的部署。

使用neptune.ai,您可以将生产就绪的模型保存到集中式注册表中。这将使您能够在一个地方对模型和相关元数据进行版本控制、审核和访问。

在零售和电子商务行业构建机器学习平台 四海 第4张在零售和电子商务行业构建机器学习平台 四海 第5张

  • 在文档中查看完整的模型注册表概述
选择最佳评估指标

评估指标帮助我们决定算法的版本性能。在电子商务中,对于推荐系统或任何直接影响客户体验的算法,存在两种评估这些模型的方法,即“离线评估”和“在线评估”。

在“离线评估”情况下,模型的性能是基于一组预定义的指标在预定义数据集上计算得出的。这种方法更快且易于使用,但这些结果并不总是与实际用户行为相关,因为这些方法无法捕捉用户偏好。

不同生活在不同地理位置的用户将其选择偏差和文化偏差引入电子商务平台。除非我们通过用户与平台的直接交互来捕捉这种偏差,否则很难评估模型的新版本。

因此,我们使用A/B测试和/或交替测试等方法来通过将解决方案部署到平台上并捕捉用户与旧系统和新系统的交互来评估算法。

A/B测试

在电子商务中,A/B测试是通过将早期算法视为对照组,将算法的两个版本进行比较的一种方法。

具有相似人口统计、兴趣、饮食需求和选择的用户被分成两组,以减少选择偏差。一组用户与旧系统进行交互,而另一组用户与新系统进行交互。

通过制定假设检验来捕获和比较一组转化指标,如订单数量、总商品价值(GMV)、ATC/订单等,以得出具有统计显著性的结论。

为了获得具有统计显著性的确定性证据,可能需要运行3-4周的A/B测试实验。时间取决于参与实验的用户数量。

交替测试

交替测试是A/B测试的替代方法,它以更短的时间实现了类似的目标。在交替测试中,不将用户分为两组,而是通过交替混合推荐算法的两个版本的结果创建一个组合的排名列表。

在零售和电子商务行业构建机器学习平台 四海 第6张
A/B测试与交替测试 | 根据来源修改

为了评估推荐系统算法,我们需要同时使用在线和离线评估方法。离线评估使用诸如NDCG(标准化折扣累积增益)、Kendall’s Tau、准确率和召回率等指标,可以帮助开发人员在非常短的时间内对算法进行微调和测试,而在线评估提供了更真实的评估结果,但需要更长的时间。

完成离线和/或在线评估后,评估指标存储在表中,并将模型的性能与其他模型进行比较,以决定新模型是否优于其他模型。如果是这样,将该模型注册到模型注册表中。

模型服务框架

一旦开发了一个机器学习模型,下一个挑战就是在生产系统中提供该模型的服务。由于操作限制,提供机器学习模型的服务有时是具有挑战性的。

主要有两种类型的模型服务:

  1. 实时部署:在这种系统中,模型部署在在线系统中,可以在极短的时间内获得模型输出。这组模型对延迟非常敏感,需要进行优化以满足延迟要求。大多数现实世界中关键的业务系统都需要实时处理。
  1. 批量部署:在这种系统中,模型输出是在一批样本上推断出来的。通常会计划一个作业来执行模型输出。这种部署方式相对较少关注延迟问题。

我们需要实现实时或小批量模式下的低延迟。服务和优化过程取决于框架的选择和模型的类型。在接下来的几节中,我们将讨论一些流行的工具,帮助在生产系统中实现低延迟服务ML模型。

开放式神经网络交换(ONNX)

优化机器学习模型的推理时间很困难,因为需要优化模型参数和架构,并且还需要针对硬件配置进行调整。根据模型是否在GPU/CPU或云端/边缘上运行,这个问题变得具有挑战性。为不同类型的硬件平台和软件环境优化和调整模型是不可操作的。这就是ONNX发挥作用的地方。

ONNX是一种表示机器学习模型的开放标准。在TensorFlow、Keras、PyTorch、scikit-learn等中构建的模型可以转换为标准的ONNX格式,以便在各种平台和设备上运行ONNX模型。ONNX支持深度神经网络和经典的机器学习模型。因此,将ONNX作为ML平台的一部分可以节省大量时间以进行快速迭代。

Triton推理服务器

计算机视觉模型和语言模型可能具有大量参数,因此在推理过程中需要很长时间。有时,需要执行一系列优化来改善模型的推理时间。NVIDIA AI平台开发的Triton推理服务器可以在任何类型的基础设施上部署、运行和扩展训练好的ML模型。

它支持TensorFlow、NVIDIA® TensorRT™、PyTorch、MXNet、Python、ONNX、XGBoost、scikit-learn、RandomForest、OpenVINO等。Triton推理服务器还支持大规模语言模型,它将大模型分割成多个文件,并在多个GPU上执行,而不是单个GPU。

以下是一些与此相关的有用链接- triton-inference,triton-server指南。

模型监控

由于概念漂移、数据漂移和协变量漂移等因素,机器学习模型的性能可能会随时间而下降。以电子商务中的产品推荐系统为例。

您认为在疫情后使用来自疫情前的数据训练的模型是否同样有效?由于这些未预料到的情况,用户行为发生了很大变化。

  • 1
    许多用户现在更关注购买日常必需品,而不是昂贵的小工具。
  • 2
    此外,由于供应链问题,很多产品可能缺货。
  • 3
    更不用说在电子商务中,用户的购物模式随年龄变化。

因此,您的电子商务推荐系统可能会因此类变化而变得不相关。

有些人认为模型监控不一定是必需的,因为定期重新训练模型可以处理任何形式的漂移。这是正确的,但只有当模型不太大时才有用。我们逐渐转向更大的模型。对这种模型进行重新训练是昂贵且可能涉及巨大成本的。因此,建立一个模型监控系统可以帮助您应对这些困难。

为零售建立MLOps平台的最佳实践

零售业的机器学习团队解决各种问题,从预测到推荐系统。正确建立MLOps平台对团队的成功至关重要。以下是建立高效电子商务MLOps系统所需遵循的一些实践。

在零售和电子商务行业构建机器学习平台 四海 第7张
为零售建立MLOps平台的最佳实践 | 来源:作者

模型版本控制

在电子商务中开发机器学习模型时,团队必须进行许多实验。在此过程中,团队创建了多个模型。管理这么多版本的模型变得困难。

最佳实践是维护一个模型注册表,在其中注册模型以及其性能指标和特定模型元数据。因此,每次创建新模型时,都会附加一个版本ID并将其存储在模型注册表中。

在部署过程中,模型从模型注册表中提取并部署到目标设备。通过维护模型注册表,可以根据需要选择回退到先前的模型。

维护特征存储

数据科学家花费大量时间将原始数据转换为特征。我认为大约70%的数据科学家的工作量用于准备数据集。因此,自动化数据的预处理和后处理以创建特征的流程可以减少冗余工作。

特征存储是一个集中存储、管理和分发特征的平台。这个集中的存储库有助于跨多个团队访问特征,促进跨团队合作,并加快模型开发。

跟踪性能指标

电子商务中的许多机器学习模型会随着时间的推移而成熟。通过迭代过程,随着我们获得更好的数据和找到更好的架构,模型的性能逐渐提高。一个最佳实践是密切关注评估指标的进展。因此,建立带有算法评估指标的仪表板,并监测团队是否朝着正确的方向取得进展,是一个好的做法。

构建CI/CD流水线

对于任何MLOps系统来说,CI/CD是绝对必要的。它可以更快、更高效地将代码更改交付到生产环境中。CI/CD流水线简化了从代码提交到构建生成的过程。每次提交代码时,它运行一组自动化测试,并向开发人员提供有关更改的反馈。它给开发人员写出高质量代码的信心。

监控数据漂移和概念漂移

设置警报以识别数据分布的显著变化(以捕捉数据漂移)或模型性能的显著变化(以捕捉概念漂移)通常被忽视,但是这是必要的。

稳健的A/B测试平台

A/B测试是基于客户参与度评估算法的方法。但是通常需要很长时间才能收敛。因此,团队应该花时间找出更快的评估方法,如交错测试,以构建强大的测试算法的方法。

最后的想法

本文介绍了ML平台的主要组成部分以及如何为电子商务业务构建它们。我们还讨论了这样一个ML平台的需求,并总结了在构建过程中要遵循的最佳实践。

由于机器学习领域经常有突破性的发展,未来一些组件和实践可能需要变化。在确保正确性方面,了解最新的发展是很重要的。本文是朝这个方向的一次尝试,我希望阅读后您会发现为零售业务准备一个ML平台变得更加容易。

参考资料

  1. https://cloud.google.com/architecture/mlops-continuous-delivery-and-automation-pipelines-in-machine-learning 
  2. https://learn.microsoft.com/en-us/azure/machine-learning/concept-onnx 
  3. https://kreuks.github.io/machine%20learning/onnx-serving/ 
  4. https://developer.nvidia.com/nvidia-triton-inference-server 
  5. https://www.run.ai/guides/machine-learning-engineering/triton-inference-server
Leave a Reply

Your email address will not be published. Required fields are marked *