Bitsandbytes 文件

概覽

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

概述

bitsandbytes.functional API 提供了該庫功能的底層構建塊。

何時使用 bitsandbytes.functional

  • 當您需要直接控制量化操作及其引數時。
  • 用於構建利用低位算術的自定義層或操作。
  • 與其他生態系統工具整合。
  • 用於需要非標準量化或效能最佳化的實驗或研究目的。

LLM.int8()

bitsandbytes.functional.int8_linear_matmul

< >

( A: Tensor B: Tensor out: typing.Optional[torch.Tensor] = None dtype = torch.int32 ) torch.Tensor

引數

  • A (torch.Tensor) — 第一個矩陣運算元,資料型別為 torch.int8
  • B (torch.Tensor) — 第二個矩陣運算元,資料型別為 torch.int8
  • out (torch.Tensor, 可選) — 用於儲存結果的預分配張量。
  • dtype (torch.dtype, 可選) — 輸出的期望資料型別。預設為 torch.int32

返回

torch.Tensor

操作的結果。

引發

NotImplementedErrorRuntimeError

  • NotImplementedError — 在當前環境中不支援該操作。
  • RuntimeError — 當由於任何其他原因無法完成時引發。

執行 8 位整數矩陣乘法。

應用線性變換,使得 `out = A @ B.T`。在可能的情況下,利用整數張量核心硬體來加速操作。

bitsandbytes.functional.int8_mm_dequant

< >

( A: Tensor row_stats: Tensor col_stats: Tensor out: typing.Optional[torch.Tensor] = None bias: typing.Optional[torch.Tensor] = None ) torch.Tensor

引數

  • A (資料型別為 torch.int32torch.Tensor) — 量化的 int8 矩陣乘法的結果。
  • row_stats (torch.Tensor) — 矩陣乘法左側運算元的行向量量化統計資訊。
  • col_stats (torch.Tensor) — 矩陣乘法右側運算元的列向量量化統計資訊。
  • out (torch.Tensor, 可選) — 用於儲存操作輸出的預分配張量。
  • bias (torch.Tensor, 可選) — 一個可選的偏置向量,加到結果上。

返回

torch.Tensor

反量化的結果,帶有一個可選的偏置,資料型別為 torch.float16

對量化的 int8 矩陣乘法結果執行反量化。

bitsandbytes.functional.int8_vectorwise_dequant

< >

( A: Tensor stats: Tensor ) 資料型別為 torch.float32torch.Tensor

引數

  • A (資料型別為 torch.int8torch.Tensor) — 量化的 int8 張量。
  • stats (資料型別為 torch.float32torch.Tensor) — 行向量量化統計資訊。

返回

資料型別為 torch.float32torch.Tensor

反量化後的張量。

將資料型別為 torch.int8 的張量反量化為 torch.float32

bitsandbytes.functional.int8_vectorwise_quant

< >

( A: Tensor threshold = 0.0 ) Tuple[torch.Tensor, torch.Tensor, Optional[torch.Tensor]]

引數

  • A (資料型別為 torch.float16torch.Tensor) — 輸入張量。
  • threshold (float, 可選) — 用於離群特徵稀疏分解的可選閾值。

    當為 0.0 時,不保留任何離群值。預設為 0.0。

返回

Tuple[torch.Tensor, torch.Tensor, Optional[torch.Tensor]]

一個包含量化張量和相關統計資訊的元組。

  • 資料型別為 torch.int8torch.Tensor: 量化後的資料。
  • 資料型別為 torch.float32torch.Tensor: 量化尺度。
  • 資料型別為 torch.int32torch.Tensor, 可選: 包含離群特徵的列索引列表。

根據 `LLM.int8()` 演算法將資料型別為 `torch.float16` 的張量量化為 `torch.int8`。

更多資訊,請參閱 LLM.int8() 論文

4 位

bitsandbytes.functional.dequantize_4bit

< >

( A: Tensor quant_state: typing.Optional[bitsandbytes.functional.QuantState] = None absmax: typing.Optional[torch.Tensor] = None out: typing.Optional[torch.Tensor] = None blocksize: int = 64 quant_type = 'fp4' ) torch.Tensor

引數

  • A (torch.Tensor) — 量化的輸入張量。
  • quant_state (QuantState, 可選) — 由 `quantize_4bit` 返回的量化狀態。如果未提供 `absmax`,則此項為必需。
  • absmax (torch.Tensor, 可選) — 包含縮放值的張量。如果未提供 `quant_state`,則此項為必需,否則將被忽略。
  • out (torch.Tensor, 可選) — 用於儲存結果的張量。
  • blocksize (int, 可選) — 塊的大小。預設為 64。有效值為 64、128、256、512、1024、2048 和 4096。
  • quant_type (str, 可選) — 要使用的資料型別:`nf4` 或 `fp4`。預設為 `fp4`。

返回

torch.Tensor

反量化後的張量。

引發

ValueError

  • ValueError — 當輸入資料型別或塊大小不受支援時引發。

反量化一個打包的 4 位量化張量。

透過將輸入張量劃分為 `blocksize` 大小的塊來進行反量化。這些塊內的絕對最大值用於縮放非線性反量化。

bitsandbytes.functional.dequantize_fp4

< >

( A: Tensor quant_state: typing.Optional[bitsandbytes.functional.QuantState] = None absmax: typing.Optional[torch.Tensor] = None out: typing.Optional[torch.Tensor] = None blocksize: int = 64 )

bitsandbytes.functional.dequantize_nf4

< >

( A: Tensor quant_state: typing.Optional[bitsandbytes.functional.QuantState] = None absmax: typing.Optional[torch.Tensor] = None out: typing.Optional[torch.Tensor] = None blocksize: int = 64 )

bitsandbytes.functional.gemv_4bit

< >

( A: Tensor B: Tensor out: typing.Optional[torch.Tensor] = None transposed_A = False transposed_B = False state = None )

bitsandbytes.functional.quantize_4bit

< >

( A: Tensor absmax: typing.Optional[torch.Tensor] = None out: typing.Optional[torch.Tensor] = None blocksize = 64 compress_statistics = False quant_type = 'fp4' quant_storage = torch.uint8 ) Tuple[torch.Tensor, QuantState]

引數

  • A (torch.Tensor) — 輸入張量。支援 `float16`、`bfloat16` 或 `float32` 資料型別。
  • absmax (torch.Tensor, 可選) — 用於儲存絕對最大值的張量。
  • out (torch.Tensor, 可選) — 用於儲存結果的張量。
  • blocksize (int, 可選) — 塊的大小。預設為 64。有效值為 64、128、256、512、1024、2048 和 4096。
  • compress_statistics (bool, 可選) — 是否額外量化絕對最大值。預設為 False。
  • quant_type (str, 可選) — 要使用的資料型別:`nf4` 或 `fp4`。預設為 `fp4`。
  • quant_storage (torch.dtype, 可選) — 用於儲存結果的張量的資料型別。預設為 `torch.uint8`。

返回

Tuple[torch.Tensor, QuantState]

包含量化結果的元組。

  • torch.Tensor:包含打包的 4 位值的量化張量。
  • QuantState: 用於撤銷量化的狀態物件。

引發

ValueError

  • ValueError — 當輸入資料型別不受支援時引發。

將張量 A 量化為 4 位值的塊。

透過將張量 A 分成獨立量化的塊來對其進行量化。

bitsandbytes.functional.quantize_fp4

< >

( A: Tensor absmax: typing.Optional[torch.Tensor] = None out: typing.Optional[torch.Tensor] = None blocksize = 64 compress_statistics = False quant_storage = torch.uint8 )

bitsandbytes.functional.quantize_nf4

< >

( A: Tensor absmax: typing.Optional[torch.Tensor] = None out: typing.Optional[torch.Tensor] = None blocksize = 64 compress_statistics = False quant_storage = torch.uint8 )

class bitsandbytes.functional.QuantState

< >

( absmax shape = None code = None blocksize = None quant_type = None dtype = None offset = None state2 = None )

用於處理 Params4bit 和類似類的量化狀態元件的容器

as_dict

< >

( packed = False )

返回張量和字串的字典,用於透過 _save_to_state_dict() 進行序列化。引數:packed — 返回適用於 safetensors 儲存的 state_dict 的 dict[str, torch.Tensor]

from_dict

< >

( qs_dict: dict device: device )

將 state_dict 的元件解包到 QuantState 中,並在必要時將其轉換為字串、torch.dtype、整數等。

qs_dict: 基於 state_dict,只包含相關鍵,並去除了字首。

鍵為 quant_state.bitsandbytes__[nf4/fp4] 的專案可能包含次要且非張量的量化狀態專案。

動態 8 位量化

8 位最佳化器量化中使用的基元。

更多細節請參見《深度學習中平行計算的 8 位近似》

bitsandbytes.functional.dequantize_blockwise

< >

( A: Tensor quant_state: typing.Optional[bitsandbytes.functional.QuantState] = None absmax: typing.Optional[torch.Tensor] = None code: typing.Optional[torch.Tensor] = None out: typing.Optional[torch.Tensor] = None blocksize: int = 4096 nested = False ) torch.Tensor

引數

  • A (torch.Tensor) — 量化的輸入張量。
  • quant_state (QuantState, 可選) — 由 quantize_blockwise 返回的量化狀態。如果未提供 absmax,則為必需。
  • absmax (torch.Tensor, 可選) — 包含縮放值的張量。如果未提供 quant_state,則為必需,否則將被忽略。
  • code (torch.Tensor, 可選) — 描述低位資料型別的對映。預設為有符號 8 位動態型別。更多細節,請參見《深度學習中平行計算的 8 位近似》[https://arxiv.org/abs/1511.04561]。當提供 quant_state 時,此引數將被忽略。
  • out (torch.Tensor, 可選) — 用於儲存結果的張量。
  • blocksize (int, 可選) — 塊的大小。預設為 4096。有效值為 64、128、256、512、1024、2048 和 4096。當提供 quant_state 時,此引數將被忽略。

返回

torch.Tensor

反量化後的張量。資料型別由 quant_state.dtype 指定,預設為 torch.float32

引發

ValueError

  • ValueError — 當輸入資料型別不受支援時引發。

按塊對張量的值進行反量化。

透過將輸入張量劃分為 `blocksize` 大小的塊來進行反量化。這些塊內的絕對最大值用於縮放非線性反量化。

bitsandbytes.functional.quantize_blockwise

< >

( A: Tensor code: typing.Optional[torch.Tensor] = None absmax: typing.Optional[torch.Tensor] = None out: typing.Optional[torch.Tensor] = None blocksize = 4096 nested = False ) Tuple[torch.Tensor, QuantState]

引數

  • A (torch.Tensor) — 輸入張量。支援 float16bfloat16float32 資料型別。
  • code (torch.Tensor, 可選) — 描述低位資料型別的對映。預設為有符號 8 位動態型別。更多細節,請參見《深度學習中平行計算的 8 位近似》[https://arxiv.org/abs/1511.04561]。
  • absmax (torch.Tensor, 可選) — 用於儲存 absmax 值的張量。
  • out (torch.Tensor, 可選) — 用於儲存結果的張量。
  • blocksize (int, 可選) — 塊的大小。預設為 4096。有效值為 64、128、256、512、1024、2048 和 4096。
  • nested (bool, 可選) — 是否對 absmax 值進行額外量化。預設為 False。

返回

Tuple[torch.Tensor, QuantState]

包含量化結果的元組。

  • torch.Tensor: 量化後的張量。
  • QuantState: 用於撤銷量化的狀態物件。

引發

ValueError

  • ValueError — 當輸入資料型別不受支援時引發。

按塊對張量的值進行量化。

輸入張量透過將其劃分為大小為 blocksize 的塊進行量化。然後計算這些塊內的絕對最大值,用於縮放非線性量化。

實用工具

bitsandbytes.functional.get_ptr

< >

( A: typing.Optional[torch.Tensor] ) Optional[ct.c_void_p]

引數

  • A (Optional[Tensor]) — PyTorch 張量。

返回

Optional[ct.c_void_p]

指向底層張量資料的指標。

獲取張量第一個元素的記憶體地址。

< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.