如果说前 50 年是 AI 的潜伏期,那么,2017 就是人工智能的全面爆发年。我们在各行各业都可以看到 AI 的身影,包括各厂商推出的自研 AI 算法,以及满屏的基于 AI 的智能化探索和研究,无可否认的是,人工智能技术已经渗透到生活的各个领域当中。那么,在 AI 技术实际落地的过程中,会遇到什么样的瓶颈?基于深度学习的框架这么多,企业该如何选择最适合自己的那一条道儿?
12 月 9 日 UCloud 收官战,聚焦 AI 技术的落地实践,通过高可用的异构 AI 计算平台构建过程、如何流程化地生产和发布 AI 产品、及深度学习性能优化工具和实现等内容分享,为开发者在快速落地 AI 应用和产品上提供了一些可用的方法和途径。
美团配送已承担日千万级单量的配送,为上百万商家和千万级用户提供服务。这其中如何建立配送网络的规划工具和规划策略至关重要,不过,仅仅依靠人工来对百万级别的网络进行调整,不但效率低成本高,而且标准不一。来自美团的资深技术专家丁雪涛,就美团配送网络的总体设计和规划、商家配送范围的策略和算法演进、区域规划的策略等内容展开了深入分享。
美团的整个配送网络整体设计包括三个核心概念:取件范围、送件范围以及配送范围。取件范围就表示加盟商的势力范围,每一个商家对应一个独立的配送团队,势力范围即配送小哥能够为哪些地方取件,送件范围的目的是为配送团队规划一个整体可以到达用户的地;配送范围是指商家的配送范围,只有在这个配送范围内的用户才可以看到这样一个商家。
那么,美团怎样规划取件范围和配送范围呢?在取件范围的规划上,美团以效率、体验和公平为基准点,制定了生成划分方案,即基于聚类和多目标优化,来生成候选划分方案,通过迭代反馈,将生成的候选方案输入到仿真系统,通过真实历史订单骑手配置来模拟配送过程,得出效率和体验评估报告。
在配送范围的规划上,美团首先将配送场景划分为常规配送范围、恶劣天气范围、闲时配送范围、新商家范围等等,通过 block 决策、导航路线画图、中间指标、商家推荐、机器学习预估多种技术手段,分析出不同场景下最优的配送范围。
UCloud 宋翔:构建商用 AI 平台挑战与思考
随后,UCloud 高级研发工程师宋翔,结合 UCloud 在 AI PaaS 产品研发过程中遇到的问题,以及 AI 平台构建过程中的挑战与解决方案,为现场参会者深入讲解了如何构建一个高可用的异构 AI 计算平台。
宋翔表示,目前,业界主流的 AI 算法和框架非常多,算法包括 VCG、LSTM、RestNet、Fast-RCNN 等等,而框架又有 TensorFlow、Keras、Caffe、MXNet 等,其组合种类更加让人眼花缭乱。那么,如何在繁杂的组合里选择合适的算法和框架?宋翔分享了 AI 平台构建需要考虑的五大要素:算法兼容性、平台扩展性、分布式话、纵向拓展、易用性,用户可以以这五大要素为基准点,根据平台构建的目的来搭配最适合的算法和框架。
基于以上五大要素,UCloud 构建了自有的 AI 基础平台,里面包含 AI 训练和 AI 在线服务两大核心功能。如下图所示,最上层是训练日志和 TensorBoard 框架,下面接着就是图形化界面,这里面主要是完成一些基本的部署操作,右侧是 Python SDK 接口,接入层下面即为平台核心的 AI Train 和 AI Service,最底层封装了所有的硬件和存储接入。这个平台看起来虽然简单,但基本上包含了 AI 商用平台的常用功能和接口,可以说是麻雀虽小,五脏俱全。
谈起 AI 平台的实现过程,宋翔表示,AI 框架的构建最重要的两点就是保障平台的兼容性和可靠性。在兼容性上,UCloud 采用了容器封装和数据接入两种方法实现环境的分离 ,将不同功能的 AI 框架、依赖环境、硬件设备、存储分隔开来,让不同的模块实现不同的功能。可靠性的实现上,UCloud 主要采用负载均衡、请求调度算法优化、性能监控以及高可用的部署等方式,完成全局的弹性扩容。
值得一提的是,UCloud 在 GitHub 开源了自身基于 AI 基础平台的公共镜像库和 SDK,用户可以通过开源的 SDK,将 UCloud 开源的镜像库打包成自身可以应用的镜像,开发者可以再本地镜像使用,也可以放在 UCloud 的在线服务或者说训练的平台,这些都是完全兼容的。感兴趣的同学也可以访问链接 https://github.com/ucloud/uai-sdk/,进行深入了解和演练。
UCloud 范融:如何轻装上阵玩转 AI
在产品化 AI 服务的过程中,普遍都会遇到基础资源管理、使用、封装等等问题,如何提升 AI 产品研发效率,简化非核心业务的研发流程是各个公司最关心的问题之一。来自 UCloud 高级研发工程师范融,现场结合动手实践,详细分享了如何流程化地生产和发布 AI 产品,节省开发时间和成本。
本地开发 AI 之前,开发者需要提前配置基础的环境,包括 CPU、GPU 的支持,以及深度学习框架准备和科学计算库的加载等,基础环境配置完成之后,即可进行开发工作。下图为 UCloud AI 本地开发的整个过程,下层是基础环境的配置,上面白框是应用代码部分,这部分主要解决两个的问题,一个是数据的训练,一个是数据的预测。一般来说预测网络和训练网络是类似的,如果预测模型和预测程序不止在本地运行,则需要加一个 Web 服务框架。
为了简化应用代码的部署和构建过程,UCloud 提供了一些开源的工具和框架(上图蓝色框架的所有内容),包括辅助工具里面的代码打包和自动部署工具,开发者也可以在 UCloud 提供的 SDK 里面免费下载使用,省去许多部署烦恼。
AI 本地训练虽然安全性比较高,但在资源申请和迭代开发方面具有一定的局限性,如字眼扩容较慢,多任务穿行是等待时间较长,调参困难等,范融认为,合理的将部分的 AI Train 放在云端实现,可以有效的完成云端资源的按需申请、多任务并行处理以及任务参数记录等工作。在数据的上云实践方面,UCloud 提供了比较完善的工具和方法,用户只需通过代码改写、打包镜像、上传训练数据以及启动任务四个步骤即可轻松上云。
Intel 何普江:深度学习性能优化实践
UCloud 的两位讲师分享了 AI 落地实践的一些平台构建思路和方法,来自 Intel 何普江,则现场分享了基于深度学习的性能优化工具和实践经验,包括在高性能计算库(MKL 和 MKL-DNN)和框架(Intel 发行版 Caffe)的使用、注意事项和一些经验,以及基于 CPU 的高效的 RNN 设计实现过程。
Intel 数学核心函数库(MKL)是一套高度优化、线程安全的数学例程、函数,能加速加速机器学习、科学研究、工程、财务和设计等领域的数学处理,并提供了稠密及稀疏线性代数 (BLAS, LAPACK, PARDISO), FFTs, vector math, summary statistics 等支持,具有标准的 API 以及高度优化的特点,最大限度发挥多核核和 SIMD 指令的优势。
caffe 是一个清晰、可读性高、快速的深度学习框架,Intel 发行版的 Caffe 同样也是开源框架,它基于 BAIR/BVLC Caffe 改进而来,Intel 在 BAIR/BVLC Caffe 的基础上添加了流行检测网络的支持(如 SSD),同时,也支持多节点训练以及 CAFFE、MKL2017 和 MKLDNN 三种引擎。在 RNN 的优化上,何普江介绍到,Intel 主要对高效的 GEMM 实现、一些小操作的合并、并行化元素级操作、合理的数据排布以及低精度表示上进行了系列改进实践,优化之后的 CPU 性能基本上可以比 GPU 高甚至高出不少。
这次分享从平台、方法和工具等不同角度,全面诠释和讲解了开发者该如何从 0 开始快速落地 AI 产品。虽然目前人工智能技术整体都还处在探索阶段,不过相信大家定能从这次分享中吸取精华,有所收获,在并将其应用在未来的开发者之路上。UCan 下午茶 2017 系列沙龙,在走过了北京、上海、深圳、广州等一系列城市后,于美丽的杭州湖畔完美收官。
MKL 不同的是,MKL-DNN 是一个开源的深度学习框架。下图为使用 Intel MKL-DNN 进行推理的过程,有两种方式可以实现这个过程,一种是训练好的模型,直接进入模型转换器,然后再用 topo.txt(网络拓扑)生成 Inference.cpp(基于 MKL-DNN 的 Inference 代码,在初始化的时候会加载 weights.bin),这套逻辑需要用到 Intel 自身的网络拓扑模型的中间表示形式。另外一种方式是待 topo.txt 生成后,再用简单的代码转换器,实现轻量级的 InferenceFramework.cpp(轻量级 Inference 框架,可以解析 topo.txt 并加载 weights.bin)。
「细说云计算」是 InfoQ 旗下关注云计算技术的垂直社群,投稿请发邮件到 editors@cn.infoq.com,注明“细说云计算投稿”即可。