为什么我们需要机器学习平台?

整个机器学习的工程化落地过程 , 掺杂着很多与机器学习本身不很相关 , 却和基础设施、其他工程领域强相关且通用的事情 。 比如环境搭建 , 框架安装适配;模型部署 , 训练任务监控、可视化;任务调度、多租户等 。 而对于机器学习工程师来说 , Ta们更擅长的是算法、模型 。 如何让机器学习快速落地产生价值、提供通用的能力就是机器学习平台的核心 。
背景近几年来 , AI和大数据(还有少了很多热度的区块链)异常火热;不止是互联网 , 人工智能频频跻身两会热词 , 各个高校也都开展AI等相关专业 。 如果说作为一个互联网从业者到现在都还没有听过这些词汇 , 出去都不好意思说自己是搞IT的 。 作为一名开发者 , 其实我们更关心的是AI工程化、落地的过程 。 伴随着AI , 经常出现的一个词是机器学习平台 。 相信很多人都听过平台的概念 , 所谓平台 , 也就是提供通用的技术or业务能力 , 以支持其他业务(技术)快速构建 。 但对于机器学习平台 , 我想作为一个不是很了解的人听到这个词汇的时候第一时间会冒出两个问题:为什么需要机器学习平台以及机器学习平台长什么样 。 其实机器学习平台 , 就是伴随着AI工程化落地而来的概念 , 所以我们先从AI工程化开始 。 然后试图去覆盖前面提到的两个问题 。
前菜关于AI和大数据的关系 。 如果把AI比作火箭 , 那么数据就是它的燃料 。 这个燃料可大可小 , 但是在当前的绝大部分AI算法中 , 都是越大越好 。
关于AI(Artificial Intelligence)、ML(Machine Learning)、DP(Deep Learning)之间的关系 。 AI是一个抽象的概念 , 为的是使机器表现出人的智能(比如图像/语音识别 , 翻译 , 预测…) , 而ML是实现AI的一种方法 , 也就是除了ML , 还有其他的实现AI的方法 。 比如说一些搜索算法(经典的A*) 。 而DP则是ML的子类 。 也即是Scope包含的关系:
为什么我们需要机器学习平台?文章插图
回到正题 , 所谓AI工程化 , 也即是将AI从论文里的算法、研究 , 经过一系列的工程手段 , 最终集成落地到具体的应用中;或者选择合适的模型和算法 , 经过一些优化 , 使得它能解决现实世界中真实的问题 , 并产生我们所需要的价值 。 是一个从学术研究领域到工程实践领域的一个过程 。 正因其原本是属于研究领域的事物 , 其门槛也是相当较高的(即使只做工程化落地 , 不去做学术研究) 。
最简单的一个工程化落地的例子 , 也就是将一个算法(比如人脸识别) , 根据对应算法训练出来 , 得到一个模型 。 然后将模型发布成一个服务(或者软硬件结合) , 供其他应用(比如说门禁系统)使用 , 以达到使用刷脸进出的效果(价值) 。 回到我们熟悉的传统应用 , 从代码编写到部署成一服务供其他消费者使用 , 看起来好像是一样的流程 , 这也不难嘛!可事实真的是这样吗? 我们通过一个栗子来看一个简单落地过程 , 到底还需要些什么 。
以下内容 , 以DP为例 。
举个栗子假如A是T公司的机器学习工程师 , 有一天A接到一个新的需求: 需要开发一个能够识别汽车上面的车标的模型 , 且准确率(这里不讨论评估指标 , 暂且使用准确率)在95%以上:
为什么我们需要机器学习平台?文章插图
然后公司随即为A提供了工作环境:一台闪闪发光的GPU服务器和一台自己的工作电脑 , 个人独享(可以在上面为所欲为) 。
假设A需要进行对比不同的模型来完成需求 , 这两种模型分别是来自不同的深度学习框架:Caffe和TensorFlow 。 拿到GPU服务器后的第一件事就是对服务器的配置(假设显卡已经装上) , 显然裸机是无法完成工作的 。 登录机器 , 发现这是一台CentOS的系统 , 显卡是让你打游戏能飞上天的NVIDIA Tesla V100显卡 。 那么 , 有哪些配置需要做呢?
首先 , 需要安装对应的官方显卡驱动(野鸡驱动是不行的) , Nvidia专用的并行计算框架CUDA , 以及针对深度神经网络的加速库cuDNN , 注意各版本匹配!吭哧吭哧半天过去了 。
然后 , 需要检查是否有对应版本的Caffe和TensorFlow框架(还需要GPU版本的) 。 吭哧吭哧又是大半天 , 特别是Caffe的编译安装 , 很是酸爽 。
好了 , 有了环境之后就可以开始算法了吧 , 这个时候 , 你发现在本机开发不是一个很好的选择 , 因为本机没有对应的编程环境(比如难搞的Caffe) , 而且没有GPU , 重新搭建一套环境指不定会出啥问题 , 毕竟本机的系统和服务器可不一样 。 那就上服务器开发吧 , 服务器大家都知道 , 黑盒子没有界面 。 怎么办呢 , 于是A灵机一动 , 在上面安装了Jupyter lab 。 打开Jupyter lab的UI , 美滋滋 。 终于可以开始实现需求了 。