为什么我们需要机器学习平台?( 四 )
部署成一个服务 , 其实并不难 。 比如随便使用Flask或者其他Web框架包一层就可以用 。 但是得考虑到通用性 , 以及高可用、安全性、高性能 , 就不那么简单了 。 当然还有更高级的 , 比如模型的路由(A/B Test) , 模型组合等 。
如何提供通用的模型部署功能 , 因为训练出的不同的模型需要不同的环境、框架支持 , 而且使用方式上也不一致 。 有些框架自带了Serving功能 , 比如TensorFlow , 有些不带;这个还是差异较大的一块 。
当然这个领域也有对应的开源解决方案 , 现在开源的较有名气的 , 比如说Seldon(kubeflow使用)/MLFLow 。 它们的解决思路其实类似 , 都是封装了流程 , 留白对应接口 。 用户只需要按照对应流程 , 使用对应工具 , 填充对应的空缺即可 。 可以理解为模板方法 。 如果要自研 , 可以借鉴它们的思路以满足自己的需要 。 需要考量的因素上面也提到了 。
5.版本管理模型是我们的产出 , 而且很明显 , 这个模型并不是训练好了就会一直使用 , 永不改变 。 它是在不断迭代、不断优化的 , 当然使用不同的版本来进行A/B Test也是很常见的需求 。 在此时 , 针对模型(或者说是模型部署的服务)的版本管理就显得很重要了 。 这部分相对来说较为简单 。 不管是对模型本身、还是发布的服务都不是什么大问题 。
6.Ops相关这一部分其实贯穿了整个机器学习流程 。 比如:
- 任务调度 - 选择合适的机器或者集群去调度任务 。
- 训练过程监控 - 比如任务状态、Metric变化等 。
- 资源监控 - 比如GPU、CPU、存储使用情况 。
- 日志可视化 - 比如任务运行的日志、平台本身的日志、用户操作的日志等 。
- 当然还有多租户 , 一些安全性的问题 , 比如模型发布的服务权限管理 , 用户操作的权限等 。
7.高级特性一些高级的功能 , 比如AutoML:
超参数训练 , 让平台能够使用不同算法自动获取超参数 , 比如使用常见的Random Search、Grid Search 和贝叶斯优化方法等进行调参 。
模型结构搜索 , 这个就更高级了 , 需要更深厚的专业领域知识和对应的工程化能力 。
当然 , 还有一些 , 比较高级的用于可视化或者降低机器学习门槛的功能 。 比如模型结构的可视化以及通过可视化的方式建模 。 这些已经有机器学习平台实现了 , 比如阿里的PAI 。 再比如能写SQL就能写AI的SQLFlow 。
文章插图
总结对于一个机器学习平台 。 困难的核心点有如下几个:
- 到目前为止 , 有许多东西是没有一个统一的标准的 , 比如数据标注结果的存储格式 。
- 有太多的框架 , 太多的环境 , 太多的版本 , 与之对应 , 不同框架最后生成的模型 。 也都是各不相同的 , 如果想要实现标准的模型压缩、发布 , 也是比较困难的一件事 。
- 在往下 , 机器学习太依赖于GPU , 对于GPU的管理、调度 。 目前来说也不是非常成熟的一件事(比如说GPU虚拟化) , 特别是不同的GPU也是不一样的;即便是同一厂商 , 比如Nvidia , 对于不同型号的显卡 , 同一模型也不一定能正常运行 。 尽管现在可以通过某些手段 , 比如说CUDA来屏蔽不同显卡的差异性 。 但难免有些模型直接操作的GPU指令集 , 比如Caffe 。
- 分布式训练 。 这块目前正在快速发展中 , 坑还是挺多 , 不是非常成熟 , 需要一一淌下 。
以上内容 , 为项目上的实践 , 以及个人理解总结而来 。 如有不对的地方 , 欢迎指正 , 万分感谢~~
【为什么我们需要机器学习平台?】文/ThoughtWorks彭青松
- 看不上|为什么还有用户看不上华为Mate40系列来看看内行人怎么说
- 制药领域|为什么AI制药这么火,为什么是现在?
- 退费|女子公众号上买菜,出现问题时已充上万元,公司:我们没有退费规矩
- 自助|新型通道-健康码自助核验闸机
- 手机壳里头|为什么要在手机壳里面夹钱?10个有9个不懂,我才知道大有讲究
- 人类|距离人类“玩坏”自己的电脑桌面,还需要多久?
- 短视频|全球最火APP?抖音爆火背后离不开这几剂“猛药”为什么抖音能够这么火?
- 电商快递|包邮不香吗,为什么还有人加49元让小哥穿西装专车送快递?
- 团队|为什么项目管理非常重要?
- 猫腻|为什么拼多多上商品价格那么便宜还包邮?有什么猫腻?看完明白了