0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

通过 AI 应用程序容器化实现高效的 MLOps

小麦地 来源:小麦地 作者:小麦地 2022-07-19 10:15 次阅读

到 2021 年底,人工智能市场的价值估计为 583 亿美元。这一数字势必会增加,预计未来 5 年将增长 10 倍,到 2026 年将达到 3096 亿美元。鉴于人工智能技术如此受欢迎,公司广泛希望为其业务构建和部署人工智能应用解决方案。在当今技术驱动的世界中,人工智能已成为我们生活中不可或缺的一部分。根据麦肯锡的一份报告,人工智能的采用率正在继续稳步上升:56% 的受访者表示至少在一项业务功能中采用了人工智能,高于 2020 年的 50%。这种采用率的增加是由于构建和部署战略的不断发展人工智能应用。各种策略正在演变以构建和部署 AI 模型。AI 应用程序容器化就是这样一种策略。

机器学习操作 (MLOps) 正变得越来越稳定。如果您不熟悉 MLOps,它是有助于提高机器学习工作流程效率的原则、实践和技术的集合。它基于 DevOps,正如 DevOps 简化了从开发到部署的软件开发生命周期 (SDLC) 一样,MLOps 对机器学习应用程序也完成了同样的工作。容器化是用于开发和交付 AI 应用程序的最有趣和新兴的技术之一。容器是软件包的标准单元,它将代码及其所有依赖项封装在一个包中,允许程序快速可靠地从一个计算环境转移到另一个计算环境。Docker 处于应用程序容器化的最前沿。

什么是容器?

容器是包含应用程序执行所需的一切的逻辑框。操作系统、应用程序代码、运行时、系统工具、系统库、二进制文件和其他组件都包含在此软件包中。或者,根据特定硬件的可用性,可能会包含或排除某些依赖项。这些容器直接在主机内核中运行。容器将共享主机的资源(如 CPU、磁盘、内存等)并消除管理程序的额外负载。这就是容器“轻量级”的原因。

为什么容器如此受欢迎?

首先,它们是轻量级的,因为容器共享机器操作系统内核。它不需要整个操作系统来运行应用程序。VirtualBox,通常称为虚拟机 (VM),需要安装完整的操作系统,这使得它们非常庞大。

容器是可移植的,可以轻松地从一台机器传输到另一台机器,其中包含所有必需的依赖项。它们使开发人员和操作员能够提高物理机的 CPU 和内存利用率。

在容器技术中,Docker 是最流行和使用最广泛的平台。不仅基于 Linux 的 Red Hat 和 Canonical 已经采用了 Docker,微软、亚马逊和甲骨文等公司也在依赖它。如今,几乎所有 IT 和云公司都采用了 docker,并被广泛用于为其解决方案提供所有依赖项。

点击查看完整大小的图片

poYBAGLVcfSAE3GzAADIn1Y_6h4582.png


虚拟机与容器(来源:Softnautics)

Docker 和容器之间有什么区别吗?

Docker 已广泛成为容器的代名词,因为它是开源的,拥有庞大的社区基础,并且是一个相当稳定的平台。但容器技术并不新鲜,它以 LXC 的形式被纳入 Linux 已有 10 多年了,FreeBSD jails、AIX Workload Partitions 和 Solaris Containers 也提供了类似的操作系统级虚拟化。

Docker 可以通过将 OS 和包需求合并到一个包中来简化流程,这是容器和 docker 之间的区别之一。

我们经常对为什么 docker 被用于数据科学和人工智能领域感到困惑,但它主要用于 DevOps。ML 和 AI 与 DevOps 一样,具有跨操作系统的依赖性。因此,单个代码可以在 Ubuntu、Windows、AWS、Azure、谷歌云、ROS、各种边缘设备或其他任何地方运行。

AI/ML 的容器应用

与任何软件开发一样,AI 应用程序在由团队中的不同开发人员组装和运行或与多个团队协作时也面临 SDLC 挑战。由于 AI 应用程序的不断迭代和实验性质,有时依赖关系可能会交叉交叉,从而给同一项目中的其他依赖库带来不便。

点击查看完整大小的图片

pYYBAGLVcf2AR_qiAAGrL4eprqw589.png


AI/ML 对容器应用的需求(来源:Softnautics)

问题是真实的,因此,如果您要展示需要特定执行方法的项目,则需要遵循每个步骤的可接受文档。想象一下,对于同一个项目的不同模型,您有多个 python 虚拟环境,并且没有更新文档,您可能想知道这些依赖项是做什么用的?为什么在安装较新的库或更新的模型等时会发生冲突?

开发人员不断面临“它在我的机器上工作”的困境,并不断尝试解决它。

pYYBAGLVcgOALIgyAAOX4h6AocY677.png


为什么它可以在我的机器上运行(来源:Softnautics)

使用 Docker,所有这些都可以变得更容易和更快。容器化可以帮助您节省大量更新文档的时间,并使您的程序的开发和部署从长远来看更加顺利。即使通过提取多个与平台无关的图像,我们也可以使用 docker 容器为多个 AI 模型提供服务。

完全在 Linux 平台上编写的应用程序可以使用 docker 在 Windows 平台上运行,它可以安装在 Windows 工作站上,使跨平台的代码部署变得更加容易。

点击查看完整大小的图片

poYBAGLVcgqAcCGeAAHFkgV_mHI758.png


使用 docker 容器部署代码(来源:Softnautics)

容器与虚拟机上 AI 模型的性能

已经进行了许多实验来比较 Docker 与市场上用于 AI 部署的各种虚拟机的性能:下表可以大致了解影响 AI 模型部署的 VM 和 Docker 容器的性能和差异。

方差 虚拟机 容器
操作系统 需要一个客人 共享
开机速度 比传统机器慢 比虚拟机快
标准化 本质上特定的操作系统标准 特定于应用程序的性质
可移植性 不是很便携 更快、更容易移植
需要服务器 需要更多 很少的服务器
安全 管理程序定义安全性 安全是共享的
冗余级别 VM拥有资源 共享操作系统,减少冗余
硬件抽象 硬件抽象 可实现硬件接入
资源共享 需要更多资源 需要和共享的资源更少
资源隔离 高的 缓和
记忆 高内存占用 更少的内存占用和共享
文件共享 无法共享文件 文件可以共享

表 1:虚拟机与容器(来源:Softnautics)

从所有比较实验的结论中得出的广泛结论如下:

容器的开销比虚拟机低,性能与非虚拟化版本一样好。

在高性能计算 (HPC) 中,容器的性能优于基于管理程序的虚拟化。

深度学习计算工作负载主要卸载到 GPU,从而导致资源争用,这对于众多容器来说很严重,但由于出色的资源隔离,在虚拟机中这种情况很少。

服务大型 AI 模型通常通过 REST API 容器完成。

多模型服务主要使用容器完成,因为它们可以使用更少的资源轻松扩展。

现在,让我们通过Kennedy Chengeta在他最近的研究中收集的以下实验结果来总结容器对任何 VM 的优势。基于 Prosper Lending 和 Lending Club 数据集的深度学习数据集进行分类,下表比较了 4 种不同的虚拟化技术(KVM、Xen、Docker、Docker + Kubernetes)的启动时间、网络延迟、数据下载和网络延迟. KVM(基于内核的 VM)是表中其他的基准值。

poYBAGLVcg-AUvO9AAFwHHdsQKY857.png


表 2:Lending Club 数据集表现(越低越好)(来源:Softnautics)

poYBAGLVchSADGTOAAFPUPFnxnE863.png


表 3:Prosper 数据集(越低越好)(来源:Softnautics)

如您所见,Docker 和由 Kubernetes 管理的 Docker 的性能优于 KVM 和 Xen Hypervisors。

大型 AI 模型是否对容器部署构成挑战?

由于开发人员将使用容器进行训练和推断他们的 AI 模型,因此对两者来说最关键的将是内存占用。随着 AI 架构变得越来越大,在它们上训练的模型也变得越来越大,从 100 MB 到 2 GB。由于容器被认为是轻量级的,因此此类模型变得笨重而无法装在容器中携带。开发人员使用模型压缩技术使它们具有互操作性和轻量级。模型量化是最流行的压缩技术,您可以通过将模型的内存占用从 float32 集更改为 float16 或 int8 集来减小模型的大小。领先平台提供的大多数预训练即用型 AI 模型都是容器中的量化模型。

结论

总而言之,将整个 AI 应用程序开发到部署管道转换为容器的好处如下:

针对不同版本的框架、操作系统和边缘设备/平台,为每个 AI 模型提供单独的容器。

每个 AI 模型都有一个容器,用于自定义部署。例如:一个容器对开发人员友好,而另一个容器对用户友好且无需编码即可使用。

每个 AI 模型的单独容器,用于 AI 项目中的不同版本或环境(开发团队、QA 团队、UAT(用户验收测试)等)

容器应用程序真正更有效地加速了 AI 应用程序开发-部署管道,并有助于维护和管理用于多种用途的多个模型。

审核编辑 黄昊宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • AI
    AI
    +关注

    关注

    87

    文章

    29780

    浏览量

    268061
  • 人工智能
    +关注

    关注

    1789

    文章

    46636

    浏览量

    236985
  • Docker
    +关注

    关注

    0

    文章

    453

    浏览量

    11792
收藏 人收藏

    评论

    相关推荐

    MLOps平台优点

    MLOps平台在提升机器学习模型的开发与部署效率、可扩展性与灵活性、透明度与可重复性以及降低风险和持续改进方面具有显著优点。
    的头像 发表于 11-06 10:10 69次阅读

    使用OpenVINO GenAI API在C++中构建AI应用程序

    许多桌面应用程序是使用 C++ 开发的,而将生成式AI(GenAI)功能集成到这些应用程序中可能会很具有挑战性,尤其是因为使用像 Hugging Face 这样的 Python 库的复杂性。C++
    的头像 发表于 10-12 09:36 268次阅读
    使用OpenVINO GenAI API在C++中构建<b class='flag-5'>AI</b><b class='flag-5'>应用程序</b>

    容器怎么完成和容器引擎的映射

    Javascript与Java应用程序绑定在一起,从而实现应用程序的自动测试。 Docker 示例 docker run -d -p 宿主机端口:
    的头像 发表于 06-06 15:18 300次阅读

    使用Redis和Spring Ai构建rag应用程序

    整合如何通过简化的开发流程,让开发者能够更专注于创新而非底层实现。一、SpringAI简介由大型语言模型(LLM)驱动的应用程序中,向量数据库常作为人工智能应用程
    的头像 发表于 04-29 08:04 949次阅读
    使用Redis和Spring <b class='flag-5'>Ai</b>构建rag<b class='flag-5'>应用程序</b>

    基于全志T113-i的Docker容器实现方案

    通过使用Docker,开发人员可以更容易地构建、交付和运行应用程序,同时确保应用程序的一致性及可移植性。它也使得应用程序的部署更加灵活、高效
    发表于 04-19 09:45 753次阅读
    基于全志T113-i的Docker<b class='flag-5'>容器</b><b class='flag-5'>实现</b>方案

    Docker容器技术的安装和使用

    通过Docker,开发人员可以更容易地构建、交付和运行应用程序,同时确保应用程序的一致性和可移植性。它也使得应用程序的部署更加灵活和高效,因
    发表于 04-16 11:24 278次阅读
    Docker<b class='flag-5'>容器</b>技术的安装和使用

    开发者手机 AI - 目标识别 demo

    应用的demo。 应用程序通过相机进行预览,对预览画面中的物体进行目标识别,目前该应用程序支持识别100种物体。 系统架构 下图为demo应用以及Openharmony AI子系统的架
    发表于 04-11 16:14

    ARM平台实现Docker容器技术

    ,亦可实现虚拟容器是完全使用沙箱机制,相互之间不会有任何接口。使用Docker,可像管理应用程序一样管理基础结构。通过利用Docker的
    的头像 发表于 03-07 13:48 720次阅读
    ARM平台<b class='flag-5'>实现</b>Docker<b class='flag-5'>容器</b>技术

    通过实时加速器技术实现实时应用程序的 Windows

    时功能应用程序。这是通过专门为实时应用程序保留一个或多个CPU来实现的,设置 Windows 适当的参数并利用 acontis 内核驱动
    的头像 发表于 01-29 16:03 790次阅读
    <b class='flag-5'>通过</b>实时加速器技术<b class='flag-5'>实现</b>实时<b class='flag-5'>应用程序</b>的 Windows

    美格智能LXC容器化解决方案,轻松玩转多系统虚拟

    美格智能LXC(Linux Container)容器化解决方案专为各类物联网终端设备设计,基于LXC内核,通过轻量化的容器技术,让应用程序可以在不同的环境中运行,可以满足智能汽车、机器
    的头像 发表于 01-17 17:16 528次阅读
    美格智能LXC<b class='flag-5'>容器</b>化解决方案,轻松玩转多系统虚拟<b class='flag-5'>化</b>

    谷歌发布新的AI SDK,简化Gemini模型与Android应用程序的集成

    对于 Android 应用程序,Google 提供了 Google AI Client SDK for Android,它将 Gemini REST API 封装为惯用的 Kotlin API
    的头像 发表于 01-03 16:29 882次阅读

    驾驭创造的力量: 生成式 AI 时代的 MLOps 演进

    的生命周期管理、自动部署、监控和故障排除、数据管理和安全合规等功能,帮助团队更好地开发、部署和管理生成式 AI 模型,实现更加高效、可靠的运行。本期视频将为您介绍如何根据生成式
    的头像 发表于 12-21 18:05 305次阅读

    DC/OS中容器以动态存在嘛

    DC/OS(Distributed Control Operating System)是一种开源的操作系统,特别设计用于管理分布式应用程序和服务的容器环境。在DC/OS中,容器的存在
    的头像 发表于 12-03 16:23 374次阅读

    开发java应用程序的基本步骤是

    Java应用程序。确定您希望应用程序能够执行的任务和提供的功能。这将有助于指导您在开发过程中进行决策并确定实现代码的方式。 2.设计应用程序:在开始编写代码之前,您应该设计
    的头像 发表于 11-28 16:52 1490次阅读

    docker容器容器之间通信

    Docker是一种轻量级容器技术,能够将应用程序及其依赖项封装在一个独立、可移植的容器中。而容器
    的头像 发表于 11-23 09:36 1423次阅读