跳到主要内容

AI & Data

机器学习工程师

机器学习工程师把模型当作一个运行中的系统,而不是一个结果:产出它的流水线、喂给它的特征、响应请求的服务,以及在世界已经变化而模型没有跟上时能够察觉的监控。一个在 notebook 里分数很好的模型,只是工作的起点。本指南解释这门学科,以及它如何融入现有团队。

机器学习工程师具体做什么?

机器学习工程师负责在生产环境中构建、训练、部署并维护预测模型。职责范围包括准备并构造模型所消费的特征、运行可复现的训练流水线、记录并比较实验、对模型产物做版本管理与登记、把它部署在满足延迟预算的服务接口之后,以及监控那些会随时间侵蚀准确率的数据与行为变化。这一角色的定义性部分,是第一个好的离线分数之后的一切:打包、训练与推理的一致性、成本、可观测性、回滚与重训。

这个领域最典型的生产缺陷,是同一个数值在训练时的计算方式与请求到来时的计算方式不一致。一个在批处理作业里基于完整历史表算出来的特征,到了请求时用不完整的数据、或者用略有差别的定义重新计算,就会得到一个离线验证漂亮、线上表现平平的模型。共享的转换代码和特征平台,主要就是为了堵上这道缝;而没有被它坑过的工程师,往往会低估它。

这里对可复现性的要求高于普通软件,因为一个模型产物同时是代码、训练数据、超参数、随机种子和依赖库版本的函数。几个月后重新构建出某个已部署的具体产物,在受监管行业是审计要求,在其他地方则是事故响应要求,而这只有在数据与代码一同被版本化、而不是在提交信息里被描述过的情况下才可能做到。

而且,模型会在什么都没变的情况下衰减。放着不动的软件明年表现还是一样;放着不动的模型会越来越差,因为它评分的人群正逐渐偏离它学习时的人群,有时则是因为它编码的那种关系确实已经不再成立。决定监控什么、什么阈值触发重建、以及重建是自动上线还是等待审批,是一项长期职责,而不是项目的某个阶段。

判断是否需要

团队在什么情况下需要这项能力

相当多的建模工作,会卡在“必须离开笔记本电脑”的那一刻。以下这些压力,通常就是为这一层配置专职工程师开始值得投入的时候。

  • 一个有希望的模型无处可去

    它在 notebook 里表现很好,却没有通往请求服务的路径。打包、依赖固定、延迟预算、训练与推理的特征一致性、批处理、弹性伸缩和回滚方案,全都缺席,而其中每一项对建模的人来说都很陌生。

  • 预测准确率悄悄下降了

    没有人收到告警,因为什么都没有失败。退化是通过某个经营指标的变动、或者某个运营团队开始不信任它才浮出水面的,这意味着它在被人注意到之前已经持续了一段时间。

  • 重训是一套手工仪式

    一个人、一份写在某处的操作步骤,外加一整个工作周。它很脆弱,在真正要紧的地方没有文档,而且那个人不在时就完全停摆。

  • 实验既无法比较也无法重现

    结果散落在截图和聊天记录里,好几个变体共用一个文件名,没有人能有把握地说出当前正在服务流量的那个产物,是由哪份数据集和哪组参数产生的。

  • 推理已经成为成本或延迟上的约束

    加速卡开销在基础设施账单里占了大头,或者响应预算容纳不下这个模型。可用的手段——批处理、量化、蒸馏、缓存、更小的架构——都在拿准确率换经济性,需要有人能把这笔交换量化出来。

  • 审计或合规义务到来了

    现在得有人拿出证据:哪些数据训练了这个已部署的模型、谁批准了它、它在受影响人群上的表现如何,以及某一次具体决策该如何被解释。事后重建这些,要比一路记录下来困难得多。

这个领域

核心能力

  • 特征工程与训练推理一致性

    构造模型学习所用的输入,并保证请求预测时运行的是完全相同的计算。这种一致性要作为部署的一部分被验证,而不是靠“大家本意相同”去假定。

  • 可复现的训练流水线

    参数化、可调度、端到端版本化,训练数据固定得和代码一样牢。重跑上个季度的配置,应当产出上个季度的那个产物,而不是它的近似值。

  • 实验记录

    记录配置、数据集、指标和产物,使各个变体可以被诚实地比较,并且一个结论在几周之后仍然可以被论证,而不必依赖任何人的记忆。

  • 评估与指标选择

    选择能反映该模型所支撑决策的度量,理解校准与排序质量是两回事,处理类别不平衡,并依据两类错误各自的代价来设定阈值。

  • 模型登记与晋级

    带版本的产物,能追溯回产生它的那一次具体训练运行;有明确的“候选到上线”的路径;以及在一次发布出问题时快速回退到上一个产物的能力。

  • 服务与推理

    实时接口、批量打分、流式打分、请求批处理、加速卡利用率,以及那些在并发条件下把九十五分位延迟守在预算之内的架构决策。

  • 漂移检测与重训

    既观察输入分布也观察输出分布,区分“人群变了”和“底层关系变了”,并定义什么触发重建、什么为它把关、由谁签字。

  • 分布式与加速训练

    数据并行与模型并行、显存预算、能在实例被中断后继续的检查点机制,以及预留算力与可中断算力之间的实际经济性。

  • 既有模型的适配

    判断迁移学习或对已发布模型做参数高效微调,何时优于从零训练,以及这个选择对许可、可复现性和实际所需数据量各意味着什么。

  • 负责任的部署

    不只看总体表现,也度量在受影响人群上的表现;在决策影响到个人时提供解释;在切入线上流量之前做影子部署;并在风险要求时保留一条人工复核路径。

背景

技术生态

以下列出的是机器学习工程领域的常用技术。这描述的是该学科在业界的普遍实践,并非对某位工程师技能的说明。服务栈和编排产品被替换的频率,远高于底层实践本身的变化,因此熟悉某一个具体产品的预测力,远不如“维护过一个必须持续可用的模型”的经历。

语言

  • Python
  • SQL
  • Scala
  • C++

建模框架

  • PyTorch
  • TensorFlow
  • JAX
  • scikit-learn
  • XGBoost
  • LightGBM

训练与工作流编排

  • Kubeflow
  • Metaflow
  • Ray
  • Apache Airflow
  • Amazon SageMaker
  • Google Vertex AI

实验记录与模型登记

  • MLflow
  • Weights & Biases
  • Neptune
  • DVC

特征管理

  • Feast
  • Tecton
  • Delta Lake
  • Apache Parquet

服务与推理

  • NVIDIA Triton
  • TorchServe
  • BentoML
  • KServe
  • ONNX Runtime
  • TensorRT

监控

  • Evidently
  • Arize
  • WhyLabs
  • Prometheus
  • Grafana

Working model

这个角色如何与您的团队协作

工程师在您的团队内部工作,遵循您的优先级和标准。日常开发方向由您掌握,Talent.ID 负责雇佣关系。下面的分工就是全部安排。

由您掌握

  • 产品
  • 业务优先级
  • 路线图
  • 架构
  • 冲刺优先级
  • 工程标准
  • 日常技术协作

由 Talent.ID 负责

  • 雇佣关系
  • 薪资发放
  • 员工福利
  • 人才管理
  • 持续的员工关系

合作如何一步步展开

示例场景

实际协作大致是这样

这是一个假设场景,用于说明协作方式如何落地。它并不描述 Talent.ID 的客户或已完成的项目。

挑战
若干个模型正在承接生产流量,每一个都由最初构建它的人非正式地维护着。重训靠手工完成,登记表里的产物无法追溯回产生它们的那次运行,而最近一次关于准确率的投诉很难归因,因为输入分布的情况从来没有被记录过。
做法
追加的工程能力在团队既有的实践内运作——他们的代码仓库、他们的评审约定、他们的部署流程,以及他们已经确定的技术方向。产品优先级和架构决定权仍属于内部团队;追加的能力与他们并肩处理流水线、模型登记与监控方面的工作。
为团队带来什么
团队提高了产出,而不必交出对自身模型或平台决策的所有权。做什么、以什么顺序做、达到什么标准,仍然掌握在对结果负责的人手中。

常见问题

常见问题

机器学习工程师和数据科学家有什么区别?
交付物不同。数据科学家确定应当度量什么、设计研究方法、判断观察到的效应是否真实,并把结论传达给必须据此行动的人。机器学习工程师则把一种建模思路变成一个能可靠训练、能在预算内响应请求、并且在条件变化时仍然可用的东西。两者的技能在中间地带重叠,而失败方式不同:一个产出无人能据以行动的答案,另一个产出一套没人论证过是否值得建的系统。
这个角色与 AI 工程师有何不同?
机器学习工程师产出并维护模型。AI 工程师围绕别人训练好的基础模型构建应用,时间花在检索、上下文、评测体系和护栏上,而不是训练运行与特征流水线上。两者都可能说自己“做模型”,但日常工作几乎完全不同,因此在职位描述里明确指出这项工作需要哪一种,是值得的。
机器学习工程师需要研究背景吗?
对多数商业工作而言,不需要。新颖的架构和发表研究确实需要它,但生产环境中的大部分价值来自数据质量、合理的特征、诚实的评估和可靠的运行——这些是工程能力而不是研究能力。博士学位既不是要求也不是减分项,而默认按此筛选会大幅收窄候选范围,却并不改善结果。
MLOps 是一个独立岗位吗?
在某个规模以下,它是一种实践而不是一个岗位:训练模型的同一批工程师,也负责流水线、模型登记、服务和监控。当多个团队都在共享基础设施上交付模型之后,通常会分化出一个平台方向,它更接近平台工程而不是建模。过早设立这个岗位,往往会产出没有用户的基础设施。
模型应该多久重训一次?
固定周期只是真正要紧之事的一个代理指标,真正要紧的是:模型所处的环境是否已经变化到足以伤害它。有些模型多年不动也没问题;另一些在一次调价或一个季节性变化之后几周内就开始退化。稳妥的做法是监控输入与结果、定义触发条件,并把任何日历周期当作安全网而不是机制本身。
数据工程师能转到这个角色吗?
这是一条走得比较多的路径,因为其中相当大一部分工作是候选人本就会做的流水线建设。需要补上的是统计判断力:选择评估度量、识别数据泄漏、理解离线分数为什么会高估线上表现,以及解读漂移而不只是检测到漂移。
机器学习工程师如何与现有的工程团队协作?
在技术团队扩展的模式下,日常的开发优先级和技术决策由您的团队掌握。您的规范、您的架构、您的路线图和您的冲刺规划决定实际发生什么,技术协作的对象是您自己的工程师。Talent.ID 负责雇佣他们:雇佣关系、薪资发放、员工福利、人才管理,以及全程持续的员工关系。

告诉我们您的团队需要什么

描述一下缺口——工作内容、技术栈、团队的运作方式——我们会告诉您能支持到什么程度。如果这不是我们能帮上忙的事情,我们会直说。