连通系统与机器学习的 MLOps 面临的挑战详解
机器学习正在改变人们对数据的使用方式与交互形式,推动商业效率提升,并在多个行业产生深远影响。要继续扩大影响力,构建高效的训练与部署管线(pipeline)需要在系统层面进行更系统的改进。通过把数据库、分布式计算与应用部署领域的经验带入机器学习,研究者可以实现对 ML 系统的重新设计,以更好地支撑实践中的需求,借助模型并行与现有方案的改良,提升整体系统能力。

在过去十年,机器学习已成为众多应用与服务的重要组成部分,推动了从医疗健康到自动驾驶等领域的变革。与此同时,实践中的 ML 需求也催生了一个聚焦“机器学习在实际中的应用”的新领域:ML Ops。该领域连接了计算机系统与机器学习,并从传统系统研究的视角,审视机器学习所面临的新挑战。
究竟有哪些挑战?学者们常借助早期研究的架构模型,逐项拆解典型 ML 系统中的问题与组成部分。

相关研究常以 ML 系统架构为框架,聚焦数据收集、验证与服务任务,以及训练阶段中的难点,因为近年来模型训练成为系统开发中成本高企的部分。
下面对核心环节逐一分析。
数据收集
在行业实践中,尽管学术界对公开数据集如 CIFAR、SQuAD 等较为满意,但实际应用往往需要手动标注并生成定制数据集,且某些领域需要大量领域知识,成本极高。这使得数据获取与准备成为 ML 系统开发中的主要挑战之一。
为应对这一问题,研究者和工程师常借鉴跨领域的研究方法。例如,结合数据管理技术与自监督学习,提出通过弱监督数据生成与整合来提升数据标注效率与数据质量的方案。

SnoRkelAI 的思路即是整合来自多源的标签,允许模型大规模聚合与改进混合质量的标签数据。这一做法与数据库数据融合的理念相通,强调把系统级数据处理能力应用到 ML 设置中,而非从零重新发明。
通过识别系统与 ML 共同的挑战,并结合数据源的多样性,可以将传统系统技术迁移并应用到机器学习的训练与验证场景中。
数据验证
数据验证是数据收集后的关键环节,决定了输入数据的质量,进而影响到模型的最终性能。单靠改进 ML 方法往往难以解决数据质量问题,必须在 ML 系统层面进行调整与治理。
关于数据验证的思路,相关研究常借鉴数据库等领域的成熟做法。例如,数据模式化与规则化输入的做法在 ML 场景中也需要重新设计,以应对分布变化与模型在生命周期中潜在的自我变化。

将数据模式化与验证规则应用于 ML,可以帮助用户避免输入数据中出现的异常,并降低系统在数据馈送阶段的风险。需要注意的是,ML 的场景具有连续、分布变化与模型演进等特殊性,因此验证机制也需具备更强的灵活性与可追踪性。
例如,已有研究将数据验证中的模式化机制与数据治理原则结合,提升了对输入数据的约束力,确保进入模型的数据符合预期结构与规则。
模型训练
不少人可能会惊讶地发现,模型训练也被视作系统优化的一个重要领域。随着模型规模的持续扩大,如从前期的较大模型到如今的极大规模语言模型,训练阶段的计算与内存成本成为系统设计的核心挑战之一。
以模型并行化为例,随着大模型的发展,单一设备往往无法容纳完整模型需要的内存。传统做法是将模型划分到多台设备上,但分割和并行带来一系列瓶颈与同步开销。

单纯的模型并行化受制于神经网络的层序性与前向/后向传播的依赖关系,导致设备利用率难以达到理想水平。为提升可扩展性,系统研究尝试将训练过程分解为一组可并行的算子,并将训练流程类比为流水线操作,利用并行化策略提高吞吐。
例如,研究提出通过对训练过程进行分区并线性地将分区作为流水线阶段来进行 mini-batch 的分级处理,以最大化资源利用。另有方法将流水线并行性与数据并行性结合,通过跨设备的协同执行提升整体性能。

在流水线并行化的发展中,前向与后向传播之间的依赖仍带来同步开销,但通过分区化、适当的并行策略与任务调度,训练速度可以显著提升。当模型在多个 GPU 间分区并行时,往往能达到更高的加速比。还有一些方法通过使非活跃分区暂时溢出至更低级的存储层,避免阻塞核心计算,从而降低成本并提升总体效率。

通过溢出技术与分区切换,可以在不牺牲显存优势的前提下实现高效的并行训练。在多 GPU 场景下,适当的并行设计能够带来显著的加速。需要注意的是,模型并行只是系统研究在训练阶段的一个方面,数据并行、模型选择、分布式执行框架等也是提升训练效率的重要方向。
模型服务
最终,构建并部署模型的目的在于实际应用:模型服务与预测是最重要的落地环节之一,也是系统研究带来最大影响的领域。
预测部署通常分为离线与在线两类:离线部署聚焦大规模批量预测,在线部署则需要对单次请求提供尽可能低的延迟响应,二者在吞吐量与响应时间上有不同的要求。
为高效地支持两种场景,系统研究不断优化推理服务的处理方式。某些研究将视频分析等任务重新建模,将其视作需要高效推理的计算过程,进而设计更适合的硬件与软件协同方案。