当Kubeflow遇上GPU池化

随着人工智能技术的迅猛发展,AI开发已成为企业创新的重要驱动力。然而,在AI开发过程中,企业面临着诸多挑战,如开发工具的选择和开发资源如何高效利用等。本文将围绕这些挑战,探讨GPU池化如何赋能Kubeflow进行AI开发,助力企业实现智能化转型。

AI开发面临的挑战

1. 开发工具的选择

部分企业倾向于使用市面上成熟稳定的AI开发平台产品,因为这些产品通常具备完善的售后服务和的技术支持。然而,商用产品的价格较高,且部分功能可能无法满足企业的个性化需求。此时,企业可能选择优先考虑开源的产品,如Kubeflow。

开源产品具有自由、灵活的特性,开发者可以进行个性化定制,而不需要等待漫长的商用产品需求排期,非常适合具备一定研发实力的企业客户。

2. GPU资源的使用

目前,超过90%的AI算力都是GPU,且GPU的价格成本昂贵。企业在使用GPU时,一般都是通过静态分配的方式给开发人员,也有一些企业会将GPU虚拟化之后静态分配给开发人员,不管是哪一种,都会存在GPU浪费的情况,因为开发人员不是一直都在使用GPU,大部分时间都在进行代码开发调试、超参数选择优化等,因此如何在有限的预算下高效使用GPU算力,让昂贵的GPU卡能够满足更多的开发人员需求,成为企业亟待解决的实际问题。

参考存储、网络等资源的管理使用技术演进路线,软件定义的GPU池化技术正在被越来越多的企业客户所接受和应用,且取得了非常好的效果。

开源AI开发平台一Kubeflow

Kubeflow作为一款由Google发起的开源AI开发平台,它构建在 Kubernetes 之上,为企业提供了端到端的机器学习工作流自动化解决方案。该平台整合了模型开发、模型训练、超参数调优、模型部署等多个环节,旨在简化AI项目的生命周期管理。借助Kubernetes原生的弹性伸缩与资源调度能力,Kubeflow使得大规模分布式训练变得更为便捷,但在此基础上,如何更精细地管理和优化GPU资源仍有待进一步探讨。

图片

图1. Kubeflow体系架构

Kubeflow支持各种深度学习框架,如TensorFlow、PyTorch等,并提供了以下功能:

1. Kubeflow Notebooks:是以pod的形式运行在kubernetes集群中,基于web的开发环境,对JupyterLab、RStudio和Visual Studio Code(代码服务器)的原生支持,用户可以直接在集群中创建notebook容器。

2. Kubeflow Pipelines:是一个使用 Docker 容器构建和部署可移植且可扩展的机器学习(ML)工作流的平台。

3. Central Dashboard:作为机器学习平台的中心枢纽和工具,Kubeflow控制台提供了Kubeflow和相关生态系统组件集成的Web界面,通过统一的平台界面管理运维集群中所有运行的组件。

4. Training Operator:一个原生支持 Kubernetes 的项目,用于对使用各种机器学习框架(如 PyTorch、TensorFlow、XGBoost 等)创建的机器学习(ML)模型进行微调和可扩展的分布式训练,提供Kubernetes 自定义资源 API和Python SDK 来帮助用户有效地训练大模型的目标,支持在 Kubernetes 上运行消息传递接口(MPI),所以可以利用训练操作器和 MPIJob 运行高性能计算(HPC)任务。

5. Katib:一个针对自动化机器学习(AutoML)的 Kubernetes 原生项目,对机器学习框架保持中立,可以调整任何语言编写的应用程序的超参数,并原生支持许多机器学习框架,如TensorFlow、MXNet、PyTorch、XGBoost等,Katib 支持超参数调整、early-stopping搜索和神经架构搜索(NAS)。

6. KServe:支持在Kubernetes上的服务器端推理,并为常见机器学习(ML)框架如TensorFlow、XGBoost、Scikit-learn、PyTorch和ONNX等提供高性能、抽象的生产模型服务接口。为任意框架上的机器学习模型推理服务提供自定义资源定义(CRD),通过提供预测、预处理、后处理和解释功能,为机器学习推理服务器启用一个简单、可插拔和完整的解决方案。

GPU池化产品一OrionX

趋动科技的OrionX(猎户座)AI算力资源池化解决方案可以帮助客户构建数据中心级AI算力资源池,使用户应用无需修改就能透明地共享和使用数据中心内任何服务器之上的AI算力。OrionX不但能够帮助用户提高AI算力资源利用率,而且可以极大便利用户AI应用的部署。

图片

图2. OrionX系统架构

OrionX通过软件定义AI算力,颠覆了原有的AI应用直接调用物理GPU的架构,增加软件层,将AI应用与物理GPU解耦合。AI应用调用逻辑的OrionX vGPU,再由OrionX将虚拟GPU需求匹配到具体的物理GPU,OrionX架构实现了GPU资源池化,让用户高效、智能、灵活地使用GPU资源,达到了降本增效的目的。核心的GPU池化能力如下:

· 按需分配:资源池内各类算力资源按需挂载,用完立即回收,资源高效流转;

· 资源聚合:资源池内各类算力资源通过网络远程调用方式实现资源整合,形成算力资源池,一方面可突破单服务器硬件配置闲置,另一方面可减少资源池内硬件资源碎片;

· 远程调用:AI 应用可在资源池任意位置进行部署,无需关注底层物理硬件配置细节;

· 弹性伸缩:AI 应用可弹性使用资源池内算力资源,无需重启即可改变申请算力资源。

Kubeflow与OrionX的集成

为了使用Kubeflow集成GPU池化的能力,弥补在GPU算力精细化管理和资源优化方面的不足,只需要三步就可以让Kubeflow轻松实现开发效率的极大提升。具体步骤如下:

1. 安装OrionX

在Kubernetes集群中安装OrionX,以便Kubernetes能够调用到OrionX提供的池化GPU能力,从而实现GPU资源的池化管理和调度。

图片

图3. OrionX与K8S集成

OrionX为Kubernetes提供两个插件,实现与K8S的集成对接。集成后,系统管理员只需要在K8S中,即可完成对GPU资源池中vGPU资源的配置和调度管理。并且,允许系统管理员通过单一接口调度全部数据中心资源,实现SDDC(Software Defined Data Center,软件定义的数据中心),这样就简化了运维工作。如图3所示,OrionX为Kubernetes提供的两个插件是:

· OrionX Kubernetes Device Plugin

  • 通过和OrionX Controller通讯,获取OrionX GPU资源池信息。

  • 通过Kubernetes定义的Device Plugin标准向Kubernetes注册名字为virtaitech.com/gpu的资源。

· OrionX Kubernetes Scheduler Extender

  • 提供基于HTTP API通讯的松耦合调度扩展功能。

  • 通过配置文件向Kubernetes注册名字为virtaitech.com/gpu的资源敏感字,使其指向Orion Kubernetes Scheduler Extender的HTTP服务地址。

2. 配置Kubeflow

修改Kubeflow的配置文件,以支持GPU池化,分别在以下两个目录的spawner_ui_config.yaml文件中添加如下代码:

1)kubeflow/components/crud-web-apps/jupyter/backend/apps/common/yaml

2)kubeflow/components/crud-web-apps/jupyter/manifests/base/configs

图片

图4. Kubeflow支持OrionX 

3. Kubeflow Notebook选择GPU Vendor为VirtAI

在创建notebook时,在Number of GPUs域选择GPU数量,在GPU Vendor下拉列表中就可以看到VirtAI,选择GPU Vendor为VirtAI,这样创建完成的notebook使用的GPU算力资源就是OrionX提供的池化GPU。

图片

图5. notebook选择VirtAI GPU

使用效果

通过集成GPU池化能力,Kubeflow可以用更少的GPU卡支持更多的开发人员。

图片

图6. OrionX大幅提升GPU利用率

参考一客户提供的数据:在进行OrionX池化之前,需要50张卡静态分配给50个开发人员使用,但GPU的峰值使用率为约为12张卡,大部分时间的GPU使用率都是低于10张卡。

OrionX池化之后,客户只需12张卡就可以满足原有资源需求,卡数量节省76%。当Kubeflow遇上GPU池化,可以帮助客户实现以下效果:

· 提高资源利用率:GPU池化技术可以使GPU资源得到更充分的利用,降低企业的硬件投资成本。

· 简化资源管理:Kubeflow集成GPU池化后,可以简化资源管理过程,提高开发者的工作效率。

· 易于扩展:Kubeflow集成GPU池化后,可以轻松地扩展计算资源,以满足不断增长的AI算力需求。

OrionX除了帮助客户实现高效的AI开发之外,也有一些客户基于GPU池化技术的其他高级特性,比如跨机聚合、远程调用、资源切分、自定义算力设备等能力,通过将OrionX深度集成Kubeflow,实现训练及推理场景的效率提升。

展望

GPU池化技术的引入为Kubeflow等开源AI开发平台注入了新的活力,为企业提供了更高效、更经济的AI开发训练推理一体化解决方案。

未来,随着技术的不断进步和应用场景的不断拓展,我们有理由相信,GPU池化将在AI领域发挥举足轻重的作用,助力企业实现智能化转型和可持续发展。

参考文献:

1. https://github.com/kubeflow/kubeflow

2. https://www.kubeflow.org/docs/started/architecture/

3. https://www.kubeflow.org/docs/components/central-dash/overview/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/5441.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实验八智能手机互联网程序设计(微信程序方向)实验报告

请在上一次实验的基础之上完成“手机快速注册”页面、“企业用户注册”页面,并实现点击手机快速注册和企业用户注册后转跳至该页面在“手机快速注册”页面,输入框内输入内容并失去焦点后,下方的按钮会变化 在企业用户注册页面,用户…

【网站项目】木里风景文化管理平台

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

在Linux操作系统中的磁盘分区管理案例

1.在硬盘sdb上创建不同的分区实例练习 Linux操作系统是安装在硬盘sda硬盘中,所以不要轻易动硬盘sda中的文件信息 有如下需求 创建主分区 500M 文件系统 ext4 挂载点 /web 创建主分区 500M 文件系统 ext4 挂载点 /nginx 创建逻辑分区 500M 文件系…

【webrtc】MessageHandler 4: 基于线程的消息处理:以Fake 收发包模拟为例

G:\CDN\rtcCli\m98\src\media\base\fake_network_interface.h// Fake NetworkInterface that sends/receives RTP/RTCP packets.虚假的网络接口,用于模拟发送包、接收包单纯仅是处理一个ST_RTP包 消息的id就是ST_RTP 类型,– 然后给到目的地:mediachannel处理: 最后消息消…

GPT3 终极指南(二)

原文:zh.annas-archive.org/md5/6de8906c86a2711a5a84c839bec7e073 译者:飞龙 协议:CC BY-NC-SA 4.0 第五章:GPT-3 作为企业创新的下一步 当一个新的创新或技术转变发生时,大公司通常是最后一个采纳的。它们的等级结构…

虚拟机安装与配置win7

一、安装镜像 Windows7 64位 ed2k://|file|cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408.iso|3420557312|B58548681854236C7939003B583A8078|/ 建议迅雷下载 二、VMware 安装win7 1.新创自定义虚拟机 2.默认即可 3.iso文件我们自己下载,选择一个空的磁盘 4.…

【记录】Python3| 将 PDF 转换成 HTML/XML(✅⭐⭐⭐⭐pdf2htmlEX)

本文将会被汇总至 【记录】Python3|2024年 PDF 转 XML 或 HTML 的第三方库的使用方式、测评过程以及对比结果(汇总),更多其他工具请访问该文章查看。 文章目录 pdf2htmlEX 使用体验与评估1 安装指南2 测试代码3 测试结果3.1 转 HT…

闪存存储和制造技术概述

闪存存储技术 引言 性能由高到低排序:SLC -> MLC -> TLC -> QLC 根据这个排序读写速度也越来越低,价格越来越便宜 1. SLC SLC(Single-Level Cell,单层单元): SLC 闪存具有最高的性能、耐用性和可…

【专篇】DDR3 SDRAM-01总体介绍

概念 DDR3 SDRAM(Double-Data-Rate 3 Synchronous Dynamic Random-Access Memory,第三代双倍速率同步动态随机存取存储器)是计算机存储技术的一种重要进步,它在前代DDR2 SDRAM的基础上进行了多项改进和优化。以下是DDR3 SDRAM的特点介绍: 双倍速率(DDR):DDR3 SDRAM采用…

c#数据库: 4.修改学生成绩

将4年级的学生成绩全部修改为100分,。修改前的学生信息表如图所示: using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Linq; using System.Text; using System.Threading.Tasks;namespace StudentUpdate {internal class Program{s…

Ubuntu如何更换 PyTorch 版本

环境: Ubuntu22.04 WLS2 问题描述: Ubuntu如何更换 PyTorch 版本考虑安装一个为 CUDA 11.5 编译的 PyTorch 版本。如何安装旧版本 解决方案: 决定不升级CUDA版本,而是使用一个与CUDA 11.5兼容的PyTorch版本,您可…

c#数据库: 10.调用存储过程查询信息,并显示在窗体上

查询女生信息,并将信息显示在窗体上: 原数据表//右键数据库名,新建查询 ------------- 新建查询窗口,添加新建存储过程Procedure_GetGirls1和查询代码如下 : CREATE PROCEDURE dbo.Procedure_GetGirls1 /*存储过程名称*/ AS SELECT * f…

【docker】Spring Boot3.x 打包 Docker容器

Docker化Spring Boot应用 创建文件夹 demo mkdir democd demo创建Dockerfile # 两个 openjdk 二选一 #FROM openjdk:17-jre-alpineFROM eclipse-temurin:17MAINTAINER chengxuyuanshitang <chengxuyuanshitangXX.com>RUN mkdir -p /workspace/java/demoCOPY demo.ja…

Python 与 TensorFlow2 生成式 AI(五)

原文&#xff1a;zh.annas-archive.org/md5/d06d282ea0d9c23c57f0ce31225acf76 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 第十二章&#xff1a;用生成式人工智能玩视频游戏&#xff1a;GAIL 在之前的章节中&#xff0c;我们已经看到如何使用生成式人工智能来生成…

LVGL自定义滑动

触摸和编码器都可以操作 typedef struct {lv_obj_t* obj;int16_t x;int16_t y;int16_t width;int16_t height; }pos_and_size_t;typedef struct {lv_obj_t* obj;lv_coord_t height;lv_coord_t width;lv_coord_t width_pad;lv_coord_t height_pad;lv_coord_t child_widget;lv_co…

Mybatis.net + Mysql

项目文件结构 NuGet下载Mybatis.net相关包&#xff1a;IBatisNet 安装完成后&#xff0c;会显示在&#xff0c;在已安装页面。同时&#xff0c;在管理器中的引用列表中&#xff0c;会多出来两个引用文件 IBatisNet.CommonIBatisNet.DataMapper 安装 Mysql.data。 注意&#xff…

Stm32CubeMX 为 stm32mp135d 添加网卡 eth

Stm32CubeMX 为 stm32mp135d 添加网卡 eth 一、启用设备1. eth 设备添加2. eth 引脚配置2. eth 时钟配置 二、 生成代码1. optee 配置2. uboot 配置3. linux 配置 bringup 可参考&#xff1a;Stm32CubeMX 生成设备树 一、启用设备 1. eth 设备添加 我这里只启用一个eth设备&…

特斯拉与百度合作;字节正全力追赶AI业务;小红书内测自研大模型

特斯拉中国版 FSD 或与百度合作 根据彭博社的报道&#xff0c;特斯拉将通过于百度公司达成地图和导航协议&#xff0c;扫清在中国推出 FSD 功能的关键障碍。 此前&#xff0c;中国汽车工业协会、国家计算机网络应急技术处理协调中心发布《关于汽车数据处理 4 项安全要求检测情…

【漏洞复现】zookeeper AdminServer 未授权访问漏洞

0x01 产品简介 ZooKeeper 是一个集中式服务&#xff0c;用于维护配置信息、命名、提供分布式同步和提供组服务。ZooKeeper的AdminServer是其管理界面的一部分&#xff0c;通常用于监控ZooKeeper集群的状态和执行一些管理操作。AdminServer提供了Web-based的管理和监控功能&…