快捷方式

NF4Tensor

class torchao.dtypes.NF4Tensor(tensor_meta: SubclassTensorArgs, block_size: int, n_blocks: int, scaler_block_size: int, quantized_scalers: Tensor, quantization_factor: Tensor, scaler_mean: Tensor, quantized_data: Tensor, nf4: Tensor)[源码]

用于将权重转换为 QLoRA NF4 格式的 NF4Tensor 类

static convert_to_norm_float_weight(input_tensor: Tensor, n_blocks: int, block_size: int, nf4: Tensor) Tensor[源码]

将张量转换为归一化浮点权重格式

static dequantize(value: Tensor, nf4: Tensor) Tensor[源码]

将 nf4 值反量化为 bfloat16 格式

dequantize_scalers(input_tensor: Tensor, quantization_factor: Tensor, scaler_block_size: int) Tensor[源码]

用于解包双重量化后的 scaler

参数:
  • input_tensor – 转换为 QLoRA 格式的输入张量,这是 int8 格式的量化 scaler

  • quantization_factor – 存储在 inpt_weight.dtype 中的每 scaler 块量化因子张量

  • scaler_block_size – 用于双重量化的 scaler 块大小。

static double_quantize_scalers(input_tensor: Tensor, block_size: int, scaler_block_size: int) Tuple[Tensor, Tensor, Tensor][源码]

用于实现 scaler 的双重量化。我们首先获取输入张量,计算每个块的 absmax 量化因子。然后我们找到我们正 absmax scaler 的均值。我们从 scaler 中减去这个均值,然后我们再次计算每个块的 absmax 量化因子。然后我们将 scaler 量化为 int8。

参数:

input_tensor – 转换为 QLoRA 格式的输入张量,通常是权重张量

返回:

存储为 int8 格式的每块量化因子张量

size: (n_blocks)

torch.Tensor: 存储为 int16 格式的每 scaler 块量化因子张量

size: (n_scaler_blocks)

返回类型:

torch.Tensor

get_original_weight() Tensor[源码]

从归一化浮点权重格式获取原始权重

static quantize_tensor_nearest(value: Tensor, nf4: Tensor) Tensor[源码]

将 float16 张量量化为 nf4 格式,使用最近邻而非向上取整

文档

访问全面的 PyTorch 开发者文档

查看文档

教程

为初学者和高级开发者提供深入的教程

查看教程

资源

查找开发资源并让您的问题得到解答

查看资源