Ubuntu पर vLLM के साथ हाई-थ्रूपुट सर्विंग

laptop_mac macOS Sonoma Intermediate schedule 8 min read
Author by Alex Rivera • May 14, 2024

यदि आप एकाधिक समवर्ती उपयोगकर्ताओं के साथ एक एप्लिकेशन बना रहे हैं, तो Ollama और LM Studio पर्याप्त नहीं होंगे। आपको एक एंटरप्राइज़-ग्रेड इन्फेरेंस इंजन की आवश्यकता है। आपको vLLM की आवश्यकता है।

Step 1 परिचय

vLLM एक उच्च-थ्रूपुट और मेमोरी-कुशल LLM सर्विंग इंजन है। यह PagedAttention नामक एक तकनीक का उपयोग करता है जो अटेंशन keys और values को प्रभावी ढंग से प्रबंधित करती है, जिससे मानक HuggingFace Transformers की तुलना में 2-4 गुना अधिक थ्रूपुट प्राप्त होता है।

यह गाइड मानती है कि आप कम से कम एक हाई-एंड NVIDIA GPU (जैसे, RTX 3090, 4090, या A100) के साथ एक Linux सर्वर चला रहे हैं।

Step 2 पूर्वावश्यकताएँ

vLLM को Python और CUDA की आवश्यकता है। हम दृढ़ता से conda या मानक venv जैसे वर्चुअल एनवायरनमेंट का उपयोग करने की अनुशंसा करते हैं।

Terminal
sudo apt update
sudo apt install python3-pip python3-venv

# Create and activate environment
python3 -m venv vllm-env
source vllm-env/bin/activate

Step 3 vLLM इंस्टॉल करना

vLLM को सीधे PyPI से इंस्टॉल करें। यह स्वचालित रूप से PyTorch और आवश्यक CUDA dependencies डाउनलोड कर लेगा।

Terminal
pip install vllm

Step 4 OpenAI-संगत सर्वर चलाना

vLLM मूल रूप से OpenAI API प्रोटोकॉल को सपोर्ट करता है। आप कमांड लाइन से सीधे एक मॉडल सर्व कर सकते हैं। हम उदाहरण के रूप में Llama 3 8B का उपयोग करेंगे।

Terminal
python3 -m vllm.entrypoints.openai.api_server   --model meta-llama/Meta-Llama-3-8B-Instruct   --dtype auto   --api-key your-secret-key   --port 8000

मुख्य पैरामीटर की व्याख्या: - --model: HuggingFace रिपॉजिटरी ID। vLLM इसे स्वचालित रूप से डाउनलोड करेगा। - --dtype auto: अधिकतम प्रदर्शन के लिए स्वचालित रूप से bfloat16 या float16 का उपयोग करता है। - --api-key: आपके एंडपॉइंट को सुरक्षित करता है ताकि यादृच्छिक इंटरनेट उपयोगकर्ता आपके GPU को स्पैम न कर सकें।

Step 5 API से कनेक्ट करना

आप अब मानक OpenAI Python SDK का उपयोग करके इस सर्वर को एक्सेस कर सकते हैं, बस base_url बदलकर।

Terminal
from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:8000/v1",
    api_key="your-secret-key"
)

response = client.chat.completions.create(
    model="meta-llama/Meta-Llama-3-8B-Instruct",
    messages=[
        {"role": "user", "content": "Explain PagedAttention."}
    ],
)

print(response.choices[0].message.content)

Step 6 प्रोडक्शन के लिए अनुकूलन

यदि आपके पास एकाधिक GPUs हैं (जैसे, दो RTX 3090), तो आप tensor parallelism का उपयोग करके एक बड़े 70B मॉडल को उनमें विभाजित कर सकते हैं। बस --tensor-parallel-size फ्लैग जोड़ें:

Terminal
python3 -m vllm.entrypoints.openai.api_server   --model meta-llama/Meta-Llama-3-70B-Instruct   --tensor-parallel-size 2

vLLM चलने के साथ, आपका Linux सर्वर अब शून्य विलंबता गिरावट के साथ एक साथ दर्जनों समवर्ती अनुरोधों को संभालने में सक्षम है।