「机器学习」我们想研发一个机器学习框架,6 个月后失败了
本文插图
本文插图
如何从先期的失败中找到一条成功之路 , 本文试图作了一番探讨 。 ——Caleb Kaiser写于2020年4月24日 。
作者 | Caleb Kaiser
编译 | 苏本如
出品 | AI科技大本营(ID:rgznai100)
2019年初 , 我们几个人尝试构建一个端到端的机器学习(ML – Machine Learning)框架 。 我们从这次尝试中得到的基本体会是 , 构建机器学习管道是一个令人沮丧的、毫无逻辑的体验 , 而且我们应该可以构建更好的东西 。
这次尝试并没有按照原先计划地进行 。
我将在本文对这次尝试作一个详尽地介绍 , 下面先介绍大致情况:
- 我们使用Kaggle数据集为机器学习管道的数据接收、训练、部署等不同阶段编写了抽象 。
- 我们将代码库开源并共享 。 一个月后 , 我们的项目登上了HN的首页 。 每个人都喜欢那些改进机器学习用户体验的想法 。
- 六个月后 , 我们只收获了几百颗GitHub星星 , 几乎没有人使用它 。 我们不得不将我们的傲气搁到一边 , 删除了代码库中90%的代码 。
生产型机器学习系统确实需要更好的用户体验 , 但是机器学习生态系统是非常复杂和不断变化的 , 这使得构建一个涵盖大量用例的解决方案非常困难 。
本文插图
为什么想构建端到端的机器学习框架? 我们大多数人(Cortex的贡献者)都有devops和web开发的背景 , 习惯于将应用程序的不同层抽象为单个接口的框架 。
当我们进入机器学习时 , 每个人都被工具的支离破碎所震惊 。 我们想构建推荐引擎和聊天机器人(或者更确切地说 , 会话代理) , 但在这样做的过程中 , 我们发现自己不得不在不同的环境之间(Jupyter Notebook、终端、AWS控制台等等)跳跃 。 然后把包含有胶水代码和TensorFlow样板文件的整个文件夹写到一起 , 用一个称为“管道”的强力胶带粘合起来 。
如果我们可以用一个配置文件和命令粘合在一起来代替以上所有的步骤 , 比如:
$ deploy recommendation_engine
那显然是个好的主意 。所以我们就这么做了 。 我们构建了这样的一个框架 , 它使用Python转换数据 , 使用YAML构建管道 , 并使用一个CLI(命令行界面)控制所有步骤:
本文插图
当你使用我们支持的窄技术堆栈 , 同时加上对API的限制 , 向它提供Kaggle数据集时 , 成为了一个非常好的框架 。
然而 , 如果你想尝试在现实世界中使用它 , 基本上很可能它不会与你的技术堆栈一起工作 。 毫无疑问这是一个问题 。 虽然这个问题的其中一部分原因归结于我们的设计 , 但很大一部分原因实际上是因为构建端到端机器学习框架的固有局限 , 我们只是在构建了这个端到端机器学习框架之后才发现这一点 。
本文插图
端到端机器学习框架的问题
简单的一种说法是:对于端到端的框架来说 , 生产型机器学习生态系统太简单 , 不可能既不灵活又正确无误 。
机器学习工程师希望使用更好的UX工具 , 这一点我们没有错 。 我们的错误在于我们以为可以构建一个覆盖多个用例的端到端机器学习框架(特别在只有几个贡献者的情况下) 。
- 『学霸』学渣变学霸:教育界证明最有效的4个学习方法,建议家长收藏
- 央视央视体育频道负责人:目前我们与NBA方面没有任何接触
- 【物理】初二发力学习,初三语文成绩才能逆袭,别让你的小聪明耽误了语文
- 「小学语文」100篇小学语文阅读理解及答案,孩子学习用得上!
- 江瀚视野外贸订单消失了,我们该怎么办?,中国大量外贸企业面临困境
- 埃尔法哥哥万物互联的5G时代,将会给我们的生活带来哪些变化?
- 互联网圈里人华为回应澳大利亚无端猜疑:对我们的指责根本没有事实基础
- 爱思助手iPhone SE 2忘记锁屏密码了怎么办?
- 财经手册社会经济快速成长!我们如何理财?
- 金融老教授这股实控人变更,留意