Skip to content

Commit 84ed3d2

Browse files
zade23ooooo-create
andauthored
[Docathon][Add CN Doc No.20-22] (#6371)
* add doc * Update llm_int8_linear_cn.rst * Update llm_int8_linear_cn.rst * fix cn_doc * Update docs/api/paddle/nn/quant/weight_only_linear_cn.rst Co-authored-by: ooo oo <[email protected]> * Update docs/api/paddle/nn/quant/llm_int8_linear_cn.rst Co-authored-by: ooo oo <[email protected]> * fix subtitle --------- Co-authored-by: ooo oo <[email protected]>
1 parent f3f9ebb commit 84ed3d2

File tree

4 files changed

+93
-0
lines changed

4 files changed

+93
-0
lines changed

docs/api/paddle/nn/Overview_cn.rst

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ paddle.nn 目录下包含飞桨框架支持的神经网络层和相关函数的
3131
- :ref:`损失函数 <loss_functional>`
3232
- :ref:`公用方法 <common_functional>`
3333
- :ref:`初始化相关 <about_initializer>`
34+
- :ref:`量化压缩 <about_quantization>`
3435

3536

3637

@@ -552,3 +553,15 @@ Embedding 相关函数
552553
" :ref:`paddle.nn.initializer.Uniform <cn_api_paddle_nn_initializer_Uniform>` ", "随机均匀分布初始化函数"
553554
" :ref:`paddle.nn.initializer.XavierNormal <cn_api_paddle_nn_initializer_XavierNormal>` ", "实现 Xavier 权重初始化方法( Xavier weight initializer)"
554555
" :ref:`paddle.nn.initializer.XavierUniform <cn_api_paddle_nn_initializer_XavierUniform>` ", "实现 Xavier 权重初始化方法( Xavier weight initializer)"
556+
557+
.. _about_quantization:
558+
559+
量化压缩
560+
:::::::::::::::::::::::
561+
562+
.. csv-table::
563+
:header: "API 名称", "API 功能"
564+
565+
" :ref:`paddle.nn.quant.llm_int8_linear <cn_api_paddle_nn_quant_llm_int8_linear>` ", "使用 int8 量化压缩的线性层"
566+
" :ref:`paddle.nn.quant.weight_only_linear <cn_api_paddle_nn_quant_weight_only_linear>` ", "使用自定义的类型进行模型的量化压缩"
567+
" :ref:`paddle.nn.quant.weight_quantize <cn_api_paddle_nn_quant_weight_quantize>` ", "weight_only 和 llm.int8 权重的量化函数"
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
.. _cn_api_paddle_nn_quant_llm_int8_linear:
2+
3+
llm_int8_linear
4+
-------------------------------
5+
6+
.. py:function:: paddle.nn.quant.llm_int8_linear(x, weight, bias=None, weight_scale=None, threshold=6.0)
7+
8+
应用两个张量的矩阵乘法。若提供了偏置,则进行偏置加法。
9+
10+
细节可参考论文 `LLM.int8(): 8-bit Matrix Multiplication for Transformers at Scale <https://arxiv.org/abs/2208.07339>`_ 。
11+
12+
此方法要求 CUDA 版本不低于 11.2。
13+
14+
参数
15+
::::::::::::
16+
- **x** (Tensor) - 第一个输入张量,将被乘以,数据类型为 float16 或 bfloat16。
17+
- **weight** (Tensor) - 第二个输入张量,将被乘以。其秩必须为 2。
18+
- **bias** (Tensor|None) - 输入的偏置张量。如果为 None,则不执行偏置加法。否则,偏置将被加到矩阵乘法结果上。
19+
- **weight_scale** (Tensor|None) - 提供给权重的输入比例张量,用于反量化。其秩必须为 1。
20+
- **threshold** (float) - 激活中离群值的最小值,离群值的通道将应用与 x.dtype 的乘法。
21+
22+
返回
23+
::::::::::::
24+
- ``Tensor``:输出张量,其数据类型与 x 相同。
25+
26+
代码示例:
27+
::::::::::
28+
29+
COPY-FROM: paddle.nn.quant.llm_int8_linear
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
.. _cn_api_paddle_nn_quant_weight_only_linear:
2+
3+
weight_only_linear
4+
-------------------------------
5+
6+
.. py:function:: paddle.nn.quant.weight_only_linear(x, weight, bias=None, weight_scale=None, weight_dtype='int8', arch=None)
7+
8+
应用两个张量的矩阵乘法。若提供了偏置,则进行偏置加法。
9+
10+
此方法要求 CUDA 版本不低于 11.2。
11+
12+
参数
13+
::::::::::::
14+
- **x** (Tensor) - 第一个输入张量,将被乘以,数据类型为 float16 或 bfloat16。
15+
- **weight** (Tensor) - 第二个输入张量,将被乘以。其秩必须为 2。
16+
- **bias** (Tensor|None) - 输入的偏置张量。如果为 None,则不执行偏置加法。否则,偏置将被加到矩阵乘法结果上。
17+
- **weight_scale** (Tensor|None) - 提供给权重的输入比例张量,用于反量化。其秩必须为 1。
18+
- **weight_dtype** (str) - 权重张量的数据类型,必须是 'int8', 'int4' 之一,默认为 'int8'。
19+
- **arch** (int) - 针对目标设备的计算架构。例如,A100 为 80,v100 为 70,如果您没有指定架构,我们将从您的设备获取架构,默认为 None。
20+
21+
返回
22+
::::::::::::
23+
- ``Tensor``:输出张量,其数据类型与 x 相同。
24+
25+
代码示例:
26+
::::::::::
27+
28+
COPY-FROM: paddle.nn.quant.weight_only_linear
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
.. _cn_api_paddle_nn_quant_weight_quantize:
2+
3+
weight_quantize
4+
-------------------------------
5+
.. py:function:: paddle.nn.quant.weight_quantize(x, algo='weight_only_int8', arch=None)
6+
7+
weight_only 和 llm.int8 权重的量化函数。
8+
9+
参数
10+
::::::::::::
11+
- **x** (Tensor) - 待量化的输入张量,数据类型为 float16 或 bfloat16。
12+
- **algo** (str) - 应用于 x 的算法,必须是 '`weight_only_int8`'、'`weight_only_int4`' 和 '`llm.int8`' 中的一个,默认为 '`weight_only_int8`'。
13+
- **arch** (int) - 针对目标设备的计算架构。例如,A100 为 80,v100 为 70,如果您没有指定架构,我们将从您的设备获取架构,默认为 None。
14+
15+
返回
16+
::::::::::::
17+
- **out** (Tensor) - 量化结果的张量,数据类型为 int8,形状为 x 的转置。
18+
- **scale** (Tensor) - 每个通道的比例张量,数据类型为 float32。
19+
20+
代码示例:
21+
::::::::::
22+
23+
COPY-FROM: paddle.nn.quant.weight_quantize

0 commit comments

Comments
 (0)