量化算子¶
量化是一种模型优化技术,用于减小大型模型的大小,以便在精度损失较小的情况下获得更好的存储性能。
CUDA 算子¶
-
at::Tensor _float_to_bfloat16_gpu(const at::Tensor &input)¶
将
float
值的张量转换为脑浮点 (bfloat16
) 值的张量。- 参数:
input – 一个
float
值的张量- 返回值:
一个新的张量,其值来自输入张量并转换为
bfloat16
。
-
at::Tensor _bfloat16_to_float_gpu(const at::Tensor &input)¶
将脑浮点 (
bfloat16
) 值的张量转换为float
值的张量。- 参数:
input – 一个
bfloat16
值的张量- 返回值:
一个新的张量,其值来自输入张量并转换为
float
。
-
Tensor _float_to_FP8rowwise_gpu(const Tensor &input, const bool forward)¶
将
float
值的张量转换为fp8
值的张量。- 参数:
input – 一个
float
值的张量。数据类型可以是SparseType::FP32
、SparseType::FP16
或SparseType::BF16
forward –
- 抛出:
c10::Error – 如果
input.dtype
不是 (SparseType::FP32
、SparseType::FP16
或SparseType::BF16
) 之一。- 返回值:
一个新的张量,其值来自输入张量并转换为
fp8
。
-
at::Tensor _FP8rowwise_to_float_gpu(const at::Tensor &input, bool forward, const int64_t output_dtype)¶
将
fp8
值的张量转换为float
值的张量。- 参数:
input – 一个
fp8
值的张量forward –
output_dtype – 目标浮点类型,指定为
SparseType
枚举的整数表示
- 抛出:
c10::Error – 如果
output_dtype
不是 (SparseType::FP32
、SparseType::FP16
或SparseType::BF16
) 之一。- 返回值:
一个新的张量,其值来自输入张量并转换为
float
(其dtype
为SparseType::FP32
、SparseType::FP16
或SparseType::BF16
)。
-
Tensor _float_to_fused8bitrowwise_gpu(const Tensor &input)¶
将一个包含
float
值的张量转换为一个包含融合8位行向值的张量。- 参数:
input – 一个
float
值的张量- 返回值:
一个新的张量,其值来自输入张量并转换为融合8位行向。
-
Tensor _half_to_fused8bitrowwise_gpu(const Tensor &input)¶
将一个包含
at::Half
值的张量转换为一个包含融合8位行向值的张量。- 参数:
input – 一个包含
at::Half
值的张量- 返回值:
一个新的张量,其值来自输入张量并转换为融合8位行向。
-
Tensor _single_or_half_precision_to_fused8bitrowwise_gpu(const Tensor &input)¶
将一个包含
at::Single
或at::Half
值的张量转换为一个包含融合8位行向值的张量。- 参数:
input – 一个包含
at::Single
或at::Half
值的张量- 返回值:
一个新的张量,其值来自输入张量并转换为融合8位行向。
-
at::Tensor _fused8bitrowwise_to_float_gpu(const at::Tensor &input)¶
将一个包含融合8位行向值的张量转换为一个包含
float
值的张量。- 参数:
input – 一个包含融合8位行向值的张量
- 返回值:
一个新的张量,其值来自输入张量并转换为
float
。
-
at::Tensor _fused8bitrowwise_to_half_gpu(const at::Tensor &input)¶
将一个包含融合8位行向值的张量转换为一个包含
at::Half
值的张量。- 参数:
input – 一个包含融合8位行向值的张量
- 返回值:
一个新的张量,其值来自输入张量并转换为
at::Half
。
-
at::Tensor _fused8bitrowwise_to_single_or_half_precision_gpu(const at::Tensor &input, const int64_t output_dtype, const bool scale_bias_last, const bool quant_padding_float_type)¶
将一个包含融合8位行向值的张量转换为一个包含
float
、at::Half
或at::BFloat16
值的张量。- 参数:
input – 一个包含融合8位行向值的张量
output_dtype – 目标浮点类型,指定为
SparseType
枚举的整数表示
- 抛出:
c10::Error – 如果
output_dtype
不是 (SparseType::FP32
、SparseType::FP16
或SparseType::BF16
) 之一。- 返回值:
一个新的张量,其值来自输入张量并转换为
float
、at::Half
或at::BFloat16
。
-
at::Tensor _fused8bitrowwise_to_float_mixed_dim_gpu(const at::Tensor &input, const at::Tensor &D_offsets, const int64_t output_dtype)¶
将一个包含融合8位行向值的张量转换为一个包含
at::kFloat
或at::kHalf
值的张量。- 参数:
input – 一个包含融合8位行向值的张量
D_offsets –
output_dtype – 目标浮点类型,指定为
SparseType
枚举的整数表示
- 抛出:
c10::Error – 如果
output_dtype
不是SparseType::FP32
或SparseType::FP16
之一- 返回值:
一个新的张量,其值来自输入张量并转换为
at::kFloat
或at::kHalf
。
-
Tensor _float_to_fusednbitrowwise_gpu(const Tensor &input, const int64_t bit_rate)¶
将一个包含
float
值的张量转换为一个包含融合N位行向值的张量。- 参数:
input – 一个
float
值的张量bit_rate –
- 返回值:
一个新的张量,其值来自输入张量并转换为融合N位行向。
-
at::Tensor _half_to_fusednbitrowwise_gpu(const at::Tensor &input, const int64_t bit_rate)¶
将一个包含
at::Half
值的张量转换为一个包含融合N位行向值的张量。- 参数:
input – 一个包含
at::Half
值的张量bit_rate –
- 返回值:
一个新的张量,其值来自输入张量并转换为融合N位行向。
-
Tensor _single_or_half_precision_to_fusednbitrowwise_gpu(const Tensor &input, const int64_t bit_rate)¶
将一个包含
float
或at::Half
值的张量转换为一个包含融合 N 位行向值的张量。- 参数:
**input** – 一个包含
float
或at::Half
值的张量bit_rate –
- 返回值:
一个新的张量,其值来自输入张量并转换为融合N位行向。
-
at::Tensor _fusednbitrowwise_to_float_gpu(const at::Tensor &input, const int64_t bit_rate)¶
将一个包含融合 N 位行向值的张量转换为一个包含
float
值的张量。- 参数:
**input** – 一个包含融合 N 位行向值的张量
bit_rate –
- 返回值:
一个新的张量,其值来自输入张量并转换为
float
。
-
at::Tensor _fusednbitrowwise_to_half_gpu(const at::Tensor &input, const int64_t bit_rate)¶
将一个包含融合 N 位行向值的张量转换为一个包含
at::Half
值的张量。- 参数:
**input** – 一个包含融合 N 位行向值的张量
bit_rate –
- 返回值:
一个新的张量,其值来自输入张量并转换为
at::Half
。
-
at::Tensor _fusednbitrowwise_to_single_or_half_precision_gpu(const at::Tensor &input, const int64_t bit_rate, const int64_t output_dtype)¶
将一个包含融合 N 位行向值的张量转换为一个包含
float
或at::Half
或at::Bf16
值的张量。- 参数:
**input** – 一个包含融合 N 位行向值的张量
bit_rate –
output_dtype – 目标浮点类型,指定为
SparseType
枚举的整数表示
- 抛出:
c10::Error – 如果
output_dtype
不是以下值之一:(SparseType::FP32
或SparseType::FP16
或SparseType::BF16
)。- 返回值:
一个新的张量,其值来自输入张量并转换为
float
或at::Half
或at::Bf16
,具体取决于output_dtype
。
-
at::Tensor _float_to_hfp8_gpu(const at::Tensor &input, const int64_t ebits, const int64_t exponent_bias, const double max_pos)¶
将一个包含
float
值的张量转换为一个包含混合 8 位浮点数 (hfp8
) 值的张量。- 参数:
input – 一个
float
值的张量**ebits** –
**exponent_bias** –
**max_pos** –
- 抛出:
c10::Error – 如果
ebits > 0
或exponent_bias > 0
。- 返回值:
一个新的张量,其值来自输入张量并转换为
hfp8
。
-
at::Tensor _hfp8_to_float_gpu(const at::Tensor &input, const int64_t ebits, const int64_t exponent_bias)¶
将一个包含混合 8 位浮点数 (
hfp8
) 值的张量转换为一个包含float
值的张量。- 参数:
**input** – 一个包含
hfp8
值的张量**ebits** –
**exponent_bias** –
- 抛出:
c10::Error – 如果
ebits > 0
或exponent_bias > 0
。- 返回值:
一个新的张量,其值来自输入张量并转换为
float
。
-
at::Tensor _float_to_msfp_gpu(const at::Tensor &input, const int64_t bounding_box_size, const int64_t ebits, const int64_t mbits, const int64_t bias, const double min_pos, const double max_pos)¶
将一个包含
float
值的张量转换为一个包含微软浮点数 (msfp
) 值的张量。- 参数:
input – 一个
float
值的张量**bounding_box_size** –
**ebits** –
**mbits** –
**bias** –
**min_pos** –
**max_pos** –
- 返回值:
一个新的张量,其值来自输入张量并转换为
msfp
。
-
at::Tensor _msfp_to_float_gpu(const at::Tensor &input, const int64_t ebits, const int64_t mbits, const int64_t bias)¶
将 Microsoft 浮点数 (
msfp
) 值的张量转换为float
值的张量。- 参数:
input –
msfp
值的张量**ebits** –
**mbits** –
**bias** –
- 返回值:
一个新的张量,其值来自输入张量并转换为
float
。
-
Tensor _float_to_paddedFP8rowwise_gpu(const Tensor &input, const bool forward, const int64_t row_dim)¶
将
float
值的张量转换为填充的fp8
行优先值的张量。- 参数:
input – 一个
float
值的张量。数据类型可以是SparseType::FP32
、SparseType::FP16
或SparseType::BF16
forward –
row_dim –
- 返回值:
一个新的张量,其值来自输入张量并转换为填充的
fp8
行优先值。
-
at::Tensor _paddedFP8rowwise_to_float_gpu(const at::Tensor &input, const bool forward, const int64_t row_dim, const int64_t output_last_dim, const int64_t output_dtype)¶
将填充的
fp8
行优先值的张量转换为float values
的张量。- 参数:
input – 一个
float
值的张量。数据类型可以是SparseType::FP32
、SparseType::FP16
或SparseType::BF16
forward –
row_dim –
output_last_dim –
output_dtype – 目标浮点类型,指定为
SparseType
枚举的整数表示
- 抛出:
c10::Error – 如果
output_dtype
不是以下之一:(SparseType::FP32
,SparseType::FP16
,SparseType::BF16
)。- 返回值:
一个新的张量,其值来自输入张量并转换为
float
。
CPU 运算符¶
-
Tensor &_fused8bitrowwise_to_float_cpu_out(Tensor &output, const Tensor &input)¶
-
Tensor &_float_to_fused8bitrowwise_cpu_out(Tensor &output, const Tensor &input)¶
-
Tensor float_to_fused8bitrowwise_cpu(const Tensor &input)¶
-
Tensor half_to_fused8bitrowwise_cpu(const Tensor &input)¶
-
Tensor float_or_half_to_fused8bitrowwise_cpu(const Tensor &input)¶
-
Tensor fused8bitrowwise_to_float_cpu(const Tensor &input)¶
-
Tensor fused8bitrowwise_to_half_cpu(const Tensor &input)¶
-
Tensor fused8bitrowwise_to_float_or_half_cpu(const Tensor &input, const int64_t output_dtype, const bool scale_bias_last, const bool quant_padding_float_type)¶
-
Tensor float_to_FP8rowwise_cpu(const Tensor &input, bool forward)¶
-
Tensor FP8rowwise_to_float_cpu(const Tensor &input, bool forward, const int64_t output_dtype)¶
-
Tensor fusednbitrowwise_to_float_cpu(const Tensor &input, const int64_t bit_rate)¶
-
Tensor fusednbitrowwise_sbfront_to_float_cpu(const Tensor &input, const int64_t bit_rate)¶
将前置缩放和偏差的 int4/int2 行反量化为 float32。
将前置缩放和偏差的 int4/int2 行反量化为 float32。输入张量应具有 torch.quint4x2 或 torch.quint2x4 数据类型和 QuantizedCPU 后端。此运算符仅推荐用于测试目的,因为其内核是参考实现,未经优化。
- 参数:
input – 前置缩放和偏差的 int4/int2 行张量。
bit_rate – 每个元素的比特率。应为 4 或 2。
- 返回值:
float32 张量,包含反量化后的数字。
-
Tensor fusednbitrowwise_to_half_cpu(const Tensor &input, const int64_t bit_rate)¶
-
Tensor fusednbitrowwise_to_float_or_half_cpu(const Tensor &input, const int64_t bit_rate, const int64_t output_dtype)¶
-
void FloatToFP8Quantized_ref(const float *const input, const size_t nrows, const size_t ncols, uint8_t *const output, const int ebits, const int exponent_bias, const double max_pos)¶
-
void FP8QuantizedToFloat_ref(const uint8_t *const input, const size_t nrows, const size_t ncols, float *const output, const int ebits, const int exponent_bias)¶