您所在的位置:桥自大驮信息门户网>社会>12bet官网备用网址-PyTorch VS TensorFlow谁最强?这是标星15000+ Transformers库的
首页 音乐 旅游 财经 星座运势 社会 历史 综合 情感 时尚 母婴育儿 家居 动漫 娱乐 国际 文化 美食 汽车 军事 时事 搞笑 体育 宠物 教育 健康养生 科技 游戏

12bet官网备用网址-PyTorch VS TensorFlow谁最强?这是标星15000+ Transformers库的

2020-01-09 15:45:32

12bet官网备用网址-PyTorch VS TensorFlow谁最强?这是标星15000+ Transformers库的

12bet官网备用网址,作者 | lysandre debut

译者 | 陆离

出品 | ai科技大本营(id: rgznai100)

【导语】自然语言处理预训练模型库 transformers 实现了几种用于 nlp 任务的最先进的 transformer 架构,如文本分类、信息提取、问题解答和文本生成等,它经常被研究人员和公司所使用,提供 pytorch 和 tensorflow 的前端实现。

究竟是 pytorch 还是 tensorflow 更有效率地训练和运行 transformers 模型?作者对不同环境下所展现的性能进行了对比,最终的结果是,无论在 cpu 还是 gpu 上,最终两大框架的表现都差不多。

transformers库:

https://github.com/huggingface/transformers

自 tensorflow 发布以来,我们一直在致力于模型产品化的工作,并使其可以用在 tpu 上,逐步适应它的性能。

本文对比了我们的模型在几种环境中所展现出来的性能。在 cpu 和 gpu 上比较了 pytorch(1.3.0)和 tensorflow(2.0)的推断结果。出于对一些原因的考虑,本文只是关于基准测试和后续性能优化系列文章中的第一篇。此外,我们还在文档中创建了基准测试部分,随着进一步的模型研究,并在不同环境中对它们进行基准测试,该部分还将不断完善。

测试的平均结果显示在下表中,在接下来的讨论部分里将对这些结果进行详细介绍。

平均推断时间

benchmarking transformers测试结果:https://url.cn/5hzhcll

电子表格中的 n/a 记录表示内存不足或是数列长度不合适。transformer-xl(transformer extra-long,transformer 在模型设计上做了长度方面的延申)没有 torchscript 结果,因为它当前不能由 torchscript(torchscript 是一种从 pytorch 代码创建可序列化和可优化模型的方法)进行序列化。

大多数情况下,tensorflow 和 pytorch 的模型在 gpu 和 cpu 上都得到了非常相似的结果。下面是对结果相关的阐述,不仅是 pytorch 和 tensorflow 之间的比较,也是模型之间的比较。

推理时间是模型投入生产时的一个重要指标。为了评估模型的推理时间,我们对不同批量和不同序列长度的模型进行了对比。我们比较了适当的批量大小[1,2,4,8]和序列长度[8,64,128,256,512,1024]。批量大小仍然很小,因为我们仅仅关注推断设置。bert和其它类似模型的最大序列长度为 512 或 256(用于 ctrl),因此不能在最后一个序列长度上进行测量。

以下是我们在两种不同环境中的测试结果:

在 cpu 上,使用 gcp n1-standard-32,它有 32 个 vcpu 和 120gb 的内存。cpu 的型号是 intel xeon@2.3ghz:

在 gpu 上,使用了带有 12 个 vcpu、40gb 内存和一个 v100 的 gpu(16gb 的 vram)的定制 gcp 机器;

为了最大化性能,我们进行了更进一步的优化:

上述测量使用的 intel xeon cpu 带有 avx 和 avx2 的扩展,而 tensorflow 需要从源代码编译之后才能够利用这些扩展,所以只能这么做;

我们通过使用 tf.function 和预先跟踪模型来确保我们没有使用 tensorflow 的 eager 模式;

我们比较了依赖于库和不依赖于库的工具:pytorch的 torchscript 和带有 gpu 的tensorflow 的 xla(自动聚类),后面会详细介绍这两个工具;

我们使用了原生的 python 模块 timeit 来测量推断时间。另外,用repeat=30 和 number=3 来进行每个实验。然后求出30 个值的平均数,就会得到所期望的平均推理时间。通常超过30 个值就会获得非常稳定的结果了;

我们不会使用如 tfx 这样的生产环境,并且我们使用的测量模型的可调用方法是:pytorch 的nn.module.forward 和 tensorflow 的 tf.keras.layers.layer.call;

对于 tensorflow 和 pytorch,我们会很谨慎地使用适当的 cuda 版本;

在大多数情况下,这两个框架都会得到类似的结果,与 pytorch 相比,tensorflow 在cpu 上的速度通常会稍慢一些,而在 gpu 上的速度则稍快一点:

所有的模型中,在 cpu 上,pytorch 的平均推断时间为 0.748s,而 tensorflow 的平均推断时间为 0.823s;

所有模型中,在 gpu 上,pytorch 的平均推断时间为 0.046s,而 tensorflow 的平均推断时间为 0.043s;

这些结果通过计算平均值来比较所有模型的推断时间。因此,输入值越大,对最终结果的影响就越大。当输入值过大时,pytorch 就会耗尽内存;当计算平均值时,这些结果会从所有度量中删除,因为这样会使结果向 pytorch倾斜。

运行过程中,pytorch 模型往往比 tensorflow 模型更早地耗尽内存:除了distilled 模型之外,pytorch 在输入批量大小达到 8 以及序列长度达到 1024 时会耗尽内存。

torchscript

torchscript 是pytorch 用来创建可序列化模型的一种方法,可以在不同的运行时间上运行,而不需要 python 的依赖包,如 c++ 环境。我们的测试是通过在python中跟踪模型并在相同的环境中重用这个跟踪模型来完成的。我们通过预先执行前向传递以确保在测量其推断之前来跟踪模型。

免责声明:虽然 torchscript 并不是为了在 python 环境中提高运行速度而创建的,但是我们的结果表明,使用 torchscript 的跟踪模型可以提高性能。

torchscript 似乎非常依赖于模型以及输入的大小(批量大小*序列长度)。例如,在xlnet 上使用 torchscript 可以获得永久性的性能提升,而在 xlm 上使用 torchscript 则可能会出现问题,因为它在较小输入下才会提高性能,但在较大输入下反而会降低性能。

平均来说,使用 torchscript 跟踪模型的推断速度比使用相同 pytorch 非跟踪模型的推断速度快 20%。

xla 是一个线性代数编译器,它可以提高 tensorflow 模型的速度,但我们只能在 gpu上使用。它基于tensorflow 的自动聚类,编译了模型的一些子图。

这些结果在速度和内存的使用效率方面得到了提高:大多数内部基准在启用了xla 后运行速度提高了 1.15 倍。

在启用 xla 后,我们所有模型性能都得到了提高。在某些极端情况下,特别是在较小输入的情况下,推断时间可以减少 70%。

精炼模型版本在这个测试中表现出色,因为它可以很快就进行基准测试。这两个 hugging face-engineered 模型——distilbert 和 distilgpt-2 的推断时间比它们的老师模型减少了一半。

由于不同的基准测试有不同的设置和相应的工具,这些都不是靠一个组织所能实现的,因此我们也欢迎来自广大社区的基准。github用户 @tlkh 已经通过在 tensorflow 的模型上使用 amp、xla 和分布式策略实现的基准测试性能做出了重大的贡献,目前也被添加到文档的基准测试部分。

如果你愿意参与,我们已经在 github 上设置了主题模板,这样操作起来就会更简单一些。你可以随意打开已有结果的主题,或者打开一个请求并到文档的基准测试部分进行添加。

基准测试脚本

和本文的发布和文档中的基准测试页一起,我们在示例部分添加了一个新脚本:benchmarks.py,它是用于获取下面详细结果的脚本。它可以使用xla 或 torchscript 在 tensorflow 或 pytorch 上运行基准测试,并将结果保存到 csv 文件当中。

接下来的计划

对模型进行基准测试只是提高性能的第一步。我们相信这篇介绍性的文章可能有助于比较模型的当前状态,特别是在研究 pytorch 和 tensorflow 之间的差异时。当我们深入研究 transformers 生产方面时,一定会致力于性能改进。

对于 pythorch 和 tensorflow 的自动化脚本、新架构和定制 tpu 培训,请密切关注后续文章。

原文链接:

https://medium.com/huggingface/benchmarking-transformers-pytorch-and-tensorflow-e2917fb891c2

(*本文为 ai科技大本营编译文章,请微信联系 1092722531)

精彩推荐

2019 中国大数据技术大会(bdtc)再度来袭!豪华主席阵容及百位技术专家齐聚,15 场精选专题技术和行业论坛,超强干货+技术剖析+行业实践立体解读,深入解析热门技术在行业中的实践落地。

即日起,限量 5 折票开售,数量有限,扫码购买,先到先得!

wellbet吉祥体育手机官方下载