容器化
探索容器化在 AI/ML 项目中的强大功能。使用先进的工具简化工作流程,确保一致性并高效扩展。
容器化是一种轻量级的操作系统虚拟化形式,它允许您将应用程序及其依赖项(例如库、框架和配置文件)打包到一个称为容器的独立单元中。这解决了软件从一个计算环境移动到另一个计算环境时无法正确运行的常见问题。在机器学习 (ML)的背景下,容器化确保了复杂的 AI 模型及其复杂的软件堆栈是可移植、可重现和可扩展的,从而构成了现代 MLOps 实践的关键组成部分。
最广泛使用的容器化技术是 Docker,它提供了一种构建、交付和运行容器的标准化方法。每个容器共享宿主系统的操作系统内核,但在用户空间中作为隔离进程运行。这种方法由 开放容器倡议 (OCI) 等组织标准化,使得容器比传统虚拟机更具资源效率且启动速度更快。您可以从 Red Hat 的容器说明 等资源中了解有关容器化基础知识的更多信息。
容器化与相关概念
理解容器化和类似技术之间的区别是理解其在 AI/ML 工作流程中作用的关键。
- 虚拟机 (VM): 虽然容器和 VM 都提供隔离环境,但它们在不同的级别上运行。VM 模拟整个硬件堆栈,包括完整的客户操作系统,使其笨重且启动缓慢。相比之下,容器虚拟化操作系统,共享主机内核。这使得容器更加轻量级和快速,但 VM 可以提供更高程度的硬件级隔离。
- Docker: 容器化是其底层概念。Docker 是实现此概念的最受欢迎的平台,它提供创建和管理单个容器的工具。为了方便上手,Ultralytics 提供了运行 YOLO 模型的 Docker 快速入门指南。您还可以浏览 Docker 的官方资源 以获取更多信息。
- Kubernetes: 虽然 Docker 管理主机上的单个容器,但 Kubernetes 是一个容器编排平台。它可以自动执行跨机器集群的数千个容器的部署、扩展和管理。一个常见的工作流程是使用 Docker 构建容器,然后使用 Kubernetes 以规模化方式管理它。有关更深入的了解,请参阅Kubernetes 官方文档。
- 无服务器计算: 无服务器是一种执行模型,云提供商自动管理运行代码所需的基础设施。这完全抽象掉了服务器和容器。虽然容器化提供了对应用程序环境的控制,但像 AWS Lambda 这样的无服务器平台通过隐藏所有基础设施管理来优先考虑易用性。
人工智能/机器学习在现实世界的应用
容器化广泛应用于整个 AI/ML 生命周期,从实验到生产模型部署。
- 部署目标检测模型: 为目标检测训练的Ultralytics YOLO模型可以打包到Docker容器中。此容器包括模型权重、推理脚本以及所有必要的依赖项,如PyTorch和NVIDIA CUDA库。然后,可以将此独立的单元一致地部署在各种平台上,从强大的云GPU到资源受限的边缘人工智能设备,从而确保模型在任何环境下都能按预期执行。
- 将NLP模型作为微服务提供: 一个使用来自Hugging Face等平台的模型的自然语言处理 (NLP)应用程序开发团队可以将不同的组件(例如,文本预处理、模型推理、API端点)容器化为单独的微服务。可以使用Kubernetes管理这些容器,从而可以独立扩展和更新每个组件。这遵循微服务架构的原则,并会带来更具弹性的系统。诸如Ultralytics HUB之类的平台利用容器化原则来简化模型管理和部署。
通过提供一致且隔离的环境,容器化已成为现代软件开发的基石,尤其是在快速发展的 AI 和 计算机视觉 (CV) 领域。它使开发人员和 MLOps 工程师能够在 Google Cloud 和 Amazon Elastic Container Service 等平台上更快、更高效地构建、测试和部署可靠的 AI 应用程序。