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

    文章

    26458

    浏览量

    264079
  • 人工智能
    +关注

    关注

    1776

    文章

    43871

    浏览量

    230622
  • Docker
    +关注

    关注

    0

    文章

    437

    浏览量

    11603
收藏 人收藏

    评论

    相关推荐

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

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

    Docker容器技术的安装和使用

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

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

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

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

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

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

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

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

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

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

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

    docker容器容器之间通信

    Docker是一种轻量级容器化技术,能够将应用程序及其依赖项封装在一个独立、可移植的容器中。而容器化的应用程序通常是以分布式方式设计的,因此
    的头像 发表于 11-23 09:36 549次阅读

    AI智能呼叫中心

    、数据驱动决策以及人力成本节约,旨在深入剖析其核心优势和对企业的重要意义。一、自动化处理AI智能呼叫中心通过引入自然语言处理(NLP)、机器学习和自动技术,使得呼叫中心的处理过程更加高效
    发表于 09-20 17:53

    如何使用Kubernetes实现零停机应用程序

    费力(实现 VRRP 解决方案、使用 monit 之类的应用程序监控重启、负载均衡 haproxy 之类的)!
    的头像 发表于 09-01 10:04 534次阅读
    如何使用Kubernetes<b class='flag-5'>实现</b>零停机<b class='flag-5'>应用程序</b>

    使用M031实现应用程序跳跃

    应用程序: 本示例代码使用 M031 实现应用程序跳跃, 跳过 IAP 方式 。 BSP 版本: M031 BSP CMSIS V3.03.000 硬件: NuMaker-M031SD V1.1
    发表于 08-22 06:54

    Arm Ethos-U NPU处理器入门指南

    感谢您使用Arm Ethos-U NPU处理器系列。为您提供最好的使用Arm Ethos-U NPU开发机器学习(ML)应用程序的经验设计我们的工具,使软件工程变得简单高效。此外,Arm还提供支持性
    发表于 08-08 06:17

    通过32Gb/S光纤通道提高应用程序性能

    电子发烧友网站提供《通过32Gb/S光纤通道提高应用程序性能.pdf》资料免费下载
    发表于 07-29 09:56 0次下载
    <b class='flag-5'>通过</b>32Gb/S光纤通道提高<b class='flag-5'>应用程序</b>性能

    创建端到端零售愿景AI应用程序

    使用 NVIDIA DeepStream 和 NVIDIA TAO 工具包构建端到端零售分析应用程序
    的头像 发表于 07-05 16:30 257次阅读
    创建端到端零售愿景<b class='flag-5'>AI</b><b class='flag-5'>应用程序</b>

    Java web应用程序与esp8266通信以进行硬件控制,怎么实现

    大家好,这是我的第一篇文章,那么我继续谈谈我想建立的项目;我开发了一个 java web 客户端-服务器应用程序,其中 Apache tomcat 作为容器/服务器,MySQL 用于持久
    发表于 05-22 06:18