展會信息港展會大全

蘋果創(chuàng)新大模型壓縮技術(shù),大模型有機會塞進(jìn)手機里了
來源:互聯(lián)網(wǎng)   發(fā)布日期:2023-09-24 15:05:32   瀏覽:13353次  

導(dǎo)讀:機器之心報道 編輯:趙陽 大模型的內(nèi)容安全問題使得人們希望可以在終端設(shè)備上完成模型訓(xùn)練及運行。對于手機來說,大模型的權(quán)重數(shù)據(jù)顯得尤為龐大。 大型語言模型(LLM),尤其是生成式預(yù)訓(xùn)練 Transformer(GPT)模型在許多復(fù)雜的語言任務(wù)上表現(xiàn)出了出色的性能...

機器之心報道

編輯:趙陽

大模型的內(nèi)容安全問題使得人們希望可以在終端設(shè)備上完成模型訓(xùn)練及運行。對于手機來說,大模型的權(quán)重數(shù)據(jù)顯得尤為龐大。

大型語言模型(LLM),尤其是生成式預(yù)訓(xùn)練 Transformer(GPT)模型在許多復(fù)雜的語言任務(wù)上表現(xiàn)出了出色的性能。這一突破使人們希望在移動設(shè)備上本地運行這些 LLM,以保護(hù)用戶隱私?墒,即使是小型 LLM 也太大,無法在這些設(shè)備上運行。

舉例來說,小型 LLaMA 有 7B 參數(shù),其 FP16 版本大小為 14GB,而移動設(shè)備只有 18GB 的 DRAM。因此,通過訓(xùn)練時間優(yōu)化(如稀疏化、量化或權(quán)重聚類)來壓縮 LLM 是設(shè)備上 LLM 部署的關(guān)鍵步驟。然而,由于模型大小和計算資源開銷,LLM 的訓(xùn)練時間優(yōu)化非常昂貴。權(quán)重聚類 SOTA 算法之一 DKM,由于需要分析所有權(quán)重和所有可能的聚類選項之間的相互作用,其訓(xùn)練時間可變權(quán)重聚類對計算資源的需求過高。

因此,許多現(xiàn)有的 LLM 壓縮技術(shù),如 GTPQ 和 AWQ,都依賴于訓(xùn)練后的優(yōu)化。在本文中,研究者提出了內(nèi)存優(yōu)化技術(shù),以實現(xiàn)訓(xùn)練時間權(quán)重聚類及其在 DKM 中的應(yīng)用,也就是 eDKM。

本文使用的技術(shù)包括跨設(shè)備張量編排和權(quán)重矩陣唯一化及分片。在使用 eDKM 對 LLaMA 7B 模型進(jìn)行微調(diào)并將其壓縮為每個權(quán)重因子占位 3bit 時,研究者實現(xiàn)了解碼器堆棧約 130 倍的內(nèi)存占用減少,優(yōu)于現(xiàn)有的 3bit 壓縮技術(shù)。

提高 DKM 的內(nèi)存效率

如圖 1 所示,剪枝、量化和歸一化都是較為流行的權(quán)重優(yōu)化技術(shù),這些方法將原始權(quán)重 W,優(yōu)化后得到權(quán)重,以優(yōu)化推理延遲、精度或模型大校在這些技術(shù)中,本文研究者主要關(guān)注的是權(quán)重聚類,特別權(quán)重聚類算法 DKM 。

權(quán)重聚類是一種非線性權(quán)重離散化,權(quán)重矩陣被壓縮成一個查找表和查找表的低精度索引列表,現(xiàn)代推理加速器可以處理這些索引。DKM 通過分析權(quán)重(以 W 表示)和中心點(以 C 表示)之間的相互作用來執(zhí)行可微權(quán)重聚類,并在壓縮比和準(zhǔn)確性之間做出權(quán)衡。

因此,使用 DKM 進(jìn)行 LLM 壓縮會產(chǎn)生高質(zhì)量的結(jié)果。然而,DKM 計算過程中產(chǎn)生的注意力圖較大,前向 / 后向傳遞的內(nèi)存復(fù)雜度為 O (|W||C|)(即圖 1 中的矩陣),這對 LLM 壓縮來說尤其困難。舉例來說,一個 LLaMA 7B 模型僅計算 4 bit 權(quán)重聚類的注意力圖就需要至少 224GB 的內(nèi)存。

圖 1:權(quán)重優(yōu)化系統(tǒng)概覽。DKM 中,系統(tǒng)內(nèi)部創(chuàng)建了一個可微分權(quán)重聚類的注意力圖譜。

因此,研究者需要利用 CPU 內(nèi)存來處理如此大的內(nèi)存需求,也就是先將信息存儲至到 CPU 內(nèi)存,然后在需要時再復(fù)制回 GPU。然而,這將在 GPU 和 CPU 之間產(chǎn)生大量的流量(會因此減慢訓(xùn)練速度),并需要巨大的 CPU 內(nèi)存容量。這意味著減少 CPU 和 GPU 之間的事務(wù)數(shù)量并最大限度地降低每次事務(wù)的流量至關(guān)重要。為了應(yīng)對這些難題,研究者在 PyTorch 中引入了兩種新型內(nèi)存優(yōu)化技術(shù)。

跨設(shè)備的張量編排:跟蹤跨設(shè)備復(fù)制的張量,避免冗余復(fù)制,從而減少內(nèi)存占用,加快訓(xùn)練速度。

權(quán)重唯一化及分片處理:利用 16 bit 權(quán)重僅有 216 個唯一值這一事實來減少注意力圖(如圖 1 所示)的表示,并進(jìn)一步將其分割給多個學(xué)習(xí)模型。

跨設(shè)備張量編排

PyTorch 用數(shù)據(jù)存儲來表示張量,數(shù)據(jù)存儲鏈接到實際的數(shù)據(jù)布局和元數(shù)據(jù),元數(shù)據(jù)用于保存張量的形狀、類型等。這種張量架構(gòu)讓 PyTorch 可以盡可能地重復(fù)使用數(shù)據(jù)存儲,并有效減少內(nèi)存占用。然而,當(dāng)一個張量移動到另一個設(shè)備上時(如從 GPU 到 CPU),數(shù)據(jù)存儲就不能重復(fù)使用,需要創(chuàng)建一個新的張量。

表 1 舉例說明了張量在 PyTorch 設(shè)備間移動時的內(nèi)存占用情況。在第 0 行分配的張量 x0 在 GPU 上消耗了 4MB。當(dāng)其視圖在第 1 行中改變時,由于底層數(shù)據(jù)存儲可以重復(fù)使用(即 x0 和 x1 實際上是相同的),因此不需要額外的 GPU 內(nèi)存。然而,當(dāng) x0 和 x1 如第 2 行和第 3 行那樣移動到 CPU 時,盡管 y0 和 y1 可以在 CPU 上共享相同的數(shù)據(jù)存儲,但 CPU 內(nèi)存消耗卻變成了 8MB,這導(dǎo)致 CPU 內(nèi)存冗余,并增加了 GPU 到 CPU 的流量。

表 1:LLM 微調(diào)可能需要使用 CPU 內(nèi)存來卸載 GPU 上的內(nèi)存占用。缺乏跨設(shè)備的張量管理會導(dǎo)致跨設(shè)備的冗余拷貝(尤其是當(dāng)計算圖很復(fù)雜時),這對于 LLM 的訓(xùn)練時間優(yōu)化尤為不利。例如,雖然 x0 和 x1 是相同的張量,只是視圖不同,但當(dāng)復(fù)制到 CPU 時,生成的張量 y0 和 y1 并不共享數(shù)據(jù)存儲,而在 GPU 上 x0 和 x1 共享數(shù)據(jù)存儲。

為了解決這種低效問題,研究者在圖 2 (b) 中放置了一個編排層,其中黑色代表實際數(shù)據(jù)存儲和元數(shù)據(jù),灰色僅表示元數(shù)據(jù)。圖 2 (a) 展示了表 1 中的示例,其中 x1 與 x0 共享數(shù)據(jù)布局,但 y0 和 y1 在 CPU 上擁有重復(fù)的數(shù)據(jù)存儲。如圖 2 (b) 所示,通過插入編排層,研究者避免了這種冗余,并減少了 GPU 傳至 CPU 的流量。研究者使用 PyTorch 中的 save-tensor-hook 來實現(xiàn)這樣的交換方案,檢查相同的數(shù)據(jù)存儲是否已經(jīng)被復(fù)制。

然而,使用這樣的方案來檢查目標(biāo)設(shè)備上是否存在相同的張量是很昂貴的。在圖 2 (b) 的示例中,研究者并沒有將 x1 復(fù)制到 CPU,而是簡單地返回了 y0 的引用以及 x1 和 y0 之間的視圖操作。

圖 2:將跨設(shè)備張量編排應(yīng)用于表 1 中的情況時,可以避免 CPU 端的重復(fù),從而節(jié)省內(nèi)存及流量。

瀏覽計算圖會增加額外的計算周期,節(jié)省不必要的復(fù)制可以彌補此類開銷。研究者發(fā)現(xiàn),4 hop 內(nèi)的搜索足以檢測原始 DKM 實現(xiàn)中計算圖中的所有合格的案例。

權(quán)重唯一化及分片處理

在大多數(shù) LLM 的訓(xùn)練中,權(quán)重普遍使用 16 bit 存儲(如 BF16 或 FP16),這意味著雖然 LLM 中有數(shù)十億個參數(shù),但由于位寬的原因,只有 216 個唯一系數(shù)。這就為大幅壓縮權(quán)重和中心點之間的注意力圖提供了機會,如圖 3 所示。

圖 3:權(quán)重唯一化及分片

實驗結(jié)果

LLM 準(zhǔn)確率

本文將 eDKM 與其他基于量化的壓縮方案進(jìn)行了比較,包括:RTN、SmoothQuant、GPTQ 、AWQ 和 LLM-QAT 。對于 eDKM,研究者還對嵌入層進(jìn)行了 8 bit 壓縮。最終得出如下結(jié)論:

eDKM 使 3 bit 壓縮 LLaMA 7B 模型優(yōu)于所有其他 3 bit 壓縮方案。

eDKM 在 3 bit 和 4 bit 配置的 ARC-e 基準(zhǔn)測試中具有最佳精度。

在使用 4 bit 壓縮模型的 PIQA 和 MMLU 基準(zhǔn)測試中,eDKM 的性能極具競爭力。

消融實驗

在消融實驗中,研究者以 LLaMA 7B 解碼器棧中的一個注意層為例,測量了內(nèi)存占用與 3 bit 壓縮的前向后向速度之間的權(quán)衡。單是跨設(shè)備張量編排就減少了 2.9 倍的內(nèi)存占用,運行時開銷很小,而分片和唯一化模塊則分別節(jié)省了 23.5 倍和 16.4 倍。當(dāng)所有技術(shù)相結(jié)合時,eDKM 可節(jié)省約 130 倍。雖然這些步驟需要額外的計算和通信開銷,但由于 GPU 和 CPU 之間的流量大幅減少,因此運行時的開銷微不足道。

贊助本站

人工智能實驗室
相關(guān)內(nèi)容
AiLab云推薦
推薦內(nèi)容
展開

熱門欄目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能實驗室 版權(quán)所有    關(guān)于我們 | 聯(lián)系我們 | 廣告服務(wù) | 公司動態(tài) | 免責(zé)聲明 | 隱私條款 | 工作機會 | 展會港