
摘要
大型语言模型已被广泛采用,但在推理过程中需要大量的GPU内存。我们开发了一种针对变压器中前馈层和注意力投影层的Int8矩阵乘法程序,该程序在保持全精度性能的同时将推理所需的内存减少了一半。通过我们的方法,一个1750亿参数的16/32位检查点可以被加载、转换为Int8,并立即使用而不会导致性能下降。这得益于对变压器语言模型中高度系统化的突现特征的理解和规避,这些特征主导了注意力机制和变压器的预测性能。为了应对这些特征,我们开发了一个两部分量化程序,即LLM.int8()。首先,我们使用向量级量化方法,并为矩阵乘法中的每个内积设置独立的归一化常数,以量化大部分特征。然而,对于突现的异常值,我们还引入了一种新的混合精度分解方案,将异常值特征维度隔离到16位矩阵乘法中进行计算,同时超过99.9%的值仍以8位进行乘法运算。通过使用LLM.int8(),我们实证表明可以在不降低性能的情况下对多达1750亿参数的语言模型进行推理。这一结果使得此类模型更加易于访问,例如可以在配备消费级GPU的单个服务器上使用OPT-175B/BLOOM。我们已开源我们的软件。
代码仓库
timdettmers/bitsandbytes
官方
pytorch
GitHub 中提及
kohjingyu/fromage
pytorch
GitHub 中提及
huggingface/transformers-bloom-inference
pytorch
GitHub 中提及
alextmallen/adaptive-retrieval
pytorch
GitHub 中提及
基准测试
| 基准 | 方法 | 指标 |
|---|---|---|
| language-modelling-on-c4 | Zeropoint LLM.int8 13B (vector-wise + decomp) | Perplexity: 12.45 |
| language-modelling-on-c4 | LLM.float32 2.7B | Perplexity: 14.43 |
| language-modelling-on-c4 | LLM.float32 1.3B | Perplexity: 15.91 |
| language-modelling-on-c4 | LLM.float32 6.7B | Perplexity: 13.3 |
| linguistic-acceptability-on-cola | RoBERTa-large 355M (MLP quantized vector-wise, fine-tuned) | Accuracy: 68.6% |
| natural-language-inference-on-multinli | RoBERTa-large 355M (MLP quantized vector-wise, fine-tuned) | Matched: 90.2 |
| natural-language-inference-on-qnli | RoBERTa-large 355M (MLP quantized vector-wise, fine-tuned) | Accuracy: 94.7% |
| natural-language-inference-on-rte | RoBERTa-large 355M (MLP quantized vector-wise, fine-tuned) | Accuracy: 85.4% |
| semantic-textual-similarity-on-mrpc | RoBERTa-large 355M (MLP quantized vector-wise, fine-tuned) | Accuracy: 91.0% |
| semantic-textual-similarity-on-sts-benchmark | RoBERTa-large 355M (MLP quantized vector-wise, fine-tuned) | Pearson Correlation: 0.919 |
| sentiment-analysis-on-sst-2-binary | RoBERTa-large 355M (MLP quantized vector-wise, fine-tuned) | Accuracy: 96.4 |