首頁 >科技週邊 >人工智慧 >大型語言模型(LLMS)的量化:有效降低AI模型大小

大型語言模型(LLMS)的量化:有效降低AI模型大小

Christopher Nolan
Christopher Nolan原創
2025-03-05 09:10:13789瀏覽

>在筆記本電腦上運行自己的chatgpt:llm量化指南

>

>曾經夢想直接在筆記本電腦上運行自己的chatgpt? 得益於大語言模型(LLMS)的進步,這已成為現實。 關鍵是量化 - 一種技術,它縮小了這些龐大的模型,以適合消費者硬件,而性能損失最少(完成正確!)。本指南解釋了量化,其方法,並向您展示瞭如何使用擁抱Face的Quanto庫以兩個簡單的步驟來量化模型。 使用DataCamp Datalab。

> LLMS的不斷增長

LLM的複雜性爆炸了。 GPT-1(2018)有910億個參數; GPT-2(2019),15億; GPT-3(2020),高達1750億; GPT-4擁有超過1萬億。這種巨大的增長會產生記憶瓶頸,阻礙訓練和推理,並限制可及性。 量化通過降低模型的大小而在保留性能的同時解決這一問題。 >

理解量化

量化是一種模型壓縮技術,可降低模型的權重和激活的精度。 這涉及將數據從較高精確的類型(例如32位浮點)轉換為較低精確的類型(例如8位整數)。 較少的位意味著一個較小的模型,消耗較少的內存,存儲和能量。 >

考慮圖像壓縮:高分辨率圖像被壓縮以供網絡使用,減少大小和加載時間以一些細節為代價。 同樣,量化LLM可以減少計算需求,從而使其能夠在功能較低的硬件上運行。

>更快的Web加載的圖像壓縮。 Quantization for Large Language Models (LLMs): Reduce AI Model Sizes Efficiently

>

量化引入了噪聲(量化誤差),但研究重點是最大程度地減少以維持性能。 量化背後的理論

量化通常針對模型權重 - 確定神經元之間連接強度的參數。 這些權重最初是隨機的,並在訓練過程中進行了調整。 一個簡單的例子是將重量四捨五入到更少的小數位。

>

>示例:重量矩陣(左)及其量化版本(右)。

原始矩陣和量化矩陣之間的差異是量化誤差。 Quantization for Large Language Models (LLMs): Reduce AI Model Sizes Efficiently

量化誤差矩陣。

在實踐中,量化涉及更改數據類型(降低)。 例如,從float32(每個參數4個字節)轉換為INT8(每個參數1個字節)可顯著降低內存使用量。

>

>大腦浮點(BF16)和降低

由Google開發的BF16

> BF16在Float32的動態範圍和Float16的效率之間提供了平衡。降低(從較高精確到較低精確的數據類型)降低速度,但會導致數據丟失和錯誤傳播,尤其是數據類型較小。

量化類型

存在幾種量化類型:

  • 線性量化:將浮點值映射到固定點範圍。 它涉及計算最小/最大值,比例,零點,量化和取消定量(在推理期間)。

Quantization for Large Language Models (LLMs): Reduce AI Model Sizes Efficiently

>線性量化方程

>

示例:權重矩陣的線性量化。 Quantization for Large Language Models (LLMs): Reduce AI Model Sizes Efficiently

>去量化和量化誤差。

Quantization for Large Language Models (LLMs): Reduce AI Model Sizes Efficiently

塊量化:在較小的塊中量化權重,更有效地處理非均勻分佈。

  • > 權重與激活量化:量化可以應用於權重(靜態)和激活(動態)。 激活量化更為複雜。

  • >培訓後量化(PTQ)與量化感知訓練(QAT): ptq量化了預訓練的模型; QAT修改訓練以模擬量化效果,從而提高準確性,但增加了訓練時間。

  • 校準技術
  • 某些方法需要校準 - 對數據集的推斷以優化量化參數。 技術包括百分比校準和平均/標準偏差校準。 諸如Qlora之類的方法避免校準。 量化的工具

    幾個Python庫支持量化,包括Pytorch和Tensorflow。 擁抱Face的Quanto庫簡化了Pytorch模型的過程。
  • 用擁抱臉的量子量量化模型
這是使用Pythia 410m型號的逐步指南:>
  1. 加載模型:加載預訓練的模型和令牌。
  2. >
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "EleutherAI/pythia-410m"
model = AutoModelForCausalLM.from_pretrained(model_name, low_cpu_mem_usage=True)
tokenizer = AutoTokenizer.from_pretrained(model_name)
  1. 量化:使用quantize()轉換模型。
  2. >
from quanto import quantize, freeze
quantize(model, weights=torch.int8, activations=None)
  1. 凍結:>使用freeze()將量化應用於權重。
  2. >
freeze(model)
  1. 檢查結果:驗證減少的模型大小和測試推理。 (注意:compute_module_sizes()是一個自定義函數;有關實現的Datacamp Datalab)。
  2. >

Quantization for Large Language Models (LLMs): Reduce AI Model Sizes Efficiently Quantization for Large Language Models (LLMs): Reduce AI Model Sizes Efficiently Quantization for Large Language Models (LLMs): Reduce AI Model Sizes Efficiently Quantization for Large Language Models (LLMs): Reduce AI Model Sizes Efficiently Quantization for Large Language Models (LLMs): Reduce AI Model Sizes Efficiently Quantization for Large Language Models (LLMs): Reduce AI Model Sizes Efficiently Quantization for Large Language Models (LLMs): Reduce AI Model Sizes Efficiently Quantization for Large Language Models (LLMs): Reduce AI Model Sizes Efficiently Quantization for Large Language Models (LLMs): Reduce AI Model Sizes Efficiently

結論

量化使LLMS更容易訪問和高效。 通過了解其技術並使用擁抱Face Quanto之類的工具,您可以在功能較小的硬件上運行強大的模型。 對於較大的模型,請考慮升級您的資源。

>

llm量化常見問題解答

  • qat vs. ptq: QAT通常表現更好,但在培訓期間需要更多的資源。
  • Quanto庫:支持PTQ和QAT。 包括隱式校準;可以自定義校準。 quantize()> calibration()
  • >精確:
  • int4和int2量化是可能的。 > >
  • >訪問擁抱面部模型:
  • 將變量更改為所需模型。 切記接受擁抱面孔的條款和條件。 > model_name

以上是大型語言模型(LLMS)的量化:有效降低AI模型大小的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn