2019 年 7 月

第 34 卷,第 7 期

[Azure ML]

了解 Azure AI 服务

作者 Ashish Sahu | 2019 年 7 月

云计算更改想象和创建产品与服务的方式。它改变了软件解决方案的架构方式,并使开发人员能够在全球范围内构建应用程序。它为全球开发人员实现人工智能 (AI) 大众化铺平了道路。

Microsoft Azure 在为开发人员提供一系列 AI 服务方面处于领先地位。但是,当选择过多,就很难辨别哪些是可以使用的最佳服务,以及何时使用。在本文中,我们将介绍 Microsoft Azure 上可用的 AI 服务,并提供你需要的信息和上下文,以便分析你的需求,并根据你的需求对要使用的服务作出明智决策。在某些体系结构中,你最终可能会获得多个 AI 服务管道,协同工作以实现你的目标。

在可用服务范围内,Microsoft Azure 提供了超过 35 项针对 AI 和机器学习 (ML) 的服务。这些服务的范围从现成的 RESTful API 到可用于使用自己的数据从头创建 AI 模型的服务和 SDK。随着深入研究,我们将讨论这些服务并共享你可以自行尝试的代码。我们还将探讨这些服务的场景、需求和目标受众,以便你能够理解何时以及为哪些服务制作案例。

作为一名在职软件或 ML 开发人员/架构师,你可能已经知道术语 AI 和 ML 指的是软件工具、框架、算法和数据处理技术的广泛领域。AI 提供的功能可以从简单的个性化推荐系统到极其复杂的视频操作识别系统。

Azure 上的 AI 和 ML 服务满足所有需求,包括预构建的 AI 服务,可以通过一些 RESTful API 调用将这些服务集成到解决方案中。如果特定需求要求自定义 ML 模型,那么也有一些工具和服务可以生成和使用这些模型。开放性一直是 Microsoft Azure 平台的核心原则,Microsoft AI 平台允许你使用当前使用的任何工具集或框架,并且仍可以利用 Azure AI 服务来端到端简化 ML 工作流。

AI 服务概述

为简单起见,我们可以将 AI 服务分为三个高级别类别:AI 应用和代理、知识挖掘和机器学习。让我们花点时间来探索这些类别。

AI 应用和代理:作为类别,AI 应用和代理是 Microsoft 认知服务和 Azure 机器人服务提供的服务子集。Microsoft 认知服务是预构建的 AI 服务,开发人员只需调用几个 RESTful API,就可以在其应用和服务中快速添加智能功能。其中一些服务提供自定义选项来满足规范需求,但它们主要由 Microsoft 开发、训练和托管的模型提供支持,因此实际上不需要从头开始开发模型的整个过程。

Azure 机器人服务由 Microsoft Bot Framework 平台提供支持,它提供了快速开始运行机器人的方法,可以使用 Microsoft 认知服务或 Azure 的其他 AI 服务对其进行扩展。还可以集成你自己开发的任何 AI 服务。语音和语言认知服务也称为与 Azure 机器人服务结合使用的对话 AI 服务。

知识挖掘:知识挖掘是 Azure AI 平台的一个分支,其中智能信息提取是从结构化和非结构化数据中呈现见解的关键通道。Microsoft Azure 搜索(及其认知技能)和 Azure 表单识别器服务是属于此类别的服务的两个杰出示例。

机器学习:AI 应用和代理和知识挖掘类别均包括预构建的 AI 服务。但是,Azure AI 平台包含定制服务,让任何数据科学家都有宾至如归的感觉。机器学习类别包括 Microsoft AI 平台服务,可以使 ML 模型栩栩如生。这些 Azure 服务帮助管理 ML 试验,从数据准备阶段到测试和管理训练,再到运行时评估。它们还提供灵活的计算目标选项,因此可以只关注试验代码,而不必担心基础结构、平台和可伸缩性。Azure 机器学习工作室、自动化机器学习服务(也包括 SDK)、Azure Notebooks 和 Azure 机器学习服务提供了平台工具和服务,使实验开发更加高效。

实操演练

查看可用服务列表是一回事。理解它们如何在适用于广泛组织的实际场景的上下文中工作和交互是另一回事。考虑到这一点,我们将描述一个场景,然后使用它来展示特定 Azure 组件如何处理相关任务。

我们先来介绍一些背景知识。假设你是颇受大众欢迎的 Contoso 公司的首席开发人员、架构师或 AI 工程师。Contoso 最近宣布了其业务流程的现代化,其中一个项目旨在改造 10 年前在内部构建的费用管理解决方案。虽然核心业务逻辑和审批工作流不一定会发生变化,但 AI 可用于改进用户交互、数据输入和信息处理。

为了更清楚地说明这一点,让我们了解项目中可能涉及的任务,然后为要实现的每个任务分配一个特定 AI 服务。图 1 说明了与此项目相关的任务。

Contoso 费用现代化任务映射
图 1 Contoso 费用现代化任务映射

现在让我们看一下图 1 中的任务并了解哪些 Microsoft AI 服务可用于每个任务。

从回执提取信息:简单和复杂

在此场景中,需要自动从用户上传的扫描或数字回执中检索信息。此阶段从回执提取字段、金额和供应商信息,并将它们推送到数据存储区或 UI,以便在开支应用程序中进行审查。

相关服务Azure 认知服务、Azure 搜索、Azure 表单识别器服务

需要扫描图像来识别文本(光学字符识别 [OCR])或一组图像和文档的场景需要 Azure 搜索提供认知技能、计算机视觉和文本分析认知服务。最后一个服务用于提取实体和关键短语(例如,“Seattle”和“dinner”)来完成此任务。

目标受众:AI 工程师和应用程序开发人员。

练习示例

  • 快速入门:使用 Azure 搜索中的认知技能创建 AI 索引管道 (bit.ly/2WNDooN)
  • 用 JavaScript 编写的计算机视觉 API 示例 (bit.ly/2YCcFvB)
  • 快速入门:使用 .NET SDK 和 C# 探索文本分析服务 (bit.ly/2VKkyST)

开发 ML 模型,从过去的趋势和预测预算中学习

数据科学社区的成长依赖于协作和知识共享。但是,随着数据和需求的规模和复杂性的增加,你可能会发现构建自己的 ML 模型的原因,这样可以更有效地理解大规模数据中的模式。这些模型称为自定义 ML 模型。

交付智能功能或构建自定义 ML 模型的生命周期称为“团队数据科学过程 (TDSP)”或“数据科学生命周期”。TDSP 的各个阶段为开发过程带来了结构,就像应用程序开发生命周期一样。该过程从理解业务需求入手,最后是客户验收。中间是中间阶段,比如数据获取和理解、建模和部署 - 可根据需要进行迭代。有关数据科学生命周期的详细信息,请参阅 bit.ly/2XbmKj3

在我们的示例中,内部数据科学团队正在创建过去支出的统计模型,并预测未来支出模式,以帮助财务部门规划下一个财年。数据科学专家从支出数据存储中抽取数据样本,并使用熟悉的工具执行探索性数据分析 (EDA)。生成的自定义 ML 模型根据特定需求进行调整,然后从收集的数据中学习。

相关服务Azure 数据科学虚拟机 (DSVM)、Azure Notebooks、Azure ML 服务、Azure 机器学习工作室

DSVM 是 OS 映像的模板映像,旨在加快自定义 ML 实验的开发,而 Azure Notebooks 和 Visual Studio 可以为运行数据科学实验项目提供良好环境。Azure ML 服务帮助数据科学家团队使用 Notebook VM、代码和计算环境来协作和维护他们的模型,并管理应用程序生命周期。自动化 ML 服务也是生成高性能模型的一个选项。如果愿意尝试使用可视化的拖放界面,也可以使用 Azure 机器学习工作室。Azure Notebooks 是以公开或私密方式托管 Jupyter 笔记本的另一种方法,它仍然可以连接到 ML 计算以进行训练和部署。

目标受众:数据科学家和数据科学家团队、开发人员、分析师、架构师

练习示例

使用实际过去数据和各种数据源大规模训练自定义模型

在此场景中,组织中的数据科学家希望基于实际数据运行他们的模型,以了解其预测的准确性。这里的一个关键因素是尽可能减少训练时间。

相关服务Azure Databricks、Azure ML 服务、Azure Data Lake

通常对抽样数据进行试验,以创建自定义 ML 模型。在使用抽样数据开发模型之后,它将使用实际数据进行训练,实际数据大小可能是 GB 或 TB。在此规模的数据学习中,分布式计算和大数据存储对于优化性能至关重要。Azure ML 服务帮助选择用于大规模训练的计算目标,范围从 GPU 虚拟机 (VM) 到 Azure Kubernetes 群集。如果团队中有大数据专家,你可能会选择为计算层使用 Azure Databricks(用于 Spark/MMLSpark 部署)或使用 Azure Data Lake Analytics(如果数据驻留在 Azure Data Lake 中)运行大规模训练场景。

Azure Databricks 还提供数据工程平台来帮助处理数据引入、ETL 和业务流程任务。

目标受众:数据科学家、 数据工程师、 数据开发人员

练习示例

  • 快速入门:使用 Azure 门户在 Azure Databricks 上运行 Spark 作业 (bit.ly/2EevltO)
  • 教程:使用 Azure Databricks 提取、转换和加载数据 - bit.ly/30pj3bs

打包模型并部署它供应用程序使用

自定义机器模型已准备就绪!虽然有多种评估方法,但大多数应用程序将通过 API 与模型交互。此外,客户环境的托管平台 (OS) 会因诸多因素而异。因此,DevOps 团队和 ML 团队必须密切合作,以确保模型可访问、可用,并且能够跨平台运行。

相关服务Azure IOT Edge、Azure 容器实例、Azure ML 服务

由于将应用程序和依赖项打包在一个可移植单元中,容器平台在应用程序托管场景方面获得了很大的发展势头。容器提供在云、混合、Edge 或专用托管场景中打包模型的灵活性。在这里,可以使用 Azure ML 服务将模型文件部署到多种环境中,比如本地 Web 服务、Azure IOT Edge、Azure Kubernetes 服务、Azure 容器实例或 Azure ML 计算。从计算机视觉导出的 AI 模型可作为容器在各种 OS 和业务流程平台上运行。

目标受众:应用程序开发人员、DevOps 工程师、数据科学家

练习示例

通过 ML.NET 使用模型并开发模型应用

大部分 Contoso 业务线应用都是用 .NET Core 编写的,而一些解决方案则在 Edge 或移动应用上运行。在此情况下,应用程序团队和架构师需要将数据科学团队开发的 ML 模型加载到移动和 Edge 应用中。

相关服务ML.NET、Azure 认知服务

ML.NET 是基于.NET Core 的跨平台框架,供熟悉 .NET 的开发人员使用他们选择的语言开始开发 ML 应用程序。可以通过 ML.NET 在 .NET Core 应用中加载 ONNX 和 TensorFlow 模型。还可以从数据创建一个模型,保存它,然后将其加载到其他 ML.NET 应用中进行评估。对于完整堆栈应用程序开发人员,可以选择通过一系列 Azure 认知服务将 AI 融入应用。

一些认知服务导出的模型也可以加载到 iOS 和 Android 应用中。

目标受众:应用程序开发人员、.NET 开发人员、移动应用程序开发人员、AI 开发人员

练习示例

  • 使用 ML.NET 通过 MNIST 数据集对手写数字从 0 到 9 进行分类 (bit.ly/2EfpzZ4)
  • 综合认知服务 SDK 示例 (bit.ly/30pPTcf)

通过企业聊天机器人提供交互式体验和见解

费用归档是一项常见的任务,重复只会让事情变得更糟。带有 AI 功能的机器人可以缓解这种困扰,减少员工输入数据所需的时间。这些机器人是通过 Azure 机器人服务创建的,它们为 Web 应用,可以使用计算机视觉 API 对其进行扩展,以接受、分析和执行回执上的 OCR。然后,可以存储这些信息,以生成长期见解。

相关服务Azure 机器人服务、语言理解智能服务 (LUIS)、虚拟助理、语音服务、QnA Maker

Azure 机器人服务和 LUIS 以及计算机视觉认知服务共同支持的机器人可以为用户提供对话式体验,帮助他们归档费用。添加语音认知服务可构建支持自然语音的机器人,用户可以使用它来提供语音输入。还可以探索开源虚拟助理解决方案,以快速运行一个功能齐全的机器人,然后可以根据自己的需求对其进行自定义。最后,可使用 QnA Maker 服务来帮助用户提出第一个问题。

目标受众:应用程序开发人员、AI 开发人员

练习示例

总结

以上便是对图 1 中详述的场景的介绍,并提供了应用于典型 AI 功能集成和开发场景的 Azure AI 服务的扩展概述。

如果希望在应用中添加智能功能,并评估在 Azure 上可用的 AI 服务,首先需要决定是否可以使用任何 Microsoft 认知服务,或者是否需要构建自定义 ML 模型。在许多情况下,可以结合使用认知服务和自定义 ML 模型来实现预期的最终结果。

Microsoft 认知服务预先构建的 AI 服务通常可以满足更简单场景的需求,比如对数字文档执行 OCR、根据内容对图像进行分类,以及在应用中添加对话 AI。其中一些服务(如自定义视觉服务和 LUIS)还提供广泛的自定义来满足不太简单的需求。

Azure Databricks 和 Azure 数据仓库等大数据分析服务,以及 Azure ML 服务,可用于任何规模的复杂场景。带有自动化 ML 和 ML 管道的 Azure ML 可以通过简化 DevOps 流程和减少试验时间来提高组织中数据科学团队的工作效率。

既然已经探讨了 Azure AI 服务,并了解了 Contoso 的费用现代化需求,请花点时间通过在线交互式测验来测试你的理解:ashisa.github.io/AzureAIQuiz


Ashish Sahu是一位资深技术传播者,与 Microsoft 印度公司合作,帮助 ISV 和初创公司解决技术难题,采用最新技术,并改进他们的解决方案以跃升至新层次。

Sagar Bhanudas Joshi已经与开发人员就采用通用 Windows 平台和 Microsoft Azure 平台合作了六年多。他目前的职责包括帮助 SaaS 公司为 Microsoft 云平台架构、设计和载入解决方案,主要侧重于 ML 和 AI。

衷心感谢以下 Microsoft 技术专家对本文的审阅:Sandeep Alur


在 MSDN 杂志论坛讨论这篇文章