成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

MLC-LLM: 具有ML編譯的通用LLM部署引擎 原創

發布于 2024-6-12 11:42
瀏覽
0收藏

介紹

我們正處在大型語言模型和生成式人工智能的時代,其應用場景有可能改變每個人的生活。開放式大型語言模型為提供定制化和領域特定部署帶來了重大機會。

我們正處在一個激動人心的開放模型開發年份。一方面,我們看到了在(云)服務器部署方面取得的令人振奮的進展,這些解決方案可以為具有多個GPU的更大模型提供同時服務的能力。同時,我們也開始看到在設備本地部署方面取得了進展,能夠將性能強大的量化模型部署到筆記本電腦、瀏覽器和手機上。未來將會走向何方?我們相信未來是混合的,因此重要的是要使任何人都能在云端和本地環境中運行LLM。

許多LLM推斷項目,包括我們過去版本的MLC LLM工作,為服務器和本地使用案例提供了不同的解決方案,具有不同的實現和優化。例如,服務器解決方案通常支持連續批處理和更好的多GPU支持,而本地解決方案則帶來了跨平臺更好的可移植性。然而,我們認為有必要將所有技術匯集到一起。在一個使用案例的一側出現的許多技術直接適用于另一側。雖然像連續批處理這樣的技術在當前某些本地使用案例中可能并不實用,但隨著LLM成為操作系統的關鍵組件并支持多個請求以啟用代理任務,它們將變得有價值。我們想提出一個問題:是否可能構建一個單一統一的LLM引擎,可在服務器和本地使用案例中運行?

在這篇文章中,我們介紹MLC LLM引擎(簡稱MLCEngine),這是一個通用的LLM部署引擎。MLCEngine引入了一個單一引擎,用于在服務器上進行高吞吐量、低延遲的服務,同時將小型而性能強大的模型無縫集成到多樣化的本地環境中。

MLC-LLM: 具有ML編譯的通用LLM部署引擎 -AI.x社區

圖1. MLCEngine:通用LLM部署引擎 實現通用部署的路徑具有獨特的挑戰。首先,它需要支持廣泛的GPU編程模型和運行時,以在每個支持的平臺上實現加速。這樣的過程通常需要大量重復的工程工作。我們需要在可能的情況下利用有效的供應商庫,但也需要支持缺乏標準庫支持的新興平臺,如Vulkan或WebGPU。此外,每個應用平臺都有不同的編程語言環境,這增加了將引擎引入到Swift、Kotlin、Javascript等環境中的復雜性。

為了克服平臺支持的挑戰,我們利用了通過Apache TVM進行機器學習編譯的技術,自動生成便攜式GPU庫,以適用于各種硬件和平臺。此外,我們構建了一個便攜式運行時架構,將業界領先的LLM服務優化(如連續批處理、推測解碼、前綴緩存等)與對云端和本地平臺的最大可移植性相結合。

MLC-LLM: 具有ML編譯的通用LLM部署引擎 -AI.x社區

圖2. MLC LLM工作流程 編譯的模型庫與一個通用運行時共同工作,該運行時在不同的主機應用語言中提供直接的語言綁定,這些語言共享相同的OpenAI風格的聊天完成API。所有本地應用環境共享與云服務器設置相同的核心引擎,但針對每個個體設置進行了專門配置。

通過Chat開始

開始使用MLCEngine的最簡單方式是通過聊天CLI界面。我們為此提供了一個命令行聊天界面。下面是一個示例命令,它在終端中啟動聊天CLI,運行一個4位量化的Llama3 8B模型。

mlc_llm chat HF://mlc-ai/Llama-3-8B-Instruct-q4f16_1-MLC

MLC-LLM: 具有ML編譯的通用LLM部署引擎 -AI.x社區

圖3. Chat CLI 在幕后,我們執行即時模型編譯,為每個平臺生成GPU代碼。因此,它可以跨GPU類型和操作系統工作。

我們支持廣泛的模型系列,包括Llama3、Mistral/Mixtral、Phi3、Qwen2、Gemma等等。

通過OpenAI風格API使用MLCEngine

隨著我們引入通用LLM引擎,設計一組開發人員熟悉且易于使用的API是非常重要的。我們選擇在所有環境中采用OpenAI風格API。本節將逐步介紹這些API。

  • 云端的REST API服務器

LLM服務是最典型的LLM應用之一。LLM服務器通過運行內部LLM引擎來處理從網絡接收到的所有請求。我們提供了一個具有完整OpenAI API的REST服務器,用于處理LLM生成請求。下面是一個示例命令,它在本地主機上啟動REST服務器,以提供4位量化的Llama3 8B模型。

MLC-LLM: 具有ML編譯的通用LLM部署引擎 -AI.x社區

圖4. 啟動LLM服務器并發送聊天完成請求 為了適應不同的服務場景,我們為服務器提供了三種模式:“服務器”,“本地”和“交互式”。 “服務器”模式最大化了GPU內存的使用,并支持更高的并發性,而“本地”和“交互式”模式則限制了并發請求的數量,并且使用更少的GPU內存。我們建議在專用服務器GPU(如A100/H100)上使用“服務器”模式,利用完整的FP16模型和FP8變體。對于本地環境,建議使用“本地”模式和4位量化模型設置。

  • Python API

MLC LLM在Python中提供MLCEngine和AsyncMLCEngine,分別用于同步和異步LLM生成。這兩種引擎支持與OpenAI Python軟件包相同的API。

MLC-LLM: 具有ML編譯的通用LLM部署引擎 -AI.x社區

圖5. AsyncMLCEngine的Python API

  • iOS SDK

為了使LLM在iPhone和iPad上運行,我們在Swift SDK中公開了MLCEngine。雖然沒有來自OpenAI的官方Swift API,但我們緊密模擬了Python API,因此我們可以找到與Python代碼鏡像的代碼,具有結構化的輸入和輸出。Swift API還有效地利用了AsyncStream,以啟用生成內容的異步流式傳輸。

MLC-LLM: 具有ML編譯的通用LLM部署引擎 -AI.x社區

圖6. MLCEngine的iOS/Swift API

  • Android SDK

除了iOS,我們還希望為Android提供相同的體驗。我們選擇使用基于OpenAI API的Kotlin API。下面是一個在三星S23上運行4位量化Phi-3模型的聊天完成Kotlin API和MLC Chat應用程序截圖的示例。

MLC-LLM: 具有ML編譯的通用LLM部署引擎 -AI.x社區

圖7. MLCEngine的Android/Kotlin API

  • WebLLM SDK

近年來,我們看到了WebGPU生態系統的不斷成熟。WebGPU通過將WGSL(WebGPU著色語言)著色器轉換為本地GPU著色器來工作。這使得在瀏覽器中執行GPU計算成為可能,這是快速的(本地GPU加速),方便的(無需任何環境設置)和私密的(100%客戶端計算)。MLCEngine也可以通過WebLLM項目在JavaScript中訪問。

MLC-LLM: 具有ML編譯的通用LLM部署引擎 -AI.x社區

圖8. MLCEngine的JavaScript/TypeScript API

  • 討論

我們可能意識到的一件事是,這些API遵循完全相同的風格engine.chat.completions.create,因此我們可以在這些平臺上擁有相同的開發體驗。我們盡可能多地利用語言本地功能來創建結構化的輸入和輸出,并啟用異步流式傳輸,以便引擎活動不會阻塞UI。

高效的結構化生成

除了構建聊天應用程序外,我們還將使應用程序超越聊天。結構化生成大大提高了LLM的能力,超越了基本的聊天或純文本生成。通過可控的結構化生成,LLM能夠成為標準工具,并且可以更好地集成到生產中的其他應用程序中。在各種場景中,JSON是最常用的結構化格式之一,并且對于LLM引擎支持JSON字符串的結構化生成具有重要意義。

MLCEngine提供了最先進的JSON模式結構化生成。對于每個請求,MLCEngine運行和維護一個高性能的GrammarBNF狀態機,該狀態機在自回歸生成期間約束響應格式。

MLCEngine支持兩種級別的JSON模式:通用JSON響應和JSON模式定制。通用JSON模式將響應約束為符合JSON語法。要使用通用JSON模式,請將參數response_format={"type": "json_object"}傳遞給聊天完成。以下是使用JSON模式的請求示例:

MLC-LLM: 具有ML編譯的通用LLM部署引擎 -AI.x社區

圖9. MLCEngine中的JSON模式 

此外,MLCEngine允許為每個單獨的請求定制響應的JSON模式。當提供了JSON模式時,MLCEngine將生成嚴格符合該模式的響應。以下是帶有自定義JSON模式的請求示例:

MLC-LLM: 具有ML編譯的通用LLM部署引擎 -AI.x社區

圖10. MLCEngine中指定JSON模式的JSON模式 重要的是,結構化生成支持內置于引擎中,這意味著它可以在MLCEngine支持的所有API平臺上使用。

使LLM在各種平臺上可訪問

我們的使命之一是使LLM在各種平臺上可訪問。我們已經討論了服務器GPU、Android和iOS上的用例。我們驗證了MLCEngine可以在各種平臺上運行。包括但不限于:

  • NVIDIA RTX 4090,
  • NVIDIA Jetson Orin,
  • NVIDIA T4(在Google Colab中),
  • AMD 7900 XTX,
  • Steam Deck,
  • Orange Pi。

其中,Steam Deck是一個有趣的平臺,因為它只提供有限的GPU驅動程序支持。我們生成了Vulkan代碼,在其上運行了一個Llama3-8B模型。

MLC-LLM: 具有ML編譯的通用LLM部署引擎 -AI.x社區

圖11. MLCEngine在Steam Deck上運行Llama 3 8B

我們發現機器學習編譯幫助我們減少了在構建MLCEngine上的工程工作量,并幫助我們在更廣泛的硬件范圍內提供高性能解決方案,使這些模型對更多人可用。

優化引擎性能

雖然這是MLCEngine的第一個發布里程碑,但我們已經付出了大量努力來優化其性能。引擎結合了幾個關鍵的系統改進,如連續批處理、推測解碼、分頁KV管理、常見前綴緩存和級聯推斷。我們利用FlashInfer庫在CUDA平臺上計算快速的注意力,并通過編譯器代碼生成擴展其支持到更廣泛的平臺。

MLCEngine支持多GPU開箱即用。以下命令在兩個GPU上啟動REST服務器:

mlc_llm serve HF://mlc-ai/Qwen2-72B-Instruct-q0f16-MLC --overrides "tensor_parallel_shards=2"

MLC-LLM: 具有ML編譯的通用LLM部署引擎 -AI.x社區

圖12. 2個NVIDIA RTX 4090上的REST服務器

MLC-LLM: 具有ML編譯的通用LLM部署引擎 -AI.x社區

圖13. Python API 2x AMD 7900 XTX

MLCEngine在服務器使用案例中可以實現高競爭性的性能,特別是在高吞吐低延遲設置下,對多個GPU的強大擴展。我們還在維護著在蘋果GPU等平臺上的最新性能,并支持新興平臺,如WebGPU。

重要的是,我們發現在各平臺上構建統一的解決方案存在很多協同作用。例如,擁有相同的引擎使我們能夠將高級優化(如注意力管理、前綴緩存、推測執行和結構化生成)帶到這些平臺上,在過去的解決方案中由于有限的工程帶寬而缺乏支持。我們還可以通過利用代碼生成在平臺之間轉移優化知識。我們在WebGPU上的性能受益于本地GPU運行時的優化,然后直接編譯到目標WebGPU環境。

總結

我們介紹了MLCEngine,一個統一的高效LLM引擎,可以在不同的硬件和平臺上運行LLM,從云服務器到邊緣設備。這標志著MLC LLM項目的新篇章。我們樂于與社區合作,帶來更多改進,包括提供更好的模型覆蓋、更多的系統優化以及先進的機器學習編譯,以實現更加高效的通用部署。

本項目得以實現,多虧了開源社區的許多貢獻,包括CMU Catalyst、OctoAI、UW SAMPL、SJTU以及更廣泛的MLC社區的貢獻。我們計劃繼續與開源社區合作,為所有人帶來開放的基礎模型。

譯自(有刪改):https://blog.mlc.ai/2024/06/07/universal-LLM-deployment-engine-with-ML-compilation


本文轉載自公眾號AIGC最前線   

原文鏈接:??https://mp.weixin.qq.com/s/GAVn6vm_rWUBOACnm8_EHA??


?著作權歸作者所有,如需轉載,請注明出處,否則將追究法律責任
收藏
回復
舉報
回復
相關推薦
主站蜘蛛池模板: 久久99久久99 | 手机看片在线播放 | 男女视频在线观看免费 | 亚洲精品久久国产高清情趣图文 | 99国产精品一区二区三区 | 久久久免费 | 欧美videosex性极品hd | 偷拍第一页 | 黄色毛片网站在线观看 | 欧美精品久久久久 | 激情视频中文字幕 | 求个av网址 | 欧美1级| 精品一区二区久久久久久久网站 | 国产精品一区二区视频 | 8x国产精品视频一区二区 | 91在线一区| 91国内精精品久久久久久婷婷 | 欧美日韩精品免费观看 | 国产一区二区在线视频 | 91视频网址 | 99免费视频 | 99久久婷婷国产综合精品电影 | 久久久噜噜噜久久中文字幕色伊伊 | 阿v视频在线观看 | 欧美一级观看 | 国产一区二区影院 | 精品国产一区二区在线 | 天天综合久久 | 天天综合网天天综合 | 久久国产精品-久久精品 | 韩日在线视频 | 超碰在线观看97 | 国产精品五区 | 亚洲444kkkk在线观看最新 | av中文字幕在线 | 精品精品| 国产精品久久久久久高潮 | 久久综合久久久 | 97精品久久 | 国产精品夜夜夜一区二区三区尤 |