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