【小白设计AI芯片】(2) 神经网络中的数据类型

本文探讨了神经网络中不同数据类型(如fp16、fp32、bf16、tf32等)对算力性能的影响,指出数据类型选择对训练和推理性能至关重要,以及AI芯片如何通过支持多种数据类型优化神经网络性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        继上一篇浅浅讨论了神经网络中的舍入操作之后,本篇简单讨论下神经网络算法中常见的数据类型。相比CPU,专门用于神经网络训练与推理的DSA/AI芯片,往往支持更多的数据类型。这些数据类型在表示范围、精度和算力性能方面各有考量。

算力与数据类型

        神经网络训练/推理性能与数据类型的选择有很大关系,这是因为芯片上相同规模的运算器单元,在不同数据类型上具有不同的算力。 以矩阵乘加单元的定点计算为例,假设某AI Core具有运算能力“16Byte/cycle*16=256Byte/cycle”(这与AI Core的运算器计算带宽和个数相关,运算器带宽和规模也决定了AI Core的主要面积来源),对于int8(1Byte)类型就是可完成计算“256个数/cycle”,或者说“256次乘&加运算/cycle”。如果AI Core工作频率为1GHz,则其int8矩阵算力为

        MAC算力=256次/cycle * 2(乘加分开算2次) * 1GHz = 512GOPS(Giga Operations Per Second)

 在相同运算能力下,对于int16(2Byte)类型就是可完成计算“128个数/cycle”,或者说“128次乘&加运算/cycle”,折合成MAC算力为256GOPS。所以常规情况下,MAC算力与数据位宽成反比。

        实际芯片设计,由于运算器物理实现限制(频率),对于更高位宽如fp32的计算,算力会在数据位宽比例折半的基础上再折半。依然如上运算器规模为例,对于fp16(2Byte),可完成计算“128个数/cycle”,或者说“128次乘&加运算/cycle”;那么对于fp32(4Byte),实际情况可能是:“64个数/2 cycle”,或者说“64次乘&加运算/2 cycle”。因此MAC算力(for fp16)为256GOPS,MAC算力(for fp32)为64GOPS。如此一来,fp32的等效算力就是fp16的1/4。纵观各AI芯片厂商,基本都是这个规律。

层出不穷的数据类型

        与CPU通用计算相比,神经网络由于其计算场景的特殊性,往往精度要求存在可妥协性,因此出现了多种特殊的数据类型,用于给神经网络“加速”。总结于如下表格。

DataTypeDiscription(格式表示为{1,Exp,Man},E表示指数位宽,Man表示尾数位宽)
fp16

半精度浮点类型,格式为{1,5,10}。

通用计算与AI计算常见的类型之一,只占16bit的位宽有利于提升AI算力,但其表示范围较小会限制其应用场景。

fp32

单精度浮点类型,格式为{1,8,23}。

通用计算与AI计算常见的类型之一,表示范围和精度对于AI应用都足够。但由于占4个字节,硬件算力因此很低,正在逐渐被其他类型(如tf32、bf16)替代,一般只在精度要求特别高的场景使用。

bf16

BFloat16浮点,google 2018年提出,格式为{1,8,7}。

比同是16bit的fp16有更大的动态表示范围,但牺牲了尾数表示精度。其指数位宽与fp32相同,因此可与fp32快速进行相互转换。

tf32

TensorFloat32浮点,Nvidia A100(2020)首次引入,格式为{1,8,10}。

有效位宽为19位,即与fp32指数位宽相同,与fp16尾数位宽相同。同bf16,其指数位宽与fp32相同,因此可与fp32快速进行相互转换。

fp64

双精度浮点,格式为{1,11,52}。

神经网络乘加运算并不需要,对于HPC计算场景有需求,因此对于AI+HPC双场景支持的芯片会支持fp64。

fix4/fix8/fix16/fix32

各位宽的有符号定点数,最高位是符号位,带定标。

常用一个有符号整数(如int8)表示小数点位置position, real_val = value * 2 ^ position。

ufix4/ufix8/ufix16/ufix32

各位宽的无符号定点数,带定标。

常用一个有符号整数(如int8)表示小数点位置position, real_val = value * 2 ^ position。

intNN/uintNN

AI Core内中间计算结果的表示类型,位宽常大于32bit。

软件不可见,可通过截位得到目标定点数,或者转数得到目标浮点数。

        由于数据类型的选取对于神经网络训练推理的性能、精度有很大影响,近两年每隔一段时间就会出现新的数据类型,再如Tesla推出的fp8(8bit浮点类型,包括{1,4,3}、{1,5,2}格式),都是为了极致优化网络模型的性能。

        后续对针对上篇提到的舍入模式介绍硬件的实现方式,针对本篇提到的数据类型介绍运算器的设计方式等。

本文完

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值