「机器学习」我们想研发一个机器学习框架,6 个月后失败了( 二 )
有一件事很值得去做(而在项目的早期被我们忽略了) , 那就是思考一下曾经给我们启发的web框架 , 并记住他们第一次崭露头角的时候 。
Rails、Django和Symfony , 作为web应用的新MVC框架浪潮的一部分 , 它们都是在2004年到2005年间发布的 。 当时的web开发还不能称为“稳定” , 尤其是考虑到自那以后它们是如何变得成熟的(在很大程度上要感谢那些框架) , 但是web开发人员所做的工作和现在相比仍然有高度的相似性 。
事实上 , Rails最早的口号之一是“你不是一片美丽而独特的雪花” , 正是基于这样的一个事实:大多数web开发人员正在构建架构上类似的应用程序 , 这些应用程序可以在相同的配置上运行 。
生产型机器学习系统还未发展到那个阶段 。 一切仍在变化之中 。 数据科学家处理的数据类型、使用的模型体系结构、喜欢的语言/框架、应用程序的推断要求 , 以及几乎所有你能想象到的一切东西 , 都在不断变化中 。
而且 , 这个领域本身变化也很快 。 自18个月前Cortex首次发布以来:
- PyTorch已经从一个仅仅前景看好的项目发展成为最流行的机器学习框架 , 在此期间许多专门的机器学习训练库(如微软的DeepSpeed)已经发布出来 。
- OpenAI发布了有史以来最大的模型 , 可以运行带有15亿个参数的GPT-2 。 此后 , 谷歌、Salesforce、微软和Nvidia都发布了更大的机型(有些是同一数量级的) 。
- 大量初创企业已经开始使用迁移学习(Transfer Learning)和预训练模型来优化和部署具有少量数据的模型(比如说 , 并非每个人现在都需要一个100节点的Spark群集) 。
每个人都会要求他们需要的“一个特性” , 而没有人有相同的要求 。 我们试图构建一些通用的特性 , 但很快就发现这是不可行的 , 至少不是我们想象的那样 。
本文插图
专注于模型服务基础设施 构建一个端到端的机器学习框架是很困难的 , 因为大部分的机器学习生态系统仍然是“蛮荒的西部” 。 然而 , 其中的“模型服务”已经具有了稳定性和一致性 。
不管他们使用什么堆栈 , 大多数团队都是通过先将模型封装在API中 , 然后部署到云端(尽管他们不喜欢这样做)来将其投入生产 ,。
数据科学家不喜欢它 , 因为用于构建弹性web服务的工具 , 如 Docker、Kubernetes、EC2/GCE、负载均衡器等等 , 都不在他们的触手可及之处 。 DevOps工程师对模型推断的独特之处感到恼火 。
但是对我们来说 , 这是一个机会 。 “模型作为微服务(model-as-a-microservice)”的设计模式对所有团队来说是一致的 , 而它提供的工具 , 因为它是基础设施(而不是机器学习生态系统)的一部分 , 所以非常稳定 。 更有利的是 , 作为软件工程师 , 我们在构建生产型web服务方面比在构建机器学习管道方面更有经验 。
所以 , 我们想在模型服务上尝试一下 。 我们应用了相同的设计原则 , 抽象了声明性YAML配置和最小CLI背后的所有低层次的不同 , 并自动化了将一个经过训练的模型转换为一个可伸缩的生产型web服务的过程:
本文插图
通过专注于模型服务 , 我们可以对堆栈的其余部不加理会(只要模型有Python绑定 , Cortex就可以为其服务) 。 因为Cortex可以插入任何堆栈 , 所以我们对Cortex在底层使用的工具有了话语权 , 这又使得构建更高级别的特性变得更加容易 。
例如 , 自从发布用于模型服务的Cortex以来 , 我们增加了对GPU推断、基于请求的自动缩放、滚动更新和预测监视的支持 。 我们不需要为十几个不同的容器运行时和集群编排器实现这些功能 。 Cortex在底层使用Docker和Kubernetes , 用户从来不需要接触它们中的任何一下 。
- 『学霸』学渣变学霸:教育界证明最有效的4个学习方法,建议家长收藏
- 央视央视体育频道负责人:目前我们与NBA方面没有任何接触
- 【物理】初二发力学习,初三语文成绩才能逆袭,别让你的小聪明耽误了语文
- 「小学语文」100篇小学语文阅读理解及答案,孩子学习用得上!
- 江瀚视野外贸订单消失了,我们该怎么办?,中国大量外贸企业面临困境
- 埃尔法哥哥万物互联的5G时代,将会给我们的生活带来哪些变化?
- 互联网圈里人华为回应澳大利亚无端猜疑:对我们的指责根本没有事实基础
- 爱思助手iPhone SE 2忘记锁屏密码了怎么办?
- 财经手册社会经济快速成长!我们如何理财?
- 金融老教授这股实控人变更,留意