捷徑

AffineQuantizedTensor

class torchao.dtypes.AffineQuantizedTensor(tensor_impl: AQTTensorImpl, block_size: Tuple[int, ...], shape: Size, quant_min: Optional[Union[int, float]] = None, quant_max: Optional[Union[int, float]] = None, zero_point_domain: ZeroPointDomain = ZeroPointDomain.INT, dtype=None, strides=None)[source]
仿射量化張量子類別。仿射量化意味著我們使用仿射轉換來量化浮點張量。

quantized_tensor = float_tensor / scale + zero_point

若要了解在仿射量化的 choose_qparams、量化和反量化期間會發生什麼情況,請查看https://github.com/pytorch/ao/blob/main/torchao/quantization/quant_primitives.py 並檢查三個量化基本運算:choose_qparams_affine、quantize_affine 和 dequantize_affine。

張量子類別的 shape 和 dtype 代表張量子類別在外部的呈現方式,無論內部表示的類型或方向為何。

欄位
tensor_impl (AQTTensorImpl):作為量化資料的通用張量 impl 儲存體的張量,

例如,根據裝置和運算子/核心,儲存純張量 (int_data、scale、zero_point) 或封裝格式

block_size (Tuple[int, …]):量化的粒度,這意味著共享相同 qparam 的張量元素的大小

例如,當大小與輸入張量維度相同時,我們使用每個張量的量化

shape (torch.Size):原始高精度張量的形狀。 quant_min (Optional[int]):張量的最小量化值,如果未指定,它將從 int_data 的 dtype 推導而來。 quant_max (Optional[int]):張量的最大量化值,如果未指定,它將從 int_data 的 dtype 推導而來。 zero_point_domain (ZeroPointDomain):zero_point 所在的域,應該是整數或浮點數

如果 zero_point 在整數域中,則在量化期間將 zero point 新增至量化的整數值。如果 zero_point 在浮點域中,則在量化期間從浮點(未量化)值中減去 zero point。預設值為 ZeroPointDomain.INT

dtype:原始高精度張量的 dtype,例如 torch.float32

dequantize() Tensor[source]

給定量化的張量,對其進行反量化並傳回反量化的浮點張量。

to(*args, **kwargs) Tensor[source]

執行張量 dtype 和/或裝置轉換。 torch.dtypetorch.device 是從 self.to(*args, **kwargs) 的引數推斷而來。

注意

如果 self 張量已經具有正確的 torch.dtypetorch.device,則會傳回 self。 否則,傳回的張量是具有所需 torch.dtypetorch.deviceself 副本。

以下是呼叫 to 的方法

to(dtype, non_blocking=False, copy=False, memory_format=torch.preserve_format) Tensor[source]

傳回具有指定 dtype 的 Tensor。

Args (引數)

memory_format (torch.memory_format, optional (可選)): 傳回 Tensor 所需的記憶體格式。預設值:torch.preserve_format

to(device=None, dtype=None, non_blocking=False, copy=False, memory_format=torch.preserve_format) Tensor[source]

傳回具有指定 device 和(可選)dtype 的 Tensor。如果 dtypeNone,則推斷為 self.dtype。當 non_blocking 時,如果可能,嘗試相對於主機非同步轉換,例如,將具有固定記憶體的 CPU Tensor 轉換為 CUDA Tensor。當設定 copy 時,即使 Tensor 已經符合所需的轉換,也會建立一個新的 Tensor。

Args (引數)

memory_format (torch.memory_format, optional (可選)): 傳回 Tensor 所需的記憶體格式。預設值:torch.preserve_format

to(other, non_blocking=False, copy=False) Tensor[source]

傳回具有與 Tensor other 相同的 torch.dtypetorch.device 的 Tensor。當 non_blocking 時,如果可能,嘗試相對於主機非同步轉換,例如,將具有固定記憶體的 CPU Tensor 轉換為 CUDA Tensor。當設定 copy 時,即使 Tensor 已經符合所需的轉換,也會建立一個新的 Tensor。

範例

>>> tensor = torch.randn(2, 2)  # Initially dtype=float32, device=cpu
>>> tensor.to(torch.float64)
tensor([[-0.5044,  0.0005],
        [ 0.3310, -0.0584]], dtype=torch.float64)

>>> cuda0 = torch.device('cuda:0')
>>> tensor.to(cuda0)
tensor([[-0.5044,  0.0005],
        [ 0.3310, -0.0584]], device='cuda:0')

>>> tensor.to(cuda0, dtype=torch.float64)
tensor([[-0.5044,  0.0005],
        [ 0.3310, -0.0584]], dtype=torch.float64, device='cuda:0')

>>> other = torch.randn((), dtype=torch.float64, device=cuda0)
>>> tensor.to(other, non_blocking=True)
tensor([[-0.5044,  0.0005],
        [ 0.3310, -0.0584]], dtype=torch.float64, device='cuda:0')

文件

Access comprehensive developer documentation for PyTorch

檢視文件

教學

Get in-depth tutorials for beginners and advanced developers

檢視教學

Resources

Find development resources and get your questions answered

檢視資源