配置 Azure 机器学习开发环境
本节介绍如何配置 Azure 机器学习的开发环境。 官方文档对此做了非常详细的介绍。本节对官方文档做了一定简化,重点介绍如何在本地计算机配置 Azure 机器学习的开发环境。
一、4种开发环境
Azure 机器学习可以在很多平台上使用。 对开发环境的唯一硬性要求是需要 Python 3。 同时建议使用独立的环境,如 Anaconda 或 Virtualenv。
下表显示了本节中涉及到的每个开发环境及其优点和缺点。
环境 | 优点 | 缺点 |
---|---|---|
基于云的 Azure 机器学习计算实例(预览) | 入门的最简单方法。 整个 SDK 已安装到你的工作区 VM 中,笔记本教程已预克隆并可随时运行。 | 缺乏对开发环境和依赖项的控制。 Linux VM 产生的额外成本(VM 可以在不使用时停止,以避免收费)。 请参阅定价详细信息。 |
本地环境 | 完全控制开发环境和依赖项。 在您选择的任何生成工具、环境或 IDE 中运行。 | 需要更长的时间才能开始。 必须安装必需的 SDK 包,并且还必须安装环境(如果尚未安装)。 |
Azure Databricks | 适用于在可缩放的 Apache Spark 平台上运行大规模密集型机器学习工作流。 | 用于试验机器学习或小规模试验和工作流的多余。 Azure Databricks 产生的额外成本。 请参阅定价详细信息。 |
Data Science Virtual Machine (DSVM) | 与基于云的计算实例(即预装的 Python 和 SDK)类似,但还预安装了其他热门数据科学和机器学习工具。 易于缩放,并与其他自定义工具和工作流组合。 | 与基于云的计算实例相比,较慢的入门体验。 |
二、必备条件
Azure 机器学习工作区(工作区是Azure机器学习的顶级资源中心,所有的Azure机器学习试验都在工作区下面开展)。
- 如果你还没有创建Azure机器学习工作区,请参考此节创建 。
- 若要为本地计算机安装 SDK 环境、Jupyter Notebook 服务器或Visual Studio Code,还需要:
- Anaconda或miniconda)包管理器。
- 在 Linux 或 macOS 上,需要 bash shell。
- 在 Windows 上,需要命令提示符或 Anaconda 提示符(由 Anaconda 和 Miniconda 安装)。
三、配置环境
由于我一般都是在本地计算机上做Azure机器学习开发,所以首先给大家介绍在本地计算机上配置Azure机器学习开发环境。
本地计算机
使用本地计算机(也可能是远程虚拟机)时,请创建 Anaconda 环境并安装 SDK。 下面是一个示例:
- 下载并安装Anaconda (Python 3.7 版)(如果尚未安装)。
- 打开 Anaconda 提示符,并使用以下命令创建环境:运行以下命令以创建环境。
conda create -n myenv python=3.6.5
- 然后激活环境。
conda activate myenv
此示例使用 python 3.6.5 创建一个环境,但可以选择任何特定的 subversions。 对于某些主要版本(建议使用 3.5 +),SDK 兼容性可能不会得到保证,如果遇到错误,建议在 Anaconda 环境中尝试不同版本。 下载组件和包时,创建环境需要花费几分钟。
- 在新环境中运行以下命令,以启用环境特定的 IPython 内核。 当在 Anaconda 环境中使用 Jupyter 笔记本时,这将确保预期内核和包导入行为:
conda install notebook ipykernel
然后运行以下命令以创建内核:
ipython kernel install --user --name myenv --display-name "Python (myenv)"
- 使用以下命令安装包:
此命令通过笔记本和 automl 额外内容安装基本 Azure 机器学习 SDK。 automl 是一个比较大的包,如果不打算进行自动机器化学习试验,则可以将其从方括号中删除。 默认情况下,安装automl 包的时候还会安装 Azure 机器学习数据准备包 作为其依赖项。
pip install azureml-sdk[notebooks,automl]
上述安装了运行Azure机器学习的默认安装包,当然它还有很多附加组件和高级功能,如果需要,参考此处安装。
- 为机器学习试验安装其他程序包。比如TensorFlow、PyTorch等等。
conda install <new package>
#或者
pip install <new package>
安装完成了,就可以通过Jupyter Notebook或者Visual Studio Code来使用Azure机器学习SDK。
一般按上述步骤在本地计算机安装Azure机器学习SDK后,就可以开始各种机器学习试验了。如果涉及到大型项目开发,需要使用环境来跟踪和重现项目的软件依赖关系,那么可以使用Azure机器学习的Environment类在训练和部署中重复使用某个环境,具体操作请参考此链接。
基于云的计算实例
这个是一个比较有意思的应用。相当于你在Azure机器学习工作区中创建了一台虚拟机,虚拟机的规格可以自己选择。这台虚拟机已经提前准备好了 Jupyter 笔记本服务器、JupyterLab 以及完整的Azure ML 环境,自己无需再安装或配置任何内容。
创建这个计算实例的方法也很简单,你只需要在Azure机器学习studio的计算栏目中,在“计算实例”下方点击新建,定义计算实例名称和虚拟机规格后就可以创建成功。
使用起来也很方便,如果计算实例已经启动,点击“应用程序URI”下方的Jupyter,就会在默认浏览器中打开Jupyter notebook,notebook的根目录是这台虚拟机的/home。之后就可以在notebook中开展机器学习试验。
这个计算实例实际上是一台绑定到Azure机器学习工作区的虚拟机,工作区给了我们一个便捷使用的接口从而不用通过ssh来连接它。计算实例每次启动和停止都会花费一些时间。另外,此计算实例也是按照云上虚拟机定价收费的,因此每次使用完后最好将其停止,以节省费用。
图1 Azure机器学习studio种的计算实例
Data Science Virtual Machine
DSVM是Azure上一种特殊的虚拟机,与一般虚拟机不同的是,该虚拟机在创建时已经预配好了以下环境:
- TensorFlow、PyTorch、Scikit-learn、XGBoost 和 Azure 机器学习 SDK 等包
- Spark Standalone 和 Drill 等常用数据科学工具
- Azure CLI、AzCopy 和存储资源管理器等 Azure 工具
- Visual Studio Code 和 PyCharm 等集成开发环境 (IDE)
- Jupyter Notebook 服务器
Azure 机器学习 SDK 适用于 Ubuntu 或 Windows 版本的 DSVM。 但是,如果还计划将 DSVM 用作计算目标,则仅支持 Ubuntu。
在portal中创建DSVM请查看创建 Ubuntu Data Science Virtual Machine和创建 Windows Data Science Virtual Machine。
DSVM 上已安装 Azure 机器学习 SDK。 若要使用包含此 SDK 的 Conda 环境,请使用以下某个命令:
- 对于 Ubuntu DSVM:
conda activate py36
- 对于 Windows DSVM:
conda activate AzureML
若要验证是否可以访问 SDK 并检查版本,请使用以下 Python 代码:
import azureml.core
print(azureml.core.VERSION)
Azure Databricks
Azure Databricks 是 Azure 云中基于 Apache Spark 的环境。 它通过基于 CPU 或 GPU 的计算群集提供基于笔记本的协作环境。如果有兴趣了解和使用,请参考此处。
四、创建工作区配置文件
在本地安装好Azure机器学习SDK后,你可以通过以下代码连接到机器学习工作区:
from azureml.core import Workspace
workspace_name = 'your workspace name'
subscription_id = 'your subscription id'
resource_group = 'your resource group name'
ws = Workspace.get(name=workspace_name,subscription_id=subscription_id,resource_group=resource_group)
print(ws.name, ws.resource_group, ws.location, sep='\n')
其中workspace_name、subscription_id和resource_group可以根据下图查到:
图2 工作区的相关配置信息
———————————————————————————————————————————————————————————————
注意:为了确保能够连接成功,在连接工作区之前建议先使用az login登陆Azure,具体步骤如下:
- 下载和安装 Azure CLI。
- 如果使用Azure China,那么在Windows cmd或者Linux终端中输入:
az cloud set --name AzureChinaCloud
将Azure设置为AzureChina。
如果要切换成AzureGlobal,则输入:
az cloud set --name AzureCloud
- 在Windows cmd或者Linux终端中输入
az login
将打开默认浏览器进入Azure登陆页面。登陆后一般就能正常连接到工作区。
———————————————————————————————————————————————————————————————
workspace_name、subscription_id和resource_group是连接工作区的令牌,不要将其泄露出去。为了进一步保障安全,建议将这三个值保存到json配置文件中,通过ws = Workspace.from_config(‘config.json’)来连接工作区,避免重要信息在代码中泄露。
ws = Workspace.from_config(path='config.json')
print(ws.name, ws.resource_group, ws.location, sep='\n')
有3中方式可以创建配置文件:
直接写一个json配置文件
自己写入一个配置文件。 该文件含包含工作区的配置信息。 然后将其复制到某个文件夹下面。
图3 工作区json配置文件
下载文件
在Azure 门户中,从工作区的 “概述” 部分选择 “下载配置文件”。然后将其放到需要使用的文件夹中。
图4 portal上下载工作区配置文件
以编程方式创建文件
在以下代码片段中,你可以通过提供订阅 ID、资源组和工作区名称来连接到工作区。 然后,它将工作区配置保存到文件中:
from azureml.core import Workspace
subscription_id = '<subscription-id>'
resource_group = '<resource-group>'
workspace_name = '<workspace-name>'
try:
ws = Workspace(subscription_id = subscription_id, resource_group = resource_group, workspace_name = workspace_name)
ws.write_config(path='my_path',file_name='config.json')
print('Library configuration succeeded')
except:
print('Workspace not found')
此代码会将配置文件写入my_path/.azureml/config.json文件。
五、总结
- 介绍了Azure机器学习开发的4种环境,以及每种环境的配置方法,重点介绍了在本地计算机的配置方法。
- 介绍了3种创建工作区配置文件的方法。