0
本文作者: 包永剛 | 2023-11-10 20:44 |
年初看到ChatGPT掀起生成式AI熱潮時(shí),螞蟻集團(tuán)百靈代碼大模型(開(kāi)源名稱(chēng)CodeFuse)負(fù)責(zé)人技術(shù)總監(jiān)李建國(guó)迫不及待地想找合作伙伴NVIDIA聊聊。
李建國(guó)所在的辦公樓與NVIDIA北京辦公室僅一路之隔,步行幾分鐘就能到達(dá)。
來(lái)到NVIDIA北京辦公室,接待李建國(guó)的是NVIDIA開(kāi)發(fā)與技術(shù)部門(mén)亞太區(qū)總經(jīng)理李曦鵬。
兩位AI圈里的資深人士一見(jiàn)面,就討論起了生成式AI落地的工程化問(wèn)題。更具體的說(shuō),是CodeFuse的推理加速。
與GitHub在3月份發(fā)布的代碼編寫(xiě)助手Copilot X類(lèi)似,CodeFuse是螞蟻集團(tuán)自研的代碼生成專(zhuān)屬大模型。
算法和應(yīng)用優(yōu)化是李建國(guó)團(tuán)隊(duì)擅長(zhǎng)的。算法和應(yīng)用層優(yōu)化完成之后,CodeFuse的體驗(yàn)還是不夠理想,需要擅長(zhǎng)底層硬件和軟件的NVIDIA幫忙。
自從年初的那次見(jiàn)面之后,李建國(guó)的團(tuán)隊(duì)和李曦鵬的團(tuán)隊(duì)不僅有了雙周會(huì),有時(shí)候問(wèn)題很緊急,周末還會(huì)有臨時(shí)的會(huì)議,目標(biāo)就是讓CodeFuse的體驗(yàn)達(dá)到理想狀態(tài)。
靠著兩個(gè)團(tuán)隊(duì)相互的信任和支持,CodeFuse突破了推理中的量化難題,在大幅節(jié)省推理的成本的同時(shí),極大提升了使用體驗(yàn)。
如今,借助CodeFuse,簡(jiǎn)單幾條文字指令就能在線制作貪吃蛇小游戲,CodeFuse距離為程序員提供全生命周期AI輔助工具的目標(biāo)越來(lái)越近,變革也將悄然而至。
“傳統(tǒng)的軟件研發(fā)人員的思維需要做一些改變?!崩罱▏?guó)認(rèn)為這是生成式AI將帶來(lái)的變化。
這種變化未來(lái)將發(fā)生在千行百業(yè),“有了大模型,接下來(lái)就是如何把這些模型“變小”,讓它在各種環(huán)境中應(yīng)用。今年底或者明年初,會(huì)有大量AI推理的需求?!崩铌伫i判斷。
螞蟻集團(tuán)和NVIDIA一起摸索出了生成式AI落地的路徑,這兩家走在生成式AI最前列的公司同時(shí)做了一件對(duì)整個(gè)AI業(yè)界非常有價(jià)值的事情,將合作的細(xì)節(jié)和成果開(kāi)源到NVIDIA TensorRT-LLM社區(qū)。
這給正在探索AI推理加速的團(tuán)隊(duì)提供了一個(gè)參考,即便這不是萬(wàn)能公式,但一定能激發(fā)AI創(chuàng)新,也將加速AI無(wú)處不在的進(jìn)程。
單打獨(dú)斗很難落地大模型
想要占領(lǐng)生成式AI時(shí)代的先機(jī),即便是業(yè)界領(lǐng)先的公司,靠單打獨(dú)斗還不夠,和生態(tài)伙伴合作成了必選項(xiàng)。
“螞蟻集團(tuán)和業(yè)界一樣,對(duì)于研發(fā)效率的提升都有非常大的訴求,這是我們研發(fā)CodeFuse的初衷?!崩罱▏?guó)對(duì)雷峰網(wǎng)說(shuō),“去年開(kāi)始,我們就開(kāi)始用插件的方式來(lái)提升研發(fā)效率,后來(lái)ChatGPT讓我們意識(shí)到我們不僅可以通過(guò)插件的方式提升效率,還可以借助大模型讓CodeFuse有更多的功能。”
有探索精神的螞蟻集團(tuán)去年開(kāi)始自研的代碼生成專(zhuān)屬大模型,要實(shí)現(xiàn)根據(jù)開(kāi)發(fā)者的輸入,幫助開(kāi)發(fā)者自動(dòng)生成代碼、自動(dòng)增加注釋、自動(dòng)生成測(cè)試用例、自動(dòng)修復(fù)和優(yōu)化代碼、自動(dòng)翻譯代碼等,達(dá)到提升研發(fā)效率的終極目標(biāo)。
簡(jiǎn)單說(shuō),CodeFuse的目的是重新定義下一代AI研發(fā),提供全生命周期AI輔助工具。
上半年,螞蟻從0訓(xùn)練了多個(gè)十億和百億級(jí)參數(shù)的CodeFuse代碼大模型訓(xùn)練,CodeFuse又適配加訓(xùn)了一系列開(kāi)源模型,比如LLaMA、LLaMA-2、StarCoder、Baichuan、Qwen、CodeLLaMA等。
圖片來(lái)自github
訓(xùn)練好的模型到了推理落地階段,出現(xiàn)了不一樣的難題。
“模型的推理部署分很多層,有最底層的軟件優(yōu)化,往上還有算法優(yōu)化和服務(wù)優(yōu)化。”李建國(guó)知道,“算法和服務(wù)優(yōu)化是自己團(tuán)隊(duì)擅長(zhǎng)的,底層的軟件優(yōu)化我們也能做,但最好的選擇還是NVIDIA。”
之所以說(shuō)NVIDIA是最好的選擇,有兩方面的原因,一方面是因?yàn)槔罱▏?guó)和他的團(tuán)隊(duì)在通過(guò)插件提升研發(fā)效率的時(shí)候,經(jīng)過(guò)綜合評(píng)估,選擇了最適合他們的NVIDIA開(kāi)源項(xiàng)目FasterTransformer?!盀榱藢?shí)現(xiàn)一些定制化功能,我們?yōu)殚_(kāi)源端口貢獻(xiàn)了上千行代碼?!崩罱▏?guó)團(tuán)隊(duì)超前的需求沒(méi)得到完全的滿足,需要和NVIDIA有更深度的合作。
另一方面,作為GPU加速硬件提供方,NVIDIA更加擅長(zhǎng)結(jié)合底層的硬件和軟件優(yōu)化,強(qiáng)強(qiáng)聯(lián)合能更快速探索出AI推理的路徑。
這個(gè)合作其實(shí)是典型的雙向奔赴,CodeFuse遇到落地難題的時(shí)候,NVIDIA也非常需要螞蟻集團(tuán)一起協(xié)同設(shè)計(jì)出好產(chǎn)品。
FasterTransformer是NVIDIA2018年推出的開(kāi)源項(xiàng)目,目標(biāo)是解決生成式AI模型推理的問(wèn)題,2018年之后AI技術(shù)有了很大的進(jìn)步,但FasterTransformer為了效率,很多實(shí)現(xiàn)寫(xiě)得比較固定,2023年則走到了產(chǎn)品轉(zhuǎn)型的時(shí)期。
“螞蟻集團(tuán)非常有探索精神,從FasterTransformer到如今的TensorRT-LLM,螞蟻集團(tuán)都是我們最早的用戶(hù)和貢獻(xiàn)者,也最早提出了需求,TensorRT-LLM有很多我們的協(xié)同設(shè)計(jì)?!崩铌伫i深深感受到螞蟻集團(tuán)的信任。
對(duì)于NVIDIA這家數(shù)據(jù)中心級(jí)全棧AI平臺(tái)公司,面對(duì)每年各類(lèi)AI國(guó)際學(xué)術(shù)會(huì)議上,成千上萬(wàn)篇論文討論AI的訓(xùn)練和推理加速,要兼顧所有方向其實(shí)不太容易,只有和最終的用戶(hù)合作,才能最大化NVIDIA軟硬件的價(jià)值。
通過(guò)與客戶(hù)合作,將其正向需求結(jié)合到產(chǎn)品迭代,NVIDIA從而在今年正式推出了加速大模型推理的開(kāi)源解決方案NVIDIA TensorRT-LLM,TensorRT-LLM提供了Python接口,有靈活的模塊化組件,豐富的預(yù)定義主流模型,能夠極大地方便開(kāi)發(fā)者在NVIDIA平臺(tái)上部署基于大模型的服務(wù)。
圖片來(lái)自NVIDIA官網(wǎng)
大模型推理落地的關(guān)鍵——低成本,大吞吐量
螞蟻集團(tuán)的CodeFuse從訓(xùn)練到推理,NVIDIA的AI推理加速方案從FasterTransformer到TensorRT-LLM,雙方要一起解決的是低延遲的響應(yīng),還有能回答更長(zhǎng)的問(wèn)題。
“自動(dòng)生成代碼特別是在IDE里面的代碼補(bǔ)全對(duì)延時(shí)有很高要求,如果代碼一個(gè)字符一個(gè)字符蹦出來(lái),程序員肯定受不了,一般來(lái)說(shuō)代碼補(bǔ)全的響應(yīng)時(shí)間在200毫秒以下才會(huì)有好的體驗(yàn),更長(zhǎng)的時(shí)延程序員一般受不了。”李建國(guó)指出了CodeFuse落地的一個(gè)難題。
解決這個(gè)問(wèn)題的一個(gè)好辦法是量化。模型量化,就是將使用高精度浮點(diǎn)數(shù)比如FP16訓(xùn)練的模型,使用量化技術(shù)后,用定點(diǎn)數(shù)比如INT4表達(dá)。量化的關(guān)鍵點(diǎn)是對(duì)齊兩個(gè)精度(FP16和INT4)的輸出,或者說(shuō)讓兩個(gè)精度輸出的數(shù)據(jù)分布盡可能保持一致。量化的好處是可以有效的降低模型計(jì)算量、參數(shù)大小和內(nèi)存消耗,提高處理吞吐量。
“我們內(nèi)部做了一些評(píng)估,8比特量化損失的精度比較少,基本是無(wú)損,同時(shí)可以帶來(lái)30%左右的加速。如果是量化到4比特,一般量化方法的精度損失會(huì)達(dá)到7-8%,但如果能把精度損失做到1%以?xún)?nèi),可以帶來(lái)2倍左右的加速?!崩罱▏?guó)說(shuō),“要實(shí)現(xiàn)量化到4比特的同時(shí)精度損失小于1%,我們需要在核心的算法層面創(chuàng)新,也同時(shí)需要NVIDIA TensorRT-LLM的軟件優(yōu)化確保推理加速。”
量化的價(jià)值顯而易見(jiàn),CodeFuse-CodeLLama-34B模型在FP16和INT8精度下,至少需要4張A10 GPU做最小配置部署。量化到INT4之后,模型占用顯存從64.9G顯著減小到19G,一張A10 GPU即可部署。
從需要4張A10減少到只需要1張A10,成本的降低顯而易見(jiàn),速度也讓人滿意。
使用GPTQ或者NVIDIA TensorRT-LLM early access版本量化部署,實(shí)測(cè)發(fā)現(xiàn)A10上的INT4優(yōu)化后的推理速度,已經(jīng)和A100上FP16推理速度持平。
在程序生成的HumanEval評(píng)測(cè)和幾個(gè)NLP任務(wù)(CMNLI/C-EVAL)的評(píng)測(cè)中表現(xiàn)也非常出色。
結(jié)果讓人滿意,但過(guò)程中難免出現(xiàn)意外,李建國(guó)和團(tuán)隊(duì)同事將CodeFuse量化部署到A100運(yùn)行正常,但部署到A10 GPU上時(shí),輸出出現(xiàn)了亂碼,但沒(méi)有找到問(wèn)題根因,而此時(shí)恰逢周末。
“了解到我們的問(wèn)題之后,NVIDIA的伙伴說(shuō)可以馬上來(lái)幫我們一起解決問(wèn)題。”李建國(guó)印象深刻,“后來(lái)NVIDIA的伙伴發(fā)現(xiàn)其實(shí)問(wèn)題很簡(jiǎn)單,就是容器的一個(gè)配置錯(cuò)了,物理機(jī)并沒(méi)有問(wèn)題,改完容器的配置就正常了?!?/p>
李曦鵬對(duì)這件事情也印象深刻,“周末一起調(diào)試,是建立在雙方通過(guò)長(zhǎng)期合作信任的基礎(chǔ)上。彼此愿意相信,相互協(xié)同才能更快達(dá)成目標(biāo)?!?/p>
想要達(dá)到雙方技術(shù)團(tuán)隊(duì)默契配合,必須要有充分的溝通和信任,還要有優(yōu)先級(jí)。
“為了快速響應(yīng)螞蟻集團(tuán)的需求,以前我們的軟件更新一般3個(gè)月才更新一次,現(xiàn)在不到一個(gè)月就會(huì)給他們一版。”李曦鵬感嘆這種變化,“我們的代碼拿過(guò)去也會(huì)有bug,螞蟻的伙伴給了我們包容。”
至于如何適應(yīng)客戶(hù)的快節(jié)奏,李曦鵬認(rèn)為關(guān)鍵在于要有優(yōu)先級(jí),“NVIDIA所有產(chǎn)品,最重要的優(yōu)先級(jí)都來(lái)自于客戶(hù)的需求?!?/p>
對(duì)于AI推理來(lái)說(shuō),與量化一樣影響體驗(yàn)的是推理長(zhǎng)度。
更大的推理長(zhǎng)度意味著用戶(hù)可以一次性輸入更長(zhǎng)的文檔,也可以實(shí)現(xiàn)多輪對(duì)話,目前業(yè)界標(biāo)準(zhǔn)的推理輸入長(zhǎng)度是4K、16K,并朝著1Million的長(zhǎng)度在努力。
CodeFuse-CodeLLama-34B模型目前在A10上,4比特量化支持總長(zhǎng)為3K+長(zhǎng)度的輸入和輸出。
“如果只是單純加長(zhǎng)輸入長(zhǎng)度,挑戰(zhàn)非常大,因?yàn)橛?jì)算量需求會(huì)出現(xiàn)O(n^2)增長(zhǎng)。”李曦鵬介紹。
要解決客戶(hù)的問(wèn)題,還要求NVIDIA有極強(qiáng)的技術(shù)敏感度和技術(shù)創(chuàng)新能力?!白罱幸粋€(gè)Flash-Decoding的技術(shù),可以更好的加速長(zhǎng)序列的推理。而實(shí)際上,我們?cè)缫呀?jīng)在TensorRT-LLM中獨(dú)立的實(shí)現(xiàn)了這個(gè)特性,叫做multi-block mode,目前還在對(duì)更多模型進(jìn)行測(cè)試,下個(gè)版本會(huì)放出來(lái)。”李曦鵬表示。
李建國(guó)有些驚喜,“上周末知道TensorRT-LLM已經(jīng)支持Flash-decoding時(shí)非常開(kāi)心,NVIDIA有前瞻性,能夠快速支持最新的技術(shù),這對(duì)于提升CodeFuse的體驗(yàn)非常重要?!?/p>
螞蟻集團(tuán)和NVIDIA依舊在繼續(xù)優(yōu)化CodeFuse的部署,目標(biāo)就是提供低成本、低時(shí)延、高吞吐量的AI大模型使用體驗(yàn)。
CodeFuse正在變得越來(lái)越強(qiáng)大,這會(huì)帶來(lái)一個(gè)問(wèn)題,AI會(huì)帶來(lái)怎樣的變革?
大模型落地沒(méi)有萬(wàn)能公式,但很快會(huì)無(wú)處不在
就像電剛發(fā)明的時(shí)候人們會(huì)擔(dān)心會(huì)產(chǎn)生事故一樣,大模型也處于這樣的時(shí)刻。“未來(lái)五年或者十年,人工智能大模型會(huì)深入我們生活的各個(gè)角落?!边@是李建國(guó)的判斷。
就拿他在負(fù)責(zé)的CodeFuse來(lái)說(shuō),軟件研發(fā)人員的思維需要前移或者后移,前移的意思是要考慮整個(gè)APP的概念設(shè)計(jì)、創(chuàng)意,后移是考慮APP后續(xù)的運(yùn)維和增長(zhǎng)。
“當(dāng)寫(xiě)重復(fù)代碼的工作被AI提效之后,軟件研發(fā)人員有更多時(shí)間需要思考更復(fù)雜、更有創(chuàng)意的東西。而不僅僅只是關(guān)心算法、數(shù)據(jù),要去兼顧更多內(nèi)容,要有技能的增長(zhǎng)?!崩罱▏?guó)觀察認(rèn)為,“前端設(shè)計(jì)比較標(biāo)準(zhǔn)化,可能會(huì)更快受到影響。”
“但現(xiàn)在看來(lái)AI依舊是提升效率的輔助工具?!崩罱▏?guó)和李曦鵬都認(rèn)為。
這種影響會(huì)隨著AI模型的成熟逐步影響到越來(lái)越多行業(yè)和領(lǐng)域。螞蟻集團(tuán)和NVIDIA就將其在CodeFuse方面的合作進(jìn)行了非常細(xì)節(jié)的開(kāi)源,這對(duì)于TensorRT-LLM開(kāi)源社區(qū)來(lái)說(shuō)是一個(gè)巨大的貢獻(xiàn),也將深刻影響生成式AI的落地和普及。
比如生成式AI落地部署非常關(guān)鍵的量化,有NVIDIA和螞蟻集團(tuán)實(shí)踐開(kāi)源的例子,基于TensorRT-LLM量化就會(huì)更加容易。
“論文介紹了一些方法,但還需要算法工程師針對(duì)具體的場(chǎng)景和模型去做調(diào)整和測(cè)試的。”李曦鵬說(shuō),“NVIDIA要做的是做好絕大部分底層的工作,讓整個(gè)業(yè)界在此基礎(chǔ)上做更多的創(chuàng)新?!?/strong>
李建國(guó)看到了開(kāi)源對(duì)于AI無(wú)處不在的重要價(jià)值,“就像數(shù)學(xué)分析里有個(gè)萬(wàn)能公式,它不是所有場(chǎng)景都能用,但開(kāi)源可以讓更多的場(chǎng)景使用,相當(dāng)于普惠大眾?!?/strong>
李曦鵬表示,TensorRT-LLM開(kāi)源兩周,就有超過(guò)200個(gè)issue,大家熱情非常高漲。
NVIDIA也在通過(guò)2023 TensorRT Hackathon生成式AI模型優(yōu)化賽這樣的賽事完善TensorRT-LLM,加速生成式AI的落地和普及。
比爾·蓋茨曾說(shuō),“我們總是高估未來(lái)兩年的變化,低估未來(lái)10 年的變革?!?/p>
以CodeFuse為例,NVIDIA和螞蟻集團(tuán)的合作和成果,將會(huì)對(duì)未來(lái)10年的變革產(chǎn)生深遠(yuǎn)影響。雷峰網(wǎng)(公眾號(hào):雷峰網(wǎng))
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。