题图摄于北京三环路
本文作者为 VMware 中国研发中心主任云原生实验室架构师。
AI任务和GPU加速
人工智能(AI)技术可以赋予机器像人类一样运用智慧处理复杂任务的能力,是一门具有多种方法的跨学科科学,目前,机器学习和深度学习的发展正为科技行业的几乎每个领域带来着巨大的影响。
在深度学习中,训练深度网络模型(DNNs)时往往会遇到许多问题,其中最常见的就是训练时间过长。从2010年开始,算法改进和机器算力的进步都为更复杂的深度神经网络模型的训练提供了更加高效的解决方案。多核心计算架构硬件拥有着强大的计算能力,如GPUs,它非常适合完成矩阵和向量的计算任务,因此可以极大加速网络的训练。截止2019年,具有 AI 特定增强功能的图形处理单元 (GPUs) 在AI领域中已取代 CPU,成为训练大规模商业云 AI 的主要计算单元。
Kubernetes最初由Google公司设计和开发,于2014年6月更改为开源项目。自 2015 年 7 月 Google 和 Linux 合作成立 CNCF后,Kubernetes开始由云原生计算基金会 (CNCF) 管理。Kubernetes是一个排编系统,可以在生产中自动化管理数千个容器内的进程和处理。它可以帮助解决如部署,扩展和管理等与容器化应用相关的基础而又冗杂的处理工作,已经成为了部署和管理机器学习任务流的重要应用平台。
目前GPU管理解决方案
目前有3种常见的GPU资源使用方案:
- 一个任务对应一个GPU
- 不同的工作共享一个GPU资源,但任务彼此不独立
- 使用GPU虚拟化技术共享GPU资源
然而这几种GPU管理方案中可能存在一些潜在的缺陷,如:
- 难以实现应用调度
- 没有充分利用GPU的计算周期
- 限制并预设了GPU资源粒度
- GPU资源受限于本机配置
Bitfusion虚拟化通过提供网络接入式的GPU资源共享池有效地解决了这几个问题,使GPUs转变成了一层可被抽象,分区,自动化和共享的计算资源。然而,Kubernetes并没有提供直接使用Bitfusion虚拟化的GPU的接口,这一限制阻碍了工作负载在Kubuernetes上使用Bitfusion虚拟GPU资源。为了更好地实现资源管理和GPU池管理,Kubernetes上需要一个可以使用Bitfusion虚拟GPU的解决方案。
Bitfusion on Kubernetes
为了解决这一问题,Bitfusion on Kubernetes项目实现了在Kubernetes中应用Bitfusion虚拟化技术的方式。Bitfusion on Kubernetes支持通过透明的方式将GPU资源分配给开发人员,使用时利用Kubernetes的本地方法即可调用被Bitfusion虚拟化的GPU资源。项目主要的潜在用户有:
- 打算在vSphere/Kubernetes上运行AI/ML任务和工作的用户
- 与VMware合作,负责提供AI应用解决方案的供应商
- 其他在Kubernetes上应用AI/ML的任务,倾向使用Bitfusion虚拟化GPU资源的个人或组织
使用“Bitfusion on Kubernetes”技术
建立一个AI应用
计算机视觉是一个跨学科领域,旨在帮助计算机在图像和视频中获得高级的理解。计算机视觉技术是在人工智能领域和计算机领域中最具有研究前景的技术之一,在现代化时代发挥了巨大的优势并带来了庞大的商业价值。
计算机视觉的核心是设计一个可以捕捉,理解和解释图像或视频中重要视觉信息的的计算机系统,这个系统可以利用人类提供的上下文知识,将这些数据转化为用于驱动决策的洞察特征。计算机视觉的主要目标是能将原始的图像数据转化为高层次的理解,方便人类或计算机解释或者以其为基础处理其他的任务。
这在本实验中,我们使用“Bitfusion on Kubernetes”技术建立了一个计算机视觉的AI应用。在项目中,我们基于ImageNet数据集为机器构建了一个四分类的图像分类任务,利用python中的TensoFlow机器学习库搭建和训练了以VGG19作为主干网络的深度卷积模型,最终模型在验证集上的达到了98.33%的分类准确率。完整详细的实验代码和实验指导请参考 https://via.vmw.com/EXDb ,其中重点介绍了使用“Bitfusion on Kubernetes”技术的环境搭建,数据集处理,模型建立,在Kubernetes上使用Bitfusion训练模型和模型评估等五个部分。
图:在Kubernetes中模型正在使用Bitfusion虚拟化后的GPU资源进行训练。