加入收藏 | 设为首页 | 会员中心 | 我要投稿 长春站长网 (https://www.0431zz.com.cn/)- 媒体智能、开发者工具、运维、低代码、办公协同!
当前位置: 首页 > 站长资讯 > 评论 > 正文

使用Docker Compose改善

发布时间:2021-01-29 16:54:49 所属栏目:评论 来源:互联网
导读:2021年大数据产业的预测 Luminati Networks公司首席技术官(CTO)Ron Kol表示,2021年,开放和免费的数据收集将会推动未来的创新。调研机构FrostSullivan公司最近的一项调查发现,54%的IT决策者表示需要进行大规模数据收集,以跟上组织业务增长和在线竞争的步

2021年大数据产业的预测

Luminati Networks公司首席技术官(CTO)Ron Kol表示,2021年,开放和免费的数据收集将会推动未来的创新。调研机构Frost&Sullivan公司最近的一项调查发现,54%的IT决策者表示需要进行大规模数据收集,以跟上组织业务增长和在线竞争的步伐。但是,为了使组织有效地利用数据,首先需要访问数据,而不是对其进行阻止。如今,组织通常被禁止收集公共数据。这种情况是由两个主要因素引起的:作为安全预防措施的一部分,持续需要阻止恶意或欺诈性在线活动,以及这种公共数据有助于组织获得竞争优势的观念。在2021年及以后,组织将会认识到公共数据收集是常规且必要的持续业务行为的一部分。他们还将意识到,数据并不是组织获得竞争优势的全部。库存、价格、产品质量和服务质量等领域也发挥着重要作用。一旦意识到这一点,可以阻止数据的滥用。为了确保道德数据的收集,希望所有人促进信息的公开交换。最终,在线数据收集的未来取决于控制者。未来的数据收集工作将会发展和壮大。组织将需要自动收集数据以跟上其竞争对手,并能够以更快的速度收集数据。毕竟,组织司收集新数据的速度将决定它们的成败。

Information Builders公司工程和产品高级副总裁Eric Raab表示,数据将真正在企业规模上变得可操作:组织的数据量正在成倍增长,来源、类型和数量比以往任何时候都多,而且近乎实时地交付了越来越多的数据。但是要真正理解和访问数据并对数据采取行动,组织将需要改变其使用方式,首先要削减中间商。通过寻找使数据分类和配置过程自动化的方法,员工(包括技术背景较少的员工)将能够获取他们所需的数据,并有效地制定良好的业务决策。
 

7、防止CPU和GPU之间频繁传输数据。

注意要经常使用tensor.cpu()将tensors从GPU传输到CPU,.item()和.numpy()也是如此,使用.detach()代替。

如果正在创建一个张量,就可以使用关键字参数device=torch.device(‘cuda:0’)直接将其分配给你的GPU。

如果到传输数据的情境下,可以使用.to(non_blocking=True),只要你在传输后没有任何同步点。

8、使用梯度/激活检查点。

检查点的工作原理,是用计算换取内存。检查点部分不是讲整个计算图的所有中间激活都存储起来向后计算,而不是保存中间激活,在后传中重新计算。

它可以应用到模型的任何部分。

具体来说,在前向传递中,函数将以torch.no_grad()的方式运行,即不存储中间的激活。相反,前向传递会保存输入元组和函数参数。

在后向传递中,检索保存的输入和函数,然后再次对函数进行前向传递计算,现在跟踪中间激活,使用这些激活值计算梯度。

虽然这可能会略微增加你在给定批量大小下的运行时间,但你会显著减少你的内存占用。这反过来又会让你进一步增加你所使用的批次大小,提高GPU的利用率。

 

9、使用梯度累积。

另一种增加批次大小的方法是在调用optimizer.step()之前,在多个.backward()通道中累积梯度。

这个方法主要是为了规避GPU内存限制而开发的,但不清楚是否有额外的.backward()循环之间的权衡。

10、使用DistributedDataParallel进行多GPU训练。

加速分布式训练的方法可能需要单独写一篇文章,但一个简单的方法是使用 torch.nn.DistributedDataParallel 而不是 torch.nn.DataParallel。

这样做可以让每个GPU将由一个专门的CPU核驱动,避免了DataParallel的GIL问题。

11、将梯度设置为None而不是0。

使用.zero_grad(set_to_none=True)而不是.zero_grad()。

这样做会让内存分配器来处理梯度,而不是主动将它们设置为0,这样会适度加速。

注意,这样做并不是没有副作用的。

12、使用 .as_tensor 而不是 .tensor()

torch.tensor() 总是复制数据。如果你有一个要转换的 numpy 数组,使用 torch.as_tensor() 或 torch.from_numpy() 来避免复制数据。

13、如果不需要,请关闭调试API。

Pytorch提供了很多调试工具,例如autograd.profiler,autograd.grad_check和autograd.anomaly_detection,确保在需要的时候使用它们,不需要时将其关闭,否则他们会拖慢你的训练速度。

(编辑:长春站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读