theator 如何构建持续训练框架以扩展其手术智能平台

2020年12月17日

原文发布于 PyTorch Medium 作者:Omri Bar  – 经作者许可转载 

TL;DR

    • theator 通过自动化改进了其由 ML 和计算机视觉驱动的手术智能平台,实施了完整的持续集成(CI)/交付(CD)/训练(CT)管道,并创建了一个反馈循环来收集推理数据,以便与现有训练数据集集成,从而实现改进和持续训练(CT)。
    • PyTorch 被选为用于研究探索和生产推理的主要 ML/DL 框架,而 ClearML 作为底层 MLOps 解决方案,因其有效性和健壮性而被选中,其中包括:实验管理、编排、数据操作,以及优化物理数据流等额外功能——所有这些都在一个单一的控制平面/仪表板中进行管理,用于独立的进程、管道、个人等。
    • 为了使此工作流程奏效,数据管理解决方案的设置包括:数据集版本控制;可查询数据集;混合和匹配数据集的能力;平衡数据集;优化数据加载,而 ClearML 本身已开箱即用地具备所有这些能力,包括持续迁移到生产环境的部署。

进行手术在很大程度上是关于决策。正如 Frank Spencer 医生在 1978 年所说:“一台熟练的手术约 75% 是决策,25% 是技巧”。五十年后,外科领域终于——尽管是循序渐进地——开始应用数据科学和人工智能的进步,以增强外科医生在手术室做出最佳决策的能力。这正是 theator 的切入点:这家公司正在利用高度先进的 AI,特别是机器学习和计算机视觉技术,通过其手术智能平台重新构想手术,分析手术过程中的每一个步骤、事件、里程碑和关键节点——显著提升了外科医生的整体表现。

该平台的基于视频的分析能够处理冗长的手术操作视频,并在保持患者隐私的同时从中提取有意义的信息,为外科医生提供手术关键时刻的精彩片段,并辅以注释。这种对过去手术的定量可视化不仅使外科医生能够通过手术不断改进技艺,还能为未来的手术提供最佳实践指导。

我们是如何实现这一点的?自动化至关重要。随着我们的研发团队壮大,我们开始意识到,我们将太多时间花在了手动运行模型训练和专注于 DevOps 任务上,而没有足够的时间投入到核心产品开发中。那时我们意识到,手动运行所有这些过程是不可行的,自动化训练管道是绝对的必须。现在,当新的数据传入时,它会立即被处理并直接输入训练管道——这加快了工作流程,最大限度地减少了人为错误,并解放了我们的研究团队去处理更重要的任务。

以下是我们自动化过程的来龙去脉。

从软件领域到数据科学领域

在 theator,我们强大的工程文化补充了我们的核心研究原则和实践。为了自动化我们的训练管道,我们决定借鉴软件工程中的“夜间构建”概念,并将其应用于深度学习领域。简而言之,其想法是构建一个完整的持续集成(CI)/交付(CD)/训练(CT)管道。

这个自动化管道在夜间训练和测试多个模型——正如“夜间构建”这个名称所暗示的。它包括生成多个链式模型的管道,并管理与多种手术类型并行运行的多个并行管道。通过验收的实验会被放入部署管道,最终将模型交付给最终用户进行推理。

最后,在注释细化之后,会创建一个反馈循环,收集推理数据并将其与现有训练数据集集成,以进行改进和持续训练(CT)。

框架设计高层视图

构建自动化过程是复杂的,因为它包含多个移动部分,所有这些部分都需要集成在一起。我们还面临计算的便捷性和成本、设置、维护等方面的挑战,并且越来越清楚地认识到,要最大限度地减少这些挑战,就意味着要选择最佳工具。我们主要专注于选择两个核心工具,即首选框架,以及构建我们的研究和部署管道自动化所需端到端能力的平台或工具链。

我们选择 PyTorch 作为我们用于研究探索和生产推理的主要 ML/DL 框架。我们在 theator 通常开发的模型是结合了最先进的方法——为外科领域量身定制——以及内部开发的模块。由于我们的研究团队随时了解相关的计算机视觉出版物发布,我们经常探索与该领域相关的新技术。将新想法与我们的专有模块集成——并探索其影响——需要一个灵活的框架:一个能够快速实验训练流程的子组件(例如,新的网络架构或新颖的层结构)的迭代。我们确定 PyTorch 是提供我们所需灵活性的最佳框架。使用 PyTorch,我们可以轻松地拆卸和重新组装我们想要关注的部分,并且它提供了从数据加载部分到其张量表示,再到学习过程中网络的梯度,无摩擦的自顶向下调试能力。

我们选择 ClearML 作为底层平台或工具链。对我们来说,关键卖点是 ClearML 提供了一个高度集成的工具链中所需的大部分关键组件,包括实验管理、数据和元数据管理、ML-Ops、编排和自动化组件。它还有额外的优势,例如优化训练的物理数据流等。

控制平面

因为我们管理着多个用例——而且新的传入数据通常与其中一个或多个用例相关——所以并行训练多个模型是不可避免的。然而,使用单独的模型这样做也会带来高昂的运营成本,这是由于冗长的周期和研究人员专注度的降低造成的。我们的研究人员和工程师知道,他们需要一个单一的控制平面来管理这些多个并发过程。为了有效实现这一目标,我们开始使用 ClearML 的一项高级功能,该功能使我们能够设置主控制器应用程序,这些应用程序能够(除其他外)同时操纵多个复杂的管道。该功能可以编排无限数量的并发管道,这些管道分布在各种数据集和机器上,无论是在本地还是在云端。

我们设置了主控制器,使其能够自动运行实验,使用正确的数据和模型配置更改配置文件,然后在远程机器上启动实验。我们的研究人员完成一个“配方文件”,然后由管道控制器接管后续工作。

主控制器

工作流程概述

让我们深入了解一下我们的研发管道并探讨其设置。

第一步是创建来自各种视频源的数据版本:这些数据基于原始训练视频集和其他视频,这些视频定期从部署中的活跃医疗中心传入,经过注释后添加到训练集中。

为了实现这一点,我们建立了一个数据管理解决方案,其中包括:

  • 数据集版本控制
  • 可查询数据集
  • 混合和匹配数据集的能力
  • 平衡数据集
  • 优化数据加载

我们选择了 ClearML,因为他们的企业数据管理解决方案开箱即用地包含了所有这些能力。使用他们的系统,我们能够以可查询的结构组织我们的数据集,监控传入数据,并定期自动触发训练管道——或者在数据量翻倍或我们从新来源接收到传入数据等事件发生时触发。这是我们解决方案的 CI(持续集成)方面。

ClearML 的一个特别有用的功能是它还能跟踪机器的利用状态和模型的性能状态。模型性能的实时跟踪为我们的研究人员提供了快速的洞察力,可以缩短训练时间或开辟新的研究方向。同时,机器的可观察性使他们能够最大限度地利用我们的硬件。将实验的行为与机器利用率关联起来提供了另一层调试能力——因此,结合这两个功能可以倍增它们的影响。

在数据处理方面,在训练和推理过程中,一个耗时数小时的手术视频被表示为一个巨大的 4D 张量。这使得开箱即用地按顺序消化和处理它变得困难。我们基于 PyTorch 视频处理模块编写了定制的数据加载功能,用于开发我们的内部手术视觉模型。使用 PyTorch 数据分发和数据并行性对它们进行封装,帮助我们在训练和运行实验方面实现了显著且至关重要的加速。

训练管道视图

部署之时

已经涵盖了自动化训练部署就绪模型的繁重工作,现在让我们讨论我们解决方案的部署方面。

由于我们运行的是一个实时生产平台(具有持续的反馈循环以支持再训练),我们必须闭合从创建和优化训练模型到快速部署它们之间的循环——有时一次部署多个模型。管道可能包含多个模型的事实使这个问题进一步复杂化,并且将模型替换为性能更好的替代方案实际上可能会降低整个管道的性能。

为了降低这一风险,我们构建了一个回归测试管道,该管道模拟类似生产环境,并在真实的现场数据上测试模型。这一步骤,结合 ClearML 的比较仪表板,使我们对我们的管道充满信心,并为模型部署到生产环境提供了“批准印章”。最后,使用 PyTorch 可以快速将模型作为生产基础代码的一部分进行部署,PyTorch 提供了强大而稳定的生产就绪 API,这些 API 在推理时能够快速分析从手术室整理的新手术视频。这是我们解决方案的 CD(持续交付)部分。

总结

通过构建这个框架来自动化和管理我们的整个流程,从模型开发到部署再到持续训练以改进模型,我们已经从一个依赖传统 ML 实践的公司发展成为一个完全自动化、可扩展的组织。在此过程中,我们通过让他们专注于真正的价值增值所在,为我们的研究人员和工程师节省了无数小时。随着训练时间和成本的降低,我们现在能够加倍努力,实现我们的最终目标——为最终用户完善和交付更好的模型。

 

Facebook
Twitter
LinkedIn
滚动到顶部