学习笔记-Azure机器学习服务

  2017年9月,Azure推出了Machine Learning Service(AML)预览版。2018年12月,AML正式商用(General Availability)。它的目标是提高数据科学家的工作效率,并且让不同技能水平和数据科学背景的人都可以通过机器学习获得知识和智慧。相较于2014年Azure推出的机器学习工作室(Machine Learning Studio), AML是一个更高级别的机器学习平台,其设计原则是:

1.    让数据科学家使用熟悉和丰富的数据科学工具。支持Python生态的库与开源框架(PyTorch, TensorFlow, Scikit-learn, ONNX等),提供Python SDK,支持VS Code,PyCharm,Jupyter Notebook, Azure Databriks等访问

2.    简化使用流行的机器学习和深度学习框架,提供可视化界面及自动机器学习功能来降低使用门槛

3.    提供端到端机器学习生命周期管理能力,提供MLOps(DevOps for machine learning), 存储、计算(CPU/GPU/FPGA)、模型,模型容器镜像、模型部署、预测API等管理和监控功能

 

 

  AML一方面给数据科学家提供丰富的机器学习功能和工具;另一方面也在简化使用机器学习。针对不同技术背景的人,AML提供了Code-Frist Model, Zero-Code Model (Automated ML)以及图形化界面(Visual Interface)模式,其目标使用者对应关系如下。 

使用者技术背景类别

AML模式

喜欢写代码的开发者和数据科学家

Code-First Model

了解机器学习概念需要构建自己的模型,但不是开发者

Visual Interface of AML

业务专家,很懂数据但对机器学习或开发了解不多

Zero-Code Model (Automated ML)

 

大家对MNIST手写数字库不陌生,我们可以通过上述三种模式来训练手写数字识别模型和发布模型。

1. Code-First:Python + Jupyter Notebook + AML Python SDK

  • 首先需要有一个运行环境(例如:Miniconda Python3.6.5、azureml-sdk[notebooks]、 azureml-sdk[automl]、cython、matplotlib 、pandas等),可以选择本地PC、Azure DSVM、Azure Databricks或 Azure Notebooks,后面三个默认提供运行环境。在本地PC创建运行环境请参考文档:

https://docs.microsoft.com/en-us/azure/machine-learning/service/setup-create-workspace#sdk

 

  • 实验内容:

第一部分:通过AML Python SDK创建 workspace, experiment, compute resource, estimator 等,采用LogisticRegression算法,提交estimator任务到AML管理的可弹性扩展计算资源集群中运行(内部集成Batch AI技术,计算资源准备需要花费5分钟左右创建和上载容器),监控远程运行的状态和日志。模型训练完毕后,将序列化的模型(pkl文件)注册到AML管理。训练模型准确率为0.9193。

 

 

 

第二部分:加载模型,进行本地测试;创建模型容器,部署Web Service到Azure Container Instance中;通过HTTP调用测试模型。

详细请参考:        https://docs.microsoft.com/en-us/azure/machine-learning/service/tutorial-train-models-with-aml

代码库:        https://github.com/Azure/MachineLearningNotebooks.git 

 

 

 

 

 

 

注意:%%time 导致如下错误,删除后运行正常。

 

 

 

2. AML图形界面

AML图形界面与机器学习工作室(Machine Learning Studio)界面类似,继续保持了Studio操作风格,目前处于预览阶段。

  • 为了简化第2和第3个实验,将MNIST压缩数据格式转变为csv格式,然后上传至workspace的默认blob存储。

转格式代码: https://github.com/yongboyang/AML.git

  • 本实验种数据无需预处理,只需要从Azure Blob存储中import过来,然后按照8:2分割训练集和测试集,选择Multiclass Logistic Regressions算法构建训练模型,之后打分评估即可。右键点击 Evaluate Model -> Evaluation results -> Visualize,可以查看训练模型的准确率,这里是 0.92+。

 

 

 

 

 

 

  • 训练结束后,生成预测实验,然后发布成Web Service。发布Web Service到AML管理的AKS集群,可按照Create New中的说明创建Kubernetes Service计算资源。发布成功后,可以获取Sample程序来调用Web Service API测试预测模型。

 

3. Zero-Code ,自动化机器学习

自动化机器学习服务用机器学习来运行机器学习。它会自动预处理数据,自动分割训练数据集和测试数据集,自动调参和选择出最佳模型。相关操作说明请参看:

https://docs.microsoft.com/en-us/azure/machine-learning/service/how-to-create-portal-experiments

    • 创建自动化机器学习比较直接和简单,命名Experiement、选择训练计算资源、数据csv/tsv文件、预测任务类型(Classification/Regression/Forecasting),目标列(也就是要预测的值),点击Start即可。需要注意的是自动化机器学习耗费的计算资源较多,耗费的时间比上述2种也要长很多,我们需要做的是耐心等待。

 

    • 训练完毕后,可以按照说明部署最佳模型。后续调用REST API使用该预测模型与上述二种方式类似。此实验最佳准确率为0.96+。

 

 

  通过简单比AML的三种机器学习模式,我们可以发现Code-First模式最强大,但需要开发者和数据科学家具备相当的Coding和算法能力;AML图形界面模式也提供了较多的功能,训练效率也较高,虽然不用Coding,但需要使用者具备一定的机器学习概念和算法知识;自动化机器学习最简单,只要懂业务和数据,不用一行代码不用懂具体算法的情况下,也可以获得不错的预测模型。总之,AML的目标是予力每一位致力于机器学习的工作者,无论您具备什么样的技术和数据背景。

posted @ 2019-11-11 09:04  royang  阅读(...)  评论(... 编辑 收藏