azure机器学习
Azure机器学习服务是Microsoft在自定义云机器学习和深度学习类别中为开发人员和数据科学家提供的最新产品。 Azure机器学习服务增加了一套Azure AI产品,其中包括众多AI工具包,聊天机器人和IoT边缘服务,数据科学VM以及针对视觉,语音,语言,知识和搜索的预建服务。
![编辑选择奖徽标梅花](https://i-blog.csdnimg.cn/blog_migrate/ab4ebeb9b437c8f7dbb43cfe82d060b6.png)
AI工具包包括适用于AI的Visual Studio代码工具,较旧的拖放式Azure机器学习Studio,适用于Apache Spark的MMLSpark深度学习工具以及Microsoft Cognitive Toolkit(以前称为CNTK),现已不再强调其他机器学习和深度学习框架。
在许多情况下,使用云资源来训练深度学习模型非常重要。 使用云进行培训并不一定取代使用自己的计算机进行模型构建的便利性和较低的运营成本,尤其是如果您拥有一台具有大量RAM和功能强大的GPU(例如Nvidia Titan RTX)的计算机。 另一方面,使用云可提供根据需要添加计算资源的机会,从而有可能减少完成实验和找到足够准确的预测模型所需的时间。
现在,所有主要的云服务都提供了机器学习和深度学习开发环境。 在AWS上,主要是Amazon SageMaker ,我于2018年5月对其进行了评论 。 在Google Cloud Platform上,主要是Cloud Machine Learning Engine和beta Cloud AutoML。 在IBM云上,主要是IBM Watson Studio。 在本文的后面,我将比较Azure机器学习服务和Amazon SageMaker。
Azure机器学习代表Microsoft对云机器学习开发环境方法的演变。 旧的(但仍然很活跃)的Machine Learning Studio产品是一种便宜的,相当笨拙的拖放式设计环境,可用于整个数据分析管道。 它提供了很好的基础机器学习算法选择,但是对深度学习的支持很少,而对GPU或FPGA的支持则完全不支持。
![天蓝色机器学习服务](https://i-blog.csdnimg.cn/blog_migrate/284757c840fa0116f96e796ee26b8a0a.png)
Azure机器学习服务是模型,框架,服务,基础结构和部署选项的集成套件的一部分。 Azure机器学习的新功能包括AutoML,超参数调整,分布式深度学习以及对特定模型的FPGA支持。
Azure机器学习概述
相比之下,Azure机器学习包含Python编程,并基于几种API和框架构建,包括所有当前流行的深度学习框架。 Azure机器学习的新功能包括AutoML,超参数调整,分布式深度学习以及对特定模型的FPGA支持,这些都是数据科学家和模型开发人员所需的所有快捷按钮。
下图所示,Azure机器学习的整个工作流程从数据准备到模型构建,再到培训和测试,再到模型管理和部署。 这个过程的线性视图被大大简化了; 更现实的图表将显示箭头前进和后退。
![天蓝色机器学习工作流程](https://i-blog.csdnimg.cn/blog_migrate/b9e71ab6cfa1322116fe4c3609f23de8.png)
此图是Azure机器学习工作流的高级视图。 在现实生活中,大多数项目需要在步骤之间进行迭代才能找到最佳模型,并使模型适应随时间变化的数据。
Azure机器学习模型开发
Azure机器学习支持五个用于模型开发的环境:Azure笔记本,数据科学虚拟机(DSVM),Jupyter笔记本,Visual Studio Code和Azure Databricks。 在所有情况下,Azure机器学习Python SDK都是必需的附加组件。
Azure笔记本是Azure云中托管的Jupyter笔记本服务。 Azure笔记本中已经安装了Azure机器学习SDK。 Azure团队建议使用Azure笔记本入门,并提供了一系列Azure ML示例作为Azure笔记本。
数据科学虚拟机已经安装了Python 3,Conda,Jupyter Notebooks和Azure Machine Learning SDK。 DSVM带有流行的机器学习和深度学习框架,工具以及用于开发机器学习解决方案的编辑器。
您的开发环境中可能已经安装了Jupyter Notebook。 您可能还具有Visual Studio Code。 两者都可以使用Azure机器学习SDK和插件进行增强。
Azure Databricks是具有Jupyter Notebooks UI的基于Apache Spark的服务。 您可以在该环境中安装Azure Machine Learning SDK并部署模型以在大数据上运行。
Azure机器学习框架支持
Azure机器学习支持任何基于Python的机器学习或深度学习框架。 根据Microsoft的说法,最受欢迎的工具(例如,用于经典机器学习的Scikit-learn和用于深度学习的PyTorch,TensorFlow和Chainer)在SDK中通过Estimator类提供了一流的支持。 (当我在2019年1月18日查看文档时,我只找到了PyTorch和TensorFlow的特定Estimator类。)您可以创建并使用Estimator提交要在远程计算上运行的任何训练代码,无论它是单节点运行或在GPU集群中进行分布式培训。
TensorFlow的Estimator支持包括两种分布式后端训练,MPI / Horovod和Parameter Server。 参数服务器选项使用本机TensorFlow工具。 对PyTorch的Estimator支持仅包括一种分布式后端培训,即MPI / Horovod。 通过更改Estimator构造函数中的一些参数来设置分布式训练的能力非常好。
如果您知道TensorFlow中新的Estimator类 ,则可能会发现Azure机器学习Estimator类有点令人困惑。 为了避免这种情况,请以全限定名tf.estimator
和azureml.train.estimator
考虑这两个类。
Azure机器学习服务
Azure机器学习提供端到端在云中执行数据科学所需的大多数(如果不是全部)服务。 其中包括基本数据准备,实验跟踪,模型训练,模型管理和部署以及模型监视。 它还包括超参数调整,AutoML和管道。
数据准备
Azure机器学习数据准备SDK帮助您加载,转换和写入数据以用于机器学习工作流。 azureml.dataprep
软件包旨在处理您可能在自己的计算机上使用的小型数据集以及处理Spark或数据湖时遇到的大型数据集。 不要低估数据准备的重要性:尽管数据准备API倾向于使用少量的CPU时间,但它通常会占用创建良好模型所需的大量工作。
模型训练
培训是深度学习工作流程中花费最多计算时间的部分。 正如上面有关支持的框架和Estimator类的部分中所讨论的,Azure机器学习实际上可以使用任何Python框架进行机器学习或深度学习。 Azure机器学习可以在本地或在云中训练您的模型,并且可以将训练作业发送到各种计算目标,包括Azure机器学习计算,远程VM,Azure Databricks,Azure Data Lake Analytics和Azure HDInsight。
您的Azure计算目标可能使用具有许多CPU,一个或多个GPU和/或一个或多个FPGA的VM。 可以将目标配置为可扩展的群集,这些群集可按需实例化,并在训练运行完成后自行停止。 仅在短期内使用昂贵的GPU实例,而积极地训练模型可以降低成本。 Amazon SageMaker本质上是相同的。
实验追踪
Azure机器学习工作区会跟踪您的所有实验,实验在实验中的运行,管道,计算目标,模型,图像,部署和活动。 您和您的同事可以随时查看这些内容。 下面的屏幕截图集中在“实验”列表上。
![天蓝色机器学习实验](https://i-blog.csdnimg.cn/blog_migrate/8cc23e20377d7a35ab3276f1c12f283e.png)
Azure机器学习可帮助您在仪表板中管理实验。 深入研究列出的实验之一将向您展示您已完成的运行。
AutoML和超参数调整
有时,找到给定数据集的最佳模型就像在大海捞针一样。 Azure机器学习有两种帮助您进行搜索的机制:AutoML和超参数调整。 使用AutoML,您可以提供数据集,并且Azure机器学习会自动扫描功能,算法和超参数。 您可以控制生成和训练的模型数量,最大迭代数量,主要指标以及交叉验证拆分的数量。
从取决于实验类型(分类,回归或预测)的列表中选择算法。 您可以选择将您认为不太适合数据的算法列入黑名单,但是当您第一次使用数据集时,您将希望让AutoML探索所有可能性。
超参数调整更加集中。 您提供一个现有实验,指定要清除的超参数(例如学习率和辍学率),Azure机器学习将为您执行变异研究,并在最大总数之前自动停止效果不佳的训练运行的迭代。
流水线
Azure机器学习管道允许数据科学家将模型训练模块化为离散的步骤,例如数据移动,数据转换,特征提取,训练和评估。 管道是共享和再现模型的一种机制,当您尝试对特定步骤进行变体(例如训练)时,它可以帮助您跳过已经运行的步骤。 并非每个计算目标都是“流水线友好的”,并且某些计算目标只能称为流水线步骤。
模型管理,部署和监控
一旦有了适合您目的的模型,就可以注册并部署它。 在Azure云上,通常会将模型打包到Docker容器中,然后将其部署在Azure Kubernetes服务(AKS)中。 如果要部署到边缘设备(从单个智能传感器到整个工厂的控制器的任何设备),则将Docker容器馈送到Azure IoT Edge中。 无论您在哪里部署,Azure机器学习都可以监视服务运行状况和模型运行状况。
Azure机器学习示例
我花了大约一天的时间浏览许多提供的Azure机器学习示例。 我最初的意愿是在MacBook Pro上本地使用Visual Studio Code开发。 但是,我无法从命令行安装Azure Machine Learning SDK。 详细信息在边栏中。
Azure机器学习SDK安装问题
该机器运行的是MacOS 10.14.2和Python 3.7.2,而没有Anaconda。 根据错误消息,我猜想无法满足对TensorFlow的要求。 在该机器上简单地使用pip
安装TensorFlow也不起作用。
TensorFlow 确实通过Anaconda安装在运行MacOS 10.13.6和Python 3.6.5的iMac上。 对我来说,我不清楚MacBook Pro出了什么问题(三个可能的因素)。 TensorFlow问题列表并没有说明这个问题。
我最终发现TensorFlow尚不支持Python 3.7。 我想如果我安装了Python 3.6.5并创建了包含它的环境,则可以在运行Mohave的MacBook Pro上安装Azure机器学习SDK(不使用Python 3.7)。
幸运的是,使用Azure Notebooks不需要任何本地安装,除了可以正常工作的Web浏览器外,所有示例都针对Notebooks进行了设置,因此我以这种方式进行了实验。
![天蓝色机器学习笔记本](https://i-blog.csdnimg.cn/blog_migrate/d2b3807ff108ce3a6bce2552173af92e.png)
“欢迎” Azure机器学习笔记本演示了Pi的近似值。 如果您进入how-to-use-azureml文件夹或加载Azure / MachineLearningNotebooks GitHub页面,您会发现一些更有趣的示例。
在更有趣的示例中,有一个是在准备数据并合并两个NYC出租车数据集后进行AutoML回归的,摘要如下所示。 该示例位于Welcome项目的tutorials文件夹中。
![天蓝色机器学习jupyter小部件](https://i-blog.csdnimg.cn/blog_migrate/3f6ed859a4607c174858156c93f5daec.png)
Azure笔记本中的Jupyter小部件显示了30模型AutoML回归运行的最佳结果。
来自Azure / MachineLearningNotebooks GitHub存储库的另一个有趣的示例显示了如何使用两个Standard_NC6 VM进行基于语言的TensorFlow模型的分布式Horovod训练,每个VM具有6个vCPU,56 GiB RAM和1个K80 GPU和8 GiB GPU内存。
![天蓝色机器学习张量流估计器](https://i-blog.csdnimg.cn/blog_migrate/669c8a69f34dd2e2725885eaf8a13fa1.png)
上面的笔记本显示了如何创建一个使用MPI / Horovod分布在两个节点上运行的TensorFlow估算器。
我一天的工作和超过五天的存储费用高达$ 1.27。 其中大部分用于容器注册表(每天0.17美元)。 带有K80 GPU的NC6 VM的分布式培训的费用为$ 0.29。
A for Azure机器学习
总体而言,我发现Azure机器学习是进行机器学习以及深度学习开发和部署的绝佳环境。 除了这个问题之外,我还遇到了在MacBook Pro上安装SDK的问题-由于运行的是不受支持的Python版本(whoops)-一切正常,并且花费不超过我的预期。
我喜欢Azure笔记本将Jupyter与Azure机器学习集成的方式。 我喜欢配置估计器以在自动缩放群集上运行的方式。 第一次配置计算集群所花的时间让我很烦,但是在以后的运行中,由于规格相同,开销几乎消失了。
我喜欢AutoML和超参数调整允许您将对最佳模型的搜索委派给服务的方式。 我也喜欢将TensorFlow和PyTorch模型作为估算器并在CPU和GPU上进行分布式训练的轻松程度。
我尚未测试过Azure机器学习的所有功能,也没有将其用于大型,脏数据集的真实数据科学。 但是,根据我的测试,Azure机器学习似乎是Amazon SageMaker的值得竞争者。
-
成本:每小时$ 0.051至$ 18.46,具体取决于CPU,GPU和FPGA的数量以及RAM的数量; 存储费用另计。
平台: Microsoft Azure,以及带有Python 3的可选本地Windows,MacOS或Linux开发环境。
azure机器学习