术语表

集装箱化

发现容器化对人工智能/ML 项目的强大作用。利用尖端工具简化工作流程、确保一致性并高效扩展。

使用Ultralytics HUB 对YOLO 模型进行简单培训

了解更多

容器化是一种将软件代码及其所有必要的依赖项、库和配置文件打包成一个独立单元(称为 "容器")的方法。这种打包方法可确保应用程序在不同的计算环境中可靠、一致地运行,无论是开发人员的本地机器、测试环境还是云中的生产服务器。传统虚拟机(VM)的每个实例都需要一个完整的操作系统,与之不同的是,容器共享主机系统的操作系统内核。这使它们大大提高了轻量级、启动速度和资源使用效率,这对资源密集型的人工智能(AI)机器学习(ML)应用尤其有利,因为这些应用通常具有复杂的软件需求。

主要概念和组成部分

理解容器化涉及几个核心思想:

  • 容器映像:轻量级、独立、可执行的软件包,包含运行软件所需的一切:代码、运行时、系统工具、系统库和设置。映像通常根据特殊文件(如 Dockerfile)中的指令构建。
  • 容器:容器映像的运行实例。它的运行与其他容器和主机系统隔离,但共享主机操作系统内核。同一主机上可以运行多个容器。
  • Docker最流行的容器化平台,由Docker 公司开发。它提供了轻松构建、共享和运行容器化应用程序的工具。Ultralytics 提供了一份Docker 快速入门指南,用于设置YOLO 模型。
  • 容器注册中心:用于存储和分发容器镜像的存储库。Docker Hub是一个广泛使用的公共注册中心,但私有注册中心也很常见。
  • 协调: Kubernetes和 Docker Swarm 等工具用于大规模管理容器的生命周期,跨多台主机处理部署、扩展、联网和可用性。云原生计算基金会(CNCF)拥有许多与容器协调相关的项目。

人工智能/移动语言容器化的优势

容器化为 ML 和 AI 项目提供了显著优势:

  • 可重复性:容器封装了确切的环境(库、版本,如 PyTorchOpenCV、配置),确保开发、测试和生产之间的一致性。这对于可重现的研究和可靠的模型部署至关重要。
  • 依赖性管理:AI/ML 项目通常依赖于众多库的特定版本。容器可隔离这些依赖关系,防止不同项目或系统库之间发生冲突。
  • 可扩展性:容器可以快速启动和停止,因此很容易根据需求扩大或缩小应用程序的规模,这对于处理实时推理中的可变工作负载至关重要。这有助于满足计算可扩展性需求。
  • 可移植性:从开发人员的笔记本电脑到内部服务器或AWSGoogle CloudMicrosoft Azure 等公共云,容器可在不同环境中一致运行。这简化了向各种目标(包括边缘设备)的部署。探索容器化带来的各种模型部署选项
  • 效率:与虚拟机相比,容器使用的资源CPU、内存、存储)更少,因为每个实例不需要单独的操作系统,从而可以在同一硬件上实现更高密度的应用。这与高效的机器学习操作(MLOps)相一致。

容器化与虚拟化

虽然容器化和虚拟化都能创建隔离的环境,但它们的方法有很大不同。虚拟机(VM)模拟整个硬件系统,在管理程序上运行完整的客户操作系统。这提供了很强的隔离性,但在资源消耗(CPU、内存、硬盘、硬盘驱动器等)方面会产生很大的开销。CPU内存)和启动时间方面产生大量开销。相反,容器将操作系统本身虚拟化,通过容器化引擎(如 Docker)共享主机操作系统内核。这使得占用空间更小、启动速度更快、性能更好。对于许多 AI/ML 任务,尤其是部署需要快速扩展的微服务或应用程序,容器通常是首选。如果需要在同一硬件上运行不同的操作系统,或需要应用程序之间最大程度的隔离,虚拟机仍然是合适的选择。

人工智能/移动语言的实际应用

容器化广泛应用于整个人工智能/ML 生命周期:

  1. 部署目标检测模型:部署物体检测模型 Ultralytics YOLO模型可以打包到一个 Docker 容器中。该容器包括模型权重、推理脚本和所有必要的依赖项(如PyTorch、CUDA 库等)。然后,该容器可以在各种平台上统一部署,从功能强大的云计算 GPU到资源有限的边缘人工智能设备,无论环境如何,都能确保模型按预期运行。Ultralytics 提供了一份Docker 快速入门指南,以方便用户使用。
  2. 将 NLP 模型作为微服务提供:一个团队在开发自然语言处理(NLP)应用程序时,使用了来自以下平台的模型 Hugging Face等平台的模型开发自然语言处理(NLP)应用程序的团队,可以将不同的组件(如文本预处理、模型推理、API 端点)作为独立的微服务进行容器化。这些容器可以使用Kubernetes 进行管理,允许每个组件独立扩展和更新,从而形成更具弹性和可管理性的系统架构,通常遵循微服务架构原则。Ultralytics HUB等平台也利用容器化原则简化模型管理和部署

通过开放容器倡议(OCI)等努力实现标准化的容器化,已成为现代软件开发和部署的基石,尤其是在快速发展的人工智能和计算机视觉(CV)领域。

阅读全部