請(qǐng)輸入關鍵字
搜索

太初資訊

跨越技術壁壘,打破固有模式,用(yòng)智慧重新鏈接關系。

【元來(lái)如此】第一章——大(dà)模型技術 · 起航&推理(lǐ)篇(内含産品試用(yòng)申請(qǐng))!

TECORIGIN

大(dà)模型技術

起航&推理(lǐ)篇


                                 正文(wén)共:3149字 15圖

預計(jì)閱讀時(shí)間:5分鐘(zhōng)

作(zuò)者:思成

軟件生态中心 · 應用(yòng)平台部


前言


當前大(dà)家讨論的ChatGPT、LLaMA等都屬于LLM(Large language model大(dà)語言模型),讓我們簡單回顧一下(xià)LLM的前世今生。




LM 語言模型

說到(dào)LLM就不得不提LM(language model語言模型)。語言模型是這(zhè)樣一個模型:對(duì)于一句話(huà)(由詞組成的序列),它能(néng)夠計(jì)算(suàn)出這(zhè)句話(huà)出現(xiàn)的概率。爲了(le)讓模型給出這(zhè)樣的概率P,簡單的方法就是将其用(yòng)概率論中的方法進行展開(kāi),這(zhè)樣隻要想辦法得到(dào)每一個P(xm|x1x2...xm-1)即可。這(zhè)樣從(cóng)另一個角度來(lái)看(kàn),如果我們可以找到(dào)一個模型:它能(néng)夠計(jì)算(suàn)P(xm|x1x2...xm-1),那麽它就是一個語言模型。      



圖1 什(shén)麽是語言模型


基于這(zhè)樣的認知(zhī),不難想到(dào)我們隻需要找到(dào)一個足夠大(dà)的語料庫,通過統計(jì)後就可以得到(dào)一個基本的“語言模型“。但(dàn)是,可以想象基于統計(jì)的方法會(huì)遇到(dào)不可避免的稀疏問題,哪怕我們簡化上(shàng)面的統計(jì)量,假設每個詞出現(xiàn)的概率隻與前n個詞有關(n-gram)。

在這(zhè)之後出現(xiàn)了(le)基于神經網絡的語言模型,通過詞向量(word embedding)和(hé)神經網絡來(lái)計(jì)算(suàn)上(shàng)面的P(xm|x1x2...xm-1),這(zhè)裏以基于FnnLM和(hé)RNN兩大(dà)類模型頗具代表性。



圖2 基于統計(jì)的語言模型和(hé)基于神經網絡的語言模型




LLM 大(dà)語言模型


2017年由Google提出《Attention is All you need》[1]Transformer模型。Transformer模型主體由Encoder(編碼器)和(hé)Decoder(解碼器)兩部分組成。其中Encoder更擅長NLU(自(zì)然語言理(lǐ)解)任務,Decoder更擅長NLG(自(zì)然語言生成)任務。



圖3 基于海量數據和(hé)大(dà)參數量的語言模型

在這(zhè)之後的3-4年中,各大(dà)公司不斷入局,先後提出了(le)衆多大(dà)語言模型[2]。其中OpenAI僅使用(yòng)Transformer中的Decoder部分,提出了(le)GPT模型系列,并基于此模型結構作(zuò)爲基礎提出了(le)今天耳熟能(néng)詳的ChatGPT。區(qū)别與LM的顯而易見的特點就是模型參數量的不斷增加,以及訓練數據的不斷增加。



圖4 大(dà)語言模型近3年發展時(shí)間線,引用(yòng)自(zì)[2]


大(dà)模型的應用(yòng)


LLM可以應用(yòng)在搜索系統、自(zì)動對(duì)話(huà)系統、機器翻譯、文(wén)本摘要、問答(dá)系統、輔助編程等衆多領域。能(néng)夠根據問題生成符合語法規則和(hé)語義的自(zì)然語言文(wén)本。



圖5 大(dà)模型應用(yòng)廣泛的下(xià)遊任務,引用(yòng)自(zì)[3]



圖6 大(dà)語言模型在搜索問答(dá)中的應用(yòng)



圖7 大(dà)語言模型在輔助編程上(shàng)的應用(yòng)



圖8 大(dà)語言模型在智能(néng)客服場景上(shàng)的應用(yòng)


當大(dà)家都去挖金(jīn)礦時(shí),應該去賣鏟子。如果将大(dà)模型比作(zuò)金(jīn)子,那麽鏟子是什(shén)麽呢(ne)?答(dá)案是算(suàn)力+推理(lǐ)服務,接下(xià)來(lái)我們來(lái)看(kàn)Tecorigin準備了(le)什(shén)麽樣的“鏟子”。


大(dà)模型推理(lǐ)核心技術


下(xià)面我們将從(cóng)幾方面來(lái)介紹大(dà)模型推理(lǐ)技術以及Tecorigin爲了(le)降低(dī)用(yòng)戶成本,提高(gāo)推理(lǐ)性能(néng)都做了(le)什(shén)麽。

對(duì)于大(dà)模型推理(lǐ)而言,有以下(xià)4個關鍵衡量維度。


1

Latency(時(shí)延),反應了(le)在接收到(dào)用(yòng)戶請(qǐng)求之後,多久得到(dào)響應。


2

Throughput(吞吐),反應了(le)每秒鐘(zhōng)可以輸出多少個token,對(duì)于大(dà)衆的閱讀速度來(lái)看(kàn),一般我們認爲每秒鐘(zhōng) 20-30 tokens是一個可接受的性能(néng)。


3

Utilization(利用(yòng)率),反應了(le)在線推理(lǐ)引擎必須要盡可能(néng)的提高(gāo)利用(yòng)率,達到(dào)滿負載,否則會(huì)增加用(yòng)戶的成本。



4

Accuracy(精度),反應了(le)推理(lǐ)結果的準确性,毋庸置疑,一味的追求速度和(hé)利用(yòng)率,降低(dī)了(le)Accuracy是不合理(lǐ)的。


在明(míng)确了(le)目标之後,我們再來(lái)明(míng)确大(dà)模型推理(lǐ)的核心挑戰。

Large memory footprint(大(dà)量顯存開(kāi)銷),GPT/LLaMA等大(dà)模型的模型結構與解碼方式直接導緻了(le)在推理(lǐ)過程中會(huì)産生大(dà)量的顯存開(kāi)銷,由Parameter(參數)和(hé)Intermediate states(中間激活值)組成。

Low parallelizability(低(dī)并行度),當前主流自(zì)然語言模型均是Autoregressive(自(zì)回歸),這(zhè)種自(zì)回歸的模式導緻了(le)非常低(dī)的并行度。



圖9 大(dà)語言模型推理(lǐ)過程


基于以上(shàng)的目标和(hé)挑戰,爲了(le)更好(hǎo)的支持用(yòng)戶并提高(gāo)大(dà)模型推理(lǐ)性能(néng),Tecorigin從(cóng)下(xià)面幾方面入手。


Large  盡可能(néng)小(xiǎo)的Memory footprint



支持多種推理(lǐ)框架

基于不同的業務場景,需要靈活選擇一個合适的推理(lǐ)框架。當前比較主流的推理(lǐ)框架有vLLM,Fastertransformer+Triton Server,TGI(Text generation inference)等。


其中vLLM框架支持PagedAttention[3]和(hé)Continuous batching[4]等技術。


PagedAttention技術可以讓KV Cache通過固定大(dà)小(xiǎo)的“頁”來(lái)實現(xiàn)顯存的分配而不需要框架分配max_seq_len長度的連續内存,大(dà)大(dà)降低(dī)了(le)不必要的顯存開(kāi)銷,從(cóng)而極大(dà)的提升了(le)推理(lǐ)更大(dà)batch的可能(néng),這(zhè)意味着更高(gāo)的Throughput。



圖10 PagedAttention算(suàn)法示意,引用(yòng)自(zì)[4]


Continuous batching在進行batch>1的推理(lǐ)場景下(xià),一旦batch中的某一個序列推理(lǐ)完成,那麽就可以在之後插入一個新序列,從(cóng)而充分利用(yòng)GPU使用(yòng)率。



圖11 Continuous batching算(suàn)法示意,引用(yòng)自(zì)[5]


Fastertransformer是一個用(yòng)于加速基于Transformer模型結構的模型推理(lǐ)加速引擎。通過高(gāo)度優化的融合算(suàn)子、Shared buffer(共享緩沖)、KV Cache等核心技術極大(dà)提高(gāo)了(le)推理(lǐ)Latency。
 
TGI當前也(yě)支持了(le)continuous batching和(hé)paged attention等關鍵技術。


多卡模型并行推理(lǐ)

下(xià)圖展示了(le)基于模型并行的大(dà)模型推理(lǐ)切分方案,通過模型縱向切分,充分利用(yòng)多卡訪存/算(suàn)力,并深度優化通信算(suàn)子,高(gāo)效降低(dī)多卡并行推理(lǐ)帶來(lái)通信開(kāi)銷。



圖12 模型并行推理(lǐ)模型切分方案示意


Tecorigin開(kāi)發了(le)Teco-Inference-Engine,對(duì)基于Transformer的大(dà)模型推理(lǐ)算(suàn)子進行了(le)積木(mù)化式的深度優化。可以像拼樂高(gāo)積木(mù)一樣,靈活高(gāo)效的支持以下(xià)模型的單卡/多卡推理(lǐ)。


同時(shí),我們也(yě)開(kāi)發了(le)Shard buffer、KV Cache等核心技術減少顯存開(kāi)銷和(hé)提高(gāo)推理(lǐ)性能(néng)。以此作(zuò)爲後端,前端接入了(le)vLLM/Triton Server等主流框架。

另一個方面,常見的作(zuò)法包括模型量化、模型蒸餾、模型剪枝等,其中模型蒸餾和(hé)模型剪枝雖然可以很(hěn)好(hǎo)的減少模型參數量從(cóng)而提升推理(lǐ)性能(néng),但(dàn)是在大(dà)模型時(shí)代也(yě)會(huì)帶來(lái)一些(xiē)顯著的問題。

對(duì)于模型蒸餾,考慮到(dào)訓練一次大(dà)語言模型的成本開(kāi)銷是巨大(dà)的,同樣在做模型蒸餾的過程中也(yě)不可避免的引入了(le)硬件、人力成本。所以在大(dà)語言模型場景下(xià)實際通過模型蒸餾的方式減少模型參數量的方式還很(hěn)少。

對(duì)于模型剪枝,會(huì)破壞完整的dense(稠密)參數,引入sparse(稀疏)參數,這(zhè)樣的方式在推理(lǐ)硬件和(hé)工(gōng)程上(shàng)也(yě)需要額外(wài)的工(gōng)作(zuò)量才會(huì)帶來(lái)性能(néng)的提升。

最後模型量化的方案,這(zhè)個方案也(yě)是當前大(dà)模型推理(lǐ)領域被用(yòng)戶選擇多的方式。



圖13 模型量化、模型蒸餾、模型剪枝算(suàn)法示意,來(lái)自(zì)網絡


模型量化。模型量化通過将weight(權重)或者activation(激活值)進行低(dī)精度(int8/4/3)表示,通過減少訪存量以及Kernel(核函數)優化等手段加速推理(lǐ)。模型量化在帶來(lái)性能(néng)提升的同時(shí)往往都會(huì)帶來(lái)一定的精度折損,爲了(le)衡量這(zhè)部分精度折損,學術界更多的用(yòng)PPL(perplexity 困惑度)指标用(yòng)于衡量量化之後的精度折損,在我們的實驗中發現(xiàn)PPL并不是一個很(hěn)完美(měi)的指标,原因是PPL是一種衡量句子流暢性的指标,這(zhè)樣量化後的模型雖然可能(néng)是流暢的,但(dàn)是從(cóng)嚴格意義上(shàng)是否和(hé)量化之前的模型推理(lǐ)效果是否一緻是無法簡單通過PPL指标表現(xiàn)出來(lái)。
 
基于這(zhè)樣的原因,我們提出了(le)用(yòng)BLEU值輔以評估模型量化後的精度,更高(gāo)質量的保障用(yòng)戶推理(lǐ)結果精度。這(zhè)裏我們将模型量化當作(zuò)一個“翻譯”任務,源語是在高(gāo)精度(fp32)下(xià)進行的模型推理(lǐ)結果,目标語是在低(dī)精度(fp16/int8/int4/int3)下(xià)進行的模型推理(lǐ)結果。
 
通常,PTQ(Post-Training Quantization 後訓練量化)和(hé)QAT(Quantization-Aware Training 量化感知(zhī)訓練)是兩種常見的量化方案。PTQ可以直接在模型上(shàng)進行量化,不需要引入額外(wài)的訓練。QAT需要在訓練過程中應用(yòng)量化方案,這(zhè)雖然通常來(lái)說有更好(hǎo)的量化精度,但(dàn)是也(yě)需要額外(wài)的訓練代價。
 
GPTQ是PTQ中的一種方案,下(xià)表給出了(le)我們基于開(kāi)源的Baichuan-7B模型進行模型量化之後的效果。


GPTQ(weight only)


除此之外(wài)……

Low 盡可能(néng)高(gāo)的parallelizability


爲了(le)解決Low parallelizability,我們在8月份提出了(le)RecycleGPT[6],一種可重複利用(yòng)模型狀态加速解碼過程的模型,在近乎無效果損失的前提下(xià),實現(xiàn)了(le)1.4倍的推理(lǐ)加速,并引起了(le)廣泛關注。



圖14 RecycleGPT算(suàn)法示意


RecycleGPT[6]在傳統的自(zì)回歸語言模型基礎上(shàng)增加了(le)一個Recyclable Module(再利用(yòng)模塊)。這(zhè)個結構很(hěn)好(hǎo)的回收了(le)當前step輸出的隐狀态并再利用(yòng)于Next Next token(下(xià)下(xià)個令牌)生成。通過這(zhè)樣的方式提高(gāo)了(le)一次推理(lǐ)的利用(yòng)率,從(cóng)而端到(dào)端提升模型的推理(lǐ)性能(néng)。





圖15 RecycleGPT得到(dào)廣泛關注


至此,本文(wén)簡要介紹了(le)大(dà)語言模型的近3年發展現(xiàn)狀,以及大(dà)模型推理(lǐ)的核心挑戰及其對(duì)應的主流優化方案,并簡要介紹了(le)Tecorigin在大(dà)模型推理(lǐ)上(shàng)已有的技術能(néng)力,《大(dà)模型技術·起航&推理(lǐ)篇》到(dào)此結束。未來(lái),會(huì)有更多的大(dà)模型技術跟大(dà)家一起分享、交流、讨論。


入局者,厚積方可薄發。太初元碁Tecorigin将持續深耕産業創新沃土,與時(shí)代發展同頻共振,共育數智卓越人才,憑借深厚技術沉澱與領先研發實力,驅動算(suàn)力之輪駛向未來(lái)智能(néng)世界!

免費試用(yòng)申請(qǐng)


如果您對(duì)我們的産品感興趣,可點擊底部“閱讀原文(wén)”,進行試用(yòng)申請(qǐng);

複制下(xià)方鏈接:https://shimo.im/forms/KrkElNNyO7uWeRqJ/fill 在浏覽器中打開(kāi),即可搶先試用(yòng)!


參考文(wén)獻

[1] [1706.03762] Attention Is All You Need (arxiv.org)

[2] [2303.18223] A Survey of Large Language Models (arxiv.org)

[3] [2108.07258] On the Opportunities and Risks of Foundation Models (arxiv.org)

[4] [2309.06180] Efficient Memory Management for Large Language Model Serving with PagedAttention (arxiv.org)

[5] Achieve 23x LLM Inference Throughput & Reduce p50 Latency (anyscale.com)

[6] [2308.03421] RecycleGPT: An Autoregressive Language Model with Recyclable Module (arxiv.org)