lucidrains/vector-quantize-pytorch

Vector (and Scalar) Quantization, in Pytorch

解決的問題

此套件提供一套完整的向量量化(VQ)工具,用於將連續資料(如影像或音訊)映射至學習到的離散碼集合,這是生成式AI中的常見技術。它解決了向量量化中的常見挑戰,例如「死亡」碼本項目(某些碼從未被使用)以及難以訓練非可微分量化層的問題。

工作原理

此套件實作了多種量化策略,將輸入向量轉換為離散索引,並還原為量化向量:

  • 標準VQ: 使用碼本與指數移動平均(EMA)來更新字典。
  • 殘差VQ: 透過多個量化器遞迴地對殘差(原始向量與量化向量之間的差異)進行量化,以達到更高精度。
  • FSQ(有限標量量化): 透過將標量四捨五入至離散層級來簡化流程,無需學習碼本或承諾損失。
  • LFQ(無查找量化): 透過使用獨立的二進位潛在變數,完全消除碼本。
  • FSP(有限標量擾動): 將離散化視為注入表示的結構化雜訊,以穩定訓練過程。
  • 高階梯度方法: 實作了「旋轉技巧」與DiVeQ,相比傳統的直通估計器(STE),在訓練期間提供更佳的梯度流動。

適用對象

專為開發生成模型(如VQ-VAE、VQ-GAN,或Encodec與SoundStream等音訊編解碼器)的研究人員與開發者設計,需要在PyTorch中使用靈活且高效率的量化層。

主要特色

  • 多樣化實作: 支援標準VQ、殘差VQ、分組殘差VQ、FSQ、LFQ與SimVQ。
  • 碼本健康機制: 包含防止碼本崩潰的技術,如降低碼本維度、使用餘弦相似度、替換過時碼等。
  • 靈活初始化: 支援基於首批資料的k-means碼本初始化。
  • 多行程支援: 自動在多個行程間同步碼本。

相關

  • 專案
  • 專案
  • 專案
  • 專案
  • 專案