用尽每一寸GPU,阿里云cGPU容器技术白皮书重磅发布!

简介: 云原生已经成为业内云服务的一个趋势。在云原生上支持异构计算有助于提升CPU的利用率。一文分析业内主流GPU共享方案,并告诉你阿里云cGPU牛在哪里!阿里云异构计算推出的cGPU(container GPU)容器技术,创新地提出了一种不同于以往的GPU容器方案,克服了业内主流方案的一些常见的缺陷,在保证性能的前提下,做到了容器之间的GPU显存隔离和任务隔离,为客户充分利用GPU硬件资源进行训练和推理提供的有效保障。

作者:阿里云异构计算高级技术专家 何旻

背景

云原生已经成为业内云服务的一个趋势。在云原生上支持异构计算,这个功能在标准的Docker上已经可以很好的支持了。为了进一步提高GPU的利用率、避免算力浪费,需要在单个GPU上可以运行多个容器,并且在多个容器间隔离GPU应用,这在标准的Docker上是无法做到的。为了满足这一需求,业界也做了很多探索。NVIDIA vGPU, NVIDIA MPS, 基于rCUDA的方案等,都为用户更小颗粒度的使用GPU提供了可能。

近日,阿里云异构计算推出的cGPU(container GPU)容器技术,创新地提出了一种不同于以往的GPU容器方案,克服了业内主流方案的一些常见的缺陷,在保证性能的前提下,做到了容器之间的GPU显存隔离和任务隔离,为客户充分利用GPU硬件资源进行训练和推理提供的有效保障。

业内常用方案简介

在介绍阿里云异构计算cGPU计算技术前,我们先看看业内有哪些GPU共享方案吧:

NVIDIA MPS

NVIDIA MPS (NVIDIA Multi-Process Service)是NVIDIA公司为了进行GPU共享而推出的一套方案,由多个CUDA程序共享同一个GPU context,从而达到多个CUDA程序共享GPU的目的。同时,在Volta GPU上,用户也可以通过CUDA_MPS_ACTIVE_THREAD_PERCENTAGE变量设定每个CUDA程序占用的GPU算力的比例。

然而由于多个CUDA程序共享了同一个GPU context,这样引入的问题就是:当一个CUDA程序崩溃或者是触发GPU错误的时候,其他所有CUDA程序的任务都无法继续执行下去了,而这对于容器服务是灾难性的问题。

NVIDIA vGPU

NVIDIA vGPU方案是GPU虚拟化的方案,可以对多用户的强GPU隔离方案。它主要应用于虚拟化平台中,每个vGPU的显存和算力都是固定的,无法灵活配置;另外vGPU的使用需要额外从NVIDIA公司购买license,这里我们就不再详细讨论。

rCUDA类似方案

业内还有一种常用方案是通过替换CUDA库实现API层面的转发,然后通过修改显存分配,任务提交等API函数来达到多个容器共享GPU的目的。这种方案的缺点是需要对静态链接的程序重新编译,同时在CUDA库升级的时候也需要进行修改来适配新版本。

阿里云cGPU容器技术

阿里云异构计算GPU团队推出了cGPU方案,相比其他方案,这是一个颠覆性的创新:通过一个内核驱动,为容器提供了虚拟的GPU设备,从而实现了显存和算力的隔离;通过用户态轻量的运行库,来对容器内的虚拟GPU设备进行配置。阿里云异构计算cGPU在做到算力调度与显存隔离的同时,也做到了无需替换CUDA静态库或动态库;无需重新编译CUDA应用;CUDA,cuDNN等版本随时升级无需适配等特性。

image.png
图1. cGPU容器架构图

cGPU内核驱动为一个自主研发的宿主机内核驱动。它的优点在于:
• 适配开源标准的Kubernetes和NVIDIA Docker方案;
• 用户侧透明。AI应用无需重编译,执行无需CUDA库替换;
• 针对NVIDIA GPU设备的底层操作更加稳定和收敛;
• 同时支持GPU的显存和算力隔离。

使用方式

1 利用阿里云容器服务

阿里云容器服务已经支持cGPU容器组件了,通过登录容器服务 Kubernetes 版控制台,只需要简单的点击几下,为容器节点打标,就可以利用cGPU容器隔离,最大化的利用GPU的硬件能力了。同时,还可以通过Prometheus的监控能力查看每个cGPU容器内的显存用量,在享受低成本的同时,保障了应用的可靠性。

image.png

快速部署和使用的方式,可以参见阿里云开发者社区的文章:
https://developer.aliyun.com/article/762973
更详细的使用文档,可以参考阿里云的帮助文档:
https://help.aliyun.com/document_detail/163994.html

2 在阿里云GPU实例上使用cGPU容器

为了更灵活的支持各种客户的需要,我们也开放了阿里云GPU实例上使用cGPU容器的能力。cGPU依赖 Docker 和 NVIDIA Docker,在使用cGPU前,请确保环境可以正常创建带GPU的容器服务。

  1. 安装:
    下载cGPU 安装包:

wget http://cgpu.oss-cn-hangzhou.aliyuncs.com/cgpu-0.8.tar.gz

解压后执行 sh install.sh 命令安装。
安装后使用lsmod | grep cgpu 命令验证是否按照成功:
lsmod | grep cgpu
cgpu_km 71355 0

  1. 配置:

cGPU组件会检测以下docker的环境变量,进行相应操作:
• ALIYUN_COM_GPU_MEM_DEV:为正整数,表示为host上每张卡的总显存大小。
• ALIYUN_COM_GPU_MEM_CONTAINER: 为正整数,指定容器内可见的显存容量。此参数同

ALIYUN_COM_GPU_MEM_DEV一起设定cGPU内可见的显存大小。如在一张4G显存的显卡上,
我们可以通  过-e ALIYUN_COM_GPU_MEM_DEV=4 -e ALIYUN_COM_GPU_MEM_CONTAINER=1
的参数为容器分配1G显存。如果不指定此参数,则cGPU不会启动,此时会默认使用NVIDIA容器。

• ALIYUN_COM_GPU_VISIBLE_DEVICES:为正整数或uuid,指定容器内可见的GPU设备。如在一个有4张显卡的机器上,我们可以通过-e ALIYUN_COM_GPU_VISIBLE_DEVICES=0,1来为容器分配第一和第二张显卡。或是-e ALIYUN_COM_GPU_VISIBLE_DEVICES=uuid1,uuid2,uuid3为容器分配uuid为uuid1,uuid2,uuid3z的3张显卡。
• CGPU_DISABLE:总开关,用于禁用cGPU。可以接受的参数是-e CGPU_DISABLE=true或-e CGPU_DISABLE=1,此时cGPU将会被禁用,默认使用nvidia容器。
• ALIYUN_COM_GPU_SCHD_WEIGHT 为正整数,有效值是1 - min(max_inst, 16),用来设定容器的算力权重。

c 运行演示:
以GN6i 单卡T4 为例,实现2个容器共享使用1个显卡。执行如下命令,分别创建2个docker 服务,设置显存分别为6G和8G。
docker run -d -t --gpus all --privileged --name gpu_test1 -e ALIYUN_COM_GPU_MEM_CONTAINER=6 -e ALIYUN_COM_GPU_MEM_DEV=15 nvcr.io/nvidia/tensorflow:19.10-py3
docker run -d -t --gpus all --privileged --name gpu_test2 -e ALIYUN_COM_GPU_MEM_CONTAINER=8 -e ALIYUN_COM_GPU_MEM_DEV=15 nvcr.io/nvidia/tensorflow:19.10-py3

如下图,进入Docker(gpu_test1) 后,执行nvidia-smi 命令,可以看到T4显卡的总内存为6043M

image.png

如下图,进入Docker(gpu_test2) 后,执行nvidia-smi 命令,可以看到T4显卡的总内存为8618M。

image.png

之后,就可以在每个容器内运行GPU训练或者推理的任务了。

性能分析

在使用过程中,用户经常关心的就是性能问题,cGPU容器方案会对性能有多少影响呢?下面是我们的一组测试数据,在常用的tensorflow框架下用benchmark工具分别测试了模型推理和训练性能。
以下数据的测试机为阿里云上的GPU型实例,具有8核CPU,32G内存,以及一张带有16G显存的NVIDIA T4显卡。测试数据为单次测试结果,因此可能会带有误差。

1 单cGPU容器 VS 单GPU直通性能比较

我们分别在cGPU容器内部以及标准的Docker容器内部跑测试,为cGPU容器内的GPU实例分配所有的显存和算力,来显示在不共享GPU的情况下的cGPU是否有性能损失。

下图是ResNet50训练测试在不同精度和batch_size下的性能比较,绿色柱表示标准的容器性能,橙色柱表示cGPU容器内的性能,可以看到在不同的情况下,cGPU容器实例都几乎没有性能损失。

 

image.png
图2. 单容器独占GPU--Resnet50 训练结果对比

下图是ResNet50推理测试在不同精度和batch_size下的性能比较,同样的在不同的情况下,cGPU容器实例都几乎没有性能损失。

image.png
图3. 单容器独占GPU--Resnet50 推理结果对比

2 cGPU容器 VS MPS容器GPU共享性能比较

如前文所述,标准的Docker容器不支持共享,为了测试多容器共享单个GPU的性能,我们采用了MPS容器作为基准来进行性能比较。同样的,我们采用了ResNet50的训练和推理benchmark作为测试用例,分别用两个cGPU容器和两个MPS容器共享一个GPU硬件。

下图是ResNet50训练测试在不同batch_size下的性能比较,绿色柱表示两个MPS容器性能跑分的总和,橙色柱表示两个cGPU容器跑分的总和,可以看到,cGPU容器实例对比MPS容器几乎没有性能损失,在大的batch_size的情况下甚至跑分高于MPS容器。

 

image.png
图4. 多容器共享GPU--Resnet50训练结果对比

下图是ResNet50推理测试在不同batch_size下的性能比较,MPS容器和cGPU容器的性能差距不大,基本都在误差范围之内。

 

image.png
图5. 多容器共享GPU--Resnet50推理结果对比

总结

阿里云cGPU容器技术,作为业内首创的基于内核虚拟GPU隔离的GPU共享容器方案,在保证性能的前提下,做到了容器之间的GPU显存隔离和任务隔离,为客户充分利用GPU硬件资源进行训练和推理提供的有效保障。
同时, cGPU方案具有多种输出方式:客户既可以选择阿里云GPU容器服务,简单便捷的实现GPU容器服务的共享、调度和监控;又可以选择在阿里云ECS GPU实例上进行手动安装配置,灵活可控,方便的和已有GPU容器进行整合。

 

 

原文链接
本文为阿里云原创内容,未经允许不得转载。

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

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

相关文章

钉钉轻松顶住信息洪流的原因,竟然是它

简介: 在9月18日云栖大会上,阿里云智能高级技术专家木洛就为我们详细介绍了,表格存储Tablestore是如何助力钉钉消息存储架构的升级,帮助钉钉顶住持续增长的流量。 今年的疫情来势汹汹,新冠病毒作为2020最具代表性的黑…

说到 SASE,新的安全范式有哪些

来源 | 好奇瞅瞅责编 | 寇雪芹头图 | 下载于视觉中国前言本系列目录:深入理解SASE(一):什么是云化深入理解SASE(二):网络云化及演进方向深入理解SASE(三):什么…

从零入门 Serverless | SAE 场景下,应用流量的负载均衡及路由策略配置实践

简介: 本节课程包含三部分内容:单应用的负载均衡配置、多应用的路由策略配置以及自建微服务网关。 作者 | 落语 阿里云云原生技术团队 本文整理自《Serverless 技术公开课》,“Serverless”公众号后台回复“入门”,获取 Serverle…

聚焦2020云栖大会 边缘计算专场畅谈技术应用创新

简介: 一年一度科技圈盛事—云栖大会如期上演,本届大会以“数智未来,全速重构”为主题,与业界同仁、合作伙伴共同打造了一场数字时代的云上相聚。于9月18日下午举办的边缘计算技术应用创新专场中,阿里云携手甘肃省公路…

springboot word aspose 转换PDF 在线预览

文章目录1. 依赖2. 工具类3. 实现类4. controller5. application.yml6. license.xml7. 目录结构8. 测试验证1. 依赖 <dependencies><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.1…

【数据湖加速篇】 —— 数据湖结构化数据优化与查询加速方案

简介&#xff1a; 近几年&#xff0c;数据湖架构的概念逐渐兴起&#xff0c;很多企业都在尝试构建数据湖。相比较大数据平台&#xff0c;数据湖在数据治理方面提出了更高的要求。对于数据湖场景所提出的新需求&#xff0c;“传统”的大数据工具在很多方面都面临着新的挑战。Jin…

Kubernetes 也有局限性吗?

作者 | Draveness来源 | 真没什么逻辑头图 | 下载于视觉中国2014 年发布的 Kubernetes 在今天俨然已成为容器编排领域的事实标准&#xff0c;相信谈到 Kubernetes 的开发者都会一再复述上述现象。如下图所示&#xff0c;今天的大多数个人或者团队都会选择 Kubernetes 管理容器&…

Kubernetes 新玩法:在 yaml 中编程

简介&#xff1a; 如何做性能测试&#xff1f;要么是通过编码的方式完成&#xff0c;写一堆脚本&#xff0c;用完即弃&#xff1b;要么是基于平台&#xff0c;在平台定义的流程中进行。对于后者&#xff0c;通常由于目标场景的复杂性&#xff0c;如部署特定的 workload、观测特…

对话猿辅导:阿里云远程办公零信任落地创新安全

简介&#xff1a; 大型实战场景验证&#xff0c;灵活应对复杂环境。 2020&#xff0c;一场突如其来的新冠疫情&#xff0c;引发了史上最大规模的远程办公。疫情让安全问题暴露得更加突出&#xff0c;与疫情的对抗也是阿里云安全的战场。 9月18日&#xff0c;2020云栖大会技术…

阿里云发布边缘计算视频上云解决方案 为海量视图处理提供城市级云基础设施

简介&#xff1a; 2020云栖大会在云上成功召开&#xff0c;此次大会汇聚行业领袖&#xff0c;共同见证数智未来的重构进程。在9月18日的产品发布大厅&#xff0c;阿里云正式发布边缘计算视频上云解决方案&#xff0c;旨在依托城市级云计算基础设施&#xff0c;实现海量视图数据…

数据湖元数据服务的实现和挑战

简介&#xff1a; 数据湖元数据服务为大数据而生&#xff0c;为互通生态而生&#xff0c;期望后续继续完善其服务能力和支撑更多的大数据引擎&#xff0c;通过开放的服务能力、存储能力、统一的权限及元数据管理能力&#xff0c;为客户节省管理/人力/存储等各项成本&#xff0c…

美国燃油“动脉”被黑客切断,网络安全走向哪里?专访山石网科|拟合

从无序中寻找踪迹&#xff0c;从眼前事探索未来。 > 2021 年正值黄金十年新开端&#xff0c;CSDN 以中立技术社区专业、客观的角度&#xff0c;深度探讨中国前沿 IT 技术演进&#xff0c;推出年度重磅企划栏目——「拟合」&#xff0c;通过对话企业技术高管大咖&#xff0c;…

云时代的智能运维平台,助力企业创新迭代

简介&#xff1a; 智能的运维平台&#xff0c;帮助企业业务平稳、智能、高效地运行。 每一起严重事故背后&#xff0c;必然有29次轻微事故和300起未遂先兆以及1000起事故隐患。—— 海恩法则(Heinrich‘s Law) 随着云计算时代的到来&#xff0c;大量企业将自己的业务逐步迁移…

数据湖架构,为什么需要“湖加速”?

简介&#xff1a; 湖加速即为数据湖加速&#xff0c;是指在数据湖架构中&#xff0c;为了统一支持各种计算&#xff0c;对数据湖存储提供适配支持&#xff0c;进行优化和缓存加速的中间层技术。那么为什么需要湖加速&#xff1f;数据湖如何实现“加速”&#xff1f;本文将从三个…

“阿里日”102 对新人举办集体婚礼,张勇证婚:“又热,又爱”!

整理 | 王晓曼出品 | 程序人生 &#xff08;ID&#xff1a;coder _life&#xff09;2021年5月10日&#xff0c;是第十七个“阿里日”&#xff0c;同时也是第十六次阿里巴巴举办员工集体婚礼。据悉&#xff0c;今年共有1541对新人报名集体婚礼&#xff0c;其中&#xff0c;双职工…

阿里巴巴电商搜索推荐实时数仓演进之路

简介&#xff1a; 自建实时数仓到底难在哪里&#xff1f;实时数仓应该怎么建&#xff1f;阿里巴巴搜索团队告诉您答案 作者&#xff1a;张照亮&#xff08;士恒&#xff09;阿里巴巴搜索事业部高级技术专家 1. 业务背景 阿里巴巴电商搜索推荐实时数据仓库承载了阿里巴巴集团…

多数据源一站式入湖

简介&#xff1a; 通过一站式入湖&#xff0c;将不同数据源的数据统一归并到以OSS对象存储为基础架构的集中式数据湖存储中&#xff0c;解决了企业面临的数据孤岛问题&#xff0c;为统一的数据分析打好了基础. 背景 数据湖作为一个集中化的数据存储仓库&#xff0c;支持的数据…

一文说透架构设计的本质

作者 | 猿码架构来源 | 云时代架构头图 | 下载于视觉中国前言&#xff1a;在软件研发领域&#xff0c;程序员的终极目标都是想成为一名合格的架构师。然而梦想很美好&#xff0c;但现实却很曲折。在实际工作中&#xff0c;程序员会分很多种&#xff0c;有的擅长编码实现&#x…

“视频云营业厅”发布,蚂蚁 mPaaS 加速金融机构数字化转型

简介&#xff1a; 线下业务线上办&#xff0c;便民服务不间断 在业务和数据争相“上云”的今天&#xff0c;更多金融机构加速数字化转型进程&#xff0c;将原有的人对人、线下、柜面核心业务进一步线上化&#xff0c;扩充全新的业务触点&#xff0c;开启远程业务办理的新模式。…

被Python「苦虐」的日子太惨了!

Python因为其优越的特性广泛应用于数据分析、人工智能、Web开发、后端开发、自动化测试/运维、爬虫等领域&#xff0c;也得到了很多企业的青睐。甚至连BATZJ的技术大牛&#xff0c;都无可否认Python现在对于一个程序员发展的重要性&#xff01;最近一两年&#xff0c;我身边也有…