Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
pytorch-doc-zh
提交
1ae550f2
P
pytorch-doc-zh
项目概览
OpenDocCN
/
pytorch-doc-zh
通知
120
Star
3932
Fork
992
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
pytorch-doc-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
1ae550f2
编写于
7月 30, 2021
作者:
H
heloowird
提交者:
GitHub
7月 30, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
更新一些遗漏
上级
17b9ac49
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
6 addition
and
6 deletion
+6
-6
docs/1.4/88.md
docs/1.4/88.md
+6
-6
未找到文件。
docs/1.4/88.md
浏览文件 @
1ae550f2
...
...
@@ -4,13 +4,13 @@
## 量化导论
量化是一种以低于浮点精度执行运算和存储张量的技术。 量化后的模型使用整数而不是浮点值执行部分或全部张量运算。 这允许更紧凑的模型表示,并在许多硬件平台上使用高性能矢量化操作。 与典型的 FP32 模型相比,PyTorch 支持 INT8 量化,从而可将模型大小减少
3 倍,并将内存占用减少
3 倍。 与 FP32 计算相比,在支持 INT8的硬件上计算通常快 2 到 4 倍。 量化主要是一种加速推理的技术,并且量化算子仅支持前向传递。
量化是一种以低于浮点精度执行运算和存储张量的技术。 量化后的模型使用整数而不是浮点值执行部分或全部张量运算。 这允许更紧凑的模型表示,并在许多硬件平台上使用高性能矢量化操作。 与典型的 FP32 模型相比,PyTorch 支持 INT8 量化,从而可将模型大小减少
为原来的,并将内存占用减少了
3 倍。 与 FP32 计算相比,在支持 INT8的硬件上计算通常快 2 到 4 倍。 量化主要是一种加速推理的技术,并且量化算子仅支持前向传递。
PyTorch 支持多种方法来量化深度学习模型。 在大多数情况下,模型通常以 FP32 进行训练,然后被转换为 INT8。 此外,PyTorch 还支持量化感知训练,该训练使用伪量化模块对前向和后向传递中的量化误差进行建模。 注意,整个计算是以浮点数进行的。 在量化感知训练结束时,PyTorch 提供转换功能,将训练后的模型转换为较低的精度。
在底层,PyTorch 提供了一种量化张量表示及运算的方法。 它们可用于直接构建以较低的精度执行全部或部分计算的模型。 更高级别的 API 提供了以最低精度损失地将 FP32 模型转换为较低精度的典型工作流程。
如今,PyTorch 支持以下能够有效地运行量化运算
符
的后端:
如今,PyTorch 支持以下能够有效地运行量化运算的后端:
*
具有 AVX2 支持或更高版本的 x86 CPU(在没有 AVX2 的情况下,某些操作的执行效率较低)
...
...
@@ -26,7 +26,7 @@ PyTorch 1.3 尚未在 CUDA 上提供量化运算的实现-这是未来工作的
Note
在准备量化模型时,有必要确保 qconfig 和执行量化运算的引擎与
将在其上执行
模型的后端匹配。 量化目前支持两个后端:fbgemm(用于 x86,
[
https://github.com/pytorch/FBGEMM
](
https://github.com/pytorch/FBGEMM
)
)和 qnnpack(用于 ARM QNNPACK 库
[
https://github.com/pytorch/QNNPACK
](
https://github.com/pytorch/QNNPACK
)
)。 例如,如果您对量化要在 ARM 上运行的模型感兴趣,建议通过调用以下命令设置 qconfig:
在准备量化模型时,有必要确保 qconfig 和执行量化运算的引擎与
执行量化
模型的后端匹配。 量化目前支持两个后端:fbgemm(用于 x86,
[
https://github.com/pytorch/FBGEMM
](
https://github.com/pytorch/FBGEMM
)
)和 qnnpack(用于 ARM QNNPACK 库
[
https://github.com/pytorch/QNNPACK
](
https://github.com/pytorch/QNNPACK
)
)。 例如,如果您对量化要在 ARM 上运行的模型感兴趣,建议通过调用以下命令设置 qconfig:
`qconfig = torch.quantization.get_default_qconfig('qnnpack')`
...
...
@@ -377,9 +377,9 @@ PyTorch 支持每个张量和每个通道非对称线性量化。 每个张量
PyTorch 提供了三种量化模型的方法。
1. 训练后动态量化:这是最简单的量化形式,其中权重被提前量化,而激活
函数
在推理过程中被动态量化。 这用于以下情况:模型执行时间主要由从内存中加载权重而不是计算矩阵乘法来决定。 对于小批量的 LSTM 和 Transformer 类型的模型,这是正确的。 只需调用一次 [`torch.quantization.quantize_dynamic()`](#torch.quantization.quantize_dynamic "torch.quantization.quantize_dynamic") ,即可将动态量化应用于整个模型。 请参阅[量化教程](https://pytorch.org/tutorials/#quantization-experimental)
1. 训练后动态量化:这是最简单的量化形式,其中权重被提前量化,而激活
值
在推理过程中被动态量化。 这用于以下情况:模型执行时间主要由从内存中加载权重而不是计算矩阵乘法来决定。 对于小批量的 LSTM 和 Transformer 类型的模型,这是正确的。 只需调用一次 [`torch.quantization.quantize_dynamic()`](#torch.quantization.quantize_dynamic "torch.quantization.quantize_dynamic") ,即可将动态量化应用于整个模型。 请参阅[量化教程](https://pytorch.org/tutorials/#quantization-experimental)
2. 训练后静态量化:这是最常用的量化形式,其中权重是提前量化的,并且基于观察校准过程中模型的行为来预先计算激张量的比例因子和偏差。 训练后量化通常是在内存带宽和计算节省都很重要的情况下进行的,而 CNN 是典型的用例。 进行训练后量化的一般过程是:
2. 训练后静态量化:这是最常用的量化形式,其中权重是提前量化的,并且基于观察校准过程中模型的行为来预先计算激
活
张量的比例因子和偏差。 训练后量化通常是在内存带宽和计算节省都很重要的情况下进行的,而 CNN 是典型的用例。 进行训练后量化的一般过程是:
1. 准备模型: 通过添加 QuantStub 和 DeQuantStub 模块,指定在何处明确量化激活和量化数量。 b。 确保不重复使用模块。 C。 将所有需要重新量化的操作转换为模块
...
...
@@ -519,7 +519,7 @@ Quantized model.
torch.quantization.prepare(model, qconfig_dict=None, inplace=False)¶
```
为量化校准或量化训练准备模型的副本。
为量化校准或量化
感知
训练准备模型的副本。
量化配置可以作为 <cite>qconfig_dict</cite> 传递,也可以抢先分配给 <cite>.qconfig</cite> 属性中的各个子模块。
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录