<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

低比特量化技術如何幫助LLM提升性能

英特爾物聯網 ? 來源:OpenVINO 中文社區 ? 2023-12-08 15:26 ? 次閱讀

作者:楊亦誠

針對大語言模型 (LLM) 在部署過程中的性能需求,低比特量化技術一直是優化效果最佳的方案之一,本文將探討低比特量化技術如何幫助 LLM 提升性能,以及新版 OpenVINO對于低比特量化技術的支持。

大模型性能瓶頸

相比計算量的增加,大模型推理速度更容易受到內存帶寬的影響(memory bound),也就是內存讀寫效率問題,這是因為大模型由于參數量巨大、訪存量遠超內存帶寬容量,意味著模型的權重的讀寫速度跟不上硬件對于算子的計算強度,導致算力資源無法得到充分發揮,進而影響性能。

f7a0f750-957b-11ee-8b88-92fbcf53809c.png

圖:memory bound與compute bound比較

低比特量化技術

低比特量化技術是指將模型參數從 fp32/fp16 壓縮到更低的比特位寬表達,在不影響模型輸出準確性和參數量的情況下,降低模型體積,從而減少緩存對于數據讀寫的壓力,提升推理性能。由于大模型中單個 layer 上的權重體積往往要遠大于該 layer 的輸入數據(activation),因此針對大模型的量化技術往往只會針對關鍵的權重參數進行量化(WeightOnly),而不對輸入數據進行量化,在到達理想的壓縮比的同時,盡可能保證輸出結果,實現最高的量化“性價比”。

f7c40178-957b-11ee-8b88-92fbcf53809c.png

圖:權重壓縮示意

經驗證常規的 int8 權重量化,對大模型準確性的影響極低,而為了引入像 int4,nf4 這樣的更極致的壓縮精度,目前在權重量化算法上也經過了一些探索,其中比較典型的就是 GPTQ 算法,簡單來說,GPTQ 對某個 block 內的所有參數逐個量化,每個參數量化后,需要適當調整這個 block 內其他未量化的參數,以彌補量化造成的精度損失。GPTQ 量化需要準備校準數據集,因此他也是一種 PTQ(Post Training Quantization)量化技術。

OpenVINO 2023.2

對于 int4 模型的支持

OpenVINO 2023.2 相較 2023.1 版本,全面引入對 int4 模型以及量化技術的支持。主要有以下 2 個方面:

01CPU 及 iGPU 支持原生 int4 模型推理

OpenVINO工具目前已經可以直接讀取經 NNCF 量化以后的 int4 模型,或者是將 HuggingFace 中使用 AutoGPTQ 庫量化的模型轉換后,進行讀取及編譯。由于目前的 OpenVINO 后端硬件無法直接支持 int4 數據格式的運算,所以在模型執行過程中,OpenVINO runtime 會把 int4 的權重反量化的到 FP16 或是 BF16 的精度進行運算。簡而言之:模型以 int4 精度存儲,以 fp16 精度計算,用計算成本換取空間及 IO 成本,提升運行效率。這也是因為大模型的性能瓶頸主要來源于 memory bound,用更高的數據讀寫效率,降低對于內存帶寬與內存容量的開銷。

f7ebf480-957b-11ee-8b88-92fbcf53809c.png

圖:經 NNCF 權重壓縮后的模型結構

02NNCF 工具支持 int4 的混合精度量化策略(Weights Compression)

剛提到的 GPTQ 是一種 data-based 的量化方案,需要提前準備校驗數據集,借助 HuggingFace 的 Transformers 和 AutoGPTQ 庫可以完成這一操作。而為了幫助開發者縮短 LLM 模型的壓縮時間,降低量化門檻,NNCF 工具在 2.7.0 版本中引入了針對 int4 以及 nf4 精度的權重壓縮模式,這是一種 data-free 的混合精度量化算法,無需準備校驗數據集,僅對 LLM 中的 Linear 和 Embedding layers 展開權重壓縮。整個過程僅用一行代碼就可以完成:

compressed_model = compress_weights(model, mode=CompressWeightsMode.NF4, group_size=64, ratio=0.9)

左滑查看更多

其中model為 PyTorch 或 OpenVINO 的模型對象;mode代表量化模式,這里可以選擇CompressWeightsMode.NF4,或是CompressWeightsMode.INT4_ASYM/INT4_SYM等不同模式;為了提升量化效率,Weights Compression 使用的是分組量化的策略(grouped quantization),因此需要通過group_size配置組大小,例如 group_size=64 意味 64 個 channel 的參數將共享同一組量化參數(zero point, scale value);此外鑒于 data-free 的 int4 量化策略是比帶來一定的準確度損失,為了平衡模型體積和準確度,Weights Compression 還支持混合精度的策略,通過定義ratio值,我們可以將一部分對準確度敏感的權重用 int8 表示,例如在 ratio=0.9 的情況下,90% 的權重用 int4 表示,10% 用 int8 表示,開發者可以根據量化后模型的輸出結果調整這個參數。

在量化過程中,NNCF 會通過搜索的方式,逐層比較偽量化后的權重和原始浮點權重的差異,衡量量化操作對每個 layer 可能帶來的誤差損失,并根據排序結果以及用戶定義的 ratio 值,將損失相對較低的權重壓縮到 int4 位寬。

中文大語言模型實踐

隨著 OpenVINO2023.2 的發布,大語言模型的 int4 壓縮示例也被添加到了openvino_notebooks 倉庫中,這次特別新增了針對中文 LLM 的示例,包括目前熱門模型ChatGLM2Qwen。在這個 notebook 中,開發者可以體驗如何從 HuggingFace 的倉庫中導出一個 OpenVINO IR 格式的模型,并通過 NNCF 工具進行低比特量化,最終完成一個聊天機器人的構建。

f8093eb4-957b-11ee-8b88-92fbcf53809c.png

圖:fp16 與 int4 模型空間占用比較

通過以上這個截圖可以看到,qwen-7b-chat 經過 NNCF 的 int4 量化后,可以將體積壓縮到原本 fp16 模型的 1/3,這樣使得一臺 16GB 內存的筆記本,就可以流暢運行壓縮以后的 ChatGLM2 模型。此外我們還可以通過將 LLM 模型部署在酷睿 CPU 中的集成顯卡上,在提升性能的同時,減輕 CPU 側的任務負載。

f81349cc-957b-11ee-8b88-92fbcf53809c.png

圖:Notebook 運行效果

總結

OpenVINO 2023.2 中對 int4 權重量化的支持,可以全面提升大模型在英特爾平臺上的運行性能,同時降低對于存儲和內存的容量需求,降低開發者在部署大模型時的門檻,讓本地化的大語言模型應用在普通 PC 上落地成為可能。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 輕量化技術
    +關注

    關注

    0

    文章

    5

    瀏覽量

    2209
  • 大模型
    +關注

    關注

    2

    文章

    1823

    瀏覽量

    1419
  • LLM
    LLM
    +關注

    關注

    0

    文章

    218

    瀏覽量

    249
  • OpenVINO
    +關注

    關注

    0

    文章

    63

    瀏覽量

    103

原文標題:如何利用低比特量化技術在 iGPU 上進一步提升大模型推理性能|開發者實戰

文章出處:【微信號:英特爾物聯網,微信公眾號:英特爾物聯網】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    比特熊充電?!繉崙鹧菥殬嫿?b class='flag-5'>LLM對話引擎

    Guardrails 與 Azure OpenAI 結合使用,構建更加安全可靠的 LLM 對話引擎? 本期 【比特熊充電?!?NVIDIA 企業
    的頭像 發表于 09-19 13:40 ?823次閱讀
    【<b class='flag-5'>比特</b>熊充電?!繉崙鹧菥殬嫿?b class='flag-5'>LLM</b>對話引擎

    Labview開發技術叢書--運行性能提升技巧

    Labview開發技術叢書--運行性能提升技巧
    發表于 09-02 18:09

    求推薦一款單片機,量化比特大于等于12bit的ADC通道

    單片機里擁有0-10V輸入,量化比特大于等于12bit的ADC通道,通道數不足也可使用多個單片機。本次單片機菜鳥一枚,求助各位專家多謝多謝
    發表于 05-29 04:35

    基于RDMA技術的Spark Shuffle性能提升

    一篇文章教你使用RDMA技術提升Spark的Shuffle性能
    發表于 10-28 16:46

    多核和多線程技術怎么提升Android網頁瀏覽性能?

    采用多核技術提升 CPU 馬力,是一種通過硬件提供更高系統性能的日益常見的做法。即使對許多視成本和功耗為重要設計考慮的大量消費性應用,也是如此。但是,升級到多核系統并無法保證一定能夠提升
    發表于 03-25 08:08

    LED產品性能提升方法

    在LED光通量有關的一些小知識點。在實際應用中這些概念將幫助開發者對于LED產品的性能進行提升,并提供一些能夠小錯誤的快速修復。希望大家在閱讀過本文之后能夠有所收獲。
    發表于 11-02 08:53

    如何利用物聯網幫助光伏產業提升效率

    如何利用物聯網技術幫助光伏產業進一步提升效率
    發表于 03-11 07:02

    求一種采用分段量化比特滑動技術的流水并行式模數轉換電路?

    本文提出了一種采用分段量化比特滑動技術的流水并行式模數轉換電路,較好地結合了并行式和逐次逼近比較式兩種模數轉換各自的長處,在保證高速工作的同時,可實現并行式難以實現的8位以上的高分辨率模數轉換,而且比現有的流水并行式模數轉換電
    發表于 04-08 06:34

    量化算法介紹及其特點分析

    模型量化作為一種能夠有效減少模型大小,加速深度學習推理的優化技術,已經得到了學術界和工業界的廣泛研究和應用。模型量化有 8/4/2/1 bit等,本文主要討論目前相對比較成熟的 8-bit
    發表于 07-26 08:08

    如何將抖動添加到信號以通過消除量化誤差和失真來提高模數轉換系統的性能

    發現某種程度的噪聲在某些情況下實際上是有幫助的,這違反直覺。抖動技術可用于三個不同的目的:1、通過打破量化誤差和輸入信號之間的統計相關性來提高理想量化器的
    發表于 12-22 15:17

    區塊鏈比特量化交易自動搬磚軟件系統

    區塊鏈交易系統,量化交易軟件,比特幣交易平臺搭建,量化自動搬磚系統,量化策略自動交易系統,跨平臺搶單自動對沖交易系統。區塊鏈比特
    發表于 01-12 11:09 ?873次閱讀

    量化交易在比特幣市場的應用

    量化交易是指借助現代統計學和數學的方法,利用計算機技術,通過建模分析、參數優化等手段,并從歷史金融數據中提取影響投資的指標,并使用該程序進行自動交易以獲得“超額”收益。這種投資方法稱為量化交易。
    發表于 04-20 10:13 ?1374次閱讀

    LLM性能的主要因素

    現在是2023年5月,截止目前,網絡上已經開源了眾多的LLM,如何用較低的成本,判斷LLM的基礎性能,選到適合自己任務的LLM,成為一個關鍵。 本文會涉及以下幾個問題: 影響
    的頭像 發表于 05-22 15:26 ?1323次閱讀
    <b class='flag-5'>LLM</b><b class='flag-5'>性能</b>的主要因素

    基于MacroBenchmark的性能測試量化指標方案

    將介紹基于Google MacroBenchmark的性能量化指標測試的工程配置、測試流程、核心指標和應用案例,幫助Android 開發者更好地評估和比較App的性能。
    的頭像 發表于 10-17 10:15 ?438次閱讀

    Nvidia 通過開源庫提升 LLM 推理性能

    加利福尼亞州圣克拉拉——Nvidia通過一個名為TensorRT LLM的新開源軟件庫,將其H100、A100和L4 GPU的大型語言模型(LLM)推理性能提高了一倍。 正如對相同硬件一輪又一輪改進
    的頭像 發表于 10-23 16:10 ?392次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>