在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

如何在 NVIDIA TensorRT-LLM 中支持 Qwen 模型

NVIDIA英偉達企業解決方案 ? 來源:未知 ? 2023-12-04 20:25 ? 次閱讀

背景介紹

大語言模型正以其驚人的新能力推動人工智能的發展,擴大其應用范圍。然而,由于這類模型具有龐大的參數規模,部署和推理的難度和成本極高,這一挑戰一直困擾著 AI 領域。此外,當前存在大量支持模型部署和推理的框架和工具,如 ModelScope 的 Model Pipelines API 和 HuggingFace 的 Text Generation Inference 等,各自都有其獨特的特點和優勢。然而,這些工具往往未能充分發揮 GPU 的性能。

為了解決這些問題,NVIDIA 推出了一種全新的解決方案——TensorRT-LLM。這是一款高度優化的開源計算框架,它將NVIDIA TensorRT深度學習編譯器、FasterTransformer 的優化內核、預處理和后處理,以及多 GPU/多節點通信等功能封裝在一個簡單的開源 Python/C++ API 中,同時與硬件進行了一體化優化,形成了一種產品級的大模型推理解決方案。NVIDIA TensorRT-LLM具有多項突出的特性,包括支持新的 FP8 數據格式,這使得模型可以在更低的精度下運行,從而減少內存消耗,同時保持模型的準確性。它還支持一種名為“In-flight batching”的新調度技術,可以更有效地處理動態負載,提高 GPU 利用率。

此外,TensorRT-LLM 還支持模型的并行化和分布式推理,利用張量并行性進行模型并行化,使模型可以在多個 GPU 之間并行運行,從而實現大型模型的高效推理。最重要的是,TensorRT-LLM 極大地簡化了開發流程,使得開發者無需深入了解底層的技術細節,也無需編寫復雜的 CUDA/C++ 代碼。它提供了一個易用、開源和模塊化的應用編程接口,使開發者能夠輕松定義、優化和執行新的大語言模型架構和增強功能。總的來說,TensorRT-LLM 讓用戶可以專注于模型的設計和優化,而將底層的性能優化工作交給 TensorRT 來完成,大大提高了開發效率和生產效率,真正實現了大模型推理的易用性和高效性。

阿里云的通義千問開源模型 Qwen-7B,擁有 70 億參數,在一系列全方位的評估中展示了其在自然語言理解與生成、數學問題求解、代碼生成等領域的優秀能力。這些評估涵蓋了多個數據集,包括 MMLU、C-Eval、GSM8K、HumanEval 以及 WMT22 等。在這些評測中,Qwen-7B 不僅超越了同等規模的其他大語言模型,甚至在某些方面超過了參數規模更大的模型。因此,對于 TensorRT-LLM 來說,支持 Qwen 系列模型具有重要的意義。

開發與優化過程

我們是社區開發者,通過阿里云天池舉辦的NVIDIA TensorRT Hackathon 2023接觸到了 NVIDIA TensorRT-LLM,并為它貢獻了代碼。TensorRT-LLM 已開源(https://github.com/NVIDIA/TensorRT-LLM),包含了我們開發的 Qwen-7B 模型。以下是我們的開發記錄,供其他開發者參考。

基礎功能支持

  1. 首先我們初步分析了 examples/llama 代碼,以深化對 trt-llm 基本流程的理解。在 llama 項目的 weight.py 中,存在一個 load_from_meta_llama 函數,該函數包含 tensorrt_llm.models.LLaMAForCausalLM,此部分定義了 TensorRT 的模型結構。復制 examples/llama 并將其重命名為 examples/qwen,同時將 LLaMAForCausalLM 復制并創建新的 mode.py 文件,將相關內容粘貼至此。在這個過程中,所有包含“llama”的模型都被替換為“qwen”。

  2. 接下來,我們對項目中的 weight.py 的 load_from_hf_qwen 函數進行修改,目的是逐步將 HuggingFace 的權重名稱與 TensorRT 的權重名稱對齊。執行 build.py 后,雖然編譯成功,但執行 run.py 的結果并未如預期。

  3. 參照 TensorRT-LLM 的 docs/source/2023-05-19-how-to-debug.md 文檔,我們對模型進行了詳細的調試,從外到內打印模型層的數值,觀察 mean/sum/shape,并與原版進行對比。經過排查,我們發現 attention 部分已經包含了 rope 計算,通過調整 gpt attention plugin 的參數,最終使得輸出的 logits 正常。

  4. 再次優化 run.py,將 HuggingFace 原版 qwen_generation_utils.py 中的 make_context 函數遷移到 utils/utils.py 中,并導入該函數。這個函數被用來構造一個 chat 版的 prompt 輸入,同時我們調整 eos 和 pad token 為 qwen 專屬的 <|im_end|> 或者 <|endoftext|>,最終 run.py 輸出也正常。

增加功能:Weight Only 量化

在 FP16 對齊成功,并且 run.py 以及 summarize.py 文件均能正常運行之后,我們開始探索實現 weight only int8/int4 量化。這只需要在 build.py 文件中對 weight only int8/int4 分支進行輕微調整,包括 shape 的修改,以及保持權重名稱與 FP16 一致。接下來,我們進行編譯測試,發現這一過程順利完成,且工作量并未超出預期,這部分工作基本無需投入大量人力資源。

增加功能:Smooth Quant

  1. 在參考 Llama 項目的基礎上,我們將 hf_llama_convert.py 替換為 hf_qwen_convert.py 文件,該文件用于將 HuggingFace 的權重導出至 FasterTransformer (FT) 格式的文件。同時,我們將 llama/weight.py 中的 load_from_binary 函數重命名為 load_from_ft 復制到 qwen/weight.py 中,并根據我們導出的權重文件進行了適當的修改。然后,我們將 qwen/build.py 中默認的加載函數從 load_from_hf_qwen 更改為 load_from_ft。為了保證兼容性,我們也對 load_from_ft 函數進行了 fp16 以及 weight_only 的 int8/int4 的適配,其適配流程與之前的基本相同。當開發者未導出 FT 權重時,系統會自動加載 load_from_hf_qwen 函數以生成 engine。

  2. 在 smooth quant 的實現方面,我們參考了 example/llama 的 smooth quant 過程,同樣在 hf_qwen_convert.py 中添加了 --smoothquant 選項。通過調試 example/llama/hf_llama_convert.py 文件,我們觀察了 smooth_llama_model 函數的計算方法以及參數的 shape,發現其 mlp 的 gate 和 up 與 qwen mlp 的 w2/w1 layer 相對應,并且 w1/w2 共享一個輸入。這部分的適配與之前的基本一致,唯一的區別是,attention 和 mlp 中需要量化的層需要進行轉置,然后在 weight.py 的 load_from_ft 函數中再次轉置回來。

  3. 我們再次分析了 example/llama 的 smooth quant 過程,并參考了其 build.py 文件,發現其中一個有一個 from tensorrt_llm.models import smooth_quantize 過程。在這個過程中,_smooth_quantize_llama 函數會替換掉 trt-llm 原本的模型結構。因此,我們在 qwen/utils 目錄下建立了一個 quantization.py 文件,參考了 llama 的 SmoothQuantAttention,并復用了其 SmoothQuantRmsNorm,從而實現了 qwen 的 smooth quant 的全部過程。

優化效果

精度

  • 測試平臺:NVIDIA A10 Tensor Core GPU(24G 顯存) | TensorRT 9.0.0.1。

  • TRT_LLM engine 編譯時最大輸入長度:2048, 最大新增長度:2048。

  • HuggingFace 版 Qwen 采用默認配置,未安裝,未啟用 FlashAttention 相關模塊。

  • 測試時:beam=batch=1,max_new_tokens=100。

  • 測試結果(該結果由 examples/qwen/summarize.py 生成。注:量化后分數與原版分數越接近,精度越好):

wKgZomVtxkqAP67DAAA5be3_SKc768.png

性能

  • 測試平臺:NVIDIA A10 Tensor Core GPU (24G 顯存) | TensorRT 9.0.0.1。

  • 測試數據集為 ShareGPT_Vicuna_unfiltered,下載地址:https://huggingface.co/datasets/anon8231489123/ShareGPT_Vicuna_unfiltered/resolve/main/ShareGPT_V3_unfiltered_cleaned_split.json

  • 生成速度(token/s):此指標不僅包括 generation 的過程,同時也計算了 context 階段時間,因此它表示的是每秒實際處理(理解輸入和生成輸出)的 token 數量。

  • 吞吐速度(requests/s):此指標代表在極限情況下,無請求間隙時,系統平均每秒能處理的請求數量。

  • 以下的測試包含多個 batch,主要用于測試特定顯卡的極限運行情況,測試過程僅使用 TensorRT-LLM python 運行時環境。

  • HuggingFace 版 Qwen 采用默認配置,未安裝,未啟用 FlashAttention 相關模塊。

  • 當最大輸入長度:2048, 最大新增長度:2048,num-prompts=100, beam=1, seed=0 時,BenchMark 結果如下:

wKgZomVtxkuAarpqAAEzGnOER-o124.png

圖 1:TensorRT-LLM 與 HuggingFace

吞吐以及生成對比

(吞吐加速比最高 4.25, 生成加速比最高 4.69)

  • 當最大輸入長度:1024, 最大新增長度:1024,num-prompts=100, beam=1, seed=0。BenchMark 結果如下:

wKgZomVtxkuAdu-zAAFh684tVxg103.png

圖 2:TensorRT-LLM 與 HuggingFace

吞吐以及生成對比

(吞吐加速比最高 4.57, 生成加速比最高 5.56)

總結

從整個開發過程的角度來看,NVIDIA TensorRT-LLM 已經實現了相當豐富的功能。它支持新模型的工作量不大,因為可以復用已有模型的相關代碼,只需要進行少量的改動即可完成對新模型的支持。這表明了 TensorRT-LLM 具有很好的擴展性。此外,在精度方面,它能夠與 HuggingFace 保持一致,但在速度方面最高可以達到 HuggingFace 的 5.56 倍。綜合考慮這些因素,可以說 TensorRT-LLM 完全有資格成為大規模語言模型推理框架的首選。它極大地緩解了推理和部署的難題,為廣泛應用大語言模型提供了有力支持。

項目代碼

開源地址:

https://github.com/Tlntin/Qwen-7B-Chat-TensorRT-LLM

關于作者

wKgZomVtxkuAZVYoAAAtvFRfmWs183.jpg ?

鄧順子

廣州大學工程管理專業,擁有管理學學士學位,目前擔任 NLP 算法工程師,主要研究留學教育領域的信息抽取與智能對話。曾獲得第二十一屆中國計算語言學大會(CCL2022)航旅縱橫杯一等獎(子任務二)和三等獎(子任務一),也是熱門 Rust 開源項目 Pake 的主要貢獻者之一。

wKgZomVtxkuAdpnyAAAmODue-5A372.jpg ?

趙紅博

河南科技大學機械制造專業,擁有工學學士學位,目前在 Boss 直聘擔任高性能計算開發工程師,主要研究招聘領域模型的推理加速工作。

wKgZomVtxkuALf7aAAHFC4069zo320.jpg ?

季光

NVIDIA DevTech 團隊經理,博士畢業于中科院計算所。擅長 GPU 加速的視頻處理以及性能優化,以及深度學習模型的推理優化,在 GPU 視頻編解碼以及 CUDA 編程與優化方面積累了豐富的經驗。

GTC 2024 將于 2024 年 3 月 18 至 21 日在美國加州圣何塞會議中心舉行,線上大會也將同期開放。點擊“閱讀原文”掃描下方海報二維碼,立即注冊 GTC 大會


原文標題:如何在 NVIDIA TensorRT-LLM 中支持 Qwen 模型

文章出處:【微信公眾號:NVIDIA英偉達企業解決方案】歡迎添加關注!文章轉載請注明出處。


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

    關注

    22

    文章

    3927

    瀏覽量

    93284

原文標題:如何在 NVIDIA TensorRT-LLM 中支持 Qwen 模型

文章出處:【微信號:NVIDIA-Enterprise,微信公眾號:NVIDIA英偉達企業解決方案】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    使用NVIDIA Triton和TensorRT-LLM部署TTS應用的最佳實踐

    針對基于 Diffusion 和 LLM 類別的 TTS 模型NVIDIA Triton 和 TensorRT-LLM 方案能顯著提升推理速度。在單張
    的頭像 發表于 06-12 15:37 ?411次閱讀
    使用<b class='flag-5'>NVIDIA</b> Triton和<b class='flag-5'>TensorRT-LLM</b>部署TTS應用的最佳實踐

    壁仞科技完成Qwen3旗艦模型適配

    近日,在高效適配Qwen3系列模型推理后,壁仞科技宣布完成旗艦版Qwen3-235B-A22B模型的訓練適配和優化。由此,壁仞科技已實現Qwen
    的頭像 發表于 05-16 16:23 ?329次閱讀

    NVIDIA使用Qwen3系列模型的最佳實踐

    阿里巴巴近期發布了其開源的混合推理大語言模型 (LLM) 通義千問 Qwen3,此次 Qwen3 開源模型系列包含兩款混合專家
    的頭像 發表于 05-08 11:45 ?932次閱讀
    <b class='flag-5'>NVIDIA</b>使用<b class='flag-5'>Qwen</b>3系列<b class='flag-5'>模型</b>的最佳實踐

    寒武紀率先支持Qwen3全系列模型

    近日,阿里Qwen團隊一口氣上新8大模型Qwen3正式發布并全部開源。
    的頭像 發表于 05-07 15:51 ?324次閱讀

    摩爾線程GPU率先支持Qwen3全系列模型

    近日,阿里云正式發布Qwen3系列的8款開源混合推理模型。摩爾線程團隊在模型發布當天,率先完成了Qwen3全系列模型在全功能GPU上的高效
    的頭像 發表于 05-07 15:24 ?379次閱讀

    壁仞科技完成阿里巴巴通義千問Qwen3全系列模型支持

    4月29日,阿里巴巴通義千問發布并開源8款新版Qwen3系列“混合推理模型”(簡稱“Qwen3”)。Qwen3發布后數小時內,壁仞科技完成全系列支持
    的頭像 發表于 04-30 15:19 ?640次閱讀

    京東廣告生成式召回基于 NVIDIA TensorRT-LLM 的推理加速實踐

    、個性化召回、深度召回等),以召回大量候選商品。隨后,系統通過相對簡單的粗排模型對候選集進行初步篩選,縮小候選范圍,最后通過精排和重排模型,確定最終返回給用戶的推薦結果。 隨著大語言模型LL
    的頭像 發表于 01-14 15:17 ?490次閱讀

    小白學大模型:構建LLM的關鍵步驟

    隨著大規模語言模型LLM)在性能、成本和應用前景上的快速發展,越來越多的團隊開始探索如何自主訓練LLM模型。然而,是否從零開始訓練一個LLM
    的頭像 發表于 01-09 12:12 ?877次閱讀
    小白學大<b class='flag-5'>模型</b>:構建<b class='flag-5'>LLM</b>的關鍵步驟

    NVIDIA TensorRT-LLM中啟用ReDrafter的一些變化

    Recurrent Drafting (簡稱 ReDrafter) 是蘋果公司為大語言模型 (LLM) 推理開發并開源的一種新型推測解碼技術,該技術現在可與 NVIDIA TensorRT-L
    的頭像 發表于 12-25 17:31 ?658次閱讀
    在<b class='flag-5'>NVIDIA</b> <b class='flag-5'>TensorRT-LLM</b>中啟用ReDrafter的一些變化

    解鎖NVIDIA TensorRT-LLM的卓越性能

    NVIDIA TensorRT-LLM 是一個專為優化大語言模型 (LLM) 推理而設計的庫。它提供了多種先進的優化技術,包括自定義 Attention Kernel、Inflight
    的頭像 發表于 12-17 17:47 ?766次閱讀

    NVIDIA TensorRT-LLM Roadmap現已在GitHub上公開發布

    感謝眾多用戶及合作伙伴一直以來對NVIDIA TensorRT-LLM支持TensorRT-LLM 的 Roadmap 現已在 GitHub 上公開發布!
    的頭像 發表于 11-28 10:43 ?660次閱讀
    <b class='flag-5'>NVIDIA</b> <b class='flag-5'>TensorRT-LLM</b> Roadmap現已在GitHub上公開發布

    TensorRT-LLM低精度推理優化

    本文將分享 TensorRT-LLM 中低精度量化內容,并從精度和速度角度對比 FP8 與 INT8。首先介紹性能,包括速度和精度。其次,介紹量化工具 NVIDIA TensorRT Model
    的頭像 發表于 11-19 14:29 ?1151次閱讀
    <b class='flag-5'>TensorRT-LLM</b>低精度推理優化

    NVIDIA Nemotron-4 340B模型幫助開發者生成合成訓練數據

    Nemotron-4 340B 是針對 NVIDIA NeMo 和 NVIDIA TensorRT-LLM 優化的模型系列,該系列包含最先進的指導和獎勵
    的頭像 發表于 09-06 14:59 ?675次閱讀
    <b class='flag-5'>NVIDIA</b> Nemotron-4 340B<b class='flag-5'>模型</b>幫助開發者生成合成訓練數據

    魔搭社區借助NVIDIA TensorRT-LLM提升LLM推理效率

    “魔搭社區是中國最具影響力的模型開源社區,致力給開發者提供模型即服務的體驗。魔搭社區利用NVIDIA TensorRT-LLM,大大提高了大語言模型
    的頭像 發表于 08-23 15:48 ?1045次閱讀

    llm模型有哪些格式

    LLM(Large Language Model,大型語言模型)是一種深度學習模型,主要用于處理自然語言處理(NLP)任務。LLM模型的格式
    的頭像 發表于 07-09 09:59 ?1331次閱讀
    主站蜘蛛池模板: 欧美在线资源 | 久操免费在线视频 | 99久久精品久久久久久婷婷 | 一级毛片一级毛片 | 黄色激情小说视频 | 精品三级网站 | 美女被免费视频网站九色 | 1024你懂的国产欧美日韩在 | 天天射干 | 五月婷六月婷婷 | 四虎在线精品免费高清在线 | 欧美人与禽交 | 爱操视频在线观看 | 欧美一级视频在线 | 亚州免费一级毛片 | 天天舔天天射天天干 | 成年网站在线播放 | 中文在线最新版天堂 | 成人美女隐私免费 | 性久久久久久久久 | h小视频在线观看 | 尻逼尻逼| 一级视频在线播放 | 国产乱理论片在线观看理论 | 手机看片国产精品 | 97爱sese| 欧美影院一区二区三区 | 国产成年女一区二区三区 | 高清欧美日本视频免费观看 | 人人成人免费公开视频 | 天天综合网天天综合色 | 天堂网在线.www天堂在线 | 99久久国产免费 - 99久久国产免费 | 国产成人午夜精品影院游乐网 | 五月婷综合网 | 激情亚洲婷婷 | 国产亚洲精品久久午夜 | 国产99色| 亚洲一区二区影视 | 97就要鲁就要鲁夜夜爽 | 国产精品久久在线 |