सामग्री पर जाएँ

ब्लॉग

टर्बोचार्जिंग LLMs

PagedAttention, vLLM, Self-Debugging, PowerInfer, और EG-MLA - GPU KV कैश को बर्बाद किए बिना LLM एजेंटों को कैसे स्केल करें

  • Balinder Walia
  • 4 मिनट में पढ़ें
  • Updated
उत्पादन में बड़े भाषा मॉडल को टर्बोचार्ज करने के तरीके पर

TenthMatrix: PagedAttention, vLLM, Self-Debugging, PowerInfer, और EG-MLA - उन ट्रेड-ऑफ के साथ जो वास्तव में GPUs पर दिखाई देते हैं। गहरा गोता:लंबा लेख। प्राइमर:LLMs समझाया + Kubernetes।

Turbocharging LLMs cover

निचली पंक्ति। KV कैश के टुकड़े होने परथ्रूपुट समाप्त हो जाता है। कैश को OS की तरह पेज करें (vLLM के अंदर PagedAttention), एक टोकन इंजन चुनें जो बॉक्स से मेल खाता हो (एक मोटे उपभोक्ता GPU पर PowerInfer, एक सर्विंग क्लस्टर पर vLLM), जब आर्किटेक्चर अनुमति देता है तो ध्यान हटाएं (EG-MLA), और कैप एजेंट डीबग लूप ताकि गुणवत्ता असीमित विलंबता न खरीदे।

घड़ी: LLM वास्तव में

क्या है

संदर्भ, उत्पाद डेमो नहीं:बड़े भाषा मॉडलका परिचय (आंद्रेज कारपैथी)। हमारेसादे-अंग्रेज़ी LLM + Kubernetes गाइडके साथ युग्मित करें।

स्केलिंग समस्या

LLMs ने संवादात्मक AI और पीढ़ी को अनलॉक किया, फिर तुरंत एक सेवा समस्या बन गई। प्रत्येक डिकोड चरण केवी कैश में कुंजी और मान जोड़ता है जो अनुक्रम लंबाई और बैच आकार के साथ बढ़ता है। अनुभवहीन इंजन विशाल सन्निहित स्लैब को पूर्व-आरक्षित करते हैं। उस मेमोरी का अधिकांश भाग निष्क्रिय रहता है जबकि अन्य अनुरोध प्रतीक्षा करते हैं। भले ही GPU "पूर्ण" दिखता हो, थ्रूपुट ढह जाता है।

PagedAttention: ध्यान के लिए वर्चुअल मेमोरी

PagedAttention maps logical token pages to physical GPU KV blocks

PagedAttention (क्वोन एट अल., SOSP 2023) KV कैश को OS पेजिंग की तरह मानता है: निश्चित आकार के ब्लॉक, प्रति अनुरोध एक ब्लॉक तालिका, गैर-सन्निहित भौतिक पेज[arXiv:2309.06180]। कर्नेल ध्यान के समय ब्लॉक इकट्ठा करता है। आपको अभी भीब्लॉक आकार,अधिकतम मॉडल लंबाई, औरकैश पदानुक्रम(GPU HBM बनाम CPU ऑफलोड बनाम प्रीफ़िक्स कैश) को ट्यून करना होगा। बहुत छोटे ब्लॉक मैपिंग ओवरहेड जोड़ते हैं; बहुत बड़े ब्लॉक अपशिष्ट को पुनः प्रस्तुत करते हैं।

vLLM:

परोसने वाला लगभग शून्य अपशिष्ट

vLLM PagedAttention के आसपास निर्मित सेवा प्रणाली है। यह लगभग शून्य केवी अपशिष्ट, निरंतर बैचिंग और एक OpenAI-संगत HTTP सतह को लक्षित करता है। उत्पादन में, तीन चीज़ें देखें: (1)gpu_memory_utilizationबनाम OOM, (2) टाइम-टू-फर्स्ट-टोकन बनाम डिकोड टोकन/एस, (3) क्या प्रीफ़िक्स/प्रॉम्प्ट कैशिंग आपके eval सेट के लिए उत्तर बदलता है। कैशिंग एक थ्रूपुट जीत है; यह शुद्धता और टेल-विलंबता प्रभाव से मुक्त नहीं है।

from vllm import LLM, SamplingParams

llm = LLM(model="meta-llama/Llama-3.1-8B-Instruct", gpu_memory_utilization=0.90)
params = SamplingParams(temperature=0.2, max_tokens=256)
outs = llm.generate(["Explain PagedAttention in one paragraph."], params)
print(outs[0].outputs[0].text)

यह वास्तविक vLLM उपयोग है। हगिंग फेस BERTforward()कॉलहै न किPagedAttention - पेजेड केवी सर्विंग के साथ क्लासिफायर लॉगिट्स को भ्रमित न करें।

Self-Debugging: विलंबता बजट

के साथ गुणवत्ता लूप

एजेंटों के लिए, वह सोना है - जब तक फीडबैक राउंड ढेर न हो जाए। डिबग संदेशों की संख्या कैप करें, प्रत्येक राउंड लॉग करें, और बजट समाप्त होने पर मानव या छोटे विशेषज्ञ मॉडल को बंद कर दें।

घड़ी: प्रस्तुतिकरण और अनुमान संदर्भ

तेज LLM सेवा पर प्रासंगिक बातचीत - आधिकारिक TenthMatrix डेमो नहीं। vLLM पेपर औरdocs.vllm.aiके साथ युग्मित करें।

PowerInfer: एकल वसा GPU

पर टोकन

PowerInfer गर्म/ठंडे न्यूरॉन्स को विभाजित करता है ताकि उपभोक्ता GPU प्लस CPU जल्दी से टोकन उत्पन्न कर सके। रिपोर्ट किए गए आंकड़े:13.20 टोकन/सेकेंड औसत, एक NVIDIA RTX 4090 पर अधिकतम29.08 टोकन/सेकेंड, सटीकता बनाए रखते हुए11.69xबनाम llama.cpp तक,[PowerInfer]। बेड़े के पैमाने पर आपको अभी भी प्लेसमेंट की आवश्यकता है: कौन सी परतें GPU पर रहती हैं, आप नोड्स में कैसे शार्प करते हैं, और क्याका स्थानीय प्रोफ़ाइल आपकेप्रॉम्प्ट पेपर के मॉडल से मेल खाता है।

EG-MLA: बेंच को नुकसान पहुंचाए बिना KV को सिकोड़ें

EG-MLA (एम्बेडिंग-गेटेड मल्टी-हेड लेटेंट अटेंशन) रिपोर्ट91.6% से अधिक केवी कैश कटौतीबनाम मल्टी-हेड अटेंशन के साथ नगण्य गिरावट, अतिरिक्त बचत बनाम एमएलए (59.9% तक), और रीजनिंग सुइट्स पर बेहतर स्कोर, 1B पैरामीटर[EG-MLA पेपर]से आगे। इसे एक आर्किटेक्चर विकल्प के रूप में मानें, जमे हुए vLLM चेकपॉइंट पर ड्रॉप-इन फ़्लैग के रूप में नहीं - मेमोरी ग्राफ़ का जश्न मनाने से पहले अपने इवल हार्नेस को मान्य करें।

vLLM, PowerInfer, Self-Debugging and EG-MLA stack

इसे

एक साथ रखना

क्लस्टर सर्विंग के लिए PagedAttention + vLLM को संयोजित करें, जब बॉक्स वर्कस्टेशन GPU हो तो PowerInfer, हार्ड राउंड लिमिट के साथ कोडिंग एजेंटों के अंदर Self-Debugging और जब आप मॉडल परिवार को नियंत्रित करते हैं तो EG-MLA को संयोजित करें। वितरित सेवा जटिलता जोड़ती है: केवी समानता, प्रीफ़िल/डीकोड विभाजन, और ऑटोस्केलिंग जो पृष्ठ तालिकाओं को ख़राब नहीं करती है। उपाय। फिर एडीआर लिखें.

अगला पढ़ें

  1. लंबा लेख- नॉब्स, विफलता मोड, Kubernetes नोट्स।
  2. LLMs समझाया गया + Kubernetes
  3. पर अपना खुद का चलाएं
  4. Muse Glimmer / स्थानीय एजेंट·एंटरप्राइज AI लैब

TenthMatrixद्वारा प्रकाशित।