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代码本初始化。
  • 多进程支持: 自动在多个进程间同步代码本。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目