量化导论基本介绍
量化導論
量化是指用于執行計算并以低于浮點精度的位寬存儲張量的技術。 量化模型對張量使用整數而不是浮點值執行部分或全部運算。 這允許更緊湊的模型表示,并在許多硬件平臺上使用高性能矢量化操作。 與典型的 FP32 型號相比,PyTorch 支持 INT8 量化,從而可將模型大小減少 4 倍,并將內存帶寬要求減少 4 倍。 與 FP32 計算相比,對 INT8 計算的硬件支持通常快 2 到 4 倍。 量化主要是一種加速推理的技術,并且量化算子僅支持前向傳遞。
PyTorch 支持多種方法來量化深度學習模型。 在大多數情況下,該模型在 FP32 中訓練,然后將模型轉換為 INT8。 此外,PyTorch 還支持量化意識訓練,該訓練使用偽量化模塊對前向和后向傳遞中的量化誤差進行建模。 注意,整個計算是在浮點數中進行的。 在量化意識訓練結束時,PyTorch 提供轉換功能,將訓練后的模型轉換為較低的精度。
在較低級別,PyTorch 提供了一種表示量化張量并對其執行操作的方法。 它們可用于直接構建以較低的精度執行全部或部分計算的模型。 提供了更高級別的 API,這些 API 合并了將 FP32 模型轉換為較低精度并降低精度損失的典型工作流程。
如今,PyTorch 支持以下后端以有效地運行量化運算符:
-
具有 AVX2 支持或更高版本的 x86 CPU(在沒有 AVX2 的情況下,某些操作的執行效率較低)
-
ARM CPU(通常在移動/嵌入式設備中找到)
相應的實現是根據 PyTorch 構建模式自動選擇的。
注意
PyTorch 1.3 尚未在 CUDA 上提供量化的操作員實施-這是未來工作的方向。 將模型移至 CPU,以測試量化功能。
總結
- 上一篇: 原创:办学规模不大,学科实力强,地处十堰
- 下一篇: torch量化的流程