大家都知道微软在Connect();17大会上发布了VS Tools for AI,旨在提升Visual Studio和VSCode对日益增长的深度学习需求的体验。看了一圈,网上似乎没有一个完整的中文教程来教你怎么完整配置深度学习方案。
与此同时我也接了一个活,是俱乐部与MSRA的项目,项目的目的之一是向VS Tools for AI的samples库里增加新的算法,所以这篇技术文章就应运而生了。
本文将分为以下几个部分来进行阐述:
1,什么是VS Tools for AI
2,怎么在本地配置好VS Tools for AI的前端
3,怎么配置Azure云上的后端环境
4,怎么连接前后端,以及怎么运行TensorFlow实例
============================================================
1,什么是VS Tools for AI?
VS Tools for AI(下称AI组件)的官网地址:https://www.visualstudio.com/downloads/ai-tools-vs/
GitHub地址:https://github.com/Microsoft/vs-tools-for-ai
简而言之,AI组件的用处,是让你快速构建、训练一个深度学习Project。
AI组件的主要功能有:
-开发,调试和部署深度学习和人工智能解决方案:AI组件是支持CNTK,Google TensorFlow,Theano,Keras,Caffe2等深度学习框架的扩展。 您可以通过开放式架构使用其他深度学习框架。 AI组件利用对Python,C / C ++ / C#的现有代码支持,并为Cognitive Toolkit BrainScript提供额外的支持。
-使用“样本库”(就是上文提到的样例)快速构建代码:AI组件与Azure机器学习集成在一起,可以轻松浏览使用CNTK,TensorFlow,MMLSpark等的样本实验库。 这使得开始深入学习AI项目很容易。
-在Azure中扩展深度学习训练并运行AI模型:用于AI的Visual Studio工具与Azure批处理AI和Azure机器学习服务集成,以便向Azure GPU虚拟机,Spark群集等提交深度学习作业。 您可以监视最近的实验的性能,然后生成一个Web服务来为新的智能应用程序供电。
-高效的AI开发人员工具,可以训练模型并将AI注入到您的应用程序中:AI组件可为开发人员和数据科学家提供最强大的一整套集成工具,用于创建,调试和部署其自定义深度学习模型。 使用Visual Studio的强大功能,您可以使用刚刚培训的模型无缝地构建应用程序,而无需切换IDE。
-用TensorBoard等集成开放工具可视化您的模型处理:AI组件还集成了使用TensorBoard进行模型训练和实验的监控和可视化。 在TensorBoard中打开您的作业,以在本地和远程虚拟机上运行。
2,怎么在本地配置好你的AI组件前端
通过阅读上文的overview,我们知道,AI组件可以说是弥补了VS的一个短板,那么要怎么安装AI组件呢?
首先你得安装好Visual Studio 2017。其Community版本依然是免费的,我因为是MSP,拥有VS Enterprise的订阅,感谢微软爸爸给我饭吃。在安装过程中,选择好Python组件,安装Anaconda 4.4以及Python3.
在这里安装,当然你也可以选择独立地安装Anaconda和Python3,并且将其加入到系统变量中,以便于在shell中调用。
之后,在上文提到的网址里下载AI组件,作为一个插件安装。
安装完毕之后,你已经做好了初步准备。
接下来,请在本机安装好TensorFlow(CPU与GPU均可),版本1.4最佳(最新版本)。CPU版本只需要
pip install tensorflow
即可,而安装GPU版本则需要安装对应版本的CUDA和CuDNN。因为本学期我换了一台笔记本,轻薄本没有独立显卡,所以我安装的是CPU版本。
调试你的TensorFlow代码
在Visual Studio中创建一个新的TensorFlow项目:
如果一切顺利的话,你将可以看见图中的选择框。
之后熟悉的工作区回来了。
当然,我觉得TensorFlow的基础知识不需要我来逐一讲解,看这篇博文的人应该都具有一定的TensorFlow编程技巧。
编写完之后按下F5,自动启动shell,运行程序,console中
我们来讨论如何使用Azure资源来训练我们的tensorflow项目。Azure云我个人用得很多,主要是因为微软爸爸批了150刀每月的额度,我可以愉快地玩耍。
那么针对Azure,有成套的两个方案解决问题。
方案一(比较有钱的、对速度要求高的):使用Deep Learning Virtual Machine - NC系列虚拟机
这个是真贵……具体配置方案如下:
首先你得有一个Azure。这一段不讲。
然后进入你的Azure Portal,新建一个这样的虚拟机:
根据云虚拟机的一般情况,你可以在创建虚拟机的时候用密码创建,然后使用XShell生成RSA密钥对,使用SSH远程连接。一般来说SSH连接都是更加主流且常见的连接方式。
之后选择配置。
别急着说贵,必要情况下,这个GPU好到足以撑起整个实验室。请看配置:
看到K80,你就会瞬间觉得这个价格无比良心了。
但是对于那些个人用户来说,肯定是用不到这么高端的配置的。对于这些个人用户,该怎么做呢?
现在我们需要一种穷人的方法来搭建好Azure虚拟机。
思路很简单,因为AI组件的原理其实是传送了script文件和命令上去,那么我们这个虚拟机只要做好了所有的配置,那么我们就可以将它当作深度学习虚拟机来用了。
写到这里,我忍不住哀叹一声。买不起外置显卡的穷人,只能绞尽脑汁想这种省钱的办法。
新建一个Ubuntu 16.04LTS虚拟机。当然选择Windows虚拟机也是可以的,只是不太主流。
选择存储之后,使用XShell远程连接虚拟机(这样比较方便)。
注意此时的虚拟机,GPU约等于没有,所以我们不得不运行CPU版本。所以这个虚拟机的性能会比较差,但是虚拟机此时也可以拿来用作其他事情,比如当作私有云盘,或者是tizi。
具体的安装步骤可以查看http://www.cnblogs.com/ldzhangyx/p/7624771.html,这篇博文主要讲述了如何deploy你的虚拟机,并且安装好TensorFlow环境。注意,与那篇文章有些区别的是,Azure虚拟机一般情况下不能带动CUDA,所以我们需要做的仅仅是:
1,安装Python3
2,安装TensotFlow及必要的依赖库(如pandas),这个依赖库的列表可能很长,所以也可以安装Anaconda来做到一次性配置。
TIPS:一定要安装好所有的依赖库,具体的列表可以通过报错信息确定。
下面的操作以Ubuntu版本为准,Windows版本的配置方法类似。
我们打开VS installer,安装Azure SDK。
安装完成之后的主要步骤参见:https://github.com/Microsoft/vs-tools-for-ai/blob/master/docs/tensorflow-vm.md
这里做出中文的说明。
1,打开你的解决方案。
2,选择服务器资源管理器,使用SSH连接好你的虚拟机。(记得提前给你的虚拟机设置静态IP)
连接完成之后你可以发现Remote machine里多了你的虚拟机。你可以点进去看看你虚拟机的文件。
3,提交一个Job。
在解决方案管理器里提交job,有几个参数需要注意一下:
cluster是你的虚拟机名字。在第三行有一个Job Name必须写,你选一个自己喜欢的名字就好,作为job的区分标识。
下面这些参数有些复杂,但是如果你直接提交的话,将会报类似的错误。
点击这里查看所有的Jobs:
如果你选择了Python2/3双版本共存,可能会出现这样的错误:
原因出在这里:
如果我们在Summit的时候填写的是python,那么虚拟机会执行python tensorflowapplication.py这一条指令。
而我们之前为了方便,安装了Python3使得两版本共存,那么python调用的其实是python2.要使虚拟机调用Python3,我们只需要这么修改:
这样我们就可以使用Python3了。
提交,查看结果:
如果你要在执行的时候指定一些参数,也是在类似的地方进行调整。