• Posts tagged "认证"

Blog Archives

DP-900认证考试攻略

架构师的信仰系列文章,主要介绍我对系统架构的理解,从我的视角描述各种软件应用系统的架构设计思想和实现思路。

从程序员开始,到架构师一路走来,经历过太多的系统和应用。做过手机游戏,写过编程工具;做过大型Web应用系统,写过公司内部CRM;做过SOA的系统集成,写过基于Hadoop的大数据工具;做过外包,做过电商,做过团购,做过支付,做过SNS,也做过移动SNS。以前只用Java,然后学了PHP,现在用R和Javascript。最后跳出IT圈,进入金融圈,研发量化交易软件。

架构设计就是定义一套完整的程序规范,坚持架构师的信仰,做自己想做的东西。

关于作者:

  • 张丹,分析师/程序员/Quant: R,Java,Nodejs
  • blog: http://fens.me
  • email: bsspirit@gmail.com

转载请注明出处:
http://blog.fens.me/certificate-dp900/

前言

当前微软基于Azure云服务有3个基础认证,分别是AZ-900,AI-900和DP-900。AZ-900是对于Azure云计算的产品和框架的学习,AI-900是对于Azure上认识服务(AI服务)的产品和框架的学习,DP-900则是对于Azure上数据库的产品和框架的学习。掌握了这3个方向知识,对于Azure上的云服务就能吃透了。不得不说,微软Azure的产品体系真是强大。

关于AZ-900和AI-900的考试详细介绍,请参考文章 AZ-900认证考试攻略AI-900认证考试攻略

目录

  1. 考试契机
  2. 学习路径
  3. 复习准备

1. 考试契机

考过了AZ-900和AI-900后,突然认识到了,产品的规划如此重要。之前,一直在穷尽脑汁,设计自己公司的产品。当看到远方“巨人”已经早已设计好了数据产品的路线,果断放弃闭门造车的想法,向行业的领头者学习。只有具备了相同的视野,才有自己发展的机会。所以,DP-900的契机,是自我认知的一个冲动,跟上巨人的脚步。

DP-900的认证目标,掌握云环境中数据处理和数据库使用的基本知识,区别关系型数据库与非关系型数据库数据结构的区别和对应该产品。

DP-900的工作角色包括DBA,数据工程师和数据分析师。DP-900关于数据基础知识,也可用于准备其他基于Azure角色的认证,如Azure数据工程师助理[DP-200 / DP-201],Azure数据科学家助理[DP-100]和Azure数据库管理员助理[DP-300] ,但这不是任何这些考试的先决条件。

微软认证体系:AZ-900,AI-900和DP-900是Azure基础级认证,它们构成了助理和专家级认证的基础,可以帮助我们建立知识并熟悉Azure的工作环境。

考试完成后,会获得一份考试能力评估表,来告诉你哪部分做的好,哪部分做的不好。我考试的能力评估表:我考了882分(700通过),总体来说还是不错的成绩。

然后,就获得的证书电子版的证书 Microsoft Certified: Azure Data Fundamentals。

最后,可以linkedin上面自动同步证书,我的linkedin:https://www.linkedin.com/in/bsspirit/

2. 学习路径

Microsoft Certified: Microsoft Azure Data Fundamentals ,DP-900认证考试是Azure Data 的数据平台的认证,包括数据库设计,关系型数据,非关系型数据,数据仓库的多种数据基础知识,主要涉及4大部分内容。

  • Azure 数据基础知识探究核心数据概念 (15-20%)
  • 了解 Azure 中的关系数据(25-30%)
  • 了解 Azure 中的非关系数据 (25-30%)
  • 了解 Azure 中的新式数据仓库分析 (25-30%)

微软docs上,给出了DP-900完整的学习路径,https://docs.microsoft.com/zh-cn/learn/certifications/exams/dp-900

学习大纲:
第一部分:Azure 数据基础知识探究核心数据概念
了解云环境中数据库概念的基础知识,掌握云数据服务的基本技能,并建构 Microsoft Azure 中云数据服务的基础知识。 你将确定并描述核心数据概念(如关系、非关系、大数据和分析),并探索如何通过 Microsoft Azure 实现该技术。 你将探究数据世界中的角色、任务和责任。

  • 1.1 探究核心数据概念
  • 1.2 了解数据世界中的角色和职责
  • 1.3 描述关系数据的概念
  • 1.4 探索非关系数据的概念
  • 1.5 探索数据分析的概念

第二部分:了解 Azure 中的关系数据
了解云环境中数据库概念的基础知识,掌握云数据服务的基本技能,并建构 Microsoft Azure 中云数据服务的基础知识。 你将了解关系数据产品/服务,通过 Microsoft Azure 的云数据解决方案预配和部署关系数据库并查询关系数据。

  • 2.1 了解 Azure 中的关系数据产品/服务
  • 2.2 了解如何在 Azure 中预配和部署关系数据库产品/服务
  • 2.3 在 Azure 中查询关系数据

第三部分:了解 Azure 中的非关系数据
了解云环境中数据库概念的基础知识,掌握云数据服务的基本技能,并建构 Microsoft Azure 中云数据服务的基础知识。 你将了解非关系数据产品/服务,通过 Microsoft Azure 预配和部署非关系数据库以及非关系数据存储。

  • 3.1 了解 Azure 中的非关系数据产品/服务
  • 3.2 了解如何在 Azure 中预配和部署非关系数据服务
  • 3.3 管理 Azure 中的非关系数据存储

第四部分:了解 Azure 中的新式数据仓库分析
了解云环境中数据库概念的基础知识,掌握云数据服务的基本技能,并建构 Microsoft Azure 中云数据服务的基础知识。 你将了解 Azure 中用于构建数据分析解决方案的处理选项。 你将探索 Azure Synapse Analytics、Azure Databricks 和 Azure HDInsight。

  • 4.1 检查新式数据仓库的组件
  • 4.2 探索 Azure 中的数据引入
  • 4.3 了解 Azure 中的数据存储和处理
  • 4.4 开始使用Power BI进行构建

学习的内容很有意思,与我目前的工作有大量的交集。我们在做数据分析时,会接触到各种不同的数据源,有些是结构化的业务数据,有些是非结构化的文字或地图,有些表数据量巨大需要离些计算,模型训练完成后,又需要与作业系统对接,实时在线处理等。通过本次的学习,一方面可以加强概念理解,另一方面也可以有机会尝试用利用微软的产品,来完成复杂的机器学习的任务。

3. 复习准备

虽然,微软docs已经有了完整的学习大纲,真学起来还是要花点时间的,重点就在于名词解释和在Azure的不同数据库的不同特性。

3.1 名字解释
下面开始,名词解释:

Azure上的数据存储

  • Azure File Storage, 是一个通过 Server Message Block (SMB) 协议提供云端文件共享的服务。通过 File Storage 共享的文件能够被加载为云端或本地主机的磁盘,应用程序可以通过文件 API 像访问本地文件一样访问这些文件。
  • Azure Disk Storage,Azure 托管磁盘是由 Azure 托管并与 Azure 虚拟机配合使用的块级存储卷。托管磁盘类似于本地服务器中的物理磁盘,但它是虚拟化的。使用托管磁盘时,只需指定磁盘大小、磁盘类型并预配磁盘即可。预配此磁盘后,Azure 会处理剩余磁盘。
  • Azure Blog Storage,Azure Blob 存储是 Microsoft 提供的适用于云的对象存储解决方案。Blob 存储最适合存储巨量的非结构化数据。非结构化数据是不遵循特定数据模型或定义的数据(如文本或二进制数据)。
  • Azure Data Lake Storage, 数据湖是用于存储大量原始数据的存储库。 由于数据原始且未经处理,因此其加载和更新速度非常快,但数据并未采用适合高效分析的结构。 可以将数据湖看作是在引入数据进行修改并转换为适合执行分析的格式前的暂存点。 Azure Data Lake Storage 本质上是 Azure Blob 存储的扩展,组织为近乎无限大的文件系统,采用传统文件系统的分层目录结构和文件系统语义,同时具备 Azure 提供的安全性和可伸缩性。
  • Archive,存档,Azure存储提供了不同的访问层,允许以最具成本效益的方式存储 Blob 对象数据。可用的访问层包括::适用于存储经常访问的数据。:适用于存储不常访问且存储时间至少为 30 天的数据。存档:适用于存储极少访问、存储时间至少为 180 天且延迟要求(以小时计)不严格的数据。

Azure Data Factory,数据工厂被描述为一项数据集成服务。 Azure 数据工厂的用途是从一个或多个数据源中检索数据,并将其转换为你可处理的格式。 数据源可能以不同的方式呈现数据,并且包含需要筛选掉的干扰词。Azure 数据工厂使你可以提取感兴趣的数据,并放弃其余数据。

Azure 数据工厂由以下关键组件组成,这些组件组合起来提供一个平台,供你在上面编写数据驱动型工作流。

  • 管道:数据工厂可以包含一个或多个管道。 管道是执行任务单元的活动的逻辑分组。 管道中的活动可以共同执行一项任务。 例如,一个管道可能包含一组活动,这些活动从 Azure Blob 引入数据,然后在 HDInsight 群集上运行 Hive 查询,以便对数据分区。这样做的好处是,可以通过管道以集的形式管理活动,不必对每个活动单独进行管理。 管道中的活动可以链接在一起来按顺序执行,也可以独立并行执行。
  • 活动:活动表示管道中的处理步骤。 例如,可以使用复制活动将数据从一个数据存储复制到另一个数据存储。 同样,可以使用在 Azure HDInsight 群集上运行 Hive 查询的 Hive 活动来转换或分析数据。 数据工厂支持三种类型的活动:数据移动活动、数据转换活动 和 控制活动。
  • 数据集:数据集代表数据存储中的数据结构,这些结构直接指向需要在活动中使用的数据,或者将其作为输入或输出引用。
  • 链接服务:链接服务十分类似于连接字符串,用于定义数据工厂连接到外部资源时所需的连接信息。 链接服务定义到数据源的连接,而数据集则代表数据的结构。链接服务包括,创建链接服务,数据存储链接服务和计算链接服务。
  • 集成运行时:集成运行时 (IR) 是 Azure 数据工厂用于在不同的网络环境之间提供以下数据集成功能的计算基础结构:包括 数据移动,活动分派 和 SSIS包执行。数据移动:跨公用网络中的数据存储和专用网络中的数据存储复制数据。 它提供对内置连接器、格式转换、列映射以及性能和可扩展数据传输的支持。活动分派:分派和监视在各种计算服务(如 Azure HDInsight、Azure SQL 数据库、SQL Server 等等)上运行的转换活动。SSIS 包执行:在托管的 Azure 计算环境中本机执行 SQL Server 集成服务 (SSIS) 包。

数据仓库:数据仓库是来自一个或多个不同源的集成数据的集中存储库。数据仓库存储当前和历史数据,并用于报告和分析数据。为了将数据移入数据仓库,需要从包含重要业务信息的各种来源中定期提取数据。随着数据的移动,可以对其进行格式化,清理,验证,汇总和重组。


Azure上的数据工具:

  • Azure Databrick, 是在 Azure 上运行的 Apache Spark 环境,可提供大数据处理、流式传输和机器学习功能。 Apache Spark 是一个高效的数据处理引擎,可以非常快速地使用和处理大量数据。 有许多 Spark 库,可用于执行 SQL 处理、聚合等任务,还可以用于基于你的数据生成和训练机器学习模型。Azure Databricks 还支持结构化流处理。 在此模型中,Databricks 以增量方式执行计算,并在流数据到达时持续更新结果。
  • Azure Synapse Analytics, 是一个分析引擎,类似于Hadoop 它旨在极快速地处理大量数据,Azure Synapse Analytics 利用大规模并行处理 (MPP) 体系结构。使用 Synapse Analytics,你可以从外部源(如平面文件、Azure Data Lake 或其他数据库管理系统)引入数据,然后将此数据转换并聚合为适合分析处理的格式。 你可以对此数据执行复杂的查询并生成报表、图和图表。Azure Synapse Analytics 支持两种计算模型:SQL 池和 Spark 池。
  • Azure Synapse Link 是一种云原生混合事务和分析处理 (HTAP) 功能,使用该功能可以对 Azure Cosmos DB 中存储的操作数据进行准实时分析。
  • Synapse Studio,是一个 Web 界面,使用该界面可以以交互方式创建池和管道。 使用 Synapse Studio 可以开发、测试和调试 Spark 笔记本和 Transact-SQL 作业。
  • PolyBase,用于导入外部数据源数据,如Hadoop , Azure Blob, SQL Server、Oracle、Teradata 和 MongoDB 中的外部数据, 类似于sqope。
  • Azure HDInsight,是一项大数据处理服务,它在 Azure 环境中提供使用 Spark 等技术的平台。 HDInsight 实现了在一组计算机之间分发处理的群集模型。 此模型与 Synapse Analytics 所使用的模型相似,不同之处在于节点运行的是 Spark 处理引擎而不是 Azure SQL 数据库。

大数据架构,大数据体系结构旨在处理对于传统数据库系统而言太大或太复杂的数据的提取,处理和分析。大数据解决方案通常涉及以下一种或多种类型的工作负载:静态处理大数据源,实时处理运动中的大数据,交互式探索大数据,预测分析和机器学习。

  • 批量处理,常见的大数据场景是静态数据的批处理。源数据可以通过源应用程序本身或业务流程来加载到数据存储中。然后,数据由并行作业就地处理,该作业也可以由业务流程启动。在将转换后的结果加载到分析数据存储中之前,该处理可以包括多个迭代步骤,可以由分析和报告组件进行查询。
  • 实时处理,实时处理处理实时捕获的数据流,并以最小的延迟对其进行处理,以生成实时(或近实时)报告或自动响应。例如,实时流量监控解决方案可能使用传感器数据来检测高流量。该数据可用于动态更新地图以显示拥堵,或自动启动高占用车道或其他交通管理系统。

ETL过程,提取,转换和加载。一个普遍问题是如何从多种来源以多种格式收集数据,并将其移至一个或多个数据存储中。目标可能不是与源相同的数据存储类型,并且通常格式不同,或者在将数据加载到最终目标之前需要对数据进行整形或清除。

  • 提取(Extract):数据抽取是指把操作性数据(ODS)源数据抽取到数据仓库(DW)中,然后处理成展示给相关人员查看的数据。
  • 转换(Transform):就是把不需要的和不符合规范的数据进行处理。数据清洗最好不要放在抽取的环节进行,考虑到有时可能会查原始数据。
  • 加载(Load):数据拉取,清洗完之后,就需要展示了。一般是把清洗好的数据加载到数据库中,然后在各系统中使用,或者使用BI直接给相关人员展示

两种数据处理系统:OLAP和OLTP:

  • OLAP:在线分析处理,是一种组织大型企业数据库并支持复杂分析的技术。它可以用于执行复杂的分析查询,而不会负面影响交易系统。OLAP对于在大量数据上应用聚合计算特别有用。OLAP允许用户将多维数据划分为多个切片,这些切片可以在二维中查看(例如数据透视表),也可以按特定值过滤数据。
  • OLTP:在线交易处理,使用计算机系统对交易数据的管理称为在线交易处理。OLTP系统记录在组织的日常运营中发生的业务交互,并支持查询此数据以进行推断。交易通常需要是原子的一致的。原子性意味着整个事务始终作为一个工作单元成功或失败,并且永远不会处于半完成状态。如果事务无法完成,则数据库系统必须回滚作为该事务一部分已经完成的所有步骤。

Gremlin,实现针对 Cosmos DB 的图形数据库接口,图形是数据对象和定向关系的集合。

RU/s,Request Units,请求单位,视为满足对数据库的简单读取请求所需的计算量和 I/O 资源量。 Microsoft 为读取一个包含 10 个字段的 1 KB 文档所需的资源提供大约 1 RU 的度量值。 因此,每秒 1 RU 的吞吐量 (RU/s) 将支持每秒读取单个 1 KB 文档的应用程序。如果你将免费层折扣应用于你的 Cosmos DB 帐户,你将免费获取单个数据库或容器的前 400 RU/s。 对于大多数中小型数据库而言,400 RU/s 的容量已足够。

Azure SQL数据库和Azure SQL托管实例:Azure SQL数据库和SQL托管实例与SQL Server的最新稳定版本共享一个公共代码库。大多数标准SQL语言,查询处理和数据库管理功能都是相同的。注意:Azure SQL托管实例支持,本地的跨数据库事物。

Transparent Data Encryption(TDE),透明数据加密,这种加密称为静态数据加密,即数据和日志文件。为了帮助保护数据库,可以采取以下预防措施:设计一个安全的系统,加密机密资产,在数据库服务器周围建立防火墙。

SQL Server Data Tools(SSDT),面向项目的离线数据库开发工具,用于提供的用于创作,构建,调试和发布数据库项目的功能。可从 Visual Studio 中的“工具”菜单获得。 若要连接到现有的 Azure SQL 数据库实例

Azure Data Studio,数据库管理工具,是一种图形实用工具,用于从桌面创建和运行 SQL 查询,可以连接到本地 SQL Server 数据库、Azure SQL 数据库、PostgreSQL、Azure SQL 数据仓库和 SQL Server 大数据群集。

SQL Server Management Studio(SSMS), 是一种集成环境,用于管理从 SQL Server 到 Azure SQL 数据库的任何 SQL 基础结构。 SSMS 提供用于配置、监视和管理 SQL Server 和数据库实例的工具。 使用 SSMS 部署、监视和升级应用程序使用的数据层组件,以及生成查询和脚本。

Power BI 是一系列的软件服务、应用和连接器,这些软件服务、应用和连接器协同工作,将不相关的数据源转化为合乎逻辑、视觉上逼真的交互式见解。 不管你的数据是简单的 Microsoft Excel 工作簿,还是基于云的数据仓库和本地混合数据仓库的集合,Power BI 都可让你轻松连接到数据源,可视化(或发现)重要信息,并与所需的任何人共享这些信息。Power BI 中的基本构建基块:可视化效果,数据集,报表,仪表板,磁贴.

  • Dashboard,仪表盘,是通过可视化效果讲述故事的单个页面,常被称为画布。因为它被限制为一页,设计精良的仪表板仅包含该故事的亮点。读者可查看相关报表了解详细信息。
  • Drill Down,钻取,当视觉具有层次结构时,您可以向下钻取以显示其他详细信息。

关系型数据库的SQL语言:

  • 数据操作语言 (DML), 可以使用 DML 语句来处理关系表中的行。 利用这些语句,你可以检索(查询)数据、插入新行或编辑现有行。 如果不再需要行,也可以删除它们。SELECT 从表中选择/读取行,INSERT 向表中插入新行,UPDATE 编辑/更新现有行,DELETE 删除表中的现有行。
  • 数据定义语言 (DDL),使用 DDL 语句创建、修改和删除数据库中的表和其他对象(表、存储过程和视图等)。CREATE 在数据库中创建新对象,例如表或视图。ALTER 修改对象的结构。 例如,更改表以添加新列。DROP 从数据库中删除对象。RENAME 重命名现有对象。

关系数据库四个特性:原子性、一致性、隔离性和持久性(ACID)。

  • 原子性,确保将每个事务视为单个单位,要么完全成功要么完全失败。 如果构成事务的任何语句无法完成,整个事务都将失败,并且数据库保持不变。 原子系统必须保证每种情况下的原子性,包括电源故障、错误和崩溃。
  • 一致性,确保事务只能将数据库中的数据从一个有效状态转换为另一个有效状态。 一致的数据库绝不应丢失或以无法解释的方式创建数据。 在前面所述的银行转账示例中,如果将资金添加到某个帐户,则必须在某个地方有相应的资金扣除,或者如果资金是从外部收到的,则必须有描述资金来自何处的记录。 不能突然创建(或丢失)资金。
  • 隔离性,确保事务的并发执行使数据库处于与按顺序执行事务时相同的状态。 并发进程看不到处于不一致状态的数据(例如,已从一个帐户扣除了资金,但尚未存入到另一个帐户。)
  • 持久性,保证在提交事务后,即使发生系统故障(如停电或崩溃),它仍能保持已提交的状态。

Azure Cosmos DB的一致性级别

  • 强一致性:非常一致性提供可线性化保证。 可线性化是指并发处理请求。 保证读取操作返回项的最新提交版本。 客户端永远不会看到未提交或不完整的写入。 始终保证用户读取最新确认的写入。
  • 受限停滞一致性:保证读取操作遵循一致性前缀保证。 读取操作可以滞后于写入操作最多“K”个项版本(即“更新”)或“T”时间间隔,以先达到者为准。 换言之,如果选择有限过期,则可以通过两种方式配置“过期”
  • 会话一致性:在单个客户端会话中,将保证读取操作遵循一致前缀、单调读取、单调写入、读取写入和读取后写入保证。 这采用单个“写入器”会话,或者多个写入器共享会话令牌。
  • 一致前缀:返回的更新包含所有更新的一些前缀,不带间隔。 一致前缀一致性级别保证读取操作永远不会看到无序写入。
  • 最终一致性:不保证读取的顺序。 如果缺少任何进一步的写入,则副本最终会收敛。最终一致性是最弱的一致性形式,因为客户端可能会读取比之前读取的值还要旧的值。 最终一致性非常适合不需要任何顺序保证的应用程序。

3.2 模拟考试

整理完上面的名词解释,准备工作就算到位了,最后就是找份模拟题练练手。

我发现的免费模拟题只有CertBolt网站上提供了,可以用 CertBolt Microsoft DP-900 模拟题库,共有55道题目,练习一下也就够用了。我也在网上各种找了一些模拟题,整理成一个DP900模拟题PDF文件,给大家练手用。

毕竟是初级认证,考试都是基础知识,按照微软的文档进行复习准备,大概率都是可以通过的,本文的目的也是帮助大家准备考试,做到心中有底。

3.3 现场考试

最后,就是按照约好的时间,去考试中心完成考试,要带2种证明身份的证件。进到考场后,包要存起来,不能带任何东西,不能吃东西,不能喝水,不能与其他人说话等等,可以提前交卷。交卷后,找工作人员,拿到考试评估单,就可以回家庆祝了。与AZ-900的现场考试流程一样,大家可以参考文章AZ-900认证考试攻略

本文主要是记录一下考试的前后经历,对于IT的小伙伴们,考个认证系统地学习知识,还是很有用的。未来的成就,都是之前的积累,爆发就在未来的某个瞬间。祝大家考试顺利!

转载请注明出处:
http://blog.fens.me/certificate-dp900/

打赏作者

AI-900认证考试攻略

架构师的信仰系列文章,主要介绍我对系统架构的理解,从我的视角描述各种软件应用系统的架构设计思想和实现思路。

从程序员开始,到架构师一路走来,经历过太多的系统和应用。做过手机游戏,写过编程工具;做过大型Web应用系统,写过公司内部CRM;做过SOA的系统集成,写过基于Hadoop的大数据工具;做过外包,做过电商,做过团购,做过支付,做过SNS,也做过移动SNS。以前只用Java,然后学了PHP,现在用R和Javascript。最后跳出IT圈,进入金融圈,研发量化交易软件。

架构设计就是定义一套完整的程序规范,坚持架构师的信仰,做自己想做的东西。

关于作者:

  • 张丹,分析师/程序员/Quant: R,Java,Nodejs
  • blog: http://fens.me
  • email: bsspirit@gmail.com

转载请注明出处:
http://blog.fens.me/certificate-ai900/

前言

刚考完AZ-900的考试,还在感叹Azure生态的强大,不管是架构上和还是功能上的。本来想休息一下,现在又有了新的契机,可以继续完成AI-900的认证课程。虽然AI-900的课程还是属于入门级的,却能让我更多的了解微软的产品体系和产品规划的思路,我觉得比实际做具体的代码开发,或者功能实现更有意义。关于AZ-900的考试详细介绍,请参考文章AZ-900认证考试攻略

坚持学习,顺利通过考试。

目录

  1. 考试契机
  2. 学习路径
  3. 复习准备

1. 考试契机

为了参加智子学院的“MCP导师认证计划”,以微软认证专家的身份,为企业提供技术咨询服务。智子学院要求参与者必须在1个自然月内完成AI-900 Azure AI Fundamentals的认证考试,同时智子学陆院免费提供考试券。有了这样的一个要求,自然地就开始了学习的过程。

客观地说,微软的Azure相关技术体系确实庞大,如果没有深入去学习这些知识,真的无从下手用微软产品。而且更难得的是,微软的docs文档条理清楚,每个技术点都有详细的介绍,不仅有技术细节,架构的描述,还有从社会意义角度的说明,真是非常有心。让我学习在过程中,不仅是知识的学习,还有对于产品规划的认识。

微软认证体系:

考试完成后,会获得一份考试能力评估表,来告诉你哪部分做的好,哪部分做的不好。我考试的能力评估表:我考了830分(700通过),总体来说还是不错的成绩。

最后,就获得的证书电子版的证书 Microsoft Certified: Azure AI Fundamentals。

2. 学习路径

Microsoft Certified: Azure AI Fundamentals ,AI-900认证考试是Azure AI的基础使用的认证,包括机器学习和深度学习等智能算法,在结构化数据、图片、文字和语音的应用,主要涉及5大部分内容。

  • 描述 AI 工作负荷和注意事项
  • 描述 Azure 上机器学习的基本原理
  • 描述 Azure 上的计算机视觉工作负荷的功能
  • 描述 Azure上自然语言处理(NLP)工作负荷的特性
  • 描述 Azure 上的对话式 AI 工作负荷的功能

微软docs上,给出了AI-900完整的学习路径,https://docs.microsoft.com/zh-cn/learn/certifications/azure-ai-fundamentals

学习大纲
第一部分:描述 AI 工作负荷和注意事项
人工智能 (AI) 为令人惊异的新的解决方案和体验赋能,Microsoft Azure 提供了易用的服务来帮助你入门。

  • 1.1 Azure 上的 AI 入门

第二部分:描述 Azure 上机器学习的基本原理
机器学习是人工智能的核心,很多新式应用程序和服务都依赖于预测机器学习模型。 了解如何使用 Azure 机器学习在不编写代码的情况下创建和发布模型。

  • 2.1 使用 Azure 机器学习中的自动化机器学习
  • 2.2 使用 Azure 机器学习设计器创建回归模型
  • 2.3 使用 Azure 机器学习设计器创建分类模型
  • 2.4 使用 Azure 机器学习设计器创建聚类分析模型

第三部分:描述 Azure 上的计算机视觉工作负荷的功能
计算机视觉是人工智能 (AI) 的一个领域,在该领域中,软件系统旨在通过摄像头、图像和视频以可视方式感知这个世界。 AI 工程师和数据科学家可以通过混合使用自定义机器学习模型和平台即服务 (PaaS) 解决方案(包括 Microsoft Azure 中的众多认知服务),来解决多种特定类型的计算机视觉问题。

  • 3.1 使用计算机视觉服务分析图像
  • 3.2 使用自定义视觉服务对图像进行分类
  • 3.3 使用自定义视觉服务检测图像中的对象
  • 3.4 使用人脸服务检测和分析人脸
  • 3.5 使用计算机视觉服务读取文本
  • 3.6 利用“表单识别器”服务分析收据

第四部分:描述 Azure上自然语言处理(NLP)工作负荷的功能
自然语言处理功能支持能看到用户、听到用户的声音、与用户交谈和理解用户的意图的应用程序。 凭借文本分析、翻译和语言理解服务,Microsoft Azure 让你能够轻松构建支持自然语言的应用程序。

  • 4.1 使用文本分析服务分析文本
  • 4.2 识别和合成语音
  • 4.3 翻译文本和语音
  • 4.4 使用“语言理解”创建语言模型

第五部分:描述 Azure 上的对话式 AI 工作负荷的功能
对话式 AI 是一种人工智能工作负载,它可处理 AI 代理与人类用户之间的对话。

  • 5.1 使用 QnA Maker 和 Azure 机器人服务构建机器人

学习的内容很有意思,与我目前的工作有大量的交集。我们在用R语言进行独立开发和实现的,也可以通过本次的学习,看看如果能利用微软的产品,来完成复杂的机器学习的任务。

3. 复习准备

虽然,微软docs已经有了完整的学习大纲,真学起来还是要花点时间的,重点就在于名词解释。没想到在Azure AI里体系里,定义这么多的产品和新名词。虽然我已经用过了各种云的服务和产品,但对于全面的AI产品也并不是太了解,所以借着这次考认证,正好是全面的学习。

Azure机器学习算法备忘单,用于Azure的机器学习设计器,Azure 机器学习包含来自分类、推荐系统聚类、异常检测、回归和文本分析系列的大型算法库。每个都旨在解决不同类型的机器学习问题。

3.1 名字解释
下面开始,名词解释:

Azure Machine Learning designer,Azure机器学习设计器使您可以在交互式画布上直观地连接数据集和模块,以创建机器学习模型。

Resource: Pipelines,Datasets,Compute resources,Registered models,Published pipelines,Real-time endpoints

可以使用的云资源: 计算实例:数据科学家可用于处理数据和模型的开发工作站。 计算群集:用于按需处理试验代码的可扩展虚拟机群集。 推理群集:使用已训练模型的预测服务的部署目标。

Computer Vision :基于云的Computer Vision API使开发人员可以访问用于处理图像和返回信息的高级算法。通过上传图像或指定图像URL,Microsoft Computer Vision算法可以根据输入和用户选择以不同方式分析视觉内容。通过快速入门,教程和示例,学习如何以不同的方式分析视觉内容。

Azure Custom Vision用户自定义图像识别服务,可让您构建,部署和改进自己的图像标识符。图像标识符根据图像的视觉特征将标签(代表类或对象)应用于图像。与Computer Vision服务不同,Custom Vision允许您指定标签并训练自定义模型以检测它们。

Facial recognition: 将面部识别功能嵌入到您的应用中,以提供无缝且高度安全的用户体验。 不需要机器学习专业知识。 功能包括:人脸检测,可感知图像中的人脸和属性; 与您最多100万人的私人存储库中的个人匹配的个人标识; 感知到的情感识别,可以检测到各种面部表情,例如幸福,轻蔑,中立和恐惧; 以及图像中相似面孔的识别和分组。

Optical Character recognition(OCR): 光学字符识别,该功能可从图像中提取打印或手写的文本。您可以从图像中提取文本,例如车牌照片或带有序列号的容器,以及文档(发票,账单,财务报告,物品等)中的文本。

Object detection : 对象检测类似于标记,但是API返回找到的每个对象的边界框坐标(以像素为单位)。例如,如果图像包含狗,猫和人,则“检测”操作将列出这些对象及其在图像中的坐标。 您可以使用此功能来处理图像中对象之间的关系。 它还使您可以确定图像中是否存在同一标签的多个实例。

Text Analytics:一种AI服务,可在非结构化文本中发现洞察力,例如情感,实体和关键短语

Natural Language Processing(NLP):自然语言处理(NLP)用于执行诸如情感分析,主题检测,语言检测,关键词提取和文档分类之类的任务。NLP可用于对文档进行分类,例如将文档标记为敏感或垃圾邮件。 NLP的输出可用于后续处理或搜索。 NLP的另一个用途是通过识别文档中存在的实体来汇总文本。 这些实体还可以用于用关键字标记文档,从而可以基于内容进行搜索和检索。 实体可以合并为主题,摘要描述每个文档中存在的重要主题。 检测到的主题可以用于对文档进行分类以进行导航,或者在给定所选主题的情况下枚举相关文档。 NLP的另一种用途是对文本进行情感评分,以评估文档的正面或负面基调。

Key phrase extraction : 关键短语提取技能可评估非结构化文本,并为每条记录返回关键短语列表。

Named Entity Recognition(NER): 命名实体识别(NER)是在文本中标识不同实体并将其分类为预定义类或类型的能力,例如:人员,位置,事件,产品和组织。

Sentiment Analysis:情感分析功能,可评估文本并返回每个句子的情感分数和标签。 这对于检测社交媒体,客户评论,论坛等中的正面和负面情绪很有用。

Translator:转换器是基于云的机器翻译服务,并且是用于构建智能应用程序的Azure认知服务认知API系列的一部分。 转换器易于集成到您的应用程序,网站,工具和解决方案中。 它使您可以添加70多种语言的多语言用户体验,并且可以在具有任何操作系统的任何硬件平台上用于文本翻译。

Language Detection:语言检测技能可检测输入文本的语言,并针对请求提交的每个文档报告一个语言代码。 语言代码与指示分析强度的分数配对。

Speech recognition and speech synthesis:语音识别和合成样本,语音识别确实是一种令人称奇的人类能力,尤其是当您认为正常对话需要每秒识别10到15个音素时。事实证明,尝试制造机器(计算机)识别系统很困难。另一方面,各种语音合成系统已经使用了一段时间。尽管功能有限且通常缺乏人类语音的自然质量,但这些系统现在已成为我们生活中的常见组成部分。

Classification : 分类,是一种机器学习方法,它使用数据来确定项目或数据行的类别,类型或类别。 例如,您可以使用分类来:将电子邮件过滤器分类为垃圾邮件,垃圾邮件或良品。确定患者的实验室样本是否癌变。根据客户对销售活动的响应倾向对其进行分类,确定情绪是正面还是负面。

Regression : 回归,是一种广泛用于从工程到教育的领域的方法。 例如,您可以使用回归来基于区域数据来预测房屋的价值,或者创建有关未来入学人数的预测。

Clustering: 聚类,是一种将数据点分组为相似聚类的方法。

Cross-Validate Model: 交叉验证模型模块将带有标签的数据集以及未经训练的分类或回归模型作为输入。 它将数据集划分为一定数量的子集(折叠),在每个折叠上构建模型,然后为每个折叠返回一组准确性统计信息。 通过比较所有折痕的准确性统计信息,您可以解释数据集的质量并了解模型是否易受数据变化的影响。

Anomaly Detection: 异常检测,包含机器学习中的许多重要任务:确定潜在的欺诈交易。指示已发生网络入侵的学习模式。寻找异常患者群。检查输入到系统中的值。根据定义,异常是罕见事件,因此很难收集代表性的数据样本用于建模,可通过使用不平衡的数据集来解决构建和训练模型的核心挑战。

QnA Makter :QnA Maker。 该认知服务支持创建和发布具有内置自然语言处理功能的知识库。可轻松在您的数据上创建自然的对话层。 它可用于从您的自定义知识库(KB)信息中为任何给定的自然语言输入找到最合适的答案。使用此认知服务,你可以快速构建一个可以问答知识库,用它构成用户和 AI 代理之间对话的基础。

Azure Bot Service: 专为机器人开发而构建的托管服务
Conversation AI: 会话式AI是计算中的下一个用户界面(UI)浪潮。 我们已经从必须学习和适应计算机的世界演变为现在正在学习如何理解和与我们互动的计算机。 与计算机的自然交互从语言,语音和语义理解开始,并通过支持丰富的多模型交互而继续。

Language Understand (LUIS), 语言理解(LUIS)是基于云的对话式AI服务,将定制的机器学习智能应用于用户的对话式自然语言文本,以预测整体含义并提取相关的详细信息。LUIS的客户端应用程序是任何以自然语言与用户通信以完成任务的会话应用程序。客户端应用程序的示例包括社交媒体应用程序,AI聊天机器人和启用语音的桌面应用程序。

Text Analytics一种AI服务,可在非结构化文本中发现洞察力,例如情感,实体和关键短语。

Ink Recognizer: 一种AI服务,可识别数字墨水内容,例如手写,形状和墨水文档布局。

Form Recognizer: 由AI驱动的文档提取服务可以理解您的表格。

Cortana: Cortana是Microsoft的个人生产力助手,可以帮助您节省时间并将精力集中在最重要的事情上。

Principles for Responsible AI:指导AI开发和使用的六项原则:公平性,可靠性和安全性,隐私性和安全性,包容性,透明度和问责制。

  • Fairness: 公平性,人工智能系统应公平对待每个人,并避免以不同方式影响处境相似的人群。例如,假设你创建了一个机器学习模型来为银行的贷款审批应用程序提供支持。 该模型应在不考虑任何基于性别、种族或其他因素的偏见的情况下,对是否应批准贷款做出预测,这些偏见可能导致特定的申请人群遭受不公平的差别待遇。
  • Reliability and safety: 可靠性和保障性,AI 系统应可靠且安全地运行。 例如,大家思考一下基于 AI 的自动驾驶软件系统,或诊断患者症状并推荐处方的机器学习模型这些案例。 这些系统一旦出现不可靠性,就可能会给生命安全带来重大风险。
  • Privacy and security:隐私性和安全性,AI 系统应该保护并尊重隐私。 AI 系统所基于的机器学习模型依赖于大量数据,这些数据可能包含必须保密的个人详细信息。 即使对模型进行了训练且系统已投入生产,它仍可能在使用新数据进行预测或采取行动时侵犯隐私或安全。
  • Inclusiveness,包容性,包容性设计实践可以帮助系统开发人员理解和解决产品环境中可能无意排除人员的潜在障碍。 AI 系统应该成为人们的有力助手,并与人互动。 AI 应不分身体能力、性别、性取向、种族或其他因素,造福社会各个阶层。
  • Transparency, 透明度,透明度的关键部分是我们所说的可理解性,即对AI系统及其组件的行为的有用解释。要提高清晰度,就要求利益相关者理解其工作方式和原因,以便识别潜在的性能问题,安全和隐私问题,偏见,排他性做法或意想不到的结果。AI 系统应该是可理解的。 应让用户能充分了解系统的用途、工作方式以及局限性。
  • Accountability,问责制,设计和部署AI系统的人员必须对其系统的运行方式负责。组织应借鉴行业标准来制定问责制规范。应有相关人员对 AI 系统负责。 设计和开发基于 AI 的解决方案的人员应在管理和组织原则的框架内工作,以确保解决方案符合定义明确的道德和法律标准。

Azure Kubernetes Service (AKS):Azure Kubernetes服务(AKS)使在Azure中部署托管Kubernetes群集变得简单。 AKS通过将大部分责任转移给Azure来降低管理Kubernetes的复杂性和运营开销。作为托管的Kubernetes服务,Azure可为您处理关键任务,例如运行状况监视和维护。 Kubernetes母版由Azure管理。您仅管理和维护代理节点。实时节点必须部署在AKS集群上。

3.2 模拟考试

整理完上面的名词解释,准备工作就算到位了,最后就是找份模拟题练练手。由于AI-900的认证考试是近期刚推出的,所以网上没有太多的复习资料,也没有什么攻略。

我发现的免费模拟题只有CertBolt网站上提供了,可以用 CertBolt Microsoft AI-900 模拟题库,共有55道题目。另外,在qubits42网站上有20模拟题,链接已经不能访问了。我整理成了AI模拟题PDF文件供大家下载,练习一下也就够用了。

毕竟是初级认证,考试都是基础知识,按照微软的文档进行复习准备,大概率都是可以通过的,本文的目的也是帮助大家准备考试,做到心中有底。

3.3 现场考试

最后,就是按照约好的时间,去考试中心完成考试,要带2种证明身份的证件。进到考场后,包要存起来,不能带任何东西,不能吃东西,不能喝水,不能与其他人说话等等,可以提前交卷。交卷后,找工作人员,拿到考试评估单,就可以回家庆祝了。与AZ-900的现场考试流程一样,大家可以参考文章AZ-900认证考试攻略

本文主要是记录一下考试的前后经历,对于IT的小伙伴们,考个认证系统地学习知识,还是很有用的。未来的成就,都是之前的积累,爆发就在未来的某个瞬间。祝大家考试顺利!

刚刚又获得一张免费考试券,下一个要考啥呢!微软会一直从知识上面鞭策我们学习。

转载请注明出处:
http://blog.fens.me/certificate-ai900/

打赏作者

Express结合Passport实现登陆认证

从零开始nodejs系列文章,将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发。Nodejs框架是基于V8的引擎,是目前速度最快的Javascript引擎。chrome浏览器就基于V8,同时打开20-30个网页都很流畅。Nodejs标准的web开发框架Express,可以帮助我们迅速建立web站点,比起PHP的开发效率更高,而且学习曲线更低。非常适合小型网站,个性化网站,我们自己的Geek网站!!

关于作者

  • 张丹(Conan), 程序员Java,R,PHP,Javascript
  • weibo:@Conan_Z
  • blog: http://blog.fens.me
  • email: bsspirit@gmail.com

转载请注明出处:
http://blog.fens.me/nodejs-express-passport/

nodejs-passport

前言

登陆认证,是每个应用都需要的基础功能。但很多的时候,却都被大家所忽略,不仅安全漏洞严重,而且代码紧耦合,混乱不堪。

Passport项目,正是为了解决登陆认证的事情,让认证模块更透明,减少耦合!

目录

  1. 什么是认证(Authentication)?
  2. Passport项目介绍
  3. Express结合Passport实现登陆认证

1. 什么是登陆认证(Authentication)?

认证又称“验证”、“鉴权”,是指通过一定的手段,完成对用户身份的确认。身份验证的方法有很多,基本上可分为:基于共享密钥的身份验证、基于生物学特征的身份验证和基于公开密钥加密算法的身份验证。

登陆认证,是用户在访问应用或者网站时,通过是先注册的用户名和密码,告诉应用使用者的身份,从而获得访问权限的一种操作。

几乎所有的应用都需要登陆认证!

2. Passport项目介绍

Passport项目是一个基于Nodejs的认证中间件。Passport目的只是为了“登陆认证”,因此,代码干净,易维护,可以方便地集成到其他的应用中。

Web应用一般有2种登陆认证的形式:

  • 用户名和密码认证登陆
  • OAuth认证登陆

Passport可以根据应用程序的特点,配置不同的认证机制。本文将介绍,用户名和密码的认证登陆。

项目网站:http://passportjs.org/

3. Express结合Passport实现登陆认证

系统环境:

  1. Win7 64bit 旗舰版
  2. node v0.10.5
  3. npm 1.2.19

1). 新建项目


D:\workspace\javascript>express -e nodejs-passport
D:\workspace\javascript>cd nodejs-passport && npm install
D:\workspace\javascript\nodejs-passport>npm install passport
D:\workspace\javascript\nodejs-passport>npm install passport-local

2). 实现Session的认证:

  • 启用connet的session中间件
  • connet的session中间件,同时依赖于connect的cookieParser中间件
  • 配置passport中间件

关于connect框架的详细说明,请参考文章:Nodejs基础中间件Connect

修改app.js


app.use(express.cookieParser())
app.use(express.session({secret: 'blog.fens.me', cookie: { maxAge: 60000 }}));
app.use(passport.initialize());
app.use(passport.session());

3). 定义认证策略:

LocalStrategy策略,用于匹配本地环境的用户名和密码,可以扩展这个策略,通过数据库的方式进行匹配。

修改app.js


var passport = require('passport')
    , LocalStrategy = require('passport-local').Strategy;

passport.use('local', new LocalStrategy(
    function (username, password, done) {
        var user = {
            id: '1',
            username: 'admin',
            password: 'pass'
        }; // 可以配置通过数据库方式读取登陆账号

        if (username !== user.username) {
            return done(null, false, { message: 'Incorrect username.' });
        }
        if (password !== user.password) {
            return done(null, false, { message: 'Incorrect password.' });
        }

        return done(null, user);
    }
));

passport.serializeUser(function (user, done) {//保存user对象
    done(null, user);//可以通过数据库方式操作
});

passport.deserializeUser(function (user, done) {//删除user对象
    done(null, user);//可以通过数据库方式操作
});

4). 路由控制和登陆认证

路由页面

  • /: 首页,用于登陆,未登陆用户只能访问首页
  • /login: 登陆请求,用户登陆时,POST到登陆请求,认证成功跳到用户页,认证失败回到首页
  • /users: 用户页,用户通过登陆认证后,可以访问用户页
  • /logout: 登出请求,用户退出系统,GET到登出请求,页面自动跳回首页

修改app.js


app.get('/', routes.index);
app.post('/login',
    passport.authenticate('local', {
        successRedirect: '/users',
        failureRedirect: '/'
    }));

app.all('/users', isLoggedIn);
app.get('/users', user.list);
app.get('/logout', function (req, res) {
    req.logout();
    res.redirect('/');
});

function isLoggedIn(req, res, next) {
    if (req.isAuthenticated())
        return next();

    res.redirect('/');
}

5). 运行程序

passport-login

运行日志


D:\workspace\javascript\nodejs-passport>node app.js
Express server listening on port 3000
POST /login 302 389ms - 68b
GET /users 200 2ms - 50b
GET /logout 302 2ms - 58b
GET / 200 7ms - 540b
GET /stylesheets/style.css 304 6ms
POST /login 302 2ms - 58b
GET / 200 2ms - 540b
GET /stylesheets/style.css 304 2ms

6). 完整的代码

  • app.js代码
  • index.ejs代码
  • user.js代码

app.js代码


var express = require('express')
    , routes = require('./routes')
    , user = require('./routes/user')
    , http = require('http')
    , path = require('path')
    , app = express();

var passport = require('passport')
    , LocalStrategy = require('passport-local').Strategy;

app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.cookieParser())
app.use(express.session({secret: 'blog.fens.me', cookie: { maxAge: 60000 }}));
app.use(passport.initialize());
app.use(passport.session());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));

if ('development' == app.get('env')) {
    app.use(express.errorHandler());
}

passport.use('local', new LocalStrategy(
    function (username, password, done) {
        var user = {
            id: '1',
            username: 'admin',
            password: 'pass'
        }; // 可以配置通过数据库方式读取登陆账号

        if (username !== user.username) {
            return done(null, false, { message: 'Incorrect username.' });
        }
        if (password !== user.password) {
            return done(null, false, { message: 'Incorrect password.' });
        }

        return done(null, user);
    }
));

passport.serializeUser(function (user, done) {//保存user对象
    done(null, user);//可以通过数据库方式操作
});

passport.deserializeUser(function (user, done) {//删除user对象
    done(null, user);//可以通过数据库方式操作
});

app.get('/', routes.index);
app.post('/login',
    passport.authenticate('local', {
        successRedirect: '/users',
        failureRedirect: '/'
    }));

app.all('/users', isLoggedIn);
app.get('/users', user.list);
app.get('/logout', function (req, res) {
    req.logout();
    res.redirect('/');
});

http.createServer(app).listen(app.get('port'), function () {
    console.log('Express server listening on port ' + app.get('port'));
});

function isLoggedIn(req, res, next) {
    if (req.isAuthenticated())
        return next();

    res.redirect('/');
}

index.ejs代码


<!DOCTYPE html>
<html>
<head>
<title><%= title %></title>
<link rel='stylesheet' href='/stylesheets/style.css' />
</head>
<body>
<h1>Login</h1>
<form action="/login" method="post">
<div>
<label>Username:</label>
<input type="text" name="username"/>
</div>
<div>
<label>Password:</label>
<input type="password" name="password"/>
</div>
<div>
<input type="submit" value="Log In"/>
</div>
</form>
</body>
</html>

user.js代码


exports.list = function (req, res) {
var html = "<h2>你好, " + req.user.username + "</h2><a href='/logout'>退出</a>";
res.send(html);
};

通过Passport中间件,我们就把登陆认证和应用程序分离了出来,从而保证了更清晰代码结构。当然,我们也可不用Passport,在Express中直接实现登陆认证,可以参考文章:Nodejs开发框架Express3.0开发手记–从零开始

转载请注明出处:
http://blog.fens.me/nodejs-express-passport/

打赏作者