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