最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Transformers 中原生支持的量化方案概述

2023-11-13 21:16 作者:HuggingFace  | 我要投稿

本文旨在對(duì) transformers 支持的各種量化方案及其優(yōu)缺點(diǎn)作一個(gè)清晰的概述,以助于讀者進(jìn)行方案選擇。

目前,量化模型有兩個(gè)主要的用途:

  • 在較小的設(shè)備上進(jìn)行大模型推理

  • 對(duì)量化模型進(jìn)行適配器微調(diào)

到目前為止,transformers 已經(jīng)集成并?原生?支持了?bitsandbytes?和?auto-gptq?這兩個(gè)量化庫。請(qǐng)注意,?? optimum 還支持更多的量化方案,但本文不會(huì)涉及這一塊內(nèi)容。

要詳細(xì)了解每種方案的更多信息,可查看下文列出的相關(guān)資源,或者閱讀相應(yīng)的?transformers?文檔。

另請(qǐng)注意,下文內(nèi)容僅適用于?PyTorch?模型,?Tensorflow?和?Flax/JAX?模型不在討論范圍之內(nèi)。

目錄

  • 資源

  • bitsandbytes 與 auto-gptq 之比較

  • 深入研究速度基準(zhǔn)

  • 總結(jié)與最后的話

  • 致謝

資源

  • GPTQ 博文?– 概述什么是 GPTQ 量化方法以及如何使用它。

  • bistandbytes 4 比特量化博文?- 本文介紹了 4 比特量化和 QLoRa,QLoRa 是一種高效的微調(diào)方法。

  • bistandbytes 8 比特量化博文?- 本文解釋了如何與 bitsandbytes 配合使用 8 比特量化。

  • 有關(guān) GPTQ 基礎(chǔ)用法的 Google Colab 筆記本?- 本筆記本展示了如何使用 GPTQ 方法量化你自己的 transformer 模型,如何用量化模型進(jìn)行推理,以及如何對(duì)量化模型進(jìn)行微調(diào)。

  • 有關(guān) bitsandbytes 基礎(chǔ)用法的 Google Colab 筆記本?- 該筆記本展示了如何在推理中使用 4 比特模型及其所有變體,以及如何在免費(fèi)的 Google Colab 實(shí)例上運(yùn)行 GPT-neo-X (20B 模型)。

  • Merve 撰寫的關(guān)于量化的博文?- 本文簡要介紹了量化以及 transformers 中原生支持的量化方法。

bitsandbytes 與 auto-gptq 之比較

本節(jié)我們將討論?bitsandbytes?和?gptq?量化各自的優(yōu)缺點(diǎn)。請(qǐng)注意,這些比較主要基于社區(qū)的反饋,它們具有一定的時(shí)效性,會(huì)隨著時(shí)間的推移而變化,比如說其中一些功能缺失已被納入相應(yīng)庫的路線圖中了。

bitsandbytes 有什么好處?

簡單: bitsandbytes 依舊是量化任何模型的最簡單方法,因?yàn)樗恍枰炕?zhǔn)數(shù)據(jù)及校準(zhǔn)過程 (即零樣本量化)。任何模型只要含有?torch.nn.Linear?模塊,就可以對(duì)其進(jìn)行開箱即用的量化。每當(dāng)在?transformers?中添加新架構(gòu)時(shí),只要其可以用?accelerate?庫的?device_map="auto"?加載,用戶就可以直接受益于開箱即用的 bitsandbytes 量化,同時(shí)該方法對(duì)性能的影響也是最小的。量化是在模型加載時(shí)執(zhí)行的,無需運(yùn)行任何后處理或準(zhǔn)備步驟。

跨模態(tài)互操作性: 由于量化模型的唯一條件是包含?torch.nn.Linear?層,因此量化對(duì)于任何模態(tài)都可以實(shí)現(xiàn)開箱即用。用戶可以開箱即用地加載諸如 Whisper、ViT、Blip2 之類的 8 比特或 4 比特模型。

合并適配器 (adapter) 時(shí)性能下降為 0: (如果你對(duì)此不熟悉,請(qǐng)參閱?此文?以獲得有關(guān)適配器和 PEFT 的更多信息)。如果你在量化基礎(chǔ)模型之上訓(xùn)練適配器,則可以將適配器合并在基礎(chǔ)模型之上進(jìn)行部署,而不會(huì)降低推理性能。你甚至還可以在反量化模型之上?合并?適配器!GPTQ 不支持此功能。

autoGPTQ 有什么好處?

文本生成速度快: 對(duì)?文本生成?任務(wù)而言,GPTQ 量化模型的速度比 bitsandbytes 量化模型的速度更快,下文我們會(huì)詳細(xì)比較。

n 比特支持: GPTQ 算法可以將模型量化至 2 比特!但這可能會(huì)導(dǎo)致嚴(yán)重的質(zhì)量下降。我們建議使用 4 比特,這個(gè)值對(duì) GPTQ 而言是個(gè)很好的折衷。

易于序列化: GPTQ 模型支持任意比特的序列化。只要安裝了所需的軟件包,就支持開箱即用地從 TheBloke 空間?中加載后綴為?-GPTQ?的模型。bitsandbytes 支持 8 比特序列化,但尚不支持 4 比特序列化。

AMD 支持: 開箱即用支持 AMD GPU!

bitsandbytes 還有哪些潛在的改進(jìn)空間?

文本生成速度比 GPTQ 慢: 使用?generate?接口時(shí),bitsandbytes 4 比特模型比 GPTQ 慢。

4 比特權(quán)重不可序列化: 目前,4 比特模型無法序列化。社區(qū)用戶經(jīng)常提出這樣的請(qǐng)求,我們相信 bitsandbytes 維護(hù)者應(yīng)該很快就能解決這個(gè)問題,因?yàn)檫@已經(jīng)在其路線圖中了!

autoGPTQ 還有哪些潛在的改進(jìn)空間?

校準(zhǔn)數(shù)據(jù)集: 對(duì)校準(zhǔn)數(shù)據(jù)集的需求可能會(huì)讓一些用戶難以用上 GPTQ。此外,模型量化可能需要幾個(gè)小時(shí) (例如,根據(jù)?該論文第 2 節(jié),175B 的模型需要 4 個(gè) GPU 時(shí))。

目前僅可用于語言模型: 截至目前,用 autoGPTQ 對(duì)模型進(jìn)行量化的 API 僅支持語言模型。使用 GPTQ 算法量化非文本 (或多模態(tài)) 模型應(yīng)該是可行的,但原始論文或 auto-gptq 代碼庫中尚未對(duì)此有詳細(xì)說明。如果社區(qū)對(duì)這方面很有興趣,將來可能會(huì)考慮這一點(diǎn)。

深入研究速度基準(zhǔn)

我們決定在不同硬件上使用 bitsandbytes 和 auto-gptq 在推理和適配器微調(diào)這兩大場景上進(jìn)行一系列廣泛的基準(zhǔn)測試。推理基準(zhǔn)測試應(yīng)該讓用戶了解不同推理方法之間可能存在的速度差異,而適配器微調(diào)基準(zhǔn)測試應(yīng)該讓用戶在需要決定選擇 bitsandbytes 還是 GPTQ 基礎(chǔ)模型進(jìn)行適配器微調(diào)時(shí)有一個(gè)清晰的判斷。

基本設(shè)置如下:

  • bitsandbytes: 使用?bnb_4bit_compute_dtype=torch.float16?進(jìn)行 4 比特量化。確保使用?bitsandbytes>=0.41.1?,以用上 4 比特加速核函數(shù)。

  • auto-gptq: 確保?auto-gptq>=0.4.0?以用上?exllama?加速核函數(shù)進(jìn)行 4 比特量化。

推理速度 (僅前向)

該基準(zhǔn)測試僅測量預(yù)填充 (prefill) 步驟,該步驟對(duì)應(yīng)于訓(xùn)練期間的前向傳遞。測試基于單張英偉達(dá) A100-SXM4-80GB GPU,提示長度為 512,模型為?meta-llama/Llama-2-13b-hf?。

batch size = 1 時(shí):

batch size = 16 時(shí):

我們可以看到,bitsandbyes 和 GPTQ 的預(yù)填充速度相當(dāng),batch size 比較大時(shí) GPTQ 稍快一些。欲了解有關(guān)該基準(zhǔn)測試的更多詳細(xì)信息,請(qǐng)參閱此?鏈接。

生成速度

下面測試推理過程中模型的生成速度,你可以在?此處?找到基準(zhǔn)測試腳本,用于重現(xiàn)我們的結(jié)果。

use_cache

我們先測試?use_cache?參數(shù)的影響,以更好地了解在生成過程中鍵值緩存對(duì)速度的影響。

該基準(zhǔn)測試在 A100 上運(yùn)行,提示長度為 30,生成詞元數(shù)也為 30,模型為?meta-llama/Llama-2-7b-hf?。

use_cache=True?時(shí):

use_cache=True A100 基準(zhǔn)測試結(jié)果

use_cache=False?時(shí):

use_cache=False A100 基準(zhǔn)測試結(jié)果

通過這兩個(gè)基準(zhǔn)測試,可以得出結(jié)論,使用注意力緩存時(shí),生成速度會(huì)更快,該結(jié)論符合預(yù)期。此外,一般來說,GPTQ 比 bitsandbytes 更快。例如,?batch_size=4?且?use_cache=True?時(shí),GPTQ 速度快了一倍!因此,我們下一個(gè)基準(zhǔn)測試中會(huì)直接使用?use_cache=True?。請(qǐng)注意,?use_cache=True?會(huì)消耗更多顯存。

硬件

下面,我們看看量化模型在不同的硬件上的表現(xiàn)。我們使用的提示長度為 30,生成 30 個(gè)詞元,使用的模型是?meta-llama/Llama-2-7b-hf?。

單張 A100:

A100 基準(zhǔn)測試結(jié)果

單張 T4:

T4 基準(zhǔn)測試結(jié)果

單張 Titan RTX:

TITAN RTX 基準(zhǔn)測試結(jié)果

從上面的基準(zhǔn)測試中,我們可以得出結(jié)論,對(duì)于這三款 GPU,GPTQ 都比 bitsandbytes 更快。

生成長度

在下面的基準(zhǔn)測試中,我們將嘗試不同的生成長度,看看它們對(duì)量化模型速度的影響。實(shí)驗(yàn)基于 A100,我們使用的提示長度為 30,并改變生成詞元的長度。使用的模型是?meta-llama/Llama-2-7b-hf?。

生成 30 個(gè)詞元:

A100 基準(zhǔn)測試結(jié)果

生成 512 個(gè)詞元:

生成 512 個(gè)詞元的 A100 基準(zhǔn)測試結(jié)果

從以上基準(zhǔn)測試中,我們可以得出結(jié)論,無論生成長度如何,GPTQ 都比 bitsandbytes 更快。

適配器微調(diào) (前向 + 后向)

對(duì)量化模型進(jìn)行全模型微調(diào)是不可能的。但是,你可以利用參數(shù)高效微調(diào) (PEFT) 來微調(diào)量化模型,在其之上訓(xùn)練新的適配器。我們使用一種名為“低秩適配器 (LoRA)”的微調(diào)方法: 無需微調(diào)整個(gè)模型,僅需微調(diào)這些適配器并將它們正確加載到模型中。我們來對(duì)比一下微調(diào)速度吧!

該基準(zhǔn)測試基于英偉達(dá) A100 GPU,我們使用 Hub 中的?meta-llama/Llama-2-7b-hf?模型。請(qǐng)注意,對(duì)于 GPTQ 模型,我們必須禁用?exllama?加速核,因?yàn)樗恢С治⒄{(diào)。

A100 微調(diào)基準(zhǔn)測試結(jié)果

從結(jié)果中,我們可以得出結(jié)論,bitsandbytes 的微調(diào)速度比 GPTQ 更快。

性能退化

量化對(duì)于減少內(nèi)存消耗非常有用。然而,它也會(huì)帶來性能退化。我們使用 Open-LLM 排行榜?來比較性能!

對(duì)于 7B 模型:

對(duì)于 13B 模型:

從上面的結(jié)果中,我們可以得出結(jié)論,模型越大,退化越少。更有意思的是,所有的退化都很小!

總結(jié)與最后的話

通過本文,我們比較了多種設(shè)置下的 bitsandbytes 和 GPTQ 量化。我們發(fā)現(xiàn),bitsandbytes 更適合微調(diào),而 GPTQ 更適合生成。根據(jù)這一觀察,獲得最佳合并模型的一種方法是:

  • (1) 使用 bitsandbytes 量化基礎(chǔ)模型 (零樣本量化)

  • (2) 添加并微調(diào)適配器

  • (3) 將訓(xùn)練后的適配器合并到基礎(chǔ)模型或?反量化模型?之中!

  • (4) 使用 GPTQ 量化合并后的模型并將其用于部署

我們希望這個(gè)概述讓每個(gè)人都能更輕松地將 LLM 應(yīng)用至各自的應(yīng)用場景中,我們期待看到大家用它構(gòu)建自己的有趣應(yīng)用!

致謝

我們要感謝 Ilyas、Clémentine 和 Felix 在基準(zhǔn)測試上的幫助。

我們還要感謝 Pedro Cuenca 對(duì)本文撰寫的幫助。

英文原文:?https://hf.co/blog/overview-quantization-transformers

原文作者: Younes Belkada,Marc Sun,Ilyas Moutawwakil,Clémentine Fourrier,F(xiàn)élix Marty

譯者: Matrix Yao (姚偉峰),英特爾深度學(xué)習(xí)工程師,工作方向?yàn)?transformer-family 模型在各模態(tài)數(shù)據(jù)上的應(yīng)用及大規(guī)模模型的訓(xùn)練推理

審校/排版: zhongdongy (阿東)


Transformers 中原生支持的量化方案概述的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
裕民县| 东山县| 富顺县| 全南县| 汕尾市| 沁阳市| 民县| 汝州市| 施甸县| 灵武市| 犍为县| 浠水县| 乐山市| 玉田县| 新干县| 五家渠市| 时尚| 教育| 辽宁省| 固原市| 宜章县| 靖安县| 邯郸县| 确山县| 双江| 海丰县| 门源| 大同市| 巴中市| 呼伦贝尔市| 白朗县| 扎兰屯市| 梁山县| 改则县| 牡丹江市| 长沙市| 离岛区| 鄂托克前旗| 屯留县| 黄山市| 阜阳市|