接着上文VS Tools for AI全攻略,我们来讨论如何使用Azure资源来训练我们的tensorflow项目。Azure云我个人用得很多,主要是因为微软爸爸批了150刀每月的额度,我可以愉快地玩耍。

那么针对Azure,有成套的两个方案解决问题。

方案一(比较有钱的、对速度要求高的):使用Deep Learning Virtual Machine - NC系列虚拟机

这个是真贵……具体配置方案如下:

首先你得有一个Azure。这一段不讲。

然后进入你的Azure Portal,新建一个这样的虚拟机:




VM虚拟机如玩转GPU_tensorflow

 

根据云虚拟机的一般情况,你可以在创建虚拟机的时候用密码创建,然后使用XShell生成RSA密钥对,使用SSH远程连接。一般来说SSH连接都是更加主流且常见的连接方式。

之后选择配置。


VM虚拟机如玩转GPU_VM虚拟机如玩转GPU_02

别急着说贵,必要情况下,这个GPU好到足以撑起整个实验室。请看配置:


VM虚拟机如玩转GPU_Azure_03

看到K80,你就会瞬间觉得这个价格无比良心了。

但是对于那些个人用户来说,肯定是用不到这么高端的配置的。对于这些个人用户,该怎么做呢?

现在我们需要一种穷人的方法来搭建好Azure虚拟机。

思路很简单,因为AI组件的原理其实是传送了script文件和命令上去,那么我们这个虚拟机只要做好了所有的配置,那么我们就可以将它当作深度学习虚拟机来用了。

写到这里,我忍不住哀叹一声。买不起外置显卡的穷人,只能绞尽脑汁想这种省钱的办法。

新建一个Ubuntu 16.04LTS虚拟机。当然选择Windows虚拟机也是可以的,只是不太主流。


VM虚拟机如玩转GPU_Azure_04

选择存储之后,使用XShell远程连接虚拟机(这样比较方便)。

注意此时的虚拟机,GPU约等于没有,所以我们不得不运行CPU版本。所以这个虚拟机的性能会比较差,但是虚拟机此时也可以拿来用作其他事情,比如当作私有云盘,或者是tizi。

具体的安装步骤可以查看,这篇博文主要讲述了如何deploy你的虚拟机,并且安装好TensorFlow环境。注意,与那篇文章有些区别的是,Azure虚拟机一般情况下不能带动CUDA,所以我们需要做的仅仅是:

1,安装Python3

2,安装TensotFlow及必要的依赖库(如pandas),这个依赖库的列表可能很长,所以也可以安装Anaconda来做到一次性配置。

TIPS:一定要安装好所有的依赖库,具体的列表可以通过报错信息确定。

下面的操作以Ubuntu版本为准,Windows版本的配置方法类似。

我们打开VS installer,安装Azure SDK。


VM虚拟机如玩转GPU_python_05


 

安装完成之后的主要步骤参见:https:///Microsoft/vs-tools-for-ai/blob/master/docs/tensorflow-vm.md

这里做出中文的说明。

1,打开你的解决方案。


VM虚拟机如玩转GPU_VM虚拟机如玩转GPU_06

2,选择服务器资源管理器,使用SSH连接好你的虚拟机。(记得提前给你的虚拟机设置静态IP)


VM虚拟机如玩转GPU_tensorflow_07


VM虚拟机如玩转GPU_VM虚拟机如玩转GPU_08

连接完成之后你可以发现Remote machine里多了你的虚拟机。你可以点进去看看你虚拟机的文件。

 

3,提交一个Job。


VM虚拟机如玩转GPU_Azure_09

在解决方案管理器里提交job,有几个参数需要注意一下:


VM虚拟机如玩转GPU_Azure_10

 

cluster是你的虚拟机名字。在第三行有一个Job Name必须写,你选一个自己喜欢的名字就好,作为job的区分标识。

下面这些参数有些复杂,但是如果你直接提交的话,将会报类似的错误。

点击这里查看所有的Jobs:


VM虚拟机如玩转GPU_python_11

 如果你选择了Python2/3双版本共存,可能会出现这样的错误:


VM虚拟机如玩转GPU_tensorflow_12

 

原因出在这里:

如果我们在Summit的时候填写的是python,那么虚拟机会执行python tensorflowapplication.py这一条指令。

而我们之前为了方便,安装了Python3使得两版本共存,那么python调用的其实是python2.要使虚拟机调用Python3,我们只需要这么修改:


VM虚拟机如玩转GPU_Azure_13

 

这样我们就可以使用Python3了。

提交,查看结果:


VM虚拟机如玩转GPU_VM虚拟机如玩转GPU_14

如果你要在执行的时候指定一些参数,也是在类似的地方进行调整