量化運算元¶
量化是一種模型最佳化技術,用於減小大型模型的尺寸,以在精度略有損失的情況下實現更好的儲存效能。
CUDA 運算元¶
-
at::Tensor _float_to_bfloat16_gpu(const at::Tensor &input)¶
將
float值張量轉換為 Brain Floating Point (bfloat16) 值張量。- 引數:
input – 一個
float值張量- 返回:
一個新張量,其值由輸入張量轉換為
bfloat16。
-
at::Tensor _bfloat16_to_float_gpu(const at::Tensor &input)¶
將 Brain Floating Point (
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(資料型別為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, const bool scale_bias_last)¶
將融合的 N 位元行wise 值張量轉換為
float、at::Half或at::Bf16值張量。- 引數:
input – 一個融合 N 位行級值張量
bit_rate –
output_dtype – 目標浮點型別,指定為
SparseType列舉的整數表示
- 丟擲:
c10::Error – 如果
output_dtype不是 (SparseType::FP32或SparseType::FP16或SparseType::BF16) 之一。- 返回:
一個新的張量,其值根據
output_dtype從輸入張量轉換為float、at::Half或at::Bf16。
-
at::Tensor _float_to_hfp8_gpu(const at::Tensor &input, const int64_t ebits, const int64_t exponent_bias, const double max_pos)¶
將
float值張量轉換為 Hybrid 8-bit Floating Point (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)¶
將 Hybrid 8-bit Floating Point (
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值張量轉換為 Microsoft Floating Point (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 Floating Point (
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行wise 值張量。- 引數:
input – 一個
float值張量。資料型別可以是SparseType::FP32、SparseType::FP16或SparseType::BF16。forward –
row_dim –
- 返回:
一個新的張量,其值從輸入張量轉換為填充的
fp8行wise。
-
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行wise 值張量轉換為float / values張量。@param input A tensor of `float` values. The dtype can be either `SparseType::FP32`, `SparseType::FP16`, or `SparseType::BF16` @param forward @param row_dim @param output_last_dim @param output_dtype The target floating point type, specified as integer representation of `SparseType` enum @return A new tensor with values from the input tensor converted to `float`. @throw c10::Error if `output_dtype` is not one of (`SparseType::FP32`, `SparseType::FP16`, `SparseType::BF16`).
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, const int64_t output_dtype)¶
將儲存了 scale 和 bias 在前面的 int4/int2 行進行反量化,得到 float32/float16/Bfloat16。
將儲存了 scale 和 bias 在前面的 int4/int2 行反量化為 float32。輸入張量應具有 torch.quint4x2 或 torch.quint2x4 資料型別和 QuantizedCPU 後端。此運算元僅推薦用於測試目的,因為其核心是參考實現且未最佳化。
- 引數:
input – 儲存了 scale 和 bias 在前面的 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, const bool scale_bias_last)¶
-
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)¶