当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://xiahunao.cn/news/2999032.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【git】.gitignore 个人总结

文章目录 1. 简介2. 格式3. 参考1. 文件名2. *.后缀3. ?.后缀4. []5. \6. **7. /8. ! 1. 简介 .gitignore是一个用于指定Git版本控制系统忽略特定文件或文件夹的配置文件。当我们在项目中添加文件并想要将它们纳入到版本控制中时,有时我们也会有一些不希望纳入版本…

VCSA6.7重置root密码

VCSA6.7重置root密码 1、登录VCSA所运行的ESXI主机 2、打开VCSA虚拟机Web控制台,先拍摄一个快照,然后重启虚拟机,在如下界面按"e" 3、找到linux开头的段落,在末尾追加rw init/bin/bash; 4、输入完成后,按&…

Windows编译OpenCV及扩展模块

OpenCV官网只提供了OpenCV Windows 64位动态库且不包括扩展模块,如果需要32位动态库,或者需要扩展模块的功能,则需要下载源码进行编译。 1. 版本说明与下载地址 OpenCV下载 https://github.com/opencv/opencv/releases/tag/4.9.0 OpenCV扩展模…

Python俄罗斯方块

文章目录 游戏实现思路1. 游戏元素的定义2. 游戏区域和状态的定义3. 游戏逻辑的实现4. 游戏界面的绘制5. 游戏事件的处理6. 游戏循环7. 完整实现代码 游戏实现思路 这个游戏的实现思路主要分为以下几个步骤: 1. 游戏元素的定义 Brick类:表示游戏中的砖…

《深入解析Windows操作系统》第7章读书笔记

1、远程过程调用RPC:传统上,网络软件是围绕着IO处理模型来组织结构的。例如在Windows中,当一个应用程序发出一个IO请求时,它就会发出一个网络操作。操作系统酌情处理,它将此请求转发给一个重定向器,此重定向…

Go 语言基础(二)【数组、切片、指针、map、struct】

1、数组 特别需要注意的是:在 Go 语言中,数组长度也是数组类型的一部分!所以尽管元素类型相同但是长度不同的两个数组,它们的类型并不相同。 1.1、数组的初始化 1.1.1、通过初始化列表{}来设置值 var arr [3]int // int类型的数…

ArcGIS+ChatGPT双剑合璧:从数据读取到空间分析,一站式掌握GIS与AI融合的前沿科技!

目录 专题一 AI大模型应用 专题二 ArcGIS工作流程及功能 专题三 prompt的使用技巧 专题四 AI助力工作流程 专题五 AI助力数据读取 专题六 AI助力数据编辑与处理 专题七 AI助力空间分析 专题八 AI助力遥感分析 专题九 AI助力二次开发 专题十 AI助力科研绘图 专题十一…

Slave SQL线程与PXB FTWRL死锁问题分析

1. 问题背景 2.27号凌晨生产环境MySQL备库在执行备份期间出现因FLUSH TABLES WITH READ LOCK未释放导致备库复制延时拉大,慢日志内看持锁接近25分钟未释放。 版本: MySQL 5.7.21PXB 2.4.18 慢查询日志: 备份脚本中的备份命令:…

Linux内核之设定inode链接计数:set_nlink用法实例(六十三)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

QT:小项目:登录界面 (下一个连接数据库)

一、效果图 登录后&#xff1a; 二、项目工程结构 三、登录界面UI设计 四主界面 四、源码设计 login.h #ifndef LOGIN_H #define LOGIN_H#include <QDialog>namespace Ui { class login; }class login : public QDialog {Q_OBJECTpublic:explicit login(QWidge…

金三银四面试题(二十三):装饰器模式知多少?

什么是装饰器模式 装饰器模式&#xff08;Decorator Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许动态地向对象添加新的行为&#xff0c;而无需修改原始对象的结构。通过将对象包装在一个或多个装饰器对象中&#xff0c;装饰器模式可以增强原始对象的功能。 装…

最详细的SSL证书说明及免费申请方法

JoySSL官网 注册码230918 SSL&#xff08;Secure Sockets Layer&#xff09;证书&#xff0c;现在通常指的是其继任者TLS&#xff08;Transport Layer Security&#xff09;证书&#xff0c;是确保数据传输安全的核心技术之一。本文将深入探讨SSL证书的工作原理、重要性、类型以…

闪存存储和制造技术概述

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

蓝网科技临床浏览系统 deleteStudy SQL注入漏洞复现(CVE-2024-4257)

0x01 产品简介 蓝网科技临床浏览系统是一个专门用于医疗行业的软件系统,主要用于医生、护士和其他医疗专业人员在临床工作中进行信息浏览、查询和管理。 0x02 漏洞概述 蓝网科技临床浏览系统 deleteStudy接口处SQL注入漏洞,未经身份验证的恶意攻击者利用 SQL 注入漏洞获取…

JAVA顺序表相关习题1

1.笔试题:cvte str1 :welcome to cvte str2:come 描述:删除第一个字符串当中出现的所有的第二个字符串的字符!结果:wlt vt 要求 用ArrayList完成! public class Test {public static List<Character> findSameWords(String u1, String u2){List<Character> listn…

gateway全局token过滤器

添加gateway依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency>创建一个tokenFilter 实现全局过滤器GlobalFilter,并且实现fitler方法 Value("${…

工信部CAPPVD公布24年一季度积分情况,海云安位居全国第二!

近日&#xff0c;工业和信息化部移动互联网APP产品安全漏洞专业库&#xff08;以下简称“CAPPVD漏洞库”&#xff09;根据《CAPPVD漏洞库支撑单位能力评定办法》和综合24年第一季度的漏洞报送、重要行业企事业单位漏洞加分、高危漏洞处置加分、标准支撑等&#xff0c;最终公布了…

如何保证Redis双写一致性?

目录 数据不一致问题 数据库和缓存不一致解决方案 1. 先更新缓存&#xff0c;再更新数据 该方案数据不一致的原因 2. 先更新数据库&#xff0c;再更新缓存 3. 先删除缓存&#xff0c;再更新数据库 延时双删 4. 先更新数据库&#xff0c;再删除缓存 该方案数据不一致的…

值得推荐的文档透明加密软件TOP3

文档透明加密软件是一种可以对文档进行加密处理&#xff0c;同时保持文档的可读性和可编辑性的软件。通常&#xff0c;这种软件会在用户对文档进行保存或传输时自动对文档进行加密&#xff0c;而在用户需要访问文档时则会解密文档&#xff0c;以便用户正常地查看和编辑文档内容…

2024年【氧化工艺】最新解析及氧化工艺复审模拟考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 氧化工艺最新解析是安全生产模拟考试一点通总题库中生成的一套氧化工艺复审模拟考试&#xff0c;安全生产模拟考试一点通上氧化工艺作业手机同步练习。2024年【氧化工艺】最新解析及氧化工艺复审模拟考试 1、【单选题…