阅读我们的文章

.

在这篇评论文章中,Jeffery 解释说,data 科学家应专注于模型的准确性,而 ML 工程师则应优先确保模型可用于更广泛的业务。.

我们中的许多开发人员都深有体会,在花时间了解用户需求与实际开发软件之间难以取得平衡。这一点在 data 科学中更为明显,因为要构建一个有效的系统,需要大量的系统领域知识。在过去的几年里,我作为一名 ML 工程师,在不同的领域工作过。 data 科学 我经常问自己,如何才能将优化模型准确性和构建模型功能所需的所有软件的职责分开。我的拙见是,data 科学家应优先考虑其模型的准确性,而 ML 工程师则应优先确保这些模型可用于更广泛的业务。.

作为 data 科学项目的一般经验法则,完成的迭代越多越好。因此,让我们来看看为什么从第一天起就引入一名 ML 工程师将有助于您进行迭代,从而增加您构建成功系统的机会。为了涵盖所有方面,我们将把每个原因分成 data 科学项目的三大主题: data,型号  基础设施.

在谈这个问题之前,请允许我先定义一下我所说的 迭代. .在本文中,我指的是完整产品的端到端迭代,通常包括以下步骤:data 摄取、预处理、模型训练和评估、配置基础设施等步骤。我 不要 就是在笔记本中快速迭代模型,并对超参数进行调整。如果您习惯在敏捷框架下工作,同样可以将这些迭代视为项目冲刺。.

原因 1:加快初始 POC 的交付

Reason 1 ML Engineers : Accelerate the initial POC delivery

首要任务是建立一个可以迭代的骨架,这可能是一个漫长的过程。这个骨架通常是一个 POC,包含您的初始基线模型和一个应用程序或利用模型输出的方法的演示。.

一名 ML 工程师将在以下方面提供帮助

基础设施 选择兼容的 cloud 资源(虚拟机、与各种 data 信号源的连接)和设计 cloud 架构是 ML 工程师的一些初步考虑因素。.

Data: 获得开始建立模型所需的 data 并确保从各种来源获得 data,必要时可选择开发新的流量。.

型号 确保正在测试的模型符合 cloud 架构的模型部署和技术要求(如延迟、所需计算 量、生产环境要求)。.

在这一阶段,ML 工程师还可以帮助定义软件工程的最佳实践,如版本控制、内核、代码架构、测试等。.

原因 2:加速每次迭代

Reason 2 ML Engineers : Accelerate each iteration

一旦实现了初始构建,最初的几次迭代通常会很困难,速度也很慢。加快迭代速度可以实现更小的迭代,只需更改一个功能,这比在获得反馈之前更改模型中的许多内容要有效得多。.

基础设施 可以节省优化存储和计算基础设施的时间。在这些迭代过程中,ML 工程师可以利用基础设施即代码(IaC)工具(如 Terraform. .使用 IaC 可以直接利用 CI/CD 管道实现基础架构部署自动化,加速整合需要对现有基础架构进行的任何更改,并创建不同的 cloud 环境(开发、暂存、生产)。使用特定的 cloud 组件还可以加快工作流程,例如使用 GCP 的 云构建.

Data: data 科学团队可以快速建立预处理管道,以便快速建模。在这一阶段,ML 工程师可以帮助您简化处理查询,无论是 sql、pandas 还是 pyspark 等。从长远来看,早期这样做可以节省大量的迭代时间,因为这些代码在运行过程中 不少.

型号 复杂的模型架构可能会导致漫长的训练过程。此外,当 data 科学家提到 “模型 ”时,他们实际上指的可能是在 data 不同切片上训练的 100 个模型,每个模型都有一个 SHAP 解释器,用于推导特征重要性。ML 工程师可以专注于如何并行化训练管道,无论是在使用 python 多处理的虚拟机上,还是在 cloud 上的多个节点上分配您的工作负载。这本身可以反复进行,但只需花很少的精力就能取得重大成果。使用 CI/CD/CT 管道还能大大加快迭代速度,确保可重复性。.

理由 3:降低每次迭代的成本

Reason 3 ML Engineers : Reduce the cost of each iteration

配备一名工程师来监控项目的 cloud 预算至关重要,尤其是对于 data 密集型应用而言。.

基础设施 成本是基础设施选择等式中的一个主要变量。一旦选择了基础设施,就可以实施预算预警,以确保对成本高昂的组件进行密切监控。.

Data: 智能查询和 data 存储也能显著降低每次迭代的成本。例如,在模型迭代过程中,应尽量减少 data 的聚合。.

型号 并行化训练流水线还可以节省昂贵机器的运行时间或无服务器组件的运行时间。.

理由 4:确保每次迭代的可重复性和可解释性

Reason 4 ML Engineers : Ensure repeatability & interpretability of each iteration

在项目中实现快速迭代和高质量的反馈循环固然很好,但如果您无法 replay 这些场景中的每一种,那就没什么用了。拥有一个可重复的流水线隐含的意思是,你应该有某种方法来监控流水线的运行,根据特定的参数或性能指标来识别运行,以便在必要时进行回滚。在开发过程中稳健地设置这一点有助于 data 科学家自由地进行实验(无需使用臭名昭著的 Untitled12.ipynb),并为生产监控管道做好准备。.

基础设施 将训练代码版本与基础架构代码版本联系起来是 “额外的一英里”,但对于提供完全回滚功能到之前的运行是必要的。对我来说,确保管道运行的可重复性和监控是团队应努力实现的 ML Ops 的第一级基本目标。云平台服务(GCP 的 Vertex AI 但您也可以考虑使用开源工具,采取 “同类最佳 ”的方法。这里需要权衡的是,特定开源工具的更多功能与系统整体基础设施复杂性的增加。.

Data: 保存管道中每个阶段的所有 data 对象。根据数量,优先保存每次运行的训练集/测试集。.

型号 如上所述,保存每次运行的所有模型以及所有必要的参数和指标。另一个技巧是在每次运行时记录注释,说明该特定运行的更改内容,以便在开发过程中记录所有实验,就像使用 git commit 留言.

理由 5:不惜一切代价避免紧张的 “工业化 ”迭代

Reason 5 ML Engineers : Avoid at all costs the hectic “industrialisation” iterations

当 data 科学出现时,它是非常探索性的,需要一组软件工程师的大量努力,才能在历史 data 上显示出良好性能后部署任何模型。这个 “工业化 ”阶段是非常痛苦的经历,因为开发环境(平面文件和 python 笔记本)与生产环境(使用生产 data 的自动化 data 流程和生产编码环境)截然不同。我所参与过的最成功的项目都是在开发初期就尽可能地复制生产环境的项目。这将缩短投入生产的时间,并允许您在开发过程中安全地进行迭代,在对迭代感到满意时再部署到生产环境中。.

基础设施 在开发过程中模拟必要的生产基础架构并非易事,而且成本高昂。这就是基础架构即代码的用处,它能让你在不同环境间轻松切换。.

Data: 将 data 科学开发与传统软件工程甚至 data 工程区分开来的一点是,data 科学家在开发过程中需要生产 data。用于常规 data 工程的沙盒 data(不包括某些 data 或包括某些合成测试 data)在开发过程中是一种很好的做法,但对于 data 科学来说可能会浪费大量时间,并对整个 data 科学流水线产生巨大影响。因此,从第一天开始,就应该与 data 团队协商对生产表的只读访问权限。.

型号 从项目一开始,生产代码中就只能有一个模型(或建模方法)。所有实验都应保存在笔记本中或另一个文件夹中的单独临时脚本中。这样可以避免在生产代码库中积累死代码,而且更易于维护或让其他开发人员加入。.

结论

总之,从每个项目一开始,建立模型和建立围绕这些模型的软件就应该是两个优先事项。因此,拥有不同职责的独立流程可以帮助团队同时专注于这两方面的工作。ML 工程师的角色正在日新月异地演变,我很乐意听听您对我遗漏的任何内容的看法!

中号 Blog by Artefact。.

本文最初发表于 Medium.com.
在我们的 Medium Blog 上关注我们!