机器学习与软件开发生命周期
2019年12月27日 由 KING 发表
163279
0
新的软件开发生命周期(SDLC)意味着要找到适应您的机器学习工作流程的方法。由于数据科学家目前将大量时间都花在基础设施和流程上,而不是在构建模型上,因此寻找软件生命周期与机器学习有效配合的方法对数据科学家的生产率和工作满意度至关重要。
但这带来了挑战。机器学习引入了SDLC无法解决的模式和技术问题。为了解决这个问题,我们既需要适应SDLC,也要解决数据科学家与其他开发人员之间的文化差异。重要的是要记住,机器学习领域仍在发展,因此是不统一的。数据科学更多的是一门艺术,而不是标准的软件开发和非常多的研究任务。相反,标准软件开发人员倾向于使他们的技术适应手头的工作并符合他们的环境。例如,在他们找到新工作时学习另一种语言,因为这是内部大多数架构所使用的语言。另一方面,机器学习任务通常特定于一种语言或一组框架,因此它们使用最适合工作的内容,从而形成了更加异构的环境。
在一个模型中,机器学习开发人员可以在特定版本级别上使用Python NLTK,而对于其他任务,他们将R与TensorFlow结合使用,并具有GPU加速功能,依此类推。这意味着当大多数标准服务软件根本不运行R时,该模型必须投入生产。这是DevOps人们从未遇到过的语言,因此他们需要一种方法来调整其服务工作流程以适应这些更异构的环境。
数据科学家和DevOps团队无法协调的另一个领域是监视和优化。在机器学习世界中,测试往往仅在模型开发过程中进行,而不是在某个服务器上的生产环境中进行。但是,对于标准开发人员来说,他们不仅在考虑是否已正确设置了初始组件,还在考虑到在世界范围内使用它时,是否可以对其进行连续验证并仍然给出预期结果?第二个问题是DevOps人员不知道如何监视模型。他们不习惯考虑模型漂移或概率结果,因此他们可能会测试机器学习模型并发现每次结果稍有不同,这可能导致他们认为模型失败了。但是,数据科学家会知道结果中必须有10%的余量。
可预测性也是一个挑战。SDLC具有可预测的预定发布时间,而数据科学周期则不稳定且不可预测。在这种情况下,软件开发人员倾向于按两周的时间表进行设置并提前计划其工作,而研究人员则倾向于按照非常抽象的时间表来工作,需要一天或两个月。
云环境是另一个需要考虑的领域。对于主要是编写代码的开发人员来说,会发生很多附加操作-您需要能够设置服务器,设置并连接到数据库,并且通常在云基础架构中进行管理。但是数据科学家并不习惯这种工作流程。他们倾向于将所有东西独立地保存在笔记本电脑上,或者通过托管服务。它们还习惯于在自我管理的环境中进行培训和测试,并且以前极不可能与DevOps一起使用。对于他们来说,这是一条相当大的学习曲线,并且常常是一个令人困惑的过程,其中涉及到他们必须破译的陌生行话,以便与IT员工就他们的工作进行沟通。