在SkyForm ECP上运行深度学习框架

Posted 天云软件SkyForm

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在SkyForm ECP上运行深度学习框架相关的知识,希望对你有一定的参考价值。


在SkyForm ECP上运行深度学习框架

作者 | 张伟、 马巍娜 


在SkyForm ECP上运行深度学习框架

深度学习框架简介


近两年随着AlphGo的走红,深度学习技术已然成为最流行技术中的佼佼者,各种开源的深度学习框架也层出不穷,其中Tensorflow、MXNetCaffe等凭借易部署、易上手、灵活性高等特点大大降低了深度学习技术的入门门槛。


TensorflowMXNetCaffe的简单对比如下表:

在SkyForm ECP上运行深度学习框架

   

随着训练任务的复杂度不断提高,训练数据的规模不断扩大,深度学习框架的集群方案受到用户越来越多的关注。在大规模的集群环境下,对所有的机器、任务等进行管理是一项繁琐的工作,尤其是TensorFlow,每次启动任务必须登录到每台机器上执行启动命令,这种使用方式尤为不便。容器集群技术为简化这些工作提供了新的思路。


在SkyForm ECP上运行深度学习框架

  SkyForm ECP简介


SkyForm ECP是一个开放的、基于容器技术的应用集群管理平台。SkyForm ECP内置丰富的容器镜像及通用中间件基础服务,结合强大的应用编排功能,可以帮助企业在已有的IT基础架构之上快速构建出大规模具有弹性的应用系统,提高业务效率,降低IT成本,从繁杂的基础架构管理中解脱,更加专注于业务


SkyForm ECP把每一种深度学习框架看做一个应用模板封装在应用市场中,通过配置一些自定义参数,可以一键创建符合自己需求的深度学习框架集群。


在SkyForm ECP上运行深度学习框架

TensorFlow与SkyForm ECP集成



TensorBoard是SkyForm ECP中的一个RC实例,有对应的service对外部提供服务。它可以加载训练任务中产生的log,用来展示训练过程中的数据变化、记录训练过程中的图像、音频等等。


Tensorflow-Serving也是SkyForm ECP中的一个RC实例,它用来加载训练好的模型,将训练好的机器学习模型部署到线上,使用 gRPC 作为接口接收外部调用。同时Tensorflow-Serving支持模型热更新与自动模型版本管理


整体的框架如下图所示:

在SkyForm ECP上运行深度学习框架


整体的工作流程是一个循环迭代的过程,主要包括启动训练任务、保存模型、提供服务、优化Code、重新训练等几个阶段。


在SkyForm ECP上运行深度学习框架

具体的流程细节如下图所示:


在SkyForm ECP上运行深度学习框架


准备工作:创建共享存储,上传训练代码、训练数据到共享存储的特定目录。


    Step1. 启动训练任务。指定需要的ps个数、资源大小等信息,worker个数、资源大小等信息,以及TensorBoard提供service的信息。(如果只有部分ps或者worker启动,已经启动的组件会持续等待其它组件正常启动,然后执行训练任务。TensorBoard是一个独立的组件,不受其它组件影响)。


    Step 2. 保存训练好的模型、输出日志等信息到共享存储上。


    Step 3. Tensorflow-serving加载训练好的模型(模型版本是1),对外提供服务。


    Step 4. 外部用户通过Tensorflow -serving接口提交请求,获取响应结果。


    Step 5. 开发人员通过反馈优化训练代码。


    Step 6. 使用优化后的代码重新提交训练任务。


    Step 7. 保存新的模型和输出日志等信息到共享存储上。


    Step 8. Tensorflow-serving热加载新版本的模型(模型版本是2),对外提供服务


    Step 9. 外部用户通过Tensorflow -serving接口提交请求,Tensorflow -serving内部使用模型版本2处理请求。


在SkyForm ECP上运行深度学习框架

MXNet与SkyForm ECP集成


MXNet和SkyForm ECP集成的原理与TensorFlow类似,此处不做过多介绍。需要注意的是MXNet可以使用ssh、mpirun等方式组建集群, SkyForm ECP平台使用的是ssh方式,在MXNet的基础镜像要配置ssh免密钥登录,在启动任务的时候指定使用ssh方式组建集群。


在SkyForm ECP上运行深度学习框架

运行结果展示


本节以TensorFlow为例,展示深度学习框架在SkyForm ECP上的运行结果。


1、准备工作,上传代码和训练数据到共享存储:

在SkyForm ECP上运行深度学习框架


2、创建TensorFlow集群:

在应用市场中选择TensorFlow,修改自定义参数(包括启动命令、使用的共享存储、是否启动TensorBoard、ps和worker的副本数、每种资源的资源需求等):

在SkyForm ECP上运行深度学习框架

在SkyForm ECP上运行深度学习框架


测试例子中选择的Tensorflow模板版本是0.1.0,启用TensorBoard,部署成功后可以看到应用下包含TensorBoard,tensorflow-ps和tensorflow-worker三个子服务,其中TensorBoard的类型是replication controller,包含一个外部端口可以从外部访问服务,tensorflow-ps和tensorflow-worker的类型是job,ps的副本数和worker的副本数都是2。

在SkyForm ECP上运行深度学习框架


3、使用TensorBoard外部端口访问服务:

在SkyForm ECP上运行深度学习框架

 

4、在应用市场中选择TensorFlow Serving,修改自定义参数(包括副本数、日志文件目录等),启动TensorFlow Serving(可动态扩缩Serving的副本数):

在SkyForm ECP上运行深度学习框架

 

5、测试model:


—end—

以上是关于在SkyForm ECP上运行深度学习框架的主要内容,如果未能解决你的问题,请参考以下文章

在 Jetson nano 和 jetson xavier 上运行 Nvidia-docker 以实现 tensorflow 等深度学习框架

业界 | 处理移动端传感器时序数据的深度学习框架:DeepSense

深度学习框架初探

深度学习框架只为GPU? 答案在这里

Amazon EMR深度学习框架,让人工智能操作更便捷

对标Tensorflow ? Vertex.AI开源深度学习框架PlaidML