混合精度确实是个很有用的技巧,能让模型运行得更快,不过它并不会减小模型的大小。你可能会问,那什么能减小模型大小呢?当然是位数更少的模型啦!
BitsAndBytes
BitsAndBytes 是 quantization(量化)任务的首选工具包。其文档中提到:
“bitsandbytes 通过 PyTorch 的 k 位量化技术,让大型语言模型的使用变得更便捷。bitsandbytes 提供三大核心功能,可显著降低推理和训练过程中的内存消耗:
- 8 位优化器采用块级量化技术,以极低的内存成本保持 32 位精度的性能。
- LLM.Int() 即 8 位量化技术,能在仅使用一半内存的情况下实现大型语言模型推理,且不会导致任何性能损失。该方法基于向量级量化,将大多数特征量化为 8 位,同时对异常值单独采用 16 位矩阵乘法处理。
- QLoRA 即 4 位量化技术,通过多种节省内存的技术实现大型语言模型训练,且不会影响性能。该方法将模型量化至 4 位,并插入一小组可训练的低秩适配(LoRA)权重以支持训练。”
它与 Hugging Face 生态系统完全集成,除了通过 pip 安装外,你甚至可能无需从其中导入任何内容。只要配置好模型,Transformers 包会自动处理所有相关操作。
通过创建 BitsAndBytesConfig 类的实例可以轻松完成配置:
bnb_config = BitsAndBytes