人工智能平台助力算法研发和应用部署

发布时间:2018-08-27 作者:中兴通讯AI平台首席架构师 韩炳涛 阅读量:

近年来人工智能技术取得了突破性进展,以深度学习为代表的一系列新算法在计算机视觉、语音识别与合成、自然语言处理等领域取得了重大进步,达到了可应用水平。然而,在一个生产系统中应用人工智能技术并非易事,从算法的研发到应用的部署,需要解决大量的技术问题。中兴通讯研发了人工智能平台uSmartInsight,通过提供人工智能核心算法、共享数据和计算资源、标准化应用运行环境等手段,降低研发和部署人工智能系统的难度,提升研发效率,降低应用的运行成本,推动人工智能技术在各业务领域的快速落地。

人工智能的开发和应用过程

人工智能过程分为数据准备、模型开发和模型应用三个阶段(见图1 )。

● 数据准备:根据选定的任务,收集并处理与这个任务相关的数据。

● 模型开发:包括选择训练样本、特征挖掘和选择、使用算法对模型进行训练、使用测试数据对模型的表现进行评估,经过不断优化,最终得到一个满足需求的模型。

● 模型应用:根据生产系统环境的不同,模型可以部署到云端、一体机或终端设备上。由于运行环境和硬件不同,需要对模型进行特定的性能优化,从而降低系统的延迟,减少对资源的需求,降低系统的运行成本。

在模型的开发过程中,高质量的训练数据极其重要。收集、清洗、标注、预处理数据会花费很大的时间和精力,这部分工作由大数据平台完成。

模型创建

针对一个具体任务,有两种建模的途径:

● 基于模板创建模型:基于一个能够完成类似任务的模型,在其基础上进行一些改动,并重新训练这个改动之后的模型;

● 创建新模型:从无到有创建一个全新的模型。

基于模板创建模型


uSmarInsight提供了大量的模型模板,每个模板适合执行一个特定任务,如图片分类、图片中的物体识别和物体分割等。用户可以选择一个与需求最接近的模板创建模型,然后利用可视化编辑界面,以鼠标拖拽等方式对模型进行必要的修改,快速地建立新的模型。这种图形化的工具不需要用户编程,屏蔽了算法的复杂性,降低了门槛,适合大多数初中级用户使用。

创建新模型


很多情况下,用户的需求具有很强的定制性,在模板库中并不能找到一个合适的模板,这就需要从头开始建立全新模型。

与基于模板创建模型的方法不同,全新建立模型需要对模型进行大量的修改、调试工作。这种情况下,无法采用可视化建模工具进行模型创建,比如要从头开始创建一个有数百层深度的学习模型,是不可能用鼠标拖拽方式去完成的。针对这种情况,平台提供了直接编程的方式来建立模型,用户可能通过编写代码来完成模型的创建,这样效率就得到了很大的提高。用户在完成编程和调试之后,平台可以自动将程序转换为可视化模型,并且可以保存为新的模板,以供后续使用。

当用户进行模型的编程时,需要一个集成开发环境,以便更加方便地进行代码编写、调试。为此,uSmartInsight提供了GPU容器服务以及多种开发环境的镜像,以支持不同用户的需求,如TensorFlow、Caffe、Torch、MXNet等不同编程框架。用户还可以上传自定义的镜像,以满足定制化的特殊要求。

模型训练


当完成建模之后,需要使用训练数据对模型进行训练。对于深度学习模型来说,这是个非常耗时的工作,往往会持续数日甚至数周。利用多个节点进行分布式并行训练是一个非常有效的训练加速手段。为此,uSmartInsight提供自动分布式训练算法,用户只需要指定期望的计算节点数量,平台会根据计算图特征、系统计算资源拓扑特征、计算硬件特征等,找到最优的分布式计算方案,并自动完成对模型的改写。对多个主流模型的训练测试表明,uSmartInsight的自动分布式算法可以在多机多卡训练时达到92%以上的并行加速比,执行效率甚至好于手工编写的代码。
即使有了强大的分布式并行训练算法,训练仍然是一个非常耗时的工作。为了进一步提升模型的训练效率,uSmartInsight还提供了另外一种加速手段:迁移学习,利用迁移学习方法,可以在基于一个在其他任务上预先训练好的模型,经过少量的调优训练,使其可以应用于当前的任务。

深度学习训练是非线性优化过程,训练过程中会遇到各种意外情况。为了解决这个问题,uSmartInsight提供了版本化训练的功能,用户可以回退到之前任意一个迭代,调整适当的训练参数后重新进行训练。这样就可以避免训练过程崩溃所造成的时间上的浪费,也可以通过反复回退训练挖掘出更好的训练参数,使模型更加有效。除此之外,uSmartInsight还提供了训练参数自动搜索功能,利用平台自身庞大的计算力,自动帮助用户搜索更好的训练参数,从而进一步提高效率。

模型部署

当用户完成模型的训练并通过评估测试后,就可以开始模型的部署和应用。首先需要考虑的是模型的运行环境,例如模型部署在云侧还是端侧。uSmartInsight提供了云侧服务管理功能,用户可以一键式将训练好的模型发布为在线服务,并且允许应用程序通过REST接口来访问AI服务。此外,uSmartInsight还会保证服务的可用性、负载均衡、故障隔离和弹性伸缩。

如果将模型部署于端侧,则需要另一种流程。uSmartInsight提供了模型运行时环境,以及对应的模型编译器。用户可以通过模型编译器,将训练好的模型编译为可以在终端上运行的二进制文件,从而实现模型在端上的运行。uSmartInsight在模型编译器中提供了优化功能,包括对模型进行压缩、剪枝,以及面向特定加速硬件的优化。经过优化后的模型,执行效率会取得数倍的提升。

通过上述工作,uSmartInsight使得人工智能技术的研发和应用难度大大降低了,能够支撑各个领域的AI技术应用。未来,uSmartInsight还将进一步优化,提供针对特定行业的具体场景的解决方案,成为一个行业AI应用赋能平台。