Int8(字节)操作如何对深度学习有用?

数据挖掘 深度学习 张量流 西阿诺
2022-01-25 16:54:19

Nvidia 正计划在他们的 Titan 卡中添加对 int8 操作的硬件支持,并以深度学习为目标。我试图了解它的用途以及哪些类型的网络将从中受益。

我知道 FP16 而不是 FP32 应该对 DL 有用,但不确定 int8 能做什么。有一些研究表明您可以使用完整的 FP32 精度进行训练,然后将其四舍五入到一个字节 - 但这不会加速或减少训练的内存占用。

2个回答

实际上,最近人们一直在尝试降低神经网络的精度:1-2-5 方案(1 位权重、2 位激活和 5 位梯度)似乎适用于简单的数据集(MNIST 和 CIFAR-10)。然而,在 ImageNet 上,结果明显低于全精度(16 位或 32 位)的结果。为了达到最先进的水平,卷积网络不需要超过 16 位进行训练,但当前的 RNN 可能需要更多。对于推理,在 ImageNet 上,4-5 位权重(从全精度随机四舍五入)就足够了。

8 位整数足以训练神经网络。这个链接说英特尔使用一些技术成功地训练了仅使用 8 位整数的 ResNet-50。

虽然这个链接是关于训练后量化的。它旨在训练 fp32(或 fp16),并在 uint8 上进行推理。它已经在 Tensorflow Lite 中使用,不需要任何特定技术。