舍入模式

为了减小舍入操作对推理结果的精度影响,AI芯片有时会支持多种舍入模型(round mode)供编程人员选择,常见模式如下表,这一点正如cpu对软件编程舍入模式的支持。以2.5为例的舍入来看,不同舍入模式最终的结果会相差+/- 1。

序号 模式 模式 IEEE754
1 ROUND 就近舍入,十进制下的四舍五入 支持
2 TO ZERO 向0舍入, 向数轴零点方向舍入,所以直接截尾即可 支持
3 OFF ZERO 远离0舍入,正数向正无穷舍入,负数向负无穷舍入
4 UP 向正无穷舍入 支持
5 DOWN 向负无穷舍入 支持
6 ROUND TO EVEN 舍入到最近的偶数
7 ROUND TO MATH

1. 就近舍入

即十进制下的四舍五入。但是也会出现以下几种情况:

多余数字是1001,它大于0.5,故最低位进1。
多余数字是0111,它小于0.5,则直接舍掉多余数字。
多余数字是1000,正好是等于0.5的特殊情况;那么此时最低位为0则舍掉多余位,最低位为1则进位1。
注意这里说明的数位都是指二进制数。因为这是尾数,所以在计算这些二进制和0.5的关系的时候,也即转为10进制的时候,我们用每一位的权重乘以2^(-i)然后求和即可。

四舍五入,当尾数为.5时,远离0方向舍入。

round(2.4)=2, round(2.5)=3, round(2.6)=3;

round(-2.4)=-2, round(-2.5)=-3, round(-2.6)=-3。

2.向0舍入

向0方向舍入。

int(2.5)=2, int(-2.5)=-2。

即朝数轴零点方向舍入,所以直接截尾即可。

3.远离0舍入

远离0方向舍入。

int(2.5)=3, int(-2.5)=-3。

4. 向正无穷舍入

向上(正无穷方向)舍入。

ceil(2.5)=3, ceil(-2.5)=-2。

对正数而言,多余位全为0则直接截尾,不全为0则向最低有效位进1;

对负数而言,不管多余位是多少直接截尾即可。

5. 向负无穷舍入

向下(负无穷方向)舍入。

floor(2.5)=2, floor(-2.5)=-3。

对负数而言,多余位全为0则直接截尾,不全为0则向最低有效位进1;

对正数而言,不管多余位是多少直接截尾即可。

6.向负无穷舍入

当尾数为.5时,向偶数舍入。

round(2.4)=2, round(2.5)=2, round(2.6)=3;

round(-2.4)=-2,round(-2.5)=-2,round(-2.6)=-3。

7. ROUND TO MATH

先加0.5,再向下舍入(down)。

round(2.4)=2, round(2.5)=3, round(2.6)=3;

round(-2.4)=-2,round(-2.5)=-2,round(-2.6)=-3。
在这里插入图片描述

参考资料

https://zhuanlan.zhihu.com/p/655670898

https://zhuanlan.zhihu.com/p/676473751

https://blog.csdn.net/qq_39507748/article/details/110219526

https://zhuanlan.zhihu.com/p/458078797

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐