当前位置: 首页 > 科技观察

停止让数据科学家管理Kubernetes集群...

时间:2023-03-13 06:15:26 科技观察

生产机器学习存在组织问题。这个问题是生产机器学习相对年轻时代的副产品。而更成熟的领域(比如web开发)经过几十年已经探索到了极致,生产机器学习还没有到这个阶段。例如,假设您的任务是为一家初创公司组建一个产品工程团队来开发Web应用程序。即使没有组建团队的经验,您也可以找到许多关于如何组建和发展工程团队的文章和书籍。现在,假设您的公司是一家涉足机器学习的初创公司。您聘请了一位数据科学家来领导最初的工作,并获得了回报。随着机器学习与公司产品的相关性越来越高,并且随着数据科学家承担越来越多的责任,机器学习团队显然需要发展。在这种情况下,关于如何组建生产机器学习团队的文章和书籍并不多。这太常见了,机器学习公司(尤其是基础设施)的新职责落到数据科学家身上的情况时有发生。这是错误的。机器学习和机器学习基础设施之间的区别现在,平台工程师和产品工程师之间的区别很明显了。同样,数据分析师和数据工程师之间也有明显的区别。许多公司的机器学习仍然缺乏这样的专业知识。要理解为什么区分机器学习和机器学习基础设施很重要,检查它们各自的作用和所需的工具会很有帮助。为了设计和训练新模型,数据科学家需要:花时间在笔记本上分析数据和进行实验。考虑数据结构,为数据集选择正确的模型架构等等。使用Python、R、Swift或Julia等编程语言。对PyTorch或TensorFlow等机器学习框架有自己的看法。换句话说,数据科学家的角色、技能和工具将围绕着操纵数据来开发模型,而最终输出将是提供最准确预测的模型。机器学习基础设施非常不同。将模型投入生产的一种常见方法是将其作为微服务部署到云中。要将模型部署为生产API,工程师需要:同时关注分发文件、端点和云提供商控制台,以优化稳定性、延迟和成本。考虑自动扩展实例、更新模型(前提是API不会崩溃)、在GPU上运行推理等。使用Docker、Kubernetes、Istio、Flask等工具,以及云服务提供商提供的任何服务或API。下图展示了机器学习和机器学习基础设施的区别,非常直观易懂:机器学习vs.机器学习基础设施直观上,数据科学家应该处理左边的圆圈,而不是右边的圆圈。非专业人员管理基础设施有什么问题?如果必须任命某人来管理你的机器学习基础设施,但你不想让他全职做,那么只有两个选择:数据科学家,因为他们熟悉机器学习。DevOps工程师,因为他们熟悉通用基础架构。两种选择都有问题。首先,数据科学家应该花尽可能多的时间做他们擅长的事情——数据科学。虽然学习基础设施对他们来说并不困难,但基础设施和数据科学都是全职工作,将数据科学家的时间分配给他们会降低工作质量。其次,公司需要致力于机器学习基础设施的人才。在生产环境中提供模型与托管Web应用程序不同,需要专职人员在组织内宣传机器学习基础设施。这种宣传已被证明是至关重要的。笔者接触过多家机器学习公司。令人意外的是,公司内部成员的瓶颈通常不是来自于技术挑战,而是来自于公司自身的挑战。例如,我见过一些机器学习团队需要图形处理单元(GPU)进行推理——像GPT-2这样的大型模型基本上需要GPU来提供合理的延迟——但无法获得它们,因为团队的基础设施是由更大的DevOps团队管理,并且DevOps团队不想将账单计入他们的账簿。有专门负责机器学习基础设施的人,意味着公司不仅有可以不断完善基础设施的团队成员,还有可以满足团队需求的布道者。那么谁来管理基础设施呢?机器学习基础设施工程师。这样的标题可能让人认不出来,抛开标题的问题,必须承认生产机器学习还处于发展初期,更谈不上标题。不同的公司可能有不同的称呼:机器学习基础架构工程师数据科学平台工程师机器学习生产工程师Gmail的SmartCompose、Uber的ETA预测、Netflix的内容推荐等功能在软件中越来越普遍,机器学习基础架构变得越来越重要。如果一个人想要未来拥有大量支持机器学习的软件,那么消除基础设施瓶颈至关重要——要实现这一点,就需要将其视为一种真正的专业知识,让数据科学家能够专注于数据科学工作。停止让数据科学家管理Kubernetes集群......