摘要:
Docker容器是现代人工智能(AI)和机器学习(ML)工作流程的基础,但典型ML镜像的大尺寸往往导致显著的启动延迟,其中大部分来自冷启动期间的镜像拉取。本文概述了减少启动延迟的实用策略,从简单的调整到更高级的选项。我们首先进行镜像级优化,例如消除不必要的依赖项和采用多阶段构建来减小镜像大小。然后我们探讨基于基础设施的改进,特别关注Seekable OCI(SOCI)。最后,我们讨论延迟卸载技术,如暖池和预拉取镜像。总的来说,这些策略提供了一个灵活的工具包来改善AI/ML系统的性能,使组织能够平衡工程投入和延迟要求,以提供更快的容器化环境。
Docker容器由于其可移植性和在不同环境中保持一致性的能力,已成为现代软件部署的基础。在人工智能(AI)和机器学习(ML)领域,容器化扮演着更为核心的角色:它封装了训练和推理管道所需的框架、GPU驱动程序、自定义依赖项和运行时环境。
基于云的AI平台(如Amazon SageMaker Studio)严重依赖Docker化基础设施来创建稳定的实验和部署环境。这些镜像通常很大(通常有几个GB),因为它们捆绑了数据科学工具包、CUDA、分布式训练库和笔记本界面。因此,容器启动延迟成为一个关键的性能瓶颈,特别是当工作负载需要动态扩展或用户期望交互式会话时。
这种延迟的很大一部分(通常占30-60%,取决于网络带宽和镜像大小)来自从注册表拉取容器镜像到计算实例。镜像越大,用户或工作负载看到任何结果所需的时间就越长。
本文探讨了从镜像优化到基础设施级解决方案的几种技术,以减少这种延迟并提高响应速度。我们将按复杂性递增的顺序审查这些策略,帮助您为组织的需求选择最佳方案。
以下策略从小型、专注于镜像的更改逐步发展到更广泛的基础设施和工作负载级改进。
减少容器启动延迟最容易获得且最具成本效益的方法是减小镜像的大小。较小的镜像拉取更快、启动更快,并且消耗更少的存储空间。这个过程通常从评估您的工程师或数据科学家实际需要的工具和依赖项开始。
大型ML镜像(如开源SageMaker Distribution镜像)通常包含跨越多个框架、版本和工作流程的广泛工具集。实际上,大多数团队只使用这些工具的一个子集。工程师可以通过删除不必要的Python包、GPU库、系统实用程序和捆绑数据集来显著缩小镜像大小。
一些实用方法包括:
即使是适度的缩减也能显著减少启动延迟,特别是在频繁创建容器的环境中。
虽然镜像优化专注于减少传输的数据量,但下一级优化改进了镜像在运行时的加载和处理方式。网络配置、注册表设置和容器运行时能力都会影响启动性能。
容器拉取可能由于低效的网络路径或流量瓶颈而变慢。优化包括:
这些调整提高了一致性并减少了可变性。然而,此类别中最显著的改进通常来自使用Seekable OCI(SOCI)。
AWS的SOCI Snapshotter引入了一种不同的容器启动方式。SOCI允许容器运行时仅拉取基本元数据和启动容器所需的最小层集,而其余部分按需加载,而不是在启动前拉取整个镜像。以下是容器镜像与其关联SOCI索引之间关系的简单视图:
这种技术显著降低了感知启动延迟。例如:
这种策略对AI/ML工作负载特别有效,因为镜像包含启动时不立即需要的大型库。通过延迟下载未使用的层,SOCI能够在保持整体工作流程不变的同时实现更快的响应时间。
对于依赖快速自动扩展或交互式笔记本环境的组织,SOCI在基础设施级策略中提供了最高的影响与投入比率之一。
最复杂的方法是通过将镜像拉取延迟移出客户的执行路径来完全避免它。延迟卸载不是优化拉取或最小化数据大小,而是专注于确保客户永远不会经历冷启动。
这可以通过预热计算环境和预拉取镜像来实现。
在这种技术中,服务提供商维护一个"暖"实例池,这些实例已经在运行并准备好服务用户工作负载。当用户或作业请求计算时,系统分配一个暖实例而不是配置一个新实例。这为最终用户消除了100%的实例初始化延迟。
暖池存在于许多托管服务中:
这些池可以根据操作需求将容器或实例保持在不同的就绪级别。
如果大多数客户依赖共享的通用镜像,暖池实例也可以配置为预拉取该镜像。当分配给用户时,实例已经在运行,并且所需的镜像已在本地缓存。这种方法完全消除了镜像拉取时间,提供了尽可能快的启动体验。
这些方法在Gillam, L.和Porter, B.关于各种容器环境性能分析的工作(2021)中有详细描述。他们的工作提供了冷容器与暖容器行为的清晰比较,并支持暖池策略的有效性。
延迟卸载会产生运营成本,包括计算容量、编排逻辑和闲置资源。尽管如此,对于用户体验或快速扩展处于最高优先级的系统,收益往往超过成本。
容器启动延迟会显著减慢AI/ML工作流程并降低交互式环境中的用户体验。虽然镜像拉取时间经常主导这种延迟,但组织可以从一系列解决方案中选择来解决和缓解这个问题。
像镜像优化这样的低投入方法以很少的运营开销提供快速胜利。基础设施改进,特别是通过SOCI等技术,能够在不需要重大架构更改的情况下实现大幅延迟减少。延迟卸载提供最快的面向用户的启动时间,尽管它伴随着持续的成本和复杂性。
并非每种策略都适合每种环境。对于延迟不是关键任务的企业,维护暖池可能无法证明运营成本的合理性。然而,提供实时AI能力、交互式笔记本或动态扩展微服务的公司可以通过实施这些技术极大地提高用户满意度。
最终,加速容器启动不仅仅是改善性能。它还提升了开发人员效率,增强了用户体验,并加强了现代AI驱动系统的响应能力。
参考文献:
:::info 本文章在HackerNoon的商业博客计划下发布。
:::
\


