无服务器机器学习模型的架构

本系列文章探讨了一个无服务器机器学习 (ML) 模型的架构,该模型可在系统将支持服务工单发给支持人员之前向其中添加更多元数据(充实这些工单)。

您的支持人员在制定相关的业务决策时,需要能够访问所需的数据。虽然日志是很好的基础信息源,但添加更丰富的数据可让一切大为改观。然而,实现一个这样的系统可能会很困难。为此,本系列文章提供了一种可行的解决方案。

要求和架构

管理传入的支持服务工单具有挑战性,因为支持人员开始处理问题之前,需要完成下面的步骤:

  • 了解支持服务工单的背景。
  • 确定问题对客户来说有多严重。
  • 决定解决问题所需的资源数量。

通常,支持人员仅会收到发出支持服务工单的客户的极少信息,往往需要通过与客户之间来来回回的几次沟通来收集更多详情。如果您引入基于工单数据的自动化智能系统,则可在支持人员处理支持请求时帮助其做出重要决策。

通常,用户会在填写含多个字段的表单后提交工单。对于此使用场景,我们假设目前没有使用机器学习技术来充实任何支持服务工单。另外,我们还假设当前的支持系统负责处理工单已经有几个月的时间。

要开始充实支持服务工单,您必须训练一个基于现有带标签的数据的机器学习模型。在这种情况下,训练数据集包含已关闭的支持服务工单中的历史数据。您所需的数据位于两种类型的字段中:

  • 输入字段,包含用户填写的表单数据。
  • 目标字段,在处理工单的过程中填写。

结合起来,这些字段中的数据可用作示范,训练出可准确做出预测的模型。在此使用场景中,要预测的内容包括工单处于未结状态的时长以及要分配给工单的优先级。

本系列文章探讨了四种机器学习充实手段,来实现以下目标:

  • 根据工单描述来分析情感。
  • 根据工单描述自动添加标记。
  • 预测工单处于未结状态的时长。
  • 预测要分配给工单的优先级。

在机器学习充实工作流期间:

  1. 用户创建工单。
  2. 工单创建操作触发一个调用机器学习模型进行预测的函数。
  3. 使用机器学习模型返回的预测结果来充实工单数据。
  4. 支持人员使用经过充实的支持服务工单做出高效决策。

下图演示了此工作流。

机器学习充实工作流

工单系统

不论您是从头开始构建系统,还是使用开源代码,或者购买现成的商业解决方案,本文都假定以下条件:

  • 面向客户的品牌界面生成支持服务工单。并非所有帮助台工具都会提供此选项,因此您可以使用简单的表单页面创建一个选项。
  • 通过可创建工单的 RESTful API 访问第三方帮助台工具。您的系统使用此 API 更新工单后端。
  • 发生事件时,您的系统会实时更新您自定义的客户界面。

Firebase 是此类型实现的绝佳选择:

  • Firebase 是客户端可更新的实时数据库,它会向其他订阅的客户端显示实时更新。
  • Firebase 可以使用 Cloud Functions 调用外部 API,如您的帮助台平台提供的 API。
  • Firebase 适用于桌面和移动平台,可以使用各种语言进行开发。在遇到不稳定的互联网连接时,Firebase 可以在本地缓存数据。

无服务器技术和基于事件的触发

“无服务器技术”可以通过各种方式进行定义,但大多数描述都包括以下假设:

  • 服务器应该是一个遥远的概念,且对客户不可见。
  • 操作通常由事件触发的函数执行。
  • 函数运行的任务通常在短期有效(持续几秒或几分钟)。
  • 大多数时候,函数只有一个目的。

Firebase 和 Cloud Functions 结合使用可最大限度地减少基础架构管理,以简化开发运营。操作流程如下:

  1. 根据 Firebase 的数据库更新创建 Cloud Functions 事件。
  2. 客户端将工单写入 Firebase 数据库。
  3. Cloud Functions 触发器执行以下几个主要任务:

    • 使用所部署的机器学习算法运行预测。
    • 使用经过充实的数据更新 Firebase 实时数据库。
    • 使用合并后的数据在帮助台系统中创建工单。

充实支持服务工单

您可以将自动标记、情感分析、优先级预测和解决时间预测分为两个类别,这些类别以执行机器学习任务的方式为基础:

  • 情感分析和自动标记使用 Google 训练和构建的机器学习 API。与您自己构建的模型相比,预训练模型提供的自定义功能较少,但是即买即用。
  • 预测工单解决时间和优先级需要您构建模型或者旧版本的预设模型,并使用自定义数据(如输出和目标字段)训练这些模型。

情感分析和自动标记

支持人员在记录支持服务工单时,可能想知道客户的感受。 对工单描述运行情感分析有助于提供此信息。

大概了解工单中提到哪些内容也很重要。 客户在创建支持服务工单时,通常会提供下拉列表中的一些参数,但在描述问题时,往往会添加更多信息。支持人员借助可识别描述中最重要字词的工具,可缩小主题的范围。此过程被定义为通配自动标记

这两种解决方案都是通用的,易于描述,但要从头开始构建解决方案颇具挑战性。大规模使用功能强大的训练模型进行文本分析具有明显的优势,因为此类模型可缩短开发时间,简化架构管理。

Cloud Natural Language API 是这两种充实方法的良好解决方案。作为 RESTful API,可从 Cloud Functions 中轻松访问此 API。Natural Language API 是使用 Google 扩展数据集且可进行以下多项操作的一个预训练模型:

  • 情感分析
  • 借助具有显著性计算的实体分析
  • 语法分析

本文利用情感和实体分析。您可通过保留明显超过自定义阈值的字词来处理自动标记。

如果您想要一个可自动返回指定标记的模型,您需要自定义训练和自定义创建自然语言处理 (NLP) 模型。 此方法适用于任何标记方式,因为目标是快速分析描述,而不是对工单进行彻底分类。

预测工单解决时间和优先级

工单的解决时间和其优先级状态取决于特定于各个帮助台系统的输入(工单字段)。因此,您不能使用为英语的标记和情感分析训练的预训练模型,而必须训练自己的机器学习功能。

虽然预测解决时间和优先级的工作流类似,但这两个操作代表两种不同类型的值:

  • 解决时间是一个连续值。
  • 优先级的多个预定义选项都取决于帮助台系统。

选择一种可让您执行以下操作的架构:

  • 使用自定义数据训练模型。
  • 部署模型,并将其作为 RESTful API 用于您的 Cloud Functions 函数。
  • 根据需要缩放模型。

Cloud Datalab 是一款在云端运行 Jupyter Notebooks 的 Google 托管式工具,可与其他 Google Cloud Platform (GCP) 产品集成。此外,Cloud Datalab 还可运行机器学习 Workbench(请参阅此处的一些笔记本示例),此工具是促进使用两大关键技术 TensorFlowAI Platform 的一个 Python 库。

TensorFlow 功能包括:

  • 在 TensorFlow 上构建的图表(可执行文件)是可移植的,并且可在各种硬件上运行。
  • Estimator API 可让您使用预建或自定义的模型。本文使用机器学习 Workbench,它使将数据映射到模型等概念变得浅显易懂。
  • 通过实验功能,您可以获取一个模型,并在分布式环境中训练和评估该模型。

AI Platform 是一种可执行 TensorFlow 图表的托管式服务。该服务简化了机器学习任务,例如:

  • 使用极少的开发运营资源在分布式环境中训练模型。
  • 与其他 GCP 产品集成。
  • 微调超参数以改进模型训练。
  • 将模型部署为 RESTful API 以进行大规模预测。

机器学习 Workbench 在后台使用 Estimator API,但在处理结构化数据预测问题时简化了大量样板代码。 Estimator API 增加了多项有趣的选项,如特征组合、用于提高准确性的离散化以及创建自定义模型的能力。 不过,我们目前的使用场景只需要回归量和分类器,几乎不需要特征工程。此方法非常适合与机器学习 Workbench 功能搭配使用,而且还支持分布式训练、批量读取数据和使用 AI Platform 根据需要进行扩容。

根据您深入了解 TensorFlow 和编码的程度,您可以在机器学习 Workbench 或 TensorFlow Estimator API 之间选择。本系列文章中的其他部分重点介绍了机器学习 Workbench,因为主要目标是学习如何在无服务器环境中调用机器学习模型。此外,本系列文章还提供了有关 TensorFlow 和 AI Platform 的更多信息。

与帮助台平台同步

两个方向上两个系统流之间的同步:

出站
当客户打开或更新工单时,Cloud Functions 会触发 Firebase 写入。同时,Cloud Functions 还通过调用其 RESTful API 更新第三方帮助台平台。
入站
当支持人员使用帮助台平台更新工单时,平台会触发其自己的事件,并调用 Cloud Functions HTTP 处理程序,此操作会实时更新 Firebase 和客户端界面。

架构

该架构具有以下流程:

  1. 用户将工单写入 Firebase,这会触发 Cloud Functions 函数。
  2. Cloud Functions 函数调用 3 个不同的端点来充实工单:

    • 一个 AI Platform 端点,在这里函数可以预测优先级。
    • 一个 AI Platform 端点,在这里函数可以预测解决时间。
    • 可执行情感分析和字词显著性的 Natural Language API。
  3. 对于每次回复,Cloud Functions 函数都会更新 Firebase 实时数据库。

  4. 然后,Cloud Functions 函数使用 RESTful API 创建进入帮助台平台的工单。

下图说明了此架构。

无服务器架构

后续步骤