精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

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

背景介紹

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

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

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

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

開發(fā)與優(yōu)化過程

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

基礎(chǔ)功能支持

  1. 首先我們初步分析了 examples/llama 代碼,以深化對(duì) trt-llm 基本流程的理解。在 llama 項(xiàng)目的 weight.py 中,存在一個(gè) load_from_meta_llama 函數(shù),該函數(shù)包含 tensorrt_llm.models.LLaMAForCausalLM,此部分定義了 TensorRT 的模型結(jié)構(gòu)。復(fù)制 examples/llama 并將其重命名為 examples/qwen,同時(shí)將 LLaMAForCausalLM 復(fù)制并創(chuàng)建新的 mode.py 文件,將相關(guān)內(nèi)容粘貼至此。在這個(gè)過程中,所有包含“l(fā)lama”的模型都被替換為“qwen”。

  2. 接下來,我們對(duì)項(xiàng)目中的 weight.py 的 load_from_hf_qwen 函數(shù)進(jìn)行修改,目的是逐步將 HuggingFace 的權(quán)重名稱與 TensorRT 的權(quán)重名稱對(duì)齊。執(zhí)行 build.py 后,雖然編譯成功,但執(zhí)行 run.py 的結(jié)果并未如預(yù)期。

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

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

增加功能:Weight Only 量化

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

增加功能:Smooth Quant

  1. 在參考 Llama 項(xiàng)目的基礎(chǔ)上,我們將 hf_llama_convert.py 替換為 hf_qwen_convert.py 文件,該文件用于將 HuggingFace 的權(quán)重導(dǎo)出至 FasterTransformer (FT) 格式的文件。同時(shí),我們將 llama/weight.py 中的 load_from_binary 函數(shù)重命名為 load_from_ft 復(fù)制到 qwen/weight.py 中,并根據(jù)我們導(dǎo)出的權(quán)重文件進(jìn)行了適當(dāng)?shù)男薷摹H缓螅覀儗?qwen/build.py 中默認(rèn)的加載函數(shù)從 load_from_hf_qwen 更改為 load_from_ft。為了保證兼容性,我們也對(duì) load_from_ft 函數(shù)進(jìn)行了 fp16 以及 weight_only 的 int8/int4 的適配,其適配流程與之前的基本相同。當(dāng)開發(fā)者未導(dǎo)出 FT 權(quán)重時(shí),系統(tǒng)會(huì)自動(dòng)加載 load_from_hf_qwen 函數(shù)以生成 engine。

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

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

優(yōu)化效果

精度

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

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

  • HuggingFace 版 Qwen 采用默認(rèn)配置,未安裝,未啟用 FlashAttention 相關(guān)模塊。

  • 測試時(shí):beam=batch=1,max_new_tokens=100。

  • 測試結(jié)果(該結(jié)果由 examples/qwen/summarize.py 生成。注:量化后分?jǐn)?shù)與原版分?jǐn)?shù)越接近,精度越好):

wKgZomVtxkqAP67DAAA5be3_SKc768.png

性能

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

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

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

  • 吞吐速度(requests/s):此指標(biāo)代表在極限情況下,無請(qǐng)求間隙時(shí),系統(tǒng)平均每秒能處理的請(qǐng)求數(shù)量。

  • 以下的測試包含多個(gè) batch,主要用于測試特定顯卡的極限運(yùn)行情況,測試過程僅使用 TensorRT-LLM python 運(yùn)行時(shí)環(huán)境。

  • HuggingFace 版 Qwen 采用默認(rèn)配置,未安裝,未啟用 FlashAttention 相關(guān)模塊。

  • 當(dāng)最大輸入長度:2048, 最大新增長度:2048,num-prompts=100, beam=1, seed=0 時(shí),BenchMark 結(jié)果如下:

wKgZomVtxkuAarpqAAEzGnOER-o124.png

圖 1:TensorRT-LLM 與 HuggingFace

吞吐以及生成對(duì)比

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

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

wKgZomVtxkuAdu-zAAFh684tVxg103.png

圖 2:TensorRT-LLM 與 HuggingFace

吞吐以及生成對(duì)比

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

總結(jié)

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

項(xiàng)目代碼

開源地址:

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

關(guān)于作者

wKgZomVtxkuAZVYoAAAtvFRfmWs183.jpg ?

鄧順子

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

wKgZomVtxkuAdpnyAAAmODue-5A372.jpg ?

趙紅博

河南科技大學(xué)機(jī)械制造專業(yè),擁有工學(xué)學(xué)士學(xué)位,目前在 Boss 直聘擔(dān)任高性能計(jì)算開發(fā)工程師,主要研究招聘領(lǐng)域模型的推理加速工作。

wKgZomVtxkuALf7aAAHFC4069zo320.jpg ?

季光

NVIDIA DevTech 團(tuán)隊(duì)經(jīng)理,博士畢業(yè)于中科院計(jì)算所。擅長 GPU 加速的視頻處理以及性能優(yōu)化,以及深度學(xué)習(xí)模型的推理優(yōu)化,在 GPU 視頻編解碼以及 CUDA 編程與優(yōu)化方面積累了豐富的經(jīng)驗(yàn)。

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


原文標(biāo)題:如何在 NVIDIA TensorRT-LLM 中支持 Qwen 模型

文章出處:【微信公眾號(hào):NVIDIA英偉達(dá)企業(yè)解決方案】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 英偉達(dá)
    +關(guān)注

    關(guān)注

    22

    文章

    3749

    瀏覽量

    90859

原文標(biāo)題:如何在 NVIDIA TensorRT-LLM 中支持 Qwen 模型

文章出處:【微信號(hào):NVIDIA-Enterprise,微信公眾號(hào):NVIDIA英偉達(dá)企業(yè)解決方案】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    NVIDIA TensorRT-LLM Roadmap現(xiàn)已在GitHub上公開發(fā)布

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

    TensorRT-LLM低精度推理優(yōu)化

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

    如何訓(xùn)練自己的LLM模型

    訓(xùn)練自己的大型語言模型LLM)是一個(gè)復(fù)雜且資源密集的過程,涉及到大量的數(shù)據(jù)、計(jì)算資源和專業(yè)知識(shí)。以下是訓(xùn)練LLM模型的一般步驟,以及一些關(guān)鍵考慮因素: 定義目標(biāo)和需求 : 確定你的
    的頭像 發(fā)表于 11-08 09:30 ?336次閱讀

    號(hào)稱全球最強(qiáng)開源模型 ——Qwen2.5 系列震撼來襲!PerfXCloud同步上線,快來體驗(yàn)!

    。PerfXCloud(澎峰云)大模型開發(fā)與服務(wù)平臺(tái)第一時(shí)間支持 Qwen2.5 72B 并在平臺(tái)完成上線,趕快來體驗(yàn)吧! Qwen2.5系列模型
    的頭像 發(fā)表于 09-25 16:52 ?534次閱讀
    號(hào)稱全球最強(qiáng)開源<b class='flag-5'>模型</b> ——<b class='flag-5'>Qwen</b>2.5 系列震撼來襲!PerfXCloud同步上線,快來體驗(yàn)!

    NVIDIA Nemotron-4 340B模型幫助開發(fā)者生成合成訓(xùn)練數(shù)據(jù)

    Nemotron-4 340B 是針對(duì) NVIDIA NeMo 和 NVIDIA TensorRT-LLM 優(yōu)化的模型系列,該系列包含最先進(jìn)的指導(dǎo)和獎(jiǎng)勵(lì)
    的頭像 發(fā)表于 09-06 14:59 ?276次閱讀
    <b class='flag-5'>NVIDIA</b> Nemotron-4 340B<b class='flag-5'>模型</b>幫助開發(fā)者生成合成訓(xùn)練數(shù)據(jù)

    【飛凌嵌入式OK3576-C開發(fā)板體驗(yàn)】rkllm板端推理

    文件以及之前編譯得到的llm_demo可執(zhí)行文件一起復(fù)制到llm_qwen2_base文件夾中。并使用scp命令,將整個(gè)llm_qwen2_base文件夾傳輸?shù)介_發(fā)板的userdata目錄中。 scp
    發(fā)表于 08-31 22:45

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

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

    阿里Qwen2-Math系列震撼發(fā)布,數(shù)學(xué)推理能力領(lǐng)跑全球

    阿里巴巴近期震撼發(fā)布了Qwen2-Math系列模型,這一系列模型基于其強(qiáng)大的Qwen2 LLM構(gòu)建,專為數(shù)學(xué)解題而生,展現(xiàn)了前所未有的數(shù)學(xué)推
    的頭像 發(fā)表于 08-12 15:19 ?695次閱讀

    llm模型有哪些格式

    LLM(Large Language Model,大型語言模型)是一種深度學(xué)習(xí)模型,主要用于處理自然語言處理(NLP)任務(wù)。LLM模型的格式
    的頭像 發(fā)表于 07-09 09:59 ?556次閱讀

    LLM模型和LMM模型的區(qū)別

    LLM(線性混合模型)和LMM(線性混合效應(yīng)模型)之間的區(qū)別如下: 定義: LLM(線性混合模型)是一種統(tǒng)計(jì)
    的頭像 發(fā)表于 07-09 09:57 ?775次閱讀

    llm模型和chatGPT的區(qū)別

    LLM(Large Language Model)是指大型語言模型,它們是一類使用深度學(xué)習(xí)技術(shù)構(gòu)建的自然語言處理(NLP)模型LLM模型
    的頭像 發(fā)表于 07-09 09:55 ?935次閱讀

    NVIDIA加速微軟最新的Phi-3 Mini開源語言模型

    NVIDIA 宣布使用 NVIDIA TensorRT-LLM 加速微軟最新的 Phi-3 Mini 開源語言模型TensorRT-LLM
    的頭像 發(fā)表于 04-28 10:36 ?491次閱讀

    基于NVIDIA Megatron Core的MOE LLM實(shí)現(xiàn)和訓(xùn)練優(yōu)化

    本文將分享阿里云人工智能平臺(tái) PAI 團(tuán)隊(duì)與 NVIDIA Megatron-Core 團(tuán)隊(duì)在 MoE (Mixture of Experts) 大語言模型LLM)實(shí)現(xiàn)與訓(xùn)練優(yōu)化上的創(chuàng)新工作。
    的頭像 發(fā)表于 03-22 09:50 ?716次閱讀
    基于<b class='flag-5'>NVIDIA</b> Megatron Core的MOE <b class='flag-5'>LLM</b>實(shí)現(xiàn)和訓(xùn)練優(yōu)化

    利用NVIDIA產(chǎn)品技術(shù)組合提升用戶體驗(yàn)

    本案例通過利用NVIDIA TensorRT-LLM加速指令識(shí)別深度學(xué)習(xí)模型,并借助NVIDIA Triton推理服務(wù)器在NVIDIA V1
    的頭像 發(fā)表于 01-17 09:30 ?658次閱讀

    使用NVIDIA TensorRT-LLM支持CodeFuse-CodeLlama-34B上的int4量化和推理優(yōu)化實(shí)踐

    CodeFuse是由螞蟻集團(tuán)開發(fā)的代碼語言大模型,旨在支持整個(gè)軟件開發(fā)生命周期,涵蓋設(shè)計(jì)、需求、編碼、測試、部署、運(yùn)維等關(guān)鍵階段。
    的頭像 發(fā)表于 01-12 18:13 ?1093次閱讀