×

PyTorch教程23.5之选择服务器和GPU

消耗积分:0 | 格式:pdf | 大小:0.30 MB | 2023-06-05

陈霞

分享资料个

深度学习训练通常需要大量的计算。GPU是目前深度学习性价比最高的硬件加速器。特别是,与 CPU 相比,GPU 更便宜且性能更高,通常高出一个数量级以上。此外,单个服务器可以支持多个 GPU,高端服务器最多支持 8 个。更典型的数字是一个工程工作站最多 4 个 GPU,因为热量、冷却和电力需求迅速升级,超出了办公大楼的支持能力。对于更大规模的部署,云计算(例如,Amazon 的 P3G4 实例)是更实用的解决方案。

23.5.1。选择服务器

通常不需要购买具有许多线程的高端 CPU,因为大部分计算都发生在 GPU 上。也就是说,由于 Python 中的全局解释器锁 (GIL),在我们拥有 4-8 个 GPU 的情况下,CPU 的单线程性能可能很重要。在所有条件相同的情况下,这表明内核数量较少但时钟频率较高的 CPU 可能是更经济的选择。例如,在 6 核 4 GHz 和 8 核 3.5 GHz CPU 之间进行选择时,前者更可取,尽管其总速度较低。一个重要的考虑因素是 GPU 使用大量功率,因此会散发大量热量。这需要非常好的散热和足够大的机箱来使用 GPU。如果可能,请遵循以下准则:

  1. 电源GPU 使用大量电力。每个设备最高 350W 的预算(检查显卡的峰值需求而不是典型需求,因为高效代码会消耗大量能源)。如果您的电源不能满足需求,您会发现您的系统变得不稳定。

  2. 机箱尺寸GPU 很大,辅助电源连接器通常需要额外的空间。另外,大机箱更容易散热。

  3. 显卡散热如果您有大量 GPU,则可能需要投资水冷。此外,即使风扇较少,也要以参考设计为目标,因为它们足够薄,可以在设备之间引入空气。如果您购买多风扇 GPU,安装多个 GPU 时它可能太厚而无法获得足够的空气,并且您会遇到热节流问题。

  4. PCIe 插槽将数据移入和移出 GPU(以及在 GPU 之间交换数据)需要大量带宽。我们推荐 16 通道的 PCIe 3.0 插槽。如果安装多个 GPU,请务必仔细阅读主板说明以确保 16× 当同时使用多个 GPU 并且您获得 PCIe 3.0 而不是 PCIe 2.0 用于额外插槽时,带宽仍然可用。一些主板降级到8×甚至4×安装多个 GPU 时的带宽。这部分是由于 CPU 提供的 PCIe 通道数量。

简而言之,这里有一些构建深度学习服务器的建议:

  • 初学者购买低功耗的低端 GPU(适合深度学习的廉价游戏 GPU 使用 150-200W)。如果幸运的话,您当前的计算机将支持它。

  • 1 个显卡具有 4 核的低端 CPU 就足够了,大多数主板就足够了。瞄准至少 32 GB DRAM 并投资 SSD 用于本地数据访问。600W的电源应该足够了。买一个有很多风扇的 GPU。

  • 2 个 GPU具有 4-6 个内核的低端 CPU 就足够了。瞄准 64 GB DRAM 并投资购买 SSD。两个高端 GPU 需要大约 1000W 的功率。在主板方面,确保它们有 两个PCIe 3.0 x16 插槽。如果可以,获得一块在 PCIe 3.0 x16 插槽之间有两个可用空间(60 毫米间距)的主板,以提供额外的空气。在这种情况下,购买两个风扇很多的 GPU。

  • 4 个 GPU确保购买单线程速度相对较快(即时钟频率较高)的 CPU。您可能需要具有更多 PCIe 通道的 CPU,例如 AMD Threadripper。您可能需要相对昂贵的主板来获得 4 个 PCIe 3.0 x16 插槽,因为它们可能需要一个 PLX 来复用 PCIe 通道。购买具有参考设计的狭窄 GPU,让空气进入 GPU 之间。您需要一个 1600–2000W 的电源,而您办公室的插座可能不支持。该服务器可能会运行得很吵很热你不希望它在你的办公桌下。建议使用 128 GB 的 DRAM。获取用于本地存储的 SSD(1–2 TB NVMe)和一组 RAID 配置的硬盘来存储您的数据。

  • 8 个 GPU您需要购买带有多个冗余电源的专用多 GPU 服务器机箱(例如,每个电源 1600W 的 2+1)。这将需要双插槽服务器 CPU、256 GB ECC DRAM、快速网卡(推荐 10 GBE),并且您需要检查服务器是否支持GPU 的物理外形。消费类 GPU 和服务器 GPU 之间的气流和布线布局存在显着差异(例如,RTX 2080 与 Tesla V100)。这意味着您可能无法在服务器中安装消费类 GPU,因为电源线间隙不足或缺少合适的线束(正如其中一位合著者痛苦地发现的那样)。

23.5.2。选择 GPU

目前,AMD和NVIDIA是专用GPU的两大主要厂商。NVIDIA率先进入深度学习领域,通过CUDA为深度学习框架提供更好的支持。因此,大多数买家选择 NVIDIA GPU。

NVIDIA 提供两种类型的 GPU,针对个人用户(例如,通过 GTX 和 RTX 系列)和企业用户(通过其 Tesla 系列)。这两种类型的 GPU 提供了相当的计算能力。但是,企业级用户GPU普遍采用(被动)强制散热、更大内存、ECC(纠错)内存。这些 GPU 更适合数据中心,通常成本是消费级 GPU 的十倍。

如果您是一家拥有 100 多台服务器的大公司,您应该考虑使用 NVIDIA Tesla 系列或使用云中的 GPU 服务器。对于拥有 10 台以上服务器的实验室或中小型公司,NVIDIA RTX 系列可能最具成本效益。您可以购买带有 Supermicro 或 Asus 机箱的预配置服务器,这些机箱可以高效地容纳 4-8 个 GPU。

GPU 供应商通常每隔一到两年发布一次新一代产品,例如 2017 年发布的 GTX 1000(帕斯卡)系列和 2019 年发布的 RTX 2000(图灵)系列。每个系列都提供几种不同的型号,提供不同的性能水平。GPU 性能主要是以下三个参数的组合:

  1. 计算能力通常我们寻找 32 位浮点计算能力。16 位浮点训练(FP16)也正在进入主流。如果你只对预测感兴趣,你也可以使用 8 位整数。最新一代的图灵 GPU 提供 4 位加速。不幸的是,目前训练低精度网络的算法还没有普及。

  2. 内存大小随着您的模型变大或训练期间使用的批次变大,您将需要更多 GPU 内存。检查 HBM2(高带宽内存)与 GDDR6(图形 DDR)内存。HBM2 更快但更昂贵。

  3. 内存带宽只有当您有足够的内存带宽时,您才能充分利用您的计算能力。如果使用 GDDR6,请寻找宽内存总线。

对于大多数用户来说,看算力就够了。请注意,许多 GPU 提供不同类型的加速。例如,NVIDIA 的 TensorCores 将一部分算子加速了 5×. 确保您的图书馆支持这一点。GPU 内存应不少于 4 GB(8 GB 更好)。尽量避免将 GPU 也用于显示 GUI(改为使用内置图形)。如果无法避免,请添加额外的 2 GB RAM 以确保安全。

图 23.5.1比较了各种 GTX 900、GTX 1000 和 RTX 2000 系列型号的 32 位浮点计算能力和价格。价格是在维基百科上找到的建议价格。

https://file.elecfans.com/web2/M00/AA/4B/pYYBAGR9QKSABLk8AAQpdDxjbJE760.svg

图 23.5.1浮点计算能力和价格比较。

 


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"/login/index.html"); return false } if(data.code == 2){ //跳转到VIP升级页面 window.location.href="//m.obk20.com/vip/index?aid=" + webid return false } //是会员 if (data.code > 0) { $('body').append(htmlSetNormalDownload); var getWidth=$("#poplayer").width(); $("#poplayer").css("margin-left","-"+getWidth/2+"px"); $('#tips').html(data.msg) $('.download_confirm').click(function(){ $('#dialog').remove(); }) } else { var down_url = $('#vipdownload').attr('data-url'); isBindAnalysisForm(pop_this, down_url, 1) } }); }); //是否开通VIP $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code == 2 || data.code ==5){ //跳转到VIP升级页面 $('#vipdownload>span').text("开通VIP 免费下载") return false }else{ // 待续费 if(data.code == 3) { vipExpiredInfo.ifVipExpired = true vipExpiredInfo.vipExpiredDate = data.data.endoftime } $('#vipdownload .icon-vip-tips').remove() $('#vipdownload>span').text("VIP免积分下载") } }); }).on("click",".download_cancel",function(){ $('#dialog').remove(); }) var setWeixinShare={};//定义默认的微信分享信息,页面如果要自定义分享,直接更改此变量即可 if(window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger'){ var d={ title:'PyTorch教程23.5之选择服务器和GPU',//标题 desc:$('[name=description]').attr("content"), //描述 imgUrl:'https://'+location.host+'/static/images/ele-logo.png',// 分享图标,默认是logo link:'',//链接 type:'',// 分享类型,music、video或link,不填默认为link dataUrl:'',//如果type是music或video,则要提供数据链接,默认为空 success:'', // 用户确认分享后执行的回调函数 cancel:''// 用户取消分享后执行的回调函数 } setWeixinShare=$.extend(d,setWeixinShare); $.ajax({ url:"//www.obk20.com/app/wechat/index.php?s=Home/ShareConfig/index", data:"share_url="+encodeURIComponent(location.href)+"&format=jsonp&domain=m", type:'get', dataType:'jsonp', success:function(res){ if(res.status!="successed"){ return false; } $.getScript('https://res.wx.qq.com/open/js/jweixin-1.0.0.js',function(result,status){ if(status!="success"){ return false; } var getWxCfg=res.data; wx.config({ //debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId:getWxCfg.appId, // 必填,公众号的唯一标识 timestamp:getWxCfg.timestamp, // 必填,生成签名的时间戳 nonceStr:getWxCfg.nonceStr, // 必填,生成签名的随机串 signature:getWxCfg.signature,// 必填,签名,见附录1 jsApiList:['onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); wx.ready(function(){ //获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 wx.onMenuShareTimeline({ title: setWeixinShare.title, // 分享标题 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享给朋友”按钮点击状态及自定义分享内容接口 wx.onMenuShareAppMessage({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 type: setWeixinShare.type, // 分享类型,music、video或link,不填默认为link dataUrl: setWeixinShare.dataUrl, // 如果type是music或video,则要提供数据链接,默认为空 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ”按钮点击状态及自定义分享内容接口 wx.onMenuShareQQ({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 wx.onMenuShareWeibo({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ空间”按钮点击状态及自定义分享内容接口 wx.onMenuShareQZone({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); }); }); } }); } function openX_ad(posterid, htmlid, width, height) { if ($(htmlid).length > 0) { var randomnumber = Math.random(); var now_url = encodeURIComponent(window.location.href); var ga = document.createElement('iframe'); ga.src = 'https://www1.elecfans.com/www/delivery/myafr.php?target=_blank&cb=' + randomnumber + '&zoneid=' + posterid+'&prefer='+now_url; ga.width = width; ga.height = height; ga.frameBorder = 0; ga.scrolling = 'no'; var s = $(htmlid).append(ga); } } openX_ad(828, '#berry-300', 300, 250);