Scalar

View as Markdown

Python module: cuvs.preprocessing.quantize.scalar

Quantizer

1cdef class Quantizer

Defines and stores scalar for quantisation upon training

The quantization is performed by a linear mapping of an interval in the float data type to the full range of the quantized int type.

Members

NameKind
minproperty
maxproperty

min

1def min(self)

max

1def max(self)

QuantizerParams

1cdef class QuantizerParams

Parameters for scalar quantization

Parameters

NameTypeDescription
quantilefloatspecifies how many outliers at top & bottom will be ignored needs to be within range of (0, 1]

Constructor

1def __init__(self, *, quantile=None)

Members

NameKind
quantileproperty

quantile

1def quantile(self)

inverse_transform

@auto_sync_resources @auto_convert_output

1def inverse_transform(Quantizer quantizer, dataset, output=None, resources=None)

Perform inverse quantization step on previously quantized dataset

Note that depending on the chosen data types train dataset the conversion is not lossless.

Parameters

NameTypeDescription
quantizertrained Quantizer object
datasetrow major host or device dataset to transform
outputoptional preallocated output memory, on host or device
resourcescuvs.common.Resources, optional

Returns

NameTypeDescription
outputtransformed dataset with scalar quantization reversed

train

@auto_sync_resources

1def train(QuantizerParams params, dataset, resources=None)

Initializes a scalar quantizer to be used later for quantizing the dataset.

Parameters

NameTypeDescription
paramsQuantizerParams object
datasetrow major host or device dataset
resourcescuvs.common.Resources, optional

Returns

NameTypeDescription
quantizercuvs.preprocessing.quantize.scalar.Quantizer

Examples

1>>> import cupy as cp
2>>> from cuvs.preprocessing.quantize import scalar
3>>> n_samples = 50000
4>>> n_features = 50
5>>> dataset = cp.random.random_sample((n_samples, n_features),
6... dtype=cp.float32)
7>>> params = scalar.QuantizerParams(quantile=0.99)
8>>> quantizer = scalar.train(params, dataset)
9>>> transformed = scalar.transform(quantizer, dataset)

transform

@auto_sync_resources @auto_convert_output

1def transform(Quantizer quantizer, dataset, output=None, resources=None)

Applies quantization transform to given dataset

Parameters

NameTypeDescription
quantizertrained Quantizer object
datasetrow major host or device dataset to transform
outputoptional preallocated output memory, on host or device memory
resourcescuvs.common.Resources, optional

Returns

NameTypeDescription
outputtransformed dataset quantized into a int8

Examples

1>>> import cupy as cp
2>>> from cuvs.preprocessing.quantize import scalar
3>>> n_samples = 50000
4>>> n_features = 50
5>>> dataset = cp.random.random_sample((n_samples, n_features),
6... dtype=cp.float32)
7>>> params = scalar.QuantizerParams(quantile=0.99)
8>>> quantizer = scalar.train(params, dataset)
9>>> transformed = scalar.transform(quantizer, dataset)