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