مقیاس‌بندی LLMها برای تولید: یک راهنمای عملی

مدل‌های زبانی بزرگ (LLM) به سرعت تکامل یافته‌اند و از کنجکاوی‌های تحقیقاتی به ابزارهای قدرتمند برای کاربردهای مختلف تبدیل شده‌اند. در حالی که راه‌اندازی یک ربات چت ساده با استفاده از ابزارهایی مانند Llama.cpp یا Ollama نسبتاً ساده است، استقرار LLMها در یک محیط تولیدی برای مدیریت حجم‌های کاری دنیای واقعی مجموعه‌ای متفاوت از چالش‌ها را به همراه دارد. این چالش‌ها شامل مدیریت چندین کاربر همزمان، اطمینان از ضمانت‌های زمان آپ‌تایم و بهینه‌سازی استفاده از منابع GPU برای جلوگیری از تجاوز از محدودیت‌های بودجه است.

منابع مورد نیاز برای ارائه یک LLM در مقیاس بزرگ به طور قابل توجهی با منابع مورد نیاز برای اجرای آن بر روی یک رایانه شخصی متفاوت است. مدلی که به طور کارآمد با کمتر از 4 گیگابایت حافظه بر روی یک رایانه شخصی کار می‌کند، می‌تواند 40 گیگابایت یا بیشتر از حافظه GPU را در هنگام استقرار در یک تنظیمات تولیدی برای مدیریت درخواست‌های همزمان متعدد طلب کند.

این راهنما راه‌های مقیاس‌بندی حجم‌های کاری هوش مصنوعی را از اثبات اولیه مفهوم تا استقرارهای آماده تولید بررسی می‌کند. ما شما را در استقرار مدل‌هایی مانند Gemma 3 یا Llama 3 در مقیاس بزرگ راهنمایی خواهیم کرد.

استفاده از APIها برای ادغام LLM

ادغام LLMها در یک کدبیس را می‌توان از طریق روش‌های مختلفی به دست آورد، اما استفاده از یک API سازگار با OpenAI برای استقرارهای تولیدی به شدت توصیه می‌شود. این رویکرد انعطاف‌پذیری را برای سازگاری با چشم‌انداز مدل به سرعت در حال تکامل فراهم می‌کند. مدل‌هایی که تنها چند ماه پیش به عنوان پیشرفته‌ترین مدل‌ها در نظر گرفته می‌شدند، می‌توانند به سرعت منسوخ شوند.

از زمان رونق هوش مصنوعی که با ChatGPT در سال 2022 آغاز شد، رابط API OpenAI به عنوان استاندارد بالفعل برای اتصال برنامه‌ها به LLMها ظهور کرده است. این استاندارد به توسعه‌دهندگان اجازه می‌دهد تا برنامه‌ها را با استفاده از منابع موجود بسازند، مانند شروع با Mistral 7B در Llama.cpp بر روی یک نوت‌بوک و انتقال یکپارچه به سرورهای API Mistral AI برای استقرار تولیدی. این امر از قفل شدن در یک مدل، موتور استنتاج یا ارائه‌دهنده API جلوگیری می‌کند.

خدمات استنتاج مبتنی بر ابر، ابزاری با سرمایه گذاری کم (capex) برای مقیاس‌بندی استقرارهای هوش مصنوعی ارائه می‌دهند. این خدمات نیاز به مدیریت سخت‌افزار و پیکربندی مدل را از بین می‌برند و در عوض یک API برای ادغام برنامه ارائه می‌دهند.

علاوه بر پیشنهادات API از سازندگان مدل اصلی، تعداد فزاینده‌ای از استارت‌آپ‌های زیرساخت هوش مصنوعی خدمات استنتاج به عنوان یک سرویس را برای مدل‌های وزن باز ارائه می‌دهند. این ارائه‌دهندگان در رویکردهای خود متفاوت هستند. برخی، مانند SambaNova، Cerebras و Groq، از سخت‌افزار تخصصی یا تکنیک‌هایی مانند رمزگشایی گمانه‌زنی برای تسریع استنتاج استفاده می‌کنند، اما انتخاب کوچک‌تری از مدل‌ها را ارائه می‌دهند. سایرین، مانند Fireworks AI، از استقرار مدل‌های تنظیم‌شده سفارشی با استفاده از آداپتورهای Low Rank Adaptation (LoRA) پشتیبانی می‌کنند. تنوع اکوسیستم هوش مصنوعی مستلزم تحقیق کامل قبل از تعهد به یک ارائه‌دهنده خاص است.

ملاحظات استقرار LLM در محل

در شرایطی که رویکردهای مبتنی بر ابر به دلیل محدودیت‌های مربوط به حریم خصوصی، مقررات یا زیرساخت‌های از پیش موجود (به عنوان مثال، یک شرکت قبلاً در سرورهای GPU سرمایه‌گذاری کرده است) امکان‌پذیر نیستند، استقرار در محل ضروری می‌شود. این می‌تواند چالش‌های متعددی را به همراه داشته باشد. برخی از سؤالات رایج که مطرح می‌شوند عبارتند از:

  • انتخاب مدل: مدل مناسب به مورد استفاده خاص بستگی دارد. مدلی که برای یک ربات چت خدمات مشتری طراحی شده است، الزامات متفاوتی نسبت به مدلی دارد که برای تولید تقویت‌شده با بازیابی یا به عنوان یک دستیار کد استفاده می‌شود. توصیه می‌شود زمان خود را با ارائه‌دهندگان API صرف کنید تا مدلی را شناسایی کنید که نیازها را برآورده کند.
  • الزامات سخت‌افزاری: تعیین سخت‌افزار لازم بسیار مهم است، زیرا GPUها گران هستند و به دست آوردن آنها دشوار است. خود مدل می‌تواند بینشی در مورد سخت‌افزار مورد نیاز برای اجرای آن ارائه دهد. مدل‌های بزرگتر به سخت‌افزار بیشتری نیاز دارند. یک تخمین تقریبی از حداقل حافظه GPU را می‌توان با ضرب تعداد پارامترها (به میلیارد) در 2 گیگابایت برای مدل‌هایی که با دقت 16 بیتی آموزش داده شده‌اند، محاسبه کرد. برای مدل‌های 8 بیتی، 1 گیگابایت در هر میلیارد پارامتر مورد نیاز است. تکنیک‌های فشرده‌سازی مدل مانند کوانتیزاسیون می‌توانند این مقدار را به 512 مگابایت در هر میلیارد پارامتر کاهش دهند. این یک حد پایین است. حافظه اضافی برای ارائه مدل به چندین کاربر به طور همزمان به دلیل حافظه پنهان کلید-مقدار مورد نیاز است که به عنوان حافظه کوتاه مدت مدل عمل می‌کند. ماتریس پشتیبانی Nvidia راهنمایی در مورد GPUهای مورد نیاز برای اجرای مدل‌های مختلف ارائه می‌دهد.
  • افزونگی: علاوه بر اندازه سخت‌افزار برای مدل، افزونگی نیز باید در نظر گرفته شود. یک گره GPU منفرد در برابر خرابی آسیب‌پذیر است، بنابراین استقرار دو یا چند سیستم برای failover و load balancing مهم است.
  • روش‌های استقرار: LLMها را می‌توان با استفاده از روش‌های مختلف در تولید مستقر و ارائه کرد: bare metal با load balancerها، ماشین‌های مجازی یا کانتینرها در Docker یا Kubernetes. Kubernetes با خودکارسازی ایجاد کانتینر، شبکه‌سازی و load balancing، استقرارهای در مقیاس بزرگ را ساده می‌کند.

Kubernetes برای استقرار LLM

Kubernetes با خودکارسازی ایجاد کانتینر، شبکه‌سازی و load balancing، بسیاری از پیچیدگی‌های مرتبط با استقرارهای در مقیاس بزرگ را انتزاع می‌کند. بسیاری از شرکت‌ها قبلاً Kubernetes را پذیرفته و درک کرده‌اند. Nvidia، Hugging Face و سایرین محیط‌های کانتینری شده را با Nvidia Inference Microservices (NIMs) و Hugging Face Generative AI Services (HUGS) ترجیح می‌دهند که برای حجم‌های کاری و استقرارهای رایج از پیش پیکربندی شده‌اند.

موتورهای استنتاج

موتورهای استنتاج مختلفی برای اجرای مدل‌ها در دسترس هستند، از جمله Ollama و Llama.cpp که با طیف گسترده‌ای از سخت‌افزار سازگار هستند. برای مقیاس‌بندی مدل‌ها، اغلب از کتابخانه‌هایی مانند vLLM، TensorRT LLM، SGLang و PyTorch استفاده می‌شود. این راهنما بر استقرار مدل‌ها با استفاده از vLLM تمرکز دارد، زیرا از طیف گسترده‌ای از مدل‌های محبوب پشتیبانی می‌کند و پشتیبانی و سازگاری گسترده‌ای را در Nvidia، AMD و سایر سخت‌افزارها ارائه می‌دهد.

آماده‌سازی محیط Kubernetes

تنظیم یک محیط Kubernetes برای کار با GPUها در مقایسه با یک تنظیمات Kubernetes معمولی، به درایورها و وابستگی‌های اضافی نیاز دارد. فرآیند تنظیم برای سخت‌افزار AMD و Nvidia متفاوت خواهد بود.

این راهنما از K3S در یک پیکربندی تک گره‌ای استفاده می‌کند. مراحل اساسی مشابه محیط‌های چند گره‌ای هستند، اما وابستگی‌ها باید بر روی هر گره کارگر GPU برآورده شوند و پیکربندی ذخیره‌سازی ممکن است نیاز به تنظیم داشته باشد.

هدف ارائه یک پایه محکم برای استقرار حجم‌های کاری استنتاج به روشی سازگار با تولید است. پیش‌نیازهای زیر مورد نیاز است:

  • یک سرور یا ایستگاه کاری با حداقل یک برد GPU AMD یا Nvidia پشتیبانی‌شده
  • یک نصب تازه از Ubuntu 24.04 LTS

وابستگی‌های Nvidia

تنظیم یک محیط K3S شتاب‌گرفته Nvidia مستلزم نصب درایورهای CUDA، Fabric Manager و درایورهای سرور Headless است. ابزارهای سرور Nvidia را برای رفع اشکال مسائل مربوط به درایور نصب کنید.

برای نصب درایورهای Nvidia CUDA، ابتدا باید مخزن Nvidia را به سیستم خود اضافه کنید. برای این کار، دستورات زیر را در ترمینال خود اجرا کنید: