XGrammar是什么

XGrammar是由陳天奇團隊推出的開源軟件庫,能為大型語言模型(LLM)提供高效、靈活且可移植的結構化數據生成能力。基于上下文無關語法(CFG)定義結構,支持遞歸組合以表示復雜結構,適合生成JSON、SQL等格式數據。XGrammar用字節級下推自動機優化解釋CFG,減少每token延遲,實現百倍加速,幾乎無額外開銷。XGrammar集成多種系統優化,如自適應token掩碼緩存、上下文擴展等,提高掩碼生成速度并減少預處理時間。XGrammar的C++后端設計易于集成,并支持在LLM推理中實現零開銷的結構化生成。

XGrammar  陳天奇團隊推出的LLM結構化生成引擎 第1張XGrammar的主要功能高效結構化生成:支持上下文無關語法(CFG),支持定義和生成遵循特定格式(如JSON、SQL)的結構化數據。靈活性:基于CFG的遞歸規則,能靈活地表示復雜的結構,適應多樣的結構化數據需求。零開銷集成:XGrammar與LLM推理引擎共同設計,能在LLM推理中實現零開銷的結構化生成。快速執行:基于系統優化,顯著提高結構化生成的執行速度,相比于SOTA方法,每token延遲減少多達100倍。跨平臺部署:具有最小且可移植的C++后端,能輕松集成到多個環境和框架中。自適應token掩碼緩存:在預處理階段生成,加快運行時的掩碼生成。XGrammar的技術原理字節級下推自動機(PDA):用字節級PDA解釋CFG,支持每個字符邊緣包含一個或多個字節,處理不規則的token邊界,支持包含sub-UTF8字符的token。預處理和運行時優化:在預處理階段,生成自適應token掩碼緩存,基于預先計算與上下文無關的token加快運行時的掩碼生成。上下文無關與相關token的區分:區分上下文無關token和上下文相關token,預先計算PDA中每個位置的上下文無關token的有效性,并將它們存儲在自適應token掩碼緩存中。語法編譯:基于語法編譯過程,預先計算掩碼中相當一部分token,加快掩碼生成速度。算法和系統優化:包括上下文擴展、持續性執行堆棧、下推自動機結構優化等,進一步提高掩碼生成速度并減少預處理時間。掩碼生成與LLM推理重疊:將CPU上的掩碼生成過程與GPU上的LLM推理過程并行化,消除約束解碼的開銷。XGrammar的項目地址項目官網:xgrammar.mlc.aiGitHub倉庫:https://github.com/mlc-ai/xgrammararXiv技術論文:https://arxiv.org/pdf/2411.15100XGrammar的應用場景編程語言輔助:用于輔助編寫和調試代碼,自動生成符合特定編程語言規范的代碼片段,提高開發效率。數據庫操作:生成符合SQL語法的查詢語句,幫助開發者或應用程序自動構建數據庫查詢,減少手動編寫SQL語句的工作量。自然語言處理(NLP):生成結構化的訓練數據,用于訓練和優化NLP模型,提高模型對結構化信息的處理能力。Web開發:自動生成前端代碼和API文檔,確保文檔與代碼的一致性,提高開發效率和維護性。配置文件和模板:生成和填充配置文件及模板,如自動化生成系統配置、填充郵件模板等,提高自動化水平。